1. CAN接收 REV-CAN
1. CAN接收 REV-CAN
1.1. 如仅需参考REV-CAN指令说明, 请直接翻阅至第4条 "联调"
1.2. PLC型号
a) S-8X8T: 8通道数字量输入,8通道数字量输出,背接24V供电,背接485通信,面板USB通信,侧插CAN接口,4路高速脉冲输出,2路硬件高速计数,2路软件高速计数。
b) S-8X8T-C: 8通道数字量输入,8通道数字量输出,背接24V供电,背接CAN通信,面板USB通信,侧插CAN接口(与背部为同一CAN总线),4路高速脉冲输出,2路硬件高速计数,2路软件高速计数。
c) S-16T: 16通道数字量输出,背接24V供电,背接485通信,面板USB通信,侧插CAN接口,4路高速脉冲输出,2路硬件高速计数,2路软件高速计数。
d) S-16T-C: 16通道数字量输出,背接24V供电,背接CAN通信,面板USB通信,侧插CAN接口(与背部为同一CAN总线),4路高速脉冲输出,2路硬件高速计数,2路软件高速计数。
1.3. CAN连接设置
a) S系列plc作为扩展模块使用时,支持的主机类型包括:FAs-32MT-AC,FAs-50MT-AC,FAs-66MT-AC,FAt-16MT-AC,注意一个网络中只能有1个主机,从机目前支持最多16个。
b) 模块使用CAN接口与主机进行通信,支持侧面直插或背部端子远距离接入总线,直插连接时建议使用100kbps以上比特率以提高通信速度,端子远距离连接总线长度25m时建议使用500kbps以下比特率,连接线建议采用较粗的屏蔽双绞线;总线端接100Ω电阻(可接于侧插端口的上两针或下两针间,另外也有端接电阻小插件选配,注意方向为箭头向上)。
c) 模块CAN设置
i. 菜单栏选择“设置”下的“工程设置”
图1 SDO2.1
ii. 弹出的工程设置窗口中选择模块型号
图2 SDO2.2
iii. 选择左侧的“通信参数”标签,在CAN标签页下配置节点号和比特率,模块的滤波设置目前也在工程设置下的“滤波设置”标签页;此处配置非常重要:节点号将与主机配置处的X/Y偏移地址对应,与接入CAN网络的位置无关,而不是像此前的扩展模块一样根据插入位置自动编号;同一个CAN网络需要使用一个比特率,否则不仅无法连接主机还会对总线上所有传输造成干扰
图3 SDO2.3
iv. 勾选配置和初始化,下载工程
图4 SDO2.4
d) 主机CAN设置
i. 同2-c-i,ii,iii设置主机的型号和节点号、比特率
ii. 在工程设置界面下选择左侧“扩展模块”标签,勾选启用扩展模块
图5 SDO2.5
iii. 添加模块,匹配节点号和相应的寄存器(模块波特率和滤波时间目前在模块工程中设置,此处无效),最多支持16个S系列PLC作为扩展模块连接
图6 SDO2.6
iv. 勾选配置和初始化,下载工程
1.4. 软件功能
a) 主机上电会校验2-d-iii中配置的所有模块,校验失败的会进行重连尝试,特殊寄存器单字D8190记录了尝试结果,由低到高的每一位代表了从第1到第16个模块的重连状态,失败的对应位会置1;特殊寄存器单字D8191记录了当前所有模块的通信状态,在线为1超时为0。
b) 特殊寄存器单字D8192记录了本机的节点号;单字D8193记录了本机的比特率(Kbps);单字D8189指示了当前CAN总线的负载情况,接近或者超过100时负载过高优先级较低的节点可能会无法通信,此时应该换用更高的总线比特率或者降低IO变换的频率以降低突发通信的频率。
c) S系列PLC作为扩展模块使用时,输出默认受主机控制,无法进行强制或者使用梯形图来控制,否则会在单字D8176报错124;当模块需要进行自主控制时,可置位特殊寄存器M8000,此时主机传输过来的输出不再直接控制模块,而是将Y状态存储在模块单字D8000由低到高的各位,同时主机的X1000-X1007(至X2700-X2707)也不再由从机的X直接传输,而是从从机的D8016读取。
d) 当使用高速输出时,也需要置位模块的M8000,此时可使用D8000和D8016与主机来进行少量数据和逻辑的自动高速交互,主机的Y1000-Y1017至Y1040-Y1057会通过PDO直接映射到从机的D8000至D8002,从机的D8016至D8018映射到主机的X1000-X1017至X1040-X1057,如果复位M8000则相当于复位了所有脉冲指令;特别的,如果只需要独立高速输出口,其他输出仍由主机控制,可以置位特殊寄存器M8001。
e) CAN适用于少量数据的快速传输,所以模块和主机间自动传输的数据只有模块所带的IO,如果需要读取或配置其他寄存器,软件提供了自定义协议接口SDO-MODBUS指令:
i. 在工程管理器窗口可以新建SDO-MODBUS表格,填写表格id和若干条需要通信的数据,其中从站寄存器的索引参考显控Modbus地址偏移表设定
图7 SDO3.1
图8 SDO3.2
图9 SDO3.3
ii. 在梯形图中添加SDO-MODBUS指令,选择相应的表格并依次填入正在收发的MODBUS索引(16位)、出现异常的MODBUS索引(16位)、返回码(32位)的指示寄存器,前两者缺省值为0xFFFF,轮询至本指令时会指示当前的发送情况,返回码缺省值为0xFFFFFFFF,成功完成一次本指令对应表格全部收发后会返回0(保持10ms),直至下次轮询到本指令或出错返回其他错误码(详见后续3-f: SDO-READ/WRITE指令)。
图10 SDO3.4
iii. 梯形图运行过程中将会逐一对所有使能状态的表格中的数据进行读写,为防止总线负载过高,每个寄存器读写之间会有一定间隔,读写速度与波特率成正比,1Mbps下单一寄存器读写时间约0.2ms,间隔为10ms,用户也可以使用梯形图使能来控制发送频率以降低总线负载。
f) 此外软件还提供了通信指令SDO-READ和SDO-WRITE来进行全部类型寄存器的单独读取和写入。
图11 SDO3.5
主机和模块都可以使用,设置单字“节点号”,单字“索引”设置为H5000,单字“子索引”设置K1,单字“Modbus索引”参考显控Modbus地址偏移表设定,读取数据存储的起始寄存器或者写入数据的值所在起始寄存器为“数据”,占用长度为4个单字寄存器(即CAN通信数据长度最大8个字节,显控寄存器H5000传输仅使用其中2字节),控制数据发送和显示传输状态的地址为双字地址“返回码”。
给返回码写1触发一次传输请求,然后返回码会显示传输状态(使用显控协议传输时用户只需要关注加粗部分):
0x00000000,传输完成;0x00000001,传输中;0x00000002,SDO忙碌;
0x05040000,传输超时;0x05040001,命令符异常;0x06010000,对象不可访问;
0x06010001,对象不可读;0x06010002,对象不可写;0x06020000,对象不存在;
0x06060000,硬件错误;0x06070010,长度不匹配;0x06070012,长度过长;
0x06070013,长度过短;0x06090011,子索引不存在;0x06090030,数值超限;
0x06090031,数值超高;0x06090032,数值过低;0x06090036,上下限异常;
0x060A0023,SDO源异常;0x08000000,通用错误;0x08000020,应用层错误;
0x08000021,本地控制中;0x08000022,设备状态异常;0xFFFFFFFE,CANOpen未初始化。
此外这两个指令也支持与其他CANOpen设备间的SDO读写,此时modbus索引作为读取数据长度参数使用(单位Byte,最大8),相关功能应用请咨询显控技术人员。
g) S系列PLC部分型号(S-8X8T/S-8X8T-C/S-16T/S-16T-C)本身也可以作为主机使用,需要配置型号时选择带-M的型号分支,其他配置方法与2-d中相同,但是注意一个CAN网络中只能有1个主机。
图12 SDO3.6
1.5. 联调
a) SEND-CAN和REV-CAN指令, 仅支持FAT-16MT-DC, FAs-32MT-AC, FAs-50MT-AC, FAs-66MT-AC, 和部分S系列PLC (S-8x8T-C, S-E16X-C, S-16T-C)。
b) S系列PLC和1中提到的相关型号的CAN使用的上层协议为通用协议CANOpen,支持与其他CANOpen设备的互联,SDO指令可直接使用,PDO配置未开放需要底层软件适配,相关需求可咨询显控销售和技术人员。
c) 在CANOpen协议之外,也提供了基础CAN协议的通信指令REV-CAN/SEND-CAN以供自定义协议用户使用,使用屏蔽位模式传输数据帧,使用时需要勾选扩展模块标签页下的启用扩展模块总开关以激活CAN功能。
图13 SDO4.1
图14 SDO4.2
i. 对于接收指令REV-CAN,设置接收起始寄存器、屏蔽位、识别位后,使能指令,即可不断将过滤后的数据从CAN总线录入接收起始寄存器起的5个双字地址,依次为{uint32-t StdId, uint-32-t ExtId, uint8-t IDE, uint8-t RTR, uint8-t DLC, uint8-t FMI, uint8-t Data[8]}
ii. 对于发送指令SEND-CAN,需要设置重试次数、帧类型IDE、标识符、数据长度DLC、数据内容寄存器、返回码寄存器后,使能指令,此后每次将返回码赋1会启动一次发送,成功后返回码会被自动写0,否则会返回错误码:
0x00000001,传输中;0x00000003,IDE错误;0x00000004,长度错误; 0x05040000,超时。
iii. 这个指令在梯形图中全局只允许出现一次,用户可通过修改参数和返回码来对不同数据进行发送接收。