CODESYS与KUKA机器人的Modbus TCP通讯示例

阔奥智能

CODESYS与KUKA机器人的Modbus TCP通讯示例

KUKA机器人不支持Modbus TCP,但通过冯工开发的软件,我们可以实现第三方的免授权Modbus TCP通讯。

1、简介:

  我用过不少工业机器人,kuka用过七八台。之前的应用要么是走硬线连接,机器人下挂倍福IO。要么是第三方设备已经实现好的ProfiNET或者SOCKET通讯。但kuka没有官方的Modbus TCP支持,相比较来说FANUC供应商给装个包就支持了,官方文档里还有具体的设置说明。
  前段时间看B站上有人出了视频展示这个工具,但解释不够具体。我尝试了一下通讯是没问题的,而且可以完全自定义变量表,非常好用。
  本文作为一个第三方指引,如果有疑问可以留言或找原始开发者。

  您可以在 这里访问B站原始视频 ,在 这里下载软件本体。如果您没有实际的机器,可以下载Officelite虚拟机

2、准备工作:

VMware和OfficeLite的设置我就不细说了,上面的文档里啥都有,导进去开机就行了也没有什么设置。

下载完百度网盘的文件后,我们只需要lib文件夹和Release_V1013.zip压缩包。
lib文件夹下的所有文件拷到C:\Windows\SysWOW64目录下(拷贝文件夹下的内容,不带lib文件夹)。然后打开终端,执行以下指令:

cd C:\Windows\SysWOW64
regsvr32 Cross.ocx
regsvr32 cswsk32.ocx

执行完成后,将Release_V1013.zip解压到C盘根目录,并将KukaVariableDecl.xml拷出虚拟机来编辑。
这个XML文件其实是用EXCEL打开的,打开后是这样的:

我们假设有两个INT32类型的输入和两个INT32类型的输出,需要将表格更改为如下内容,并依旧保存成原文件名的XML(保存类型选XML数据),覆盖掉虚拟机里的原始文件。

之后停止机器人的SPS程序,编辑KRC\R1\System\$Config.dat,在用户定义全局变量中加上以下四个变量,和EXCEL表格一一对应,修改完抽再启动SPS:

然后就可以打开主程序(C:\Release_V1013\AF.KukaModbusTcp.exe),在参数设置里修改IP地址,保存,重新打开软件。

这样就完成了设置,您可以在读写测试选项卡里测试本地读写访问。

3、与CODESYS的连接

KUKA的INT类型是INT32,即CODESYS的DINT。这里我们会碰到大小端问题,冯工的工具默认是小端且无法更改。因此,需要创建一个转换FB。
一个简单的大小端转换示例代码如下:

FUNCTION FUN_EndianConv : DWORD
VAR_INPUT
    dwInput:DWORD;
END_VAR
VAR
END_VAR

FUN_EndianConv:=SHL(dwInput,16) OR SHR(dwInput,16);

按照标准的流程创建Modbus TCP主站,添加从站。这里还需要注意一点,冯工的工具默认站号是0x01且不可更改。我们需要把ModbusTCPSlave Parameters中的Unit-ID参数改为1,如下图:

然后就可以添加Channel循环读写数据了,这里我们用了4word输入,4Word输出(2xint32=64bit=4word),所以这样加通道:

之后创建变量关联,转换大小端,上传测试即可。
(大量数据可以用数组映射过去,再写FOR循环转换)

4、总结

虽然不如OrangeApps集成度高,但作为首个第三方Modbus TCP Slave实现,能有如此丰富的功能已经非常不错了。
另外,该工具的性能似乎有限制,我测试下来刷新一次数据需要200ms左右,有实时性要求的还是需要其它方案。
最后,该工具使用了KUKAVARPROXY,有开发需求的童鞋也可以看看。

No Comments

Add your comment