基于西门子S7-1200 Modbus TCP与机器人通信

2020-09-10 03:25陈邦玺
内燃机与配件 2020年1期
关键词:通信机器人

摘要:Modbus-TCP是运行在TCP/IP上的Modbus传输协议。通过此协议,控制器相互之间或控制器经由网络(如以太网)可以和其它设备之间进行通信。应用Modbus-TCP构建的工业以太网络具有组网简单,通信高效、稳定的特点,因而在工业工程中得到了较多的应用。该文以Modebus-TCP通信在全国工业机器人技术大赛中的具体应用为例,详细阐述了西门子S7-1200 Modebus-TCP在TIA Portal V13中创建PLC与汇博机器人通信的使用方法。

关键词:Modbus-TCP;PLC;机器人;通信

0  引言

Modbus-TCP是运行在TCP/IP上的Modbus传输协议。通过此协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。应用Modbus-TCP构建的工业以太网络具有组网简单,通信高效、稳定的特点,因而在工业工程中得到了较多的应用。该文以Modebus-TCP通信在全国工业机器人技术大赛中的具体应用为例,详细阐述了Modebus-TCP在TIA Portal V13中创建PLC与机器人通信的使用方法。

1  硬件组态

打开TIA Portal V13软件,创建新项目,项目命名为“Communication”,更改保存位置(自定),点击【创建】。新项目创建成功后,对硬件进行组态。

1.1 添加PLC控制器

在【项目樹】、【设备】、【Communication】下双击【添加新设备】,出现添加新设备对话框,点击对话框左侧【控制器】。在控制器选择框里,依次选择SIMATIC S7-1200,CPU 1215C DC/DC/DC,6ES7 215-1 AG40-0XB0。在对话框右侧【设备】下,版本选择V4.0。点击【确定】。

在PLC属性里设置PLC以太网网址:192.168.8.101。

1.2 添加通信模块

在【硬件目录】下,依次选择【通信模块】、【点到点】、【CM1241(RS422/485)】,双击【6ES7 241-1CH32-0XB0】,完成通信模块的添加。

1.3 添加IO模块

在【硬件目录】下,依次选择【DI/DQ】、【DI 16/DQ 16x24VDC】,双击【6ES7 223-1BL32-0XB0】,完成IO模块的添加。

点击【编辑】下来菜单,点击【编译】,将以上模块进行编译,完成PLC的硬件组态,如图1所示。

2 创建PLC与机器人通信模块

2.1 添加全局数据块

在PLC_1程序块添加新块,名称为“DBPubulic”,类型为数据块(DB)。在DBPubulic数据块中写入静态变量(static):

新增变量【PLC-机器人信息】,数据类型设为【struct】。点击【PLC-机器人信息】左侧的三角标记,在其下新增【机器人启动】,数据类型设为【int】;新增【通道】,数据类型设为【int】;新增【通道_1】、【通道_2】…【通道_14】,数据类型均设为【int】。

新增变量【机器人信息-PLC】,数据类型设为【struct】。点击【机器人信息-PLC】左侧的三角标记,在其下新增【机器人状态】,数据类型设为【int】;新增【通道】,数据类型设为【int】;新增【通道_1】、【通道_2】…【通道_14】,数据类型均设为【int】。

右击【DBPubulic】数据块,点击【属性】,将优化的块访问前面的“√”去掉。

2.2 创建FB数据块

2.2.1 定义FB数据块

在PLC_1程序块添加新块,名称为“通信模块”,类型为函数块(FB),语言选择“LAD”。在通信模块数据块中写入静态变量(static),如图2所示。

2.2.2 添加通信指令

在程序段1中添加PLC通信指令“MB_CLIENT”,并设置各个输入输出,如图3所示。

选择“#MB_CLIENT_Instance”,单击右键转至定义,修改静态变量中“MB_UNIT_ID”的默认值为1。

2.2.3 完成通讯程序

打开MAIN主程序,将通讯模块拖动到程序段1中,完成PLC与机器人的通讯,并对新内容编译。

3  创建PLC控制机器人流程模块

3.1 定义FB数据块

在PLC_1程序块添加新块,名称为“流程控制”,类型为函数块(FB),语言选择“LAD”。在通信模块数据块中写入静态变量(static),如图4所示。

名称:步启动;数据类型:int

3.2 添加PLC变量

在PLC_1的PLC变量内的默认变量表里添加PLC变量,如图5所示。

3.3 添加流程控制指令

在程序段中添加流程控制指令,并设置各个输入输出,如图6所示。

3.4 完成流程控制程序

打开MAIN主程序,将流程控制拖动到程序段2中,完成PLC控制机器人的流程,并对新内容编译。

4  机器人程序

机器人编写一个主程序和两个子程序。要求主程序一直循环。如果接收到PLC发送的“11”信号,执行第一个子程序;如果接收到PLC发送的“22”信号,执行第二个子程序。机器人在原点的时候给PLC发送“100”信号,机器人在工作过程中给PLC发送“200”信号。

主程序:

Main()

WHILE TRUE DO

sendingSignal.val := 100;

IF recieptSignal.val = 11 THEN

CALL rPick1();

END_IF

IF recieptSignal.val = 12 THEN

     CALL rPick();

END_IF

END_WHILE

子程序1:

rPick()

sendingSignal.val := 200;

PTP(apHome);

Lin(pickSafe);

Lin(pickOver);

Lin(pick);

WaitIsFinished();

doubleXp.Set(TRUE);

WaitIsFinished();

Lin(pickOver);

Lin(pickSafe);

Lin(putSafe);

Lin(putOver);

Lin(put);

WaitIsFinished();

doubleXp.Set(FALSE);

WaitIsFinished();

Lin(putOver);

Lin(putSafe)

子程序2:

rPick1()

sendingSignal.val := 200;

PTP(apHome1);

Lin(pickSafe1);

Lin(pickOver1);

Lin(pick1);

WaitIsFinished();

jiaZhua.Set(TRUE);

WaitIsFinished();

Lin(pickOver1);

Lin(pickSafe1);

Lin(putSafe1);

Lin(putOver1);

Lin(put1);

WaitIsFinished();

jiaZhua.Set(FALSE);

WaitIsFinished();

Lin(putOver1);

Lin(putSafe1);

PTP(apHome1);

程序中變量sendingSignal.val为机器人状态,是机器人发送给PLC的;变量recieptSignal.val为赋值数据,是PLC发送给机器人的。

5  程序调试

将TIA Portal V13中“Communication”项目下载到S7-1200设备里。将机器人的主程序及子程序拷贝到汇博机器人的示教器里,并对机器人的输入输出信号进行设置。最后进行PLC与机器人的联机调试并对程序进行修正,以符合设计要求。

6  小结

本文主要介绍了西门子S7-1200 Modbus-TCP与机器人的通信,本案例中用到了PLC的“MB_CLIENT”指令,实现了PLC与机器人的相互访问。由于篇幅所限,本文未到之处,敬请谅解。

作者简介:陈邦玺(1980-),河南信阳人,信阳高级技工学校一级实习指导教师,从事机电一体化专业理论与实践教学。

猜你喜欢
通信机器人
简述计算机通信网络安全与防护策略
Android环境下主UI线程与子线程通信机制研究
无线自组网在野战防空通信系统中的应用
对数字微波通信技术的研究
机器人来帮你
认识机器人
机器人来啦