Beckhoff PLC与VACON变频器通过CANopen通讯
CANopen通讯
工业上采用CANopen通讯协议进行通讯非常常见。Beckhoff的PLC(其实是基于PC的嵌入式控制器)控制驱动装置来实现位置控制非常方便,而主控制器和变频器之间通过CANopen进行通讯有许多不能替代的优势:
- 现场总线通讯方式,一台主机可以用126个分站
- 抗干扰能力强,严苛的如通过滑环通讯也能胜任
- 传输速度比较高
- 通讯可靠
在这里介绍两个设备通过CANopen通讯遇到的坑,供大家参考。
主控设备准备
主控设备采用了Beckhoff的CX5120控制器,自带CANopen接口,可以做主站也可以做从站。在这个应用当中作为主站使用。
这里配置了控制器的Device4作为CANopne主站。在这里可以读取相关的寄存器变量了解设备的运行情况,比如:
GlobalState[0]:
0: Device is in state RUN
2: Device parameter loaded
3: Device is in state STOP
配置分站
VACON的变频器作为被控设备,在CANopen网络中作为分站设置。这个分站需要提供EDS文件并在系统中安装以便进行配置。安装了EDS文件后就可以通过在CANopen主站下面添加分站来添加VACON的变频器了。
坑1,多出的RxPDO和TxPDO
这个地方就开始出现了第一个坑。添加后的画面如下:
从图上可以看出,无端生出这么多的RxPDO和TxPDO。而查看EDS文件发现文件中并没有这么多的RxPDO和TxPDO。这时需要手动的删除这些多余的RxPDO和TxPDO。
读取EDS文件发现我们就有:
RxPDO1
RxPDO6
RxPDO21
RxPDO22
TxPDO1
TxPDO6
TxPDO21
TxPDO22
删除多余的RxPDO和TxPDO后,配置画面如下:
坑2,TxPDO和RxPDO的COB-ID
在CANopen通讯中,数据的接收和发送都是经过COB-ID来进行的。通过和EDS文件进行对照,配置的TxPDO和RxPDO的COB-ID设置的不对。除了TxPDO1和RxPDO1的COB-ID是正确设置的以外,其他的和EDS文件中不符,需要手动改正过来。正确的COB-ID设置如下:
名称 | COB ID |
---|---|
TxPDO1 | 0x180 + NODE ID |
TxPDO6 | 0x280 + NODE ID |
TxPDO21 | 0x380 + NODE ID |
TxPDO22 | 0x480 + NODE ID |
RxPDO1 | 0x200 + NODE ID |
RxPDO6 | 0x300 + NODE ID |
RxPDO21 | 0x400 + NODE ID |
RxPDO22 | 0x500 + NODE ID |
设置正确的link to变量
这个不应该算坑,要在GVL中设置地址相同的变量,将变量link to到响应的变量就可以通讯了。
实现通讯
最大的坑是要在主站中将两个勾选的选项给去除,通讯才能正常。这个到底是为啥不清楚。
将上面两项:
Automatic Adjust PDO COB Ids
Automatic PDO Parameter Download
的勾选去掉,CANopen通讯正常。
总结
花费了一天时间,CANopen通讯正常了,干工控要学的东西太多了。