前言
大家好,之前在其它公众号上看到有篇付费文章介绍ABB机器人profinet通讯传输正负整数及浮点数,抽空测试了以下,发现它提供的代码还是有问题的。
今天我把完整的测试后的代码发布出来,供大家参考!
PLC发送到ABB机器人
这部分代码是没问题的,注意一下高低字节转换就行。
高低字节转换配置 代码实现,FUNC
是功能块程序,可以程序调用返回特定数据类型的值。 接收实例,Plc_offset_X
为ABB机器人配置的32位的组输入
PERS num ntest;PROC Routine1()ntest:=recvdata(\Float,Plc_offset_X);Stop;ENDPROC
问题就出在,ABB机器人发送给PLC上
按照它的代码,会提示如下错误。
PackRawBytes打包指令\IntX := UDINT或\IntX := LINT,报错参数Value不是整数,只能对应为\Float4类型。
PackRawBytes打包指令\Float4类型,只能打包num数据类型,如果把num改成dnum,报错存在非法数据类型。
32位的组输出不能在if语句中出现
那么,如何发送浮点数呢?
无法发送32个bit,那就把32个bit分开,分成4个字节;同样的,也需要把Go组输出分成4个,信号名称例如,GoutputX,GoutputX_1,GoutputX_2,GoutputX_3,GoutputX_4。
3. 接收实例,Rob_offset_X
为ABB机器人配置的32位的组输出,Rob_offset_X_1
Rob_offset_X_2
Rob_offset_X_3
Rob_offset_X_4
是分开的8位的组输出
PROC Routine1()senddata\Float,"Rob_offset_X",-1.23;Stop;ENDPROC
本文已同步至 博客 及 论坛 ,如需 复制代码、讨论交流,请移步至论坛!
论坛: /t/abb-profinet/78