![ABB工业机器人二次开发与应用](https://wfqqreader-1252317822.image.myqcloud.com/cover/236/47379236/b_47379236.jpg)
第1章 机器人与PLC传输数据
现场总线(Field Bus)是近年来迅速发展起来的一种工业数据总线,它主要解决工业现场的智能化仪器仪表、控制器、执行机构等现场设备间的数字通信,以及这些现场控制设备和高级控制系统之间的信息传递问题。由于现场总线具有简单、可靠和经济实用等一系列突出的优点,因而受到了许多标准团体和计算机厂商的高度重视。
目前主流的现场总线有很多,包括PROFINET、Ethernet/IP、DeviceNet、PROFIBUS等。对于常见的工业现场的通信方式,ABB工业机器人都能较好地支持,具体内容见表1-1。
表1-1 ABB工业机器人支持的通信方式
![](https://epubservercos.yuewen.com/669F4D/26763975401529406/epubprivate/OEBPS/Images/txt001_1.jpg?sign=1738862540-nvseSmb6NWiuGAou1U6ra51PFoJrsRJq-0-16e265727351e274ef3dbdacdb89cad9)
ABB工业机器人与外围设备通信的拓扑结构如图1-1所示,即ABB工业机器人控制器支持不同的工业总线(不同的工业总线需要使用不同的ABB工业机器人选项)。对于不同的工业总线选项,若该工业总线选项支持机器人作为主站,则在该工业总线的网络下可以下挂其他设备作为从站设备。作为从站的设备可以是ABB工业机器人的内部设备(如图1-1中的机器人控制柜内的基于DeviceNet总线的I/O模块DSQC652),也可以直接是支持该工业总线的外部设备。在机器人端进行相关配置时,作为主站的机器人向对应从站设备分配地址,并对该设备上的对应I/O信号点进行地址设置。
若该工业总线对应的机器人选项仅支持机器人作为从站(与PLC通信),则仅需要在机器人侧设置对应的从站地址和相应的信号地址即可。
![](https://epubservercos.yuewen.com/669F4D/26763975401529406/epubprivate/OEBPS/Images/txt001_2.jpg?sign=1738862540-NoYQf0P7ITcVtZ6MsyroB1QOtuCnW2h9-0-3fb852bd237fdc3774b68e7b81b379c0)
图1-1 ABB工业机器人与外围设备通信的拓扑结构
ABB工业机器人可以创建的I/O信号类型包括Digital Input Signal(单个数字输入信号)、Digital Output Signal(单个数字输出信号)、Analog Input Signal(模拟量输入信号)、Analog Output Signal(模拟量输出信号)、Group Input Signal(组输入信号)和Group Output Signal(组输出信号)。
组输入信号和组输出信号,实质上就是用十进制数据直接表示多个信号构成的二进制数。例如,地址为0、1、2、3 的信号均为1,即信号为1111,则用十进制表示为15。使用组输入信号和组输出信号,能大大提高数据的利用率[4个信号排列组合可以表示16种状态(0~15)]。图1-2所示为创建一个组输出信号gout1,该信号属于PROFINET网络下的PN_Internal_Device设备,对应的输出地址为0~7(可以表示0~255的整数)。将组输出信号gout1的值设置为15(如图1-3所示),可以看到对应的PN_Internal_Device设备的地址位0~3的值均为1,如图1-4所示。
注:组输出信号和组输入信号只能赋值为非负整数,即可以直接赋值UINT、UDINT和ULINT等数据类型。
![](https://epubservercos.yuewen.com/669F4D/26763975401529406/epubprivate/OEBPS/Images/txt001_3.jpg?sign=1738862540-TY1pjEg6cTyJAG0tUqJqnhP1qAvFhpR6-0-d6e11087cede5db6dea240bca83ea848)
图1-2 创建一个组输出信号gout1
![](https://epubservercos.yuewen.com/669F4D/26763975401529406/epubprivate/OEBPS/Images/txt001_4.jpg?sign=1738862540-s1Org3lVOUXA5V6HVbws7IMouLJmyjdN-0-f47b8840f9559fa053a1ffeb53953df8)
图1-3 设置gout1的值为15
![](https://epubservercos.yuewen.com/669F4D/26763975401529406/epubprivate/OEBPS/Images/txt001_5.jpg?sign=1738862540-SaDvJnfMOM8gPbaiZX5mYJ7QKwuSF9Xf-0-48a4f292ef2d68d3f79ba8bc30ba0f92)
图1-4 组输出信号gout1对应的二进制位值为00001111
机器人的模拟量输出信号,实质上就是将待输出的具体数据根据对应设置的最大最小逻辑值关系和模拟量-数字量转化分辨率转化为对应的模拟量电压输出。例如,在图1-5中,新建的模拟量输出信号为ao_1,其参数设置如表1-2所示。
表1-2 模拟量输出信号ao_1的参数设置
![](https://epubservercos.yuewen.com/669F4D/26763975401529406/epubprivate/OEBPS/Images/txt001_6.jpg?sign=1738862540-Ic4xc7KGNRiBaDFutWcZ0p0fQhyyg8tf-0-893f1e7009bb7ae514d86d0d2a51a7aa)
基于表1-2和图1-5的设置,机器人在对模拟量输出信号ao_1进行强制设置为100或使用指令SetAO ao_1,100 时,实质上会先将待输出的逻辑量100根据逻辑量的最大值、最小值和比特分辨率,转化为组输出信号发送给板卡d651的0~15位,计算公式如式(1-1)。使用以上参数设置,可以计算得到对应组输出信号go_curr等于12398,实际的模拟量输出数值ao_voltage为1.89V。
![](https://epubservercos.yuewen.com/669F4D/26763975401529406/epubprivate/OEBPS/Images/txt001_7.jpg?sign=1738862540-t5BAPo7YZ44NYxOqYGS3zzn4faxOy0VX-0-640a9009999ce6fd6fc84caa59434801)
式(1-1)和式(1-2)中的参数说明如下。
(1)ao_1:当前设定的逻辑输出值,如100。
(2)min_logical:设定的模拟量输出信号的最小逻辑值。
(3)max_logical:设定的模拟量输出信号的最大逻辑值。
(4)max_bit:设定的最大比特值.
(5)min_bit:设定的最小比特值。
(6)max_phy:设定的最大物理量输出值(V)。
(7)min_phy:设定的最小物理量输出值(V)。
(8)go_curr:当前对应的组输出信号(整数)。
(9)round:取整函数。
(10)ao_voltage:实际的模拟量输出数值(V)。
![](https://epubservercos.yuewen.com/669F4D/26763975401529406/epubprivate/OEBPS/Images/txt001_8.jpg?sign=1738862540-oZQaAriToh4p3WDgQL8UF4gKoijZfVLM-0-9bacb2fb9dd6fa87e8dfd2030decac58)
图1-5 创建模拟量输出信号ao_1
以上计算过程也可通过ABB工业机器人的编程语言RAPID实现,具体实现如代码1-1所示。
代码1-1
![](https://epubservercos.yuewen.com/669F4D/26763975401529406/epubprivate/OEBPS/Images/txt001_9.jpg?sign=1738862540-1cQqjWL5HAgSTY21ONTps6zodeH9Myut-0-5ef7c8501594c0ec978e354cc02361fd)
![](https://epubservercos.yuewen.com/669F4D/26763975401529406/epubprivate/OEBPS/Images/txt001_10.jpg?sign=1738862540-rgBe7U8l7bYG3zVxwkD9JHn12HWc9W9p-0-ef9ab8df28200c438833d0bd8ecf4952)
若配置的设备(Device)不是ABB工业机器人专用的模拟量模块(如DSQC651),而是远程I/O或者PLC,则将图1-6中的Maximum Physical Value、Maximum Physical Value Limit、Minimum Physical Value、Minimum Physical Value Limit均设置为0即可。机器人会直接将逻辑量数值根据最大和最小比特值转化为组输出信号发送给远程设备。远程设备只需根据机器人处的最大和最小比特值等参数做相应计算,即可获得对应的实数数据。此类转化可能由于除法运算及取整运算,会导致部分数据精度的丢失。
![](https://epubservercos.yuewen.com/669F4D/26763975401529406/epubprivate/OEBPS/Images/txt001_11.jpg?sign=1738862540-qrLZRkJFlITzAQYhLF0zhL5f7H5t9rqt-0-87277ebc34a06ff84e9757e9f1197214)
图1-6 通过总线发送模拟量