ProCon说明   快速入门   运动控制   EtherCAT   实时程序   API函数   控件库   硬件说明   问题排查   示例代码  
  

PDO/SDO


ProEn中设置PDO/SDO,以及读写PDO数据时U/G编号对应的编号设置具体详情请见:ProEn过程数据

1.写PDO数据

ProCon软件和从站的关联是读写PDO数据,数据表达的物理意义与从站有关,如果需要理解具体的物理意义建议咨询从站厂家

 函数  YK_API YKM_WritePDO(UINT32 uIndex, UINT32 gIndex, UINT16 *ptr, UINT32 len);
 YK_API YKM_WritePDOEx(YKM_NODE master, UINT32 uIndex, UINT32 gIndex, UINT16 *ptr, UINT32 len);
 功能  写PDO数据
 参数  master
 uIndex
 gIndex
 *ptr
 len
 [IN] 主站选择
 [IN] 站点编号:可在ProEn总线配置中的过程数据部分中查看
 [IN] G索引号:可在ProEn总线配置中的过程数据部分中查看
 [IN] 写入的数据
 [IN] 数据长度,16bit单位,取值范围:1代表16位,2代表32位(如果PDO为8位,输入参数也选1,系统会自动将8位扩展成16位)
 返回值  错误代码
 说明  调用后立即生效
 注意事项  运动控制相关PDO(0x6040,0x6060,0x0607A)被系统占用,请勿修改,否则会造成不可预知的错误。
  一般用于写模拟量从站,写通讯模块等特殊模块

2.读PDO数据

 函数  YK_API YKM_ReadPDO(UINT32 uIndex, UINT32 gIndex, UINT16 *ptr, UINT32 len)
 YK_API YKM_ReadPDOEx(YKM_NODE master, UINT32 uIndex, UINT32 gIndex, UINT16 *ptr, UINT32 len);
 功能  读PDO数据
 参数  master
 uIndex
 gIndex
 *ptr
 len
 [IN] 主站选择
 [IN] 站点编号:可在ProEn总线配置中的过程数据部分中查看
 [IN] G索引号:可在ProEn总线配置中的过程数据部分中查看
 [IN] 读取到的值存放位置
 [IN] 数据长度,16bit单位,取值范围:1代表16位,2代表32位(如果PDO为8位,输入参数也选1,系统会自动将8位扩展成16位)
 返回值  错误代码
 说明  调用后立即生效
 注意事项  一般用于读模拟量从站,读通讯模块等特殊模块

3.启动SDO写命令

 函数  YK_API YKM_WriteSDOCmd(UINT32 uIndex, UINT32 mainIndex, UINT32 subIndex, UINT32 byteNum, UINT32 val, UINT32 *sdoIndex);
 YK_API YKM_WriteSDOCmdEx(YKM_NODE master, UINT32 uIndex, UINT32 mainIndex, UINT32 subIndex, UINT32 byteNum, UINT32 val, UINT32* sdoIndex);;
 功能  启动SDO写命令
 参数  master
 uIndex
 mainIndex
 subIndex
 byteNum
 Val
 sdoIndex
 [IN] 主站选择
 [IN] 站点编号
 [IN] 对象主索引
 [IN] 对象子索引
 [IN] 字节数量
 [IN] 写入的值
 [IN] 返回的sdo队列索引,可用YKM_ReadSDOStatus指令进行查看是否完成
 返回值  错误代码
 说明  缓存区指令,指令执行后会生成一个sdoIndex索引,使用YKM_ReadSDOStatus指令判断指令是否完成
 注意事项  指令返回后不代表已经马上写入成功了,写入成功标志需要通过调用YKM_ReadSDOStatus判断

4.启动SDO读命令

 函数  YK_API YKM_ReadSDOCmd(UINT32 uIndex, UINT32 mainIndex, UINT32 subIndex, UINT32 byteNum, UINT32 *sdoIndex)
 YK_API YKM_ReadSDOCmdEx(YKM_NODE master, UINT32 uIndex, UINT32 mainIndex, UINT32 subIndex, UINT32 byteNum, UINT32* sdoIndex);
 功能  启动SDO读命令
 参数  master
 uIndex
 mainIndex
 subIndex
 byteNum
 sdoIndex
 [IN] 主站选择
 [IN] 站点编号
 [IN] 对象主索引
 [IN] 对象子索引
 [IN] 字节数量
 [IN] 返回的sdo队列索引,可用YKM_ReadSDOStatus指令进行查看是否完成
 返回值  错误代码
 说明  缓存区指令,指令执行后会生成一个sdoIndex索引,使用YKM_ReadSDOStatus指令判断指令是否完成,读出的值放在YKM_ReadSDOStatus的val参数。
 注意事项  指令返回后不代表已经马上读取成功了,读取成功标志需要通过调用YKM_ReadSDOStatus判断

5.读SDO队列状态

 函数  YK_API YKM_ReadSDOStatus(UINT32 sdoIndex, UINT32* valid, UINT32* val)
 YK_API YKM_ReadSDOStatusEx(YKM_NODE master, UINT32 sdoIndex, UINT32* valid, UINT32* val);
 功能  读SDO队列状态
 参数  master
 sdoIndex
 valid
 val
 [IN] 主站选择
 [IN] sdo队列索引
 [IN] 返回状态 1=有效 0=无效
 [IN] 返回值
 返回值  错误代码
 说明  缓存区指令
 注意事项  

6.获得SDO队列空闲数量

 函数  YK_API YKM_GetSDOIdel(UINT32* num);
 YK_API YKM_GetSDOIdelEx(YKM_NODE master, UINT32* num);
 功能  获得SDO队列空闲数量
 参数  master
 num
 [IN] 主站选择
 [IN] 返回的空闲数量
 返回值  错误代码
 说明  缓存区指令
 注意事项  SDO读写缓冲区大小为256,如果有大批量数据读写,调用前先用本函数查看缓冲区状态。

 

  
Copyright © 2015 深圳市优易控软件有限公司 www.proutech.com