直接跳到内容
本页目录

CANopenReadOD

  • 位置

sys_canopen.aclib

  • 功能说明

通过SDO服务读取对象数据。

  • 参数说明
输入输出参数数据类型描述保持常量
od_readcanopen_odCANopen对象数据××
输出参数数据类型描述保持常量
CANopenReadODSINT成功返回实际读取字节数,失败返回-1。失败后可查看设备日志了解失败原因。××

canopen_od类型说明:

名称数据类型含义
canbus_portUINTCAN端口号
node_idUINT站号
indexUINT主索引
subIndexUSINT子索引
buffer_sizeUSINT数据缓冲区大小,大于0小于等于32。此值必须≤保存读取数据变量的字节长度,否则会出现数据覆盖。
bufferPOINTER TO BYTE数据缓冲区地址

Error错误码(查看设备日志得到的错误码含义):

终止码描述
0503 0000h切换位不交替
0504 0000hSDO协议超时
0504 0001h命令说明符无效
0504 0002h块大小无效
0504 0003h序列号无效
0504 0004hCRC错误
0504 0005h内存不足
0601 0000h不支持访问对象
0601 0001h尝试读取只写对象
0601 0002h尝试写一个只读对象
0602 0000h对象在对象字典中不存在
0604 0041h对象不能映射到PDO
0604 0042h要映射的对象数量和长度超过PDO长度
0604 0043h一般参数不兼容的原因
0604 0047h一般在设备内部不兼容
0606 0000h由于硬件错误,访问失败
0607 0010h数据类型不匹配,服务参数长度不匹配
0607 0012h数据类型不匹配,服务参数的长度太高
0607 0013h数据类型不匹配,服务参数的长度太低
0609 0011h子索引不存在
0609 0030h超出参数范围(仅限写访问)
0609 0031h参数值太高
0609 0032h参数值太低
0609 0036h最大值小于最小值
0800 0000h一般错误
0800 0020h数据不能传输或存贮到应用程序
0800 0021h由于本地控制,数据不能传输或存储到应用程序中
0800 0022h由于当前设备状态,数据无法传输或存储到应用程序
0800 0023h对象字典动态生成失败或者不存在对象字典
  • 示例

    (例程路径:安装目录\example\CANOPEN指令)

    • 示例功能说明 读取站号64、主索引为16#6043、子索引为1的DINT类型数据。

    • 变量定义

      变量名数据类型初值注释
      od_readcanopen_odCANopen对象数据
      readODSINT成功返回实际读取字节数,失败返回-1。
      DataDINT保存读取数据变量

canopen_od参数:

名称数据类型含义
canbus_portUINT1CAN端口号
node_idUINT64站号
indexUINT16#6043主索引
subIndexUSINT1子索引
buffer_sizeUSINT4数据缓冲区大小
bufferPOINTER TO BYTE数据缓冲区地址
  • CFC示例

    img

  • ST示例

    od_read.buffer:= ADR( Data );

​ readOD := CANopenReadOD( od_read );

CANopenWriteOD

  • 位置

sys_canopen.aclib

  • 功能说明

通过SDO服务写入对象数据。

  • 参数说明
输入输出参数数据类型描述保持常量
od_writecanopen_odCANopen对象数据××
输出参数数据类型描述保持常量
CANopenWriteODSINT成功返回实际写入字节数,失败返回-1。失败后可查看设备日志了解失败原因。××

canopen_od类型说明:

名称数据类型含义
canbus_portUINTCAN端口号
node_idUINT站号
indexUINT主索引
subIndexUSINT子索引
buffer_sizeUSINT数据缓冲区大小,大于0小于等于8。即最大写8个字节长度的数据。
bufferPOINTER TO BYTE数据缓冲区地址

Error错误码(查看设备日志得到的错误码含义):

终止码描述
0503 0000h切换位不交替
0504 0000hSDO协议超时
0504 0001h命令说明符无效
0504 0002h块大小无效
0504 0003h序列号无效
0504 0004hCRC错误
0504 0005h内存不足
0601 0000h不支持访问对象
0601 0001h尝试读取只写对象
0601 0002h尝试写一个只读对象
0602 0000h对象在对象字典中不存在
0604 0041h对象不能映射到PDO
0604 0042h要映射的对象数量和长度超过PDO长度
0604 0043h一般参数不兼容的原因
0604 0047h一般在设备内部不兼容
0606 0000h由于硬件错误,访问失败
0607 0010h数据类型不匹配,服务参数长度不匹配
0607 0012h数据类型不匹配,服务参数的长度太高
0607 0013h数据类型不匹配,服务参数的长度太低
0609 0011h子索引不存在
0609 0030h超出参数范围(仅限写访问)
0609 0031h参数值太高
0609 0032h参数值太低
0609 0036h最大值小于最小值
0800 0000h一般错误
0800 0020h数据不能传输或存贮到应用程序
0800 0021h由于本地控制,数据不能传输或存储到应用程序中
0800 0022h由于当前设备状态,数据无法传输或存储到应用程序
0800 0023h对象字典动态生成失败或者不存在对象字典
  • 示例

    (例程路径:安装目录\example\CANOPEN指令)

    • 示例功能说明 写站号126、主索引为16#6040、子索引为1的LINT数据15。

    • 变量定义

      变量名数据类型初值注释
      od_writecanopen_odCANopen对象数据
      writeODSINT成功返回实际写入字节数,失败返回-1。
      DataDINT待写入的数据变量

canopen_od参数:

名称数据类型含义
canbus_portUINT1CAN端口号
node_idUINT126站号
indexUINT16#6040主索引
subIndexUSINT1子索引
buffer_sizeUSINT8数据缓冲区大小
bufferPOINTER TO BYTE数据缓冲区地址
  • CFC示例

    img

  • ST示例

    od_write.buffer:= ADR( Data );

​ writeOD := CANopenWriteOD( od_write );

CANopenNMT

  • 位置

sys_canopen.aclib

  • 功能说明

发送NMT服务,目前支持的服务:启动0x01,停止0x02, 预运行0x80,复位节点0x81,复位通信0x82。

  • 参数说明
输入输出参数数据类型描述保持常量
nmtcanopen_nmtCANopen NMT命令对象××
输出参数数据类型描述保持常量
CANopenNMTSINT成功返回0,失败返回-1。失败后可查看设备日志了解失败原因。××

canopen_nmt类型说明:

名称数据类型含义
canbus_portUINTCAN端口号
node_idUINT站号(0:表示对所有从站生效;1~127:对指定站号生效。)
commandUDINT命令(启动0x01, 停止0x02,预运行0x80,复位节点0x81,复位通信0x82)
  • 示例

    (例程路径:安装目录\example\CANOPEN指令)

    • 示例功能说明 发送CANopen NMT服务,复位3号从站节点。

    • 变量定义

      变量名数据类型初值注释
      NMTcanopen_nmtCANopen NMT数据
      nmt_RetSINTNMT命令执行结果

canopen_nmt参数:

名称数据类型含义
canbus_portUINT1CAN端口号
node_idUINT3站号(0:表示对所有从站生效;1~127:对指定站号生效。)
commandUDINT0x81命令(启动0x01, 停止0x02,预运行0x80,复位节点0x81,复位通信0x82)
  • CFC示例

    img

  • ST示例

    nmt_Ret := CANopenNMT( NMT );

CANopenReadOD已经加载完毕