矩形科技V80PLC与CANOPEN设备的连接
供稿: 深圳市矩形科技有限公司
- 关键词:矩形科技,V80PLC,CANOPEN,旋转编码器,J1939,带CAN总线PLC
矩形科技V80PLC与CANOPEN设备的连接
关键词:矩形科技、V80PLC、CANOPEN、旋转编码器、J1939、带CAN总线PLC
CANopen 是基于CAN-bus分布式工业控制技术的标准。它是由生产厂商和用户联合CiA共同开发的,并于2002年成为CENELEC EN 50325-4标准。CANopen已经在广泛的工业通信以及其他短距离局域网通讯场合。
矩形科技V80M40DR-AC/CAN以及V80M4MAD-AC/CAN为带CAN总线接口的PLC,通过简单编程可支持J1939,CANOPEN的设备节点。本文介绍V80带CAN总线的PLC与CANOPEN编码器进行通讯,其他CANOPEN设备的连接类似。本文对CAN总线以及CANOPEN协议本身不做详细的介绍,大家可以查询相关的网站,有详细的信息可以了解。本文主要介绍如果通过PLC的梯形图编程来获取CANOPEN编码器的位置数据。至于其他查询和管理信息等也可以通过简单的发送指令来读取和设置。
CANOPEN编码器一般遵循CiA 406协议规范。
1:CANOPEN编码器数据的编码器数据采集
采用异步方式采集CANOPEN通过PDO传输过来的编码器数据,通讯间隔可根据需要设置10mS以上的模式。
可根据CANOPEN上电信息或者根据已设置的情况来获取编码器的ID号,根据总线上挂的不同的编码器来设定需要的屏蔽字,已便于CAN总线接收信息。
PDO1的通讯帧ID为0x180+设备ID,例如设备ID为0X20,则通讯帧ID为0x1a0。后面的数据位4个字节编码器。低位在前,高位在后。例如收到数据ID为0x1a0 长度为4,内容为0x01 0x02 0x03 0x04 则编码器数据为0x04030201。
2:CANOPEN编码器参数的查询和修改
根据CANOPEN协议,通过SDO查询和修改参数。注意有的编码器上带有拨码开关做辅助的设定用,有的编码器完全只能通过通讯方式修改参数。参数的保存有专门的命令。
3:CANOPEN编码器的初始化和同步。
可以通过CANOPEN编码器上电发送回来的数据知道该节点的ID(COB-ID)从而得知CAN通讯的帧ID。通过发送同步命令,通知编码器发送PDO数据。
V80PLC CAN总线的编程方式介绍:
1:CAN总线初始化
CAN总线初始化需要的参数为波特率,接收效验码,接收屏蔽字,滤波方式等。如果对CAN总线不是特别了解的用户,接收效验码和屏蔽字可以设置为0xfffffff和0x000000.滤波方式为单滤波。操作选择脉冲沿有效执行初始化指令
CAN_INIT |
CAN总线初始化设置 |
|
|||||||||||
梯形图符号 |
操作数种类 |
|
|||||||||||
|
|
0 |
1 |
3 |
4 |
C |
P |
L |
|
|
|||
I1 上节点 O1 |
上节点 |
|
|
|
¡ |
|
¡ |
|
|
||||
CAN_INIT |
|
||||||||||||
I2 下节点 O2 |
下节点 |
|
|
|
¡ |
|
¡ |
|
|
||||
|
|
||||||||||||
|
|
||||||||||||
指令说明:CAN总线初始化设置 |
|
||||||||||||
节点说明: 上节点:CAN通讯参数设置表 下节点:CAN状态:=0,初始化正常,=1,初始化不正常。 |
|
||||||||||||
输入控制说明: I1:动作控制 输入动作时( ) 执行运算功能,CAN初始化为沿触发。I2:保留。 |
|
||||||||||||
功能输出说明:O1= I1 O2= 0,初始化正常,=1,初始化不正常 |
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
上节点: CAN通讯参数设置表;参数表范围:4xxx1—4xx6:
寄存器编号 |
内 容 说 明 |
4xxx1 |
通讯波特率,0:10K,1:20K,2:50K,3:100K,5:125K,7:250K,9:500K,11:800K,12:1000K |
4xxx2 |
CAN验收码高16位 |
4xxx3 |
CAN验收码低16位 |
4xxx4 |
CAN接收屏蔽码高16位 |
4xxx5 |
CAN接收屏蔽码低16位 |
4xxx6 |
滤波方式:=0 ,双滤波方式;=1,单滤波方式 |
梯形图程序如下:
2、设置接收编码器指令
CAN接收的数据放在40500~40509中,将4个字节组合成一个长整数放在41000-41001的寄存器里。V80PLC的寄存器为16位的。程序如下:
3、在编码器发送PDO数据之前,需要发送一个同步命令过去,CANID为0x0000,数据内容为0x01,0x00。
终上所述,通过3个网络的编程就可以读取一个CANOPEN的编码器数据到PLC中来,如果总线上有多个编码器,则,需要增加一个接收指令即可,并对在初始化时,根据2个不同的ID来计算效验码和屏蔽字。
综合上面的程序,我们可以看到,和一个CANOPEN的设备建立连接,只需要3个CAN指令,分别为CAN_INIT CAN总线初始化指令,制定波特率,接收校验和屏蔽字。
CAN_SEND命令,触发CANOPEN命令发送PDO数据。
另外就是CAN_RCV指令,根据CANOPEN设备设置的参数,每隔设定的时间更新一次数据,将收到的数据组合成我们需要的寄存器中即可。