CANopenReadOD
- 位置
sys_canopen.aclib
- 功能说明
通过SDO服务读取对象数据。
- 参数说明
输入输出参数 | 数据类型 | 描述 | 保持 | 常量 |
---|---|---|---|---|
od_read | canopen_od | CANopen对象数据 | × | × |
输出参数 | 数据类型 | 描述 | 保持 | 常量 |
---|---|---|---|---|
CANopenReadOD | SINT | 成功返回实际读取字节数,失败返回-1。失败后可查看设备日志了解失败原因。 | × | × |
canopen_od类型说明:
名称 | 数据类型 | 含义 |
---|---|---|
canbus_port | UINT | CAN端口号 |
node_id | UINT | 站号 |
index | UINT | 主索引 |
subIndex | USINT | 子索引 |
buffer_size | USINT | 数据缓冲区大小,大于0小于等于32。此值必须≤保存读取数据变量的字节长度,否则会出现数据覆盖。 |
buffer | POINTER TO BYTE | 数据缓冲区地址 |
Error错误码(查看设备日志得到的错误码含义):
终止码 | 描述 |
---|---|
0503 0000h | 切换位不交替 |
0504 0000h | SDO协议超时 |
0504 0001h | 命令说明符无效 |
0504 0002h | 块大小无效 |
0504 0003h | 序列号无效 |
0504 0004h | CRC错误 |
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_read canopen_od CANopen对象数据 readOD SINT 成功返回实际读取字节数,失败返回-1。 Data DINT 保存读取数据变量
canopen_od参数:
名称 | 数据类型 | 值 | 含义 |
---|---|---|---|
canbus_port | UINT | 1 | CAN端口号 |
node_id | UINT | 64 | 站号 |
index | UINT | 16#6043 | 主索引 |
subIndex | USINT | 1 | 子索引 |
buffer_size | USINT | 4 | 数据缓冲区大小 |
buffer | POINTER TO BYTE | 数据缓冲区地址 |
CFC示例
ST示例
od_read.buffer:= ADR( Data );
readOD := CANopenReadOD( od_read );
CANopenWriteOD
- 位置
sys_canopen.aclib
- 功能说明
通过SDO服务写入对象数据。
- 参数说明
输入输出参数 | 数据类型 | 描述 | 保持 | 常量 |
---|---|---|---|---|
od_write | canopen_od | CANopen对象数据 | × | × |
输出参数 | 数据类型 | 描述 | 保持 | 常量 |
---|---|---|---|---|
CANopenWriteOD | SINT | 成功返回实际写入字节数,失败返回-1。失败后可查看设备日志了解失败原因。 | × | × |
canopen_od类型说明:
名称 | 数据类型 | 含义 |
---|---|---|
canbus_port | UINT | CAN端口号 |
node_id | UINT | 站号 |
index | UINT | 主索引 |
subIndex | USINT | 子索引 |
buffer_size | USINT | 数据缓冲区大小,大于0小于等于8。即最大写8个字节长度的数据。 |
buffer | POINTER TO BYTE | 数据缓冲区地址 |
Error错误码(查看设备日志得到的错误码含义):
终止码 | 描述 |
---|---|
0503 0000h | 切换位不交替 |
0504 0000h | SDO协议超时 |
0504 0001h | 命令说明符无效 |
0504 0002h | 块大小无效 |
0504 0003h | 序列号无效 |
0504 0004h | CRC错误 |
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_write canopen_od CANopen对象数据 writeOD SINT 成功返回实际写入字节数,失败返回-1。 Data DINT 待写入的数据变量
canopen_od参数:
名称 | 数据类型 | 值 | 含义 |
---|---|---|---|
canbus_port | UINT | 1 | CAN端口号 |
node_id | UINT | 126 | 站号 |
index | UINT | 16#6040 | 主索引 |
subIndex | USINT | 1 | 子索引 |
buffer_size | USINT | 8 | 数据缓冲区大小 |
buffer | POINTER TO BYTE | 数据缓冲区地址 |
CFC示例
ST示例
od_write.buffer:= ADR( Data );
writeOD := CANopenWriteOD( od_write );
CANopenNMT
- 位置
sys_canopen.aclib
- 功能说明
发送NMT服务,目前支持的服务:启动0x01,停止0x02, 预运行0x80,复位节点0x81,复位通信0x82。
- 参数说明
输入输出参数 | 数据类型 | 描述 | 保持 | 常量 |
---|---|---|---|---|
nmt | canopen_nmt | CANopen NMT命令对象 | × | × |
输出参数 | 数据类型 | 描述 | 保持 | 常量 |
---|---|---|---|---|
CANopenNMT | SINT | 成功返回0,失败返回-1。失败后可查看设备日志了解失败原因。 | × | × |
canopen_nmt类型说明:
名称 | 数据类型 | 含义 |
---|---|---|
canbus_port | UINT | CAN端口号 |
node_id | UINT | 站号(0:表示对所有从站生效;1~127:对指定站号生效。) |
command | UDINT | 命令(启动0x01, 停止0x02,预运行0x80,复位节点0x81,复位通信0x82) |
示例
(例程路径:安装目录\example\CANOPEN指令)
示例功能说明 发送CANopen NMT服务,复位3号从站节点。
变量定义
变量名 数据类型 初值 注释 NMT canopen_nmt CANopen NMT数据 nmt_Ret SINT NMT命令执行结果
canopen_nmt参数:
名称 | 数据类型 | 值 | 含义 |
---|---|---|---|
canbus_port | UINT | 1 | CAN端口号 |
node_id | UINT | 3 | 站号(0:表示对所有从站生效;1~127:对指定站号生效。) |
command | UDINT | 0x81 | 命令(启动0x01, 停止0x02,预运行0x80,复位节点0x81,复位通信0x82) |
CFC示例
ST示例
nmt_Ret := CANopenNMT( NMT );