/* 通过SII[从站信息接口(Slave Information Interface)]查找从站* If slave has SII and same slave ID done before, use previous data.* 如果从站具有SII并且之前完成相同的从站ID,使用以前的数据* This is safe because SII is constant for same slave ID.* 这是安全的,因为 SII 对于同一从站 ID 是常量* @param[in] context      = context struct*                           上下文结构体* @param[in]  slave       = Slave number*                           从站编号* @return 返回值:发现时返回1,没有找到时返回0*/
static int ecx_lookup_prev_sii(ecx_contextt *context, uint16 slave)
{int i,/* 从站编号循环计数 */nSM;/* SM 编号 */if ((slave/* 从站编号 */ > 1) && (*(context->slavecount)/* 从站数量[从站个数] */ > 0)){i = 1;/* 从站编号循环计数 */while(((context->slavelist/* 从站列表 */[i/* 从站编号循环计数 */].eep_man/* EEprom中的从站厂家制造商代码 */!= context->slavelist/* 从站列表 */[slave/* 从站编号 */].eep_man/* EEprom中的从站厂家制造商代码 */) ||(context->slavelist/* 从站列表 */[i/* 从站编号循环计数 */].eep_id/* EEprom中的厂商标识[从站ID] */!= context->slavelist/* 从站列表 */[slave/* 从站编号 */].eep_id/* EEprom中的厂商标识[从站ID] */ ) ||(context->slavelist/* 从站列表 */[i/* 从站编号循环计数 */].eep_rev/* EEprom中的版本号 *//* Revision Number */!= context->slavelist/* 从站列表 */[slave/* 从站编号 */].eep_rev/* EEprom中的版本号 *//* Revision Number */)) &&(i/* 从站编号循环计数 */ < slave/* 从站编号 */)){i++;/* 从站编号循环计数 */}if(i/* 从站编号循环计数 */ < slave/* 从站编号 */){/* CoE detailsBit 0: Enable SDO: 使能SDOBit 1: Enable SDO Info: 使能SDO 信息Bit 2: Enable PDO Assign: 使能PDO 赋值Bit 3: Enable PDO Configuration: 使能PDO 配置Bit 4: Enable Upload at startup: 使能在启动时上载Bit 5: Enable SDO complete acces: 使能SDO 完全访问 */context->slavelist/* 从站列表 */[slave/* 从站编号 */].CoEdetails/* CoE details */= context->slavelist/* 从站列表 */[i].CoEdetails;/* CoE details */context->slavelist/* 从站列表 */[slave/* 从站编号 */].FoEdetails/* FoE details *//* Bit 0:Enable FoE:使能FoE */= context->slavelist/* 从站列表 */[i].FoEdetails;/* FoE details *//* Bit 0:Enable FoE:使能FoE */context->slavelist/* 从站列表 */[slave/* 从站编号 */].EoEdetails/* EoE details *//* Bit 0: Enable EoE:使能EoE */= context->slavelist/* 从站列表 */[i].EoEdetails;/* EoE details *//* Bit 0: Enable EoE:使能EoE */context->slavelist/* 从站列表 */[slave/* 从站编号 */].SoEdetails/* SoE details */= context->slavelist/* 从站列表 */[i].SoEdetails;/* SoE details */if(context->slavelist/* 从站列表 */[i].blockLRW > 0)/* 如果>0 块在过程数据中使用 LRW */{context->slavelist/* 从站列表 */[slave/* 从站编号 */].blockLRW = 1;/* 如果>0 块在过程数据中使用 LRW */context->slavelist/* 从站列表 */[0].blockLRW++;/* 如果>0 块在过程数据中使用 LRW */}context->slavelist/* 从站列表 */[slave/* 从站编号 */].Ebuscurrent/* EBUS 电流消耗[单位:mA] *//* EBus Current */= context->slavelist/* 从站列表 */[i/* 从站编号循环计数 */].Ebuscurrent;/* EBUS 电流消耗[单位:mA] *//* EBus Current */context->slavelist/* 从站列表 */[0].Ebuscurrent/* EBUS 电流消耗[单位:mA] *//* EBus Current */+= context->slavelist/* 从站列表 */[slave/* 从站编号 */].Ebuscurrent;/* EBUS 电流消耗[单位:mA] *//* EBus Current */memcpy(context->slavelist/* 从站列表 */[slave/* 从站编号 */].name,/* 从站产品型号名称 */context->slavelist/* 从站列表 */[i/* 从站编号循环计数 */].name,/* 从站产品型号名称 */EC_MAXNAME/* 名称的最大长度 */ + 1);for( nSM/* SM 编号 */ =0 ;nSM/* SM 编号 */ < EC_MAXSM/* SM 最大使用数=8 */;nSM++/* SM 编号 */ ){context->slavelist/* 从站列表 */[slave/* 从站编号 */].SM[nSM/* SM 编号 */].StartAddr/* 物理起始地址 */= context->slavelist/* 从站列表 */[i/* 从站编号循环计数 */].SM[nSM/* SM 编号 */].StartAddr;/* 物理起始地址 */context->slavelist/* 从站列表 */[slave/* 从站编号 */].SM[nSM/* SM 编号 */].SMlength /* SM通道数据长度 */= context->slavelist/* 从站列表 */[i/* 从站编号循环计数 */].SM[nSM/* SM 编号 */].SMlength;/* SM通道数据长度 */context->slavelist/* 从站列表 */[slave/* 从站编号 */].SM[nSM/* SM 编号 */].SMflags  /* 标志位 */= context->slavelist/* 从站列表 */[i/* 从站编号循环计数 */].SM[nSM/* SM 编号 */].SMflags /* 标志位 */;}context->slavelist/* 从站列表 */[slave/* 从站编号 */].FMMU0func/* FMMU0功能 */= context->slavelist/* 从站列表 */[i/* 从站编号循环计数 */].FMMU0func;/* FMMU0功能 */context->slavelist/* 从站列表 */[slave/* 从站编号 */].FMMU1func/* FMMU1功能 */= context->slavelist/* 从站列表 */[i/* 从站编号循环计数 */].FMMU1func;/* FMMU1功能 */context->slavelist/* 从站列表 */[slave/* 从站编号 */].FMMU2func/* FMMU2功能 */= context->slavelist/* 从站列表 */[i/* 从站编号循环计数 */].FMMU2func;/* FMMU2功能 */context->slavelist/* 从站列表 */[slave/* 从站编号 */].FMMU3func/* FMMU3功能 */= context->slavelist/* 从站列表 */[i/* 从站编号循环计数 */].FMMU3func;/* FMMU3功能 */EC_PRINT(// 格式化输出函数"Copy SII slave %d from %d.\n",slave, /* 从站编号 */i);/* 从站编号循环计数 */return 1;/* 找到从站 */}}return 0;/* 没有找到从站 */
}

SOEM 源码解析 ecx_lookup_prev_sii相关推荐

  1. EtherCAT主站SOEM源码解析----ecx_siiPDO()

    1.从站EEPROM的PDO信息 从站EEPROM存储的PDO信息如下如所示: TxPDO的类型名为50(0x0032),RxPDO的类型名为51(0x0033). 每个PDO占用的EEPROM字节数 ...

  2. EtherCAT主站SOEM源码解析----分布时钟DC

    分布时钟(DC,Dsitributed Clock)可以使所有EtherCAT设备使用相同的系统时间,从而控制各设备任务的同步执行. 1.DC从站 支持分布式时钟的从站称为DC从站,同步原理如下所示: ...

  3. SOEM 源码解析 ecx_LWR

    /* LWR "logical memory write" primitive. Blocking.* 逻辑写(LWR) Logical write 原语 阻塞* @param[i ...

  4. SOEM 源码解析 ecx_FPWR

    /* FPWR "configured address write" primitive. Blocking.* 配置的地址物理写(FPWR) Configured address ...

  5. SOEM 源码解析 ecx_FPWRw

    /* FPWR "configured address write" primitive. Blocking.* 配置的地址物理写(FPWR) Configured address ...

  6. SOEM 源码解析 ecx_LRD

    /* LRD "logical memory read" primitive. Blocking.* 逻辑读(LRD) Logical read 原语 阻塞* @param[in] ...

  7. SOEM 源码解析 ecx_FRMW

    /* FPRMW "configured address read, multiple write" primitive. Blocking.* 配置的地址物理读多次写(FRMW) ...

  8. SOEM 源码解析 ecx_set_slaves_to_default

    寄存器0x0101 寄存器0x0200 寄存器0x0300 寄存器0x0600 寄存器0x0800 寄存器0x0981 寄存器0x0910 寄存器0x0930 寄存器0x0934 寄存器0x0103 ...

  9. SOEM 源码解析 ecx_map_sii

    /* find SII mapping of slave* 查找从站的 SII 映射* @param[in] context = context struct* 上下文结构体* @param[in] ...

最新文章

  1. Android 保存图片到系统及相关问题的解决方案
  2. 实现Excel数据导入到SQL2005中的方法(回顾)
  3. 求二叉树某个结点的祖先
  4. WPF的样式(Style)继承
  5. Java讲课笔记11:构造方法与this关键字
  6. 圆柱与平面接触宽度_圆柱滚子轴承保持架锁爪变形引起的轴承故障
  7. python-excel-openpyxl读取数据---更新完善--1
  8. 计算机大学毕业好考公务员,哪些大学的毕业生更容易考上公务员?
  9. 4.28下午 听力611
  10. css 点击效果_纯 CSS 实现吸附效果
  11. 浅谈5类过零检测电路
  12. MFC 键盘鼠标钩子
  13. 2021上交应用统计考研经验贴(初试)
  14. 华为、华三交换机查看光模块收发光及光模块信息
  15. 神秘的百度工业互联网,到底有多厉害?
  16. html项目符号正方形,html – 列表项下的项目符号
  17. as转html5工具,HTML5 Convas APIs方法详解
  18. 基于ssm的crm系统开源_基于云的CRM软件工具
  19. 企立方:拼多多商家运营思路
  20. 盘点那些具有特色的写作软件

热门文章

  1. python看网络电视
  2. 2021年山东省安全员B证试题及解析及山东省安全员B证作业模拟考试
  3. 一个相当有用的利器,提高检索匹配的效率!
  4. MyEclipse使用Maven创建web项目+搭建SSM框架教
  5. MyEclipse2017使用maven搭建SSM项目
  6. 闪迪u盘不能识别好办法_SanDisk U盘无法被64位Windows7电脑识别
  7. 菜刀连接图片一句话木马
  8. 华为招聘实习生~base深圳,坂田总部
  9. 数字SOC设计之低功耗设计入门(一)——低功耗设计目的与功耗的类型
  10. Python -- 硬盘容量单位及网络速率单位换算