/* 通过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. koa连接mysql_CentOS 环境 Node + Koa2 连接 MySQL (ECS系列三)
  2. 浅析MySQL InnoDB的隔离级别
  3. centos 6.5 安装dotnet core 2.2
  4. python输入一组数字存到列表_Python如何使用输入传递多个值并将它们存储在一个列表中(简单版本),python,怎么,input,传入,储存,到...
  5. python卡方分布计算
  6. C语言模拟实现标准库函数之memcpy()
  7. c++服务器websocket支持
  8. discuz二次元文章博客模板
  9. pdfbox java.lang.outofmemoryerror_java - PDFBox 2.0.1挂起渲染pdf页面 - 堆栈内存溢出
  10. omnigraffle 画曲线_「技法」三步学会用绘图利器 OmniGraffle 绘制流程图
  11. 如何修改python代码_解决如何去除Python代码前行号的方法
  12. 写软件开发需求你必须掌握的规格
  13. .NET框架类在ASP.NET中的使用(1)——QA
  14. 用手机玩转GIS!这些你常用的GIS软件竟然都有手机版
  15. 用传感器建立地球中枢神经系统可预警天灾
  16. MySQL数据库基础操作(一)
  17. 微信商业闭环谈论之微信开放平台实现微信卡券投放实践(附部分JAVA源码)
  18. js制作简单的计算器
  19. php 文本格式化_格式化PHP文本
  20. messenger_MSN Messenger加密和隐私

热门文章

  1. 数学建模学习(1) 线性规划
  2. 公共WIFI短信认证功能的实现原理
  3. 计算机网络——应用层之电子邮件(E-mail)
  4. 华为美女小姐姐,被外派墨西哥后,发生的事...
  5. UVA 12663 第九届省赛 高桥与低桥 线段树
  6. 字节飞书提前批一面(凉的透透的)
  7. 一个跨界程序员:不务正业的这几年,我如何让自己的收入翻了十倍(转)
  8. 一个简单实用的电子称数据接收/解析类(C#)(附简单使用实例)
  9. TokenGazer 深度研究 | Synthetix:合成资产市场增长迅速 其死亡螺旋值得警惕
  10. RabbitMQ实战运用(三)——安装与配置