10.4.1. 网络拓扑
10.4.2. 组网说明
该组网方式下,整流单元设置为CANopen从站模式。PLC作为整个通信网络主站,整流/逆变单元通过相关功能码设置CANopen从站节点、波特率、通讯断线使能及PDO交互数据。
10.4.3. 相关参数
表10.5逆变单元参数设置
功能码 | 名称 | 参数详细说明 | 缺省值 |
P14.07 | CANopen通讯超时故障时间 | 0.0(无效),0.1~60.0s | 0.0s |
P14.08 | CANopen通讯地址 | 0~127 | 1 |
P14.09 | CANopen波特率选择 | 0:50Kbps 1:100 Kbps 2:125Kbps 3:250Kbps 4:500Kbps 5:1M bps | 1 |
P14.10 | PZD2接收 | 0:无效 1:设定频率(0~Fmax(单位:0.01Hz)) 2:PID给定,范围(0~1000,1000对应100.0%) 3:PID反馈,范围(0~1000,1000对应100.0%) 4:转矩设定值(-3000~3000,1000对应100.0%电机额定电流) 5:正转上限频率设定值(0~Fmax(单位:0.01Hz)) 6:反转上限频率设定值(0~Fmax(单位:0.01Hz)) 7:电动转矩上限转矩(0~3000,1000对应100.0%电机额定电流) 8:制动转矩上限转矩(0~2000,1000对应100.0%电机额定电流) 9:虚拟输入端子命令,范围:0x000~0x1FF 10:虚拟输出端子命令,范围:0x00~0x0F 11:电压设定值(V/F分离专用) (0~1000,1000对应100.0%电机额定电压) 12:AO1输出设定值1(-1000~1000,1000对应100.0%) 13:AO2 输出设定值2(-1000~1000,1000对应100.0%) 14:位置给定高位(有符号数) 15:位置给定低位(无符号数) 16:位置反馈高位(有符号数) 17:位置反馈低位(无符号数) 18:位置反馈设定标志(先写1再写0,则位置反馈才可以设定) 19~31:保留 | 0 |
P14.11 | PZD3接收 | 0 | |
P14.12 | PZD4接收 | 0 | |
P14.13 | PZD5接收 | 0 | |
P14.14 | PZD6接收 | 0 | |
P14.15 | PZD7接收 | 0 | |
P14.16 | PZD8接收 | 0 | |
P14.17 | PZD9接收 | 0 | |
P14.18 | PZD10接收 | 0 | |
P14.19 | PZD11接收 | 0 | |
P14.20 | PZD12接收 | 0 | |
P14.21 | PZD2发送 | 0: 无效 1:运行频率(*100,Hz) 2:设定频率(*100,Hz) 3:母线电压(*10,V) 4:输出电压(*1,V) 5:输出电流(*10,A) 6:输出转矩实际值(*10,%) 7:输出功率实际值(*10,%) 8:运行转速(*1,RPM) 9:运行线速度(*1,m/s) 10:斜坡给定频率 11:故障代码 12:AI1值(*100,V) 13:AI2值(*100,V) 14:端子输入状态 15:端子输出状态 16:PID给定(*100,%) 17:PID反馈(*100,%) 18:电机额定转矩 19:位置给定高位(有符号数) 20:位置给定低位(无符号数) 21:位置反馈高位(有符号数) 22:位置反馈低位(无符号数) 23~30:保留 31:状态字 | 0 |
P14.22 | PZD3发送 | 0 | |
P14.23 | PZD4发送 | 0 | |
P14.24 | PZD5发送 | 0 | |
P14.25 | PZD6发送 | 0 | |
P14.26 | PZD7发送 | 0 | |
P14.27 | PZD8发送 | 0 | |
P14.28 | PZD9发送 | 0 | |
P14.29 | PZD10发送 | 0 | |
P14.30 | PZD11发送 | 0 | |
P14.31 | PZD12发送 | 0 |
表10.6整流单元参数设置
功能码 | 名称 | 参数详细说明 | 缺省值 |
P21.01 | CANopen模块地址 | 0~127 | 1 |
P21.02 | PZD2接收 | 0:无效 说明:CANopen通信模式, PZD2-PZD12暂时不需要接收任何命令, 整流单元的起停和故障复位,都是通过PZD1的内部通道实现的。 | 0 |
P21.03 | PZD3接收 | 0 | |
P21.04 | PZD4接收 | 0 | |
P21.05 | PZD5接收 | 0 | |
P21.06 | PZD6接收 | 0 | |
P21.07 | PZD7接收 | 0 | |
P21.08 | PZD8接收 | 0 | |
P21.09 | PZD9接收 | 0 | |
P21.10 | PZD10接收 | 0 | |
P21.11 | PZD11接收 | 0 | |
P21.12 | PZD12接收 | 0 | |
P21.13 | PZD2发送 | 0:无效 1:故障代码 2:直流电压值(*10,V ) 3:电网电压值(*1,V ) 4:电网频率值(*10,Hz) 5:制动器电流值(*10,A) 6:端子输入状态 7:端子输出状态 8:在线从站数目 9:02-17号从站在线状态 10:18-21号从站在线状态 11:CANopen总线负载率 12:卡槽1扩展卡类型 13:卡槽2扩展卡类型 14:卡槽1扩展卡软件版 15:卡槽2扩展卡软件版 16:U相电流值 17:V相电流值 18:W相电流值 19~20:保留 | 0 |
P21.14 | PZD3发送 | 0 | |
P21.15 | PZD4发送 | 0 | |
P21.16 | PZD5发送 | 0 | |
P21.17 | PZD6发送 | 0 | |
P21.18 | PZD7发送 | 0 | |
P21.19 | PZD8发送 | 0 | |
P21.20 | PZD9发送 | 0 | |
P21.21 | PZD10发送 | 0 | |
P21.22 | PZD11发送 | 0 | |
P21.23 | PZD12发送 | 0 | |
P21.29 | CANopen波特率 | 0:50Kbps 1:100Kbps 2:125Kbps 3:250Kbps 4:500Kbps 5:1M bps | 2 |
P21.30 | CANopen通讯超时故障时间 | 0.0(无效),0.1~60.0s | 0.0s |
10.4.4. CANopen协议简介
1、支持的功能
支持CAN2.0A 协议
支持CANopen DS301
2、支持的CANopen服务
PDO:支持4对PDO服务(PDO1~PDO4 TX,PDO1~PDO4 RX),PDO1用于读写变频器的参数;PDO2~PDO4用于实时控制和获取变频器的实际值
SDO:SDO信息采用“客户机/服务器”模式,用来配置从站节点并访问每个节点的对象字典
支持 Emergency 服务
支持节点保护(NMT Node Guarding)
支持心跳报文(Heartbeat Producer)
NMT(网络管理)
支持 NMT Module control
支持 NMT广播地址
支持 NMT Error control
支持 Boot-up
支持SYNC(1~240)
支持异步传输254和255
支持禁止时间
支持事件计时器
支持制造商定义的对象字典,可通过SDO来控制和读取变频器的实时值
3、不支持的CANopen服务
对象字典参数掉电保存服务
Time Stamp 服务
10.4.5. CANopen报文格式
CAN2.0A报文通过数据帧在主站和总线节点之间传输数据。
图10.2 报文结构图
通讯对象 | 功能代码(二进制) | COB-ID (十六进制) |
NMT | 0 | 0x00 |
SYNC | 1 | 0x80 |
EMERGENCY | 1 | 0x81 ~ 0xFF |
PDO1 Tx | 11 | 0x181 ~ 0x1FF |
PDO1 Rx | 100 | 0x201 ~ 0x27F |
PDO2 Tx | 101 | 0x281 ~ 0x2FF |
PDO2 Rx | 110 | 0x301 ~ 0x37F |
PDO3 Tx | 111 | 0x381 ~ 0x3FF |
PDO3 Rx | 1000 | 0x401 ~ 0x47F |
PDO4 Tx | 1001 | 0x481 ~ 0x4FF |
PDO4 Rx | 1010 | 0x501 ~ 0x57F |
SDO Tx | 1011 | 0x581 ~ 0x5FF |
SDO Rx | 1100 | 0x601 ~ 0x67F |
节点保护 | 1110 | 0x701 ~ 0x77F |
COB-ID因通讯地址的不同而不同,但同种指令其范围确定。
注:本说明书使用的指令如果不特别指明是远程帧的都是数据帧。
10.4.6. 管理服务指令(NMT)
此功能用于主站控制从站节点的NMT状态。
命令
主站→从站
COB-ID | Byte0 | Byte1 |
0x000 | 命令字(CS) | Node-ID(节点号) |
说明
此命令COB-ID固定为0x00。如果Node-ID =0,则命令被广播至所有CANopen从站,每一从站必须执行此NMT命令。各命令字(CS)的功能见表10.7:
表10.7 各命令字的功能
NMT命令字(CS) | NMT服务(控制动作) |
0x01 | 启动从站设备 |
0x02 | 停止从站设备 |
0x80 | 使从站进入预操作 |
0x81 | 复位从站 |
0x82 | 复位节点通信 |
举例
比如,将节点ID=3的EC-TX105进入到预操作状态,指令如下:
COB-ID | Byte0 | Byte1 |
0x000 | 0x80 | 0x03 |
再比如,启动CANopen网络中所有的EC-TX105节点,指令如下:
COB-ID | Byte0 | Byte1 |
0x000 | 0x01 | 0x00 |
10.4.7. 节点保护(NMT Node Guarding)
通过节点保护服务,NMT主节点可以检查每个节点的当前状态。
命令
请求:主站(远程帧)→从站
COB-ID | 无数据 |
0x700 + Node-ID |
应答:从站→主站
COB-ID | Byte0(状态值) |
0x700 + Node-ID | Bit7:触发位,Bit0~Bit6状态 |
说明
应答指令中的Byte0(状态值)的最高位(bit7)为触发位,即从站每发一帧应答就会交替变化(0、1),以示帧与帧之间的区别;Bit0~Bit6为从站的状态,该值所表达从站所处的状态如下表10.8所示:
表10.8 节点保护状态值
状态值(Byte0:Bit0~Bit6) | 所处状态 |
0x00 | 初始化(Initializing) |
0x04 | 停止状态(Stopped) |
0x05 | 操作状态(Operational) |
0x7F | 预操作状态(Pre-operational) |
举例
比如主站要检测从站3的状态,其命令如下:
主站(远程帧)→从站:
COB-ID | 无数据 |
0x703 |
从站收到主站发来的节电保护指令后向主站应答如下指令:
COB-ID | Byte0(状态值) |
0x703 | 0x85 |
其中,Byte0的Bit7=1,状态=0x05,表示节点号为3的从站正处于操作状态。如果从站再收到一条节点保护指令,将会向主站应答一帧状态值为0x05的指令,因为Byte0的Bit7要交替变换成0。
10.4.8. 心跳报文(Heartbeat Producer)
有时主站要求从站每隔一段时间就主动发送一帧心跳报文,以知道从站的实时状态。时间间隔参数在对象字典0x1017中定义(数据长度16位,单位:毫秒)。CANopen从站默认生产者心跳时间为500毫秒。
命令
从站→主站
COB-ID | Byte0 |
0x700 + Node-ID | 状态值 |
说明
心跳报文与节点保护应答帧格式相同,不同的是心跳报文没有触发位交替(始终为0)。状态值如表10.8所示。
举例
比如,从站地址为3,处于操作状态,0x1017中的参数设置为100,则该从站每隔100毫秒发送一帧心跳报文。
COB-ID | Byte0 |
0x703 | 0x05 |
可以用SDO来禁止心跳报文,发送2B 17 10 00 00 00 00 00(设置时间为0)。
注意:在通讯卡中同一时间节点保护和心跳报文不能同时使用。
10.4.9. 启动报文(NMT Boot-up)
当通讯卡初始化完成(Boot-up)后,就会发送一个启动报文。
命令
从站→主站
COB-ID | Byte0 |
0x700 +Node-ID | 0x00 |
举例
比如,通讯卡的节点号为3,初始化完成后发送的启动报文如下指令。
COB-ID | Byte0 |
0x703 | 0x00 |
10.4.10. 同步报文对象(SYNC)
SYNC信号一般由CANopen主站循环发出。SYNC 信号不包含任何数据,其主要用途是请求从站节点为同步传输类型的PDO Tx回复过程量。对象字典的0x1005定义了接收同步报文的COB-ID,在CANopen预定义连接集里定义其值为0x80。每个PDO Tx的传输类型为1~240为同步传输类型。
命令
主站→从站
COB-ID | 无数据 |
0x80 | / |
10.4.11. 紧急报文对象(EMCY)
当通讯卡或变频器内部出现错误,或错误清除时发送该报文。
命令
从站→主站
COB- ID | B y t e 0 | B y t e 1 | B y t e 2 | B y t e 3 | B y t e 4 | B y t e 5 | B y t e 6 | B y t e 7 |
0x80 + Node -ID | 紧急错误码 | 错误寄存器 | 变频器错误代码 | |||||
LSB | MSB | bit 7-0 | bit 15 -8 | bit 23 -16 | bit 31 -24 | bit 39 -32 |
说明
紧急错误码占两个字节,Byte0为低字节,Byte1为高字节;变频器错误代码占5字节,Byte3为低字节,Byte7为高字节。
紧急错误码指定当前出现的错误的具体类型,如表10.9所示。错误寄存器存放当前错误类型,根据该值可以判断出当前紧急报文所代表的错误类型,其值定义如表10.10所示。变频器错误代码参见变频器说明书,功能码P07.27给出了GD600变频器错误代码。
表10.9 紧急错误代码的含义
紧急错误代码(hex) | 代码功能描述 |
00xx | Error Reset 或No Error |
10xx | Generic Error |
20xx | Current |
21xx | Current,device input side |
22xx | Current,inside the device |
23xx | Current,device output side |
30xx | Voltage |
31xx | Mains voltage |
32xx | Voltage inside the device |
33xx | Output voltage |
40xx | Temperature |
41xx | Ambient temperature |
42xx | Device temperature |
50xx | Device hardware |
60xx | Device software |
61xx | Internal software |
62xx | User software |
63xx | Data set |
70xx | Additional modules |
80xx | Monitoring |
81xx | communication |
8110 | CAN overrun |
8120 | Error Passive |
8130 | Life Guard Error 或Heartbeat Error |
8140 | Recovered from Bus-Off |
82xx | Protocol Error |
8210 | PDO no processed Due to length error |
8220 | Length exceed |
90xx | External error |
F0xx | Additional functions |
FFxx | Device specific |
表10.10 错误寄存器位的含义
错误寄存器位(Bit) | 错误类型 |
0 | 普通错误(Generic)或无错误 |
1 | 电流错误(Current) |
2 | 电压错误(Voltage) |
3 | 温度错误(Temperature) |
4 | 通信错误(Communication) |
5 | 设备描述错误(Device profile specific) |
6 | Reserved(=0) |
7 | 生产厂商定义的错(Manufacturer specific) |
举例
比如节点号为3的从站为GD600变频器,变频器出现了“逆变单元U相保护”故障(OUT1),故障类型为1(即设备错误代码=1),则通讯卡发送紧急报文如下。
COB -ID | 紧急错误码 | 错误寄存器 | 变频器错误代码 | |||||
Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | |
0x83 | 0x00 | 0x30 | 0x04 | 0x01 | 0x00 | 0x00 | 0x00 | 0x00 |
从指令上可以看出,紧急错误码=0x3000,含义为Voltage,即电压错误;错误寄存器=0x04,即第2位为“1”,表示电压错误;设备错误代码=0x0000000001,查看Goodrive600变频器说明书,代号为1的错误为“逆变单元U相保护(OUT1)”。
当故障复位后,通讯卡发送下面的紧急报文告知主站:从站已无故障。
COB -ID | 紧急错误码 | 错误寄存器 | 变频器错误代码 | |||||
Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | |
0x83 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
10.4.12. 服务数据对象(SDO)
服务数据对象主要用来传输非时间关键数据,借助SDO可以读写设备对象字典的内容。
命令
请求:主站→从站
COB-ID | Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 |
0x600+ NodeID | 请求码 | 对象索引 | 子索引 | 响应数据 | ||||
LSB | MSB | bit 7-0 | bit 15-8 | bit 23-16 | bit 31-24 |
响应:从站→主站
COB -ID | Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 |
0x580+ NodeID | 响应码 | 对象索引 | 子索引 | 响应数据 | ||||
LSB | MSB | bit7 -0 | bit 15-8 | bit 23-16 | bit 31-24 |
说明
对象索引占两个字节,Byte1为低字节,Byte2为高字节。对象索引和子索引可参看附录中的对象字典。请求码分为读和写两种。
写请求码针对对象字典的条目所占的字符长度不同而不同;读请求固定为0x40。见表10.11。
读成功响应码针对对象字典的条目所占的字符长度不同而不同;写成功响应码固定为0x60。读或写失败响应码都是0x80。见表10.12。
表10.11 SDO请求码和请求数据
请求码类型 | 请求码 | 命令说明 | 请求数据 | |||
Byte 4 | Byte 5 | Byte 6 | Byte 7 | |||
写 | 0x23 | 写4字节数据 | bit 7-0 | bit 15-8 | bit23 -16 | bit31 -24 |
0x2B | 写2字节数据 | bit 7-0 | bit 15-8 | - | - | |
0x2F | 写1字节数据 | bit 7-0 | - | - | - | |
读 | 0x40 | 读数据 | - | - | - | - |
表10.12 SDO响应码和响应数据
响应码类型 | 响应码 | 命令说明 | 响应数据 | |||
Byte 4 | Byte 5 | Byte 6 | Byte 7 | |||
读 | 0x43 | 读的数据为4字节 | bit 7-0 | bit 15-8 | bit 23-16 | bit 31-24 |
0x4B | 读的数据为2字节 | bit 7-0 | bit 15-8 | - | - | |
0x4F | 读的数据为1字节 | bit 7-0 | - | - | - | |
写 | 0x60 | 写成功 | - | - | - | - |
读/写 | 0x80 | 读写失败 | 中止错误代码 | |||
bit 7-0 | bit 15-8 | bit 23-16 | bit 31-24 |
注:表10.11和表10.12中“-”表示保留,无作用。
终止错误代码如表10.13所示:
表10.13 中止错误代码
中止代码 | 代码功能描述 |
0503 0000 | 触发位没有交替改变 |
0504 0000 | SDO协议超时 |
0504 0001 | 非法或未知的Client/Server |
0504 0002 | 无效的块大小 |
0504 0003 | 无效的序号 |
0504 0004 | CRC错误 |
0504 0005 | 内存溢出 |
0601 0000 | 对象不支持访问 |
0601 0001 | 试图读只写对象 |
0601 0002 | 试图写只读对象 |
0602 0000 | 对象字典中对象不存在 |
0604 0041 | 对象不能够映射到PDO |
0604 0042 | 映射的对象的数目和长度超出PDO长度 |
0604 0043 | 一般性参数不兼容 |
0604 0047 | 一般性设备内部不兼容 |
0606 0000 | 硬件错误导致对象访问失败 |
0607 0010 | 数据类型不匹配,服务参数长度不匹配 |
0609 0011 | 对象字典中子索引不存在 |
0609 0030 | 超出参数的值范围 |
0609 0031 | 写入参数数值太大 |
0609 0032 | 写入参数数值太小 |
0609 0036 | 最大值小于最小值 |
0800 0000 | 一般性错误 |
0800 0020 | 数据不能传送或保存到应用 |
0800 0021 | 由于本地控制导致数据不能传送或者保存到应用 |
0800 0022 | 由于当前设备状态导致数据不能传送或保存到应用 |
0800 0023 | 对象字典动态缠身该错误或对象字典不存在 |
举例
比如从站地址为3,对索引为0x1801、子索引为03的对象进行读写操作。(索引为0x1801、子索引为03的对象表示PDO2 Tx的禁止时间,可查看附录B)
写例子:如果将PDO2 Tx的禁止时间改为1000ms,主站写操作指令如下所示:
COB-ID | 请求码 | 对象索引 | 子索引 | 请求数据 | ||||
Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | |
0x603 | 0x2B | 0x01 | 0x18 | 0x03 | 0xe8 | 0x03 | 0x00 | 0x00 |
收到主站发来的命令,如果修改成功,则从站响应如下指令:
COB-ID | 响应码 | 对象索引 | 子索引 | 响应数据 | ||||
Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | |
0x583 | 0x60 | 0x01 | 0x18 | 0x03 | 0x00 | 0x00 | 0x00 | 0x00 |
读例子:如果要读取PDO2 Tx的禁止时间,主站读操作指令如下所示:
COB-ID | 请求码 | 对象索引 | 子索引 | 请求数据 | ||||
Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | |
0x603 | 0x40 | 0x01 | 0x18 | 0x03 | 0x00 | 0x00 | 0x00 | 0x00 |
收到主站发来的命令,如果当前PDO2 Tx的禁止时间为1000ms,则从站响应如下指令:
COB-ID | 响应码 | 对象索引 | 子索引 | 响应数据 | ||||
Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | |
0x583 | 0x43 | 0x01 | 0x18 | 0x03 | 0xe8 | 0x03 | 0x00 | 0x00 |
读写错误例子:读取不存在的对象字典(索引为0x6000,子索引为0x00),主站读操作指令如下所示:
COB-ID | 请求码 | 对象索引 | 子索引 | 请求数据 | ||||
Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | |
0x603 | 0x40 | 0x00 | 0x60 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
因为该对象不存在,所以从站响应读写错误指令,如下:
COB-ID | 响应码 | 对象索引 | 子索引 | 响应数据 | ||||
Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | |
0x583 | 0x80 | 0x00 | 0x60 | 0x00 | 0x00 | 0x00 | 0x02 | 0x06 |
响应的错误代码为0x06020000,代表的含义为“对象字典不存在”。
10.4.13. 过程数据对象(PDO)
定义了4个PDO Tx(索引范围0x1800~0x1803)和4个PDO Rx(0x1400~0x1403)可用。PDO Rx是从站接收到主站发来的PDO指令,即主站命令;PDO Tx是从站发送给主站的PDO指令。
本通讯卡每个PDO的控制字、状态字、设定值和返回值都定义有“制造商定义的对象字典”。定义“制造商定义的对象字典”的目的是:除了通过PDO来监控变频器过程量外,还可以用SDO来监控,这将在下章介绍。下列每个PDO命令都标有“制造商定义的对象字典”,格式是0xXXXX.HH,XXXX表示索引,HH表示子索引,都是十六进制。
10.4.13.1. PDO Tx的触发模式
每个PDO Tx都定义有传输类型、禁止时间和事件定时器。传输类型对应的子索引是0x02,禁止时间对应的子索引是0x03,事件定时器对应的子索引是0x05。那么PDO2 Tx的传输类型对应的对象字典索引是0x1801、子索引是0x02,其它PDO Tx同理,更多可查看附录《对象字典》。禁止时间和事件定时器单位都是毫秒。
同步触发:当传输类型设为1~240,PDO Tx为同步传输。例如将PDO2 Tx传输类型设为n(1≤n≤240),则从站每收到n条同步报文对象(SYNC),就会发送一次PDO2 Tx指令,其它PDO Tx同理。
异步触发(254):当事件定时器非零时,从站定时地发送PDO Tx,例如PDO2 Tx的事件定时器设为200,则从站每隔200ms就发送一次PDO2 Tx。当事件定时器为零时,只要对应的PDO Tx的数据有变化,从站就会发送一次相应的PDO Tx,但发送的时间间隔受禁止时间限制,同一个PDO Tx报文在禁止时间内只能发送一次,这有效地降低总线负担。当禁止时间设置小于50ms时,以50ms工作。
异步触发(255):当事件定时器非零时,从站定时地发送PDO Tx,例如PDO2 Tx的事件定时器设为200,则从站每隔200ms就发送一次PDO2 Tx。当事件定时器为零时,从站每收到一条PDO Rx就会发送一条相应的PDO Tx,例如,收到了一条PDO2 Rx,从站就发送一条PDO2 Tx。
表10.14 本CANopen从站支持的触发模式
触发模式 | 传输类型 (十进制) | 事件触发 | PDO1 TX | PDO2 TX | PDO3 TX | PDO4 TX |
同步 | 1~240 | / | 不支持 | 支持 | 支持 | 支持 |
异步 | 254 | 事件定时器 | 不支持 | 支持 | 支持 | 支持 |
禁止时间 | 不支持 | 支持 | 支持 | 支持 | ||
255 | 事件定时器=0 | 支持 | 支持 | 支持 | 支持 | |
事件定时器 | 不支持 | 支持 | 支持 | 支持 |
表10.15 本CANopen从站PDO Tx默认值
/ | PDO1 TX | PDO2 TX | PDO3 TX | PDO4 TX |
传输类型 | 255 | 254 | 254 | 254 |
事件定时器(ms) | 0 | 0 | 0 | 0 |
禁止时间(ms) | 500 | 500 | 500 | 500 |
如何设置PDO Tx的触发类型请参考SDO命令。
10.4.13.2. PDO1
PDO1用于读写变频器的参数。PDO1和SDO功能有点相似,SDO用于读写对象字典,而PDO1用于读写变频器的参数。
注:PDO1 Tx传输类型只支持异步传输255,请不要将其设为其它的传输类型;也不要试图设置事件定时器定时地向主站发送PDO1 Tx。
命令
请求:主站→从站
COB-ID | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 |
请求码 | 参数地址 | 请求数据 | ||||
0x2100.00 | 0x2100.01 | 0x2100.02 |
说明
请求码占两个字节,Byte0为低字节,Byte1为高字节。请求码制造商定义的对象字典为:索引0x2100,子索引0x00。请求码功能如表10.16所示:
表10.16 请求码功能
请求码 | 功能 |
0 | 无任务 |
1 | 读取参数值 |
2 | 修改参数值[只是修改RAM] |
4 | 修改参数值 [RAM和EEPROM都修改](保留) |
参数地址占两个字节,Byte2为低字节,Byte3为高字节。参数地址表示要读取或修改数据的参数的地址。
GD系列变频器参数地址表示规则:地址高字节为功能码小数点前的数字,低字节为功能码小数点后的数字,但需转换成十六进制。如P10.01,功能码小数点前的数字为10,则参数地址高位为0x0A,功能码小数点后的数字为01,则参数地址低位为0x01,该功能码地址为0x0A01。
表10.17 GD系列变频器参数地址
功能码 | 名称 | 参数详细说明 | 缺省值 |
P10.00 | 简易PLC方式 | 0:运行一次后停机 1:运行一次后保持最终值运行 2:循环运行 | 0 |
简易PLC记忆选择 | 0:掉电不记忆 1:掉电记忆 | 0 |
变频器参数地址表示规则:变频器说明书“功能参数一览表”中每个功能码的序号对应的数值就是该功能码的参数地址,但在通讯过程中需转换为16进制数值。比如,功能码P10.01的序号为1001,则该功能码的参数地址为0x3E9(即十进制的1001)。
请求数据占两个字节,Byte4为低字节,Byte5为高字节。请求数据表示修改的数据,当指令为“读”时,请求数据无意义。
注意:PDO1 Rx数据域必须是6个字节,否则通讯卡会报紧急报文。
命令
响应:从站→主站
COB-ID | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 |
0x180+NODEID | 响应码 | 错误代码 | 响应数据 | 0x00 | 0x00 | |||
0x2000.00 | 0x2000.01 | 0x2000.02 | - | - |
说明
Byte6和Byte7为保留部分,固定为0x00。
响应码占两个字节,Byte0为低字节,Byte1为高字节。响应码功能如表10.18所示:
表10.18 响应码功能
响应码 | 功能 |
0 | 无响应 |
1 | 读写成功 |
3 | 读写错误,错误代码如表10.19所示 |
响应数据占4个字节,Byte4为低字节,Byte7为高字节。当响应的是写指令时,响应数据为修改的数据;当响应的是读指令时,响应数据为读回来的数据。
错误代码占两个字节,Byte2为低字节,Byte3为高字节。错误代码只在响应码为3时才有效,错误代码表示无法响应PDO1 Rx的原因,其含义如表10.19所示:
表10.19 错误代码
代码 | 名称 | 含义 |
00H | 无错误 | / |
01H | 非法命令 | 请求码是不允许的操作。这也许是因为功能码仅仅适用于新设备,而在此设备中没有实现;同时,也可能从站在错误状态中处理这种请求。 |
02H | 非法数据地址 | 对从站设备来说,主站请求参数地址是不允许的地址;特别是,寄存器地址和传输的字节数组合是无效的。 |
03H | 非法数据值 | 接收到的数据域中包含的是不允许的值。这个值指示了组合请求中剩余结构上的错误。 注意:它决不意味着寄存器中被提交存储的数据项有一个应用程序期望之外的值。 |
04H | 操作失败 | 参数写操作中对该参数设置为无效设置,例如功能输入端子不能重复设置等。 |
05H | 密码错误 | 密码效验地址写入的密码与用户设置的密码不同 |
06H | 数据帧错误 | 当上位机发送的帧信息中,数据帧的长度不正确或,RTU格式CRC校验位与下位机的校验计算数不同时。 |
07H | 参数为只读 | 主站写操作中更改的参数为只读参数 |
08H | 参数运行中不可改 | 主站写操作中更改的参数为运行中不可更改的参数 |
09H | 密码保护 | 主站进行读或写时,当设置了用户密码,又没有进行密码锁定开锁,将报系统被锁定。 |
PDO1举例
变频器为Goodrive600,从站地址为3,假设要设置变频器功能码P14.10=1。
指令分析:P14.10的参数地址是0x0F02。根据所定的协议,PDO1 Rx的请求码为0x02,参数地址为0x0F0D,请求数据为0x01,那么主站发送的PDO1 Rx如下:
COB-ID | 请求码 | 参数地址 | 请求数据 | |||
Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | |
0x203 | 0x02 | 0x00 | 0x0A | 0x0E | 0x01 | 0x00 |
如果变频器参数修改成功,则响应如下PDO1 Tx:
COB-ID | 响应码 | 错误代码 | 响应数据 | - | ||||
Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | |
0x183 | 0x01 | 0x00 | 0x00 | 0x00 | 0x01 | 0x00 | 0x00 | 0x00 |
10.4.13.3. PDO2 Rx
PDO2 Rx用于修改变频器控制字和实时过程量(设定值1、设定值2和设定值3)。控制字用于控制变频器的启停等,设定值用于控制变频器运行实时值,如设定频率等。
命令
主站→从站
COB-ID | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 |
0x300+NODEID | 控制字 | 设定值1 | 设定值2 | 设定值3 | ||||
0x2101.00 | 0x2100.03 | 0x2100.04 | 0x2100.05 |
说明
控制字占两字节,Byte0为低字节,Byte1为高字节。Goodrive600逆变单元控制字含义如表10.20所示,其它型号变频器以说明书为准。
表10.20 Goodrive600逆变单元控制字含义
位 | 名称 | 值 | 说明 |
0~7 | 通讯控制命令 | 1 | 正转运行 |
2 | 反转运行 | ||
3 | 正转点动 | ||
4 | 反转点动 | ||
5 | 停机 | ||
6 | 自由停机(紧急停机) | ||
7 | 故障复位 | ||
8 | 点动停止 | ||
8 | 保留 | / | / |
/ | / | ||
9~10 | 选择电机组别 | 00 | MOTOR GROUP 1 SELECTION (选择电机1) |
01 | MOTOR GROUP 2 SELECTION (选择电机2) | ||
02 | MOTOR GROUP 3 SELECTION (选择电机3) | ||
03 | MOTOR GROUP 4 SELECTION (选择电机4) | ||
11 | 转矩控制选择 | 1 | 转矩控制使能 |
0 | 转矩控制禁止 | ||
14 | 保留 | 1 | / |
0 | / | ||
15 | 保留 | 1 | / |
0 | / |
各设定值的功能可以通过变频器功能码来设定,设定方法和PROFIBUS通讯的“PZD接收”相同,请参看变频器说明书。“设定值1”、“设定值2”、“设定值3”分别与“PZD2接收”、“PZD3接收”、“PZD4接收”对应。假如要将“设定值1”功能设为“设定频率”,只需将变频器“PZD2接收”功能码选择“1:设定频率”。其它设定值功能同理。当同时使能多个设定值时,其中一个设置值设定失败(比如超出范围)不会影响其它设定值的设定。
举例
假设变频器为Goodrive600,从站地址为3。用CANopen通讯控制逆变单元运行,和用CANopen通讯给定运行频率,频率设为50Hz。
指令分析:首先将变频器启动方式设为CANopen通讯(P00.01=2,P00.02=1),频率给定方式也设为CANopen通讯(P00.06=9)。本例用“设定值2”来给定运行频率(P14.11=1,即PZD3选择1:设定频率)。
控制字=0x01时表示运行变频器;频率设为50Hz,所以设定值2=5000,即0x1388。
主站发送的PDO2Rx命令如下:
COB-ID | 控制字 | 设定值1 | 设定值2 | 设定值3 | ||||
Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | |
0x303 | 0x01 | 0x00 | 0x00 | 0x00 | 0x88 | 0x13 | 0x00 | 0x00 |
10.4.13.4. PDO2 Tx
PDO2 Tx是变频器发给主站的指令,包含状态字和实时过程量(返回值1、返回值2和返回值3)。状态字用于告知变频器的状态,返回值用于发送变频器运行实时值,如运行频率等。
PDO2 Tx传输类型默认为254,所以只要状态字或者任何一个返回值数据有变化就会发送PDO2 Tx。
命令
从站→主站
COB-ID | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 |
0x280+NODEID | 状态字 | 返回值1 | 返回值2 | 返回值3 | ||||
0x2001.00 | 0x2000.03 | 0x2000.04 | 0x2000.05 |
说明
状态字占两字节,Byte0为低字节,Byte1为高字节。Goodrive600逆变单元状态字含义如表10.21所示,其它型号变频器以说明书为准。
表10.21 Goodrive600逆变单元状态字含义
位 | 名称 | 值 | 说明 |
0~7 | 运行状态字节 | 1 | 正转运行中 |
2 | 反转运行中 | ||
3 | 变频器停机中 | ||
4 | 变频器故障中 | ||
5 | 变频器POFF状态 | ||
8 | 母线电压建立 | 1 | 运行准备就绪 |
0 | 运行准备未就绪 | ||
9~10 | 电机组别反馈 | 0 | 电机1反馈 |
1 | 电机2反馈 | ||
2 | 电机3反馈 | ||
3 | 电机4无反馈 | ||
11 | 电机类型反馈 | 1 | 同步电机 |
0 | 异步电机 | ||
12 | 过载预警反馈 | 1 | 过载预报警 |
0 | 未过载预报警 | ||
13 | 激磁过程中 | 1 | 激磁过程中 |
0 | 磁通建立 | ||
14 | 保留 | 1 | / |
0 | / | ||
15 | 保留 | 1 | / |
0 | / |
各返回值的功能可以通过变频器功能码来设定,设定方法和PROFIBUS通讯的“PZD发送”相同,请参看变频器说明书。“返回值1”、“返回值2”、“返回值3”分别与“PZD2发送”、“PZD3发送”、“PZD4发送”对应。假如要将“返回值1”功能设为“运行频率”,只需将变频器“PZD2发送”功能码选择“1:设定频率”。其它返回值功能也是如此。可同时使能多个返回值。
举例
假设变频器为Goodrive600,从站地址为3。如果变频器正在运行,运行频率为50.00Hz。返回值1设为“运行频率”功能,返回值2设为“输出电压”功能,返回值3无功能。
指令分析:首先将返回值1设为变频器的运行频率(P14.21=1),返回值2设为变频器的输出电压(P14.22=4),返回值3设为无效(P14.23=0)。
因为变频器正在正转,且母线电压已建立,所以状态字=0x0101;因为运行频率为50.00Hz,所以“返回值1”=5000,即0x1388。假设输出电压为380V,那么“返回值2”=0x017C。
变频器发送的PDO1 Tx指令如下:
COB-ID | 状态字 | 返回值1 | 返回值2 | 返回值3 | ||||
Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | |
0x283 | 0x01 | 0x01 | 0x88 | 0x13 | 0x7C | 0x01 | 0x00 | 0x00 |
10.4.13.5. PDO3 Rx、PDO4 Rx
PDO3 Rx、PDO4 Rx用于修改变频器的实时过程量,如设定频率。
PDO3 Rx命令
主站→从站
COB-ID | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 |
0x400+NODEID | 设定值4 | 设定值5 | 设定值6 | 设定值7 | ||||
0x2100.06 | 0x2100.07 | 0x2100.08 | 0x2100.09 |
PDO4 Rx命令
主站→从站
COB-ID | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 |
0x500+NODEID | 设定值8 | 设定值9 | 设定值10 | 设定值11 | ||||
0x2100.0a | 0x2100.0b | 0x2100.0c | 0x2100.0d |
说明
PDO3 Rx、PDO4 Rx使用方法如同PDO2 Rx设定值部分。各设定值与PROFIBUS PZD对应关系如表10.22所示。
10.4.13.6. PDO3 Tx、PDO4 Tx
PDO3 Tx、PDO4 Tx用于变频器向主站发送实时过程量,如运行频率。
PDO3 Tx、PDO4 Tx传输类型默认都是254,所以同一条指令中只要返回值数据有变化就发送PDO3 Tx或PDO4 Tx。
PDO3 Tx命令
从站→主站
COB-ID | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 |
0x380+NODEID | 返回值4 | 返回值5 | 返回值6 | 返回值7 | ||||
0x2000.06 | 0x2000.07 | 0x2000.08 | 0x2000.09 |
PDO4 Tx命令
从站→主站
COB-ID | Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 |
0x480+NODEID | 返回值8 | 返回值9 | 返回值10 | 返回值11 | ||||
0x2000.0a | 0x2000.0b | 0x2000.0c | 0x2000.0d |
10.4.13.7. SDO命令监控过程量
用SDO读取“制造商定义的对象字典”来达到监控变频器的目的。
“制造商定义的对象字典”中的控制字、状态字、设定值和返回值的定义及使用方法请参考PDO那章。SDO使用说明请参考SDO那节。请不用企图通过SDO来读写变频器的参数。
“制造商定义的对象字典”如表10.22和表10.23所示。
表10.22“制造商定义的对象字典”控制部分
索引(hex) | 子索引(hex) | 功能 | 访问权限 | 数据长度 | 描述 |
2100 | 0 | 请求码(请勿使用) | RW | 2 Byte | / |
1 | 参数地址(请勿使用) | RW | 2 Byte | / | |
2 | 请求数据(请勿使用) | RW | 2 Byte | / | |
3 | 设定值1 | RW | 2 Byte | 对应PZD2 接收 | |
4 | 设定值2 | RW | 2 Byte | 对应PZD3 接收 | |
5 | 设定值3 | RW | 2 Byte | 对应PZD4 接收 | |
6 | 设定值4 | RW | 2 Byte | 对应PZD5 接收 | |
7 | 设定值5 | RW | 2 Byte | 对应PZD6 接收 | |
8 | 设定值6 | RW | 2 Byte | 对应PZD7 接收 | |
9 | 设定值7 | RW | 2 Byte | 对应PZD8 接收 | |
A | 设定值8 | RW | 2 Byte | 对应PZD9 接收 | |
B | 设定值9 | RW | 2 Byte | 对应PZD10接收 | |
C | 设定值10 | RW | 2 Byte | 对应PZD11接收 | |
D | 设定值11 | RW | 2 Byte | 对应PZD12接收 | |
E | 保留 | RW | 2 Byte | / | |
F | 保留 | RW | 2 Byte | / | |
2101 | 0 | 控制字 | RW | 2 Byte | / |
表10.23“制造商定义的对象字典”状态部分
索引(hex) | 子索引(hex) | 功能 | 访问权限 | 数据长度 | 描述 |
2000 | 0 | 响应码(请勿使用) | RO | 2 Byte | / |
1 | 错误代码(请勿使用) | RO | 2 Byte | / | |
2 | 响应数据(请勿使用) | RO | 2 Byte | / | |
3 | 返回值1 | RO | 2 Byte | 对应PZD2发送 | |
4 | 返回值2 | RO | 2 Byte | 对应PZD3发送 | |
5 | 返回值3 | RO | 2 Byte | 对应PZD4发送 | |
6 | 返回值4 | RO | 2 Byte | 对应PZD5发送 | |
7 | 返回值5 | RO | 2 Byte | 对应PZD6发送 | |
8 | 返回值6 | RO | 2 Byte | 对应PZD7发送 | |
9 | 返回值7 | RO | 2 Byte | 对应PZD8发送 | |
A | 返回值8 | RO | 2 Byte | 对应PZD9发送 | |
B | 返回值9 | RO | 2 Byte | 对应PZD10发送 | |
C | 返回值10 | RO | 2 Byte | 对应PZD11发送 | |
D | 返回值11 | RO | 2 Byte | 对应PZD12发送 | |
E | 保留 | RO | 2 Byte | / | |
F | 保留 | RO | 2 Byte | / | |
2001 | 0 | 状态字 | RO | 2 Byte | / |
举例
例1:使地址为3的变频器正转运行,主站发送的SDO命令如下:
COB-ID | 请求码 | 对象索引 | 子索引 | 请求数据 | ||||
Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | |
0x603 | 0x2B | 0x01 | 0x21 | 0x00 | 0x01 | 0x00 | 0x00 | 0x00 |
例2:假设从站变频器的地址为3,“设定值1”的功能定义为“设定频率”,要将频率设为50.00Hz(即“设定值1”=0x1388)。主站发送的SDO命令如下:
COB-ID | 请求码 | 对象索引 | 子索引 | 请求数据 | ||||
Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | |
0x603 | 0x2B | 0x00 | 0x21 | 0x03 | 0x88 | 0x13 | 0x00 | 0x00 |
例3:读取地址为3的变频器的运行状态,主站发送的SDO命令如下:
COB-ID | 请求码 | 对象索引 | 子索引 | 请求数据 | ||||
Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | |
0x603 | 0x40 | 0x01 | 0x20 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
如果此时变频器正在正转运行,则向主站返回的SDO指令如下:
COB-ID | 请求码 | 对象索引 | 子索引 | 请求数据 | ||||
Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | |
0x583 | 0x4B | 0x01 | 0x20 | 0x00 | 0x01 | 0x01 | 0x00 | 0x00 |
例4:假设从站变频器的地址为3,“返回值1”的功能定义为“运行频率”。主站要读取变频器运行频率,发送的SDO命令如下。
COB-ID | 请求码 | 对象索引 | 子索引 | 请求数据 | ||||
Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | |
0x603 | 0x40 | 0x00 | 0x20 | 0x03 | 0x00 | 0x00 | 0x00 | 0x00 |
如果此时变频器运行频率为50.00Hz,则向主站返回的SDO指令如下:
COB-ID | 请求码 | 对象索引 | 子索引 | 请求数据 | ||||
Byte0 | Byte1 | Byte2 | Byte3 | Byte4 | Byte5 | Byte6 | Byte7 | |
0x583 | 0x4B | 0x00 | 0x20 | 0x03 | 0x88 | 0x13 | 0x00 | 0x00 |