S71200 和 S71200 之间 TCP 通信.docx
- 文档编号:29012492
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:20
- 大小:275.78KB
S71200 和 S71200 之间 TCP 通信.docx
《S71200 和 S71200 之间 TCP 通信.docx》由会员分享,可在线阅读,更多相关《S71200 和 S71200 之间 TCP 通信.docx(20页珍藏版)》请在冰豆网上搜索。
S71200和S71200之间TCP通信
S7-1200和S7-1200之间TCP通信
S7-1200与S7-1200之间的以太网通信可以通过TCP协议来实现,使用的通信指令是在双方CPU调用T-block(TSEND_C,TRCV_C,TCON,TDISCON,TSEND,TRCV)指令来实现。
通信方式为双边通信,因此TSEND和TRCV必须成对出现。
硬件和软件需求及所完成的通信任务
硬件:
①S7-1200CPU
②PC(带以太网卡)
③TP电缆(以太网电缆)
软件:
STEP7V11orHigher
所完成的通信任务:
①将PLC_1的通信数据区DB3块中的100个字节的数据发送到PLC_2的接收数据区DB4块中。
②将PLC_2的通信数据区DB3块中的100个字节的数据发送到PLC_1的接收数据区DB4块中。
通信的编程,连接参数及通信参数的配置
1.打开STEP7v11软件并新建项目
在STEP7v11的“PortalView”中选择“Createnewproject”创建一个新项目
2.添加硬件并命名PLC
然后进入“Projectview”,在“Projecttree”下双击“Addnewdevice”,在对话框中选择所使用的S7-1200CPU添加到机架上,命名为PLC_1,如图1所示。
同样方法再添加通信伙伴的S7-1200CPU,命名为PLC_2。
图1.添加新设备
为了编程方便,使用CPU属性中定义的时钟位,定义方法如下:
在“Projecttree”>“PLC_1”>“Deviceconfiguration”中,选中CPU,然后在下面的属性窗口中,“Properties”>“Systemandclockmemory”下,将系统位定义在MB1,时钟位定义在MB0,如图2所示。
时钟位我们主要使用M0.3,它是以2Hz的速率在0和1之间切换的一个位,可以使用它去自动激活发送任务。
图2.系统位与时钟位
3.为PROFINET通信口分配以太网地址
在“DeviceView”中点击CPU上代表PROFINET通信口的绿色小方块,在下方会出现PROFINET接口的属性,在“Ethernetaddresses”下分配IP地址为192.168.0.1,子网掩码为255.255.255.0,如图3.所示。
图3.分配IP地址
同样方法,在同一个项目里添加另一个新设备S7-1200CPU并为其分配IP地址为192.168.0.2
4.创建CPU之间的逻辑网络连接
在项目树“Projecttree”>“Devices&Networks”>“Networksview”视图下,创建两个设备的连接。
用鼠标点中PLC_1上的PROFINET通信口的绿色小方框,然后拖拽出一条线,到另外一个PLC_2上的PROFINET通信口上,松开鼠标,连接就建立起来了,如图4所示。
图4.建立两个CPU的逻辑连接
在PLC_1中调用并配置“TCON”、“TSEND”、“TRCV”通信指令
1.在PLC_1的OB1中调用“TCON”通信指令
①在第一个CPU中调用发送通信指令,进入“Projecttree”>“PLC_1”>“Programblocks”>“OB1”主程序中,从右侧窗口“Instructions”>“Communications”>“OPENUserCommunications”下调用“TCON”指令,创建连接,如图5所示。
图5.调用“TCON”通信指令
②创建DB2分配连接参数,见图6所示
图6.创建连接数据块DB2(Con_DB)
③定义PLC_1的“TCON”连接参数
PLC_1的TCON指令的连接参数需要在指令下方的属性窗口“Properties”>“Configuration”>“Connectionparameter”中设置,如图7所示。
图7.定义TCON连接参数
连接参数说明:
Endpoint
:
可以通过点击选择按钮选择伙伴CPU:
PLC_2
Connectiontype
:
选择通信协议为TCP(也可以选择ISOonTCP或UDP协议)
ConnectionID
:
连接的地址ID号,这个ID号在后面的编程里会用到
Connectiondata
:
创建连接时,生成的Con_DB块。
见图2所示
Activeconnectionsetup
:
选择本地PLC_1作为主动连接
Addressdetails
:
定义通信伙伴方的端口号为:
2000;如果选用的是ISOonTCP协议,则需要设定的TSAP地址(ASCII形式),本地PLC_1可以设置成“PLC1”,伙伴方PLC_2可以设置成“PLC2”。
2.定义PLC_1的“TSEND”发送通信块接口参数
① 调用“TSEND”在OB1内调用发送100个字节数据到PLC2中
进入“Projecttree”>“PLC_1”>“Programblocks”>“OB1”主程序中,从右侧窗口“Instructions”>“Communications”>“OPENUserCommunications”下调用“TSEND”指令,如图8所示。
图8.调用TSEND
② 创建并定义PLC_1的发送数据区DB块。
通过“Projecttree”>“PLC_1”>“Programblocks”>“Addnewblock”,选择“Datablock”创建DB块,选择绝对寻址,点击“OK”键,定义发送数据区为100个字节的数组,如图9及图10所示。
图9.创建发送数据区DB块
注意:
对于双边编程通信的CPU,如果通信数据区使用DB块,既可以将DB块定义成符号寻址,也可以定义成绝对寻址。
使用指针寻址方式,必须创建绝对寻址的DB块。
图10.定义发送数据区为字节类型的数组图PLC1_TSENDC_DATA
③ 定义PLC_1的“TSEND”发送通信块接口参数,如图11所示。
图11.定义TSEND接口参数
参数说明:
输入接口参数:
REQ
:
=M0.3
//使用2Hz的时钟脉冲,上升沿激活发送任务
ID
:
=1
//创建连接ID
LEN
:
=100
//发送数据长度
DATA
:
=P#DB3.DBX0.0BYTE100
//发送数据区的数据,使用指针寻址时,DB块要选用绝对寻址
输出接口参数:
DONE
:
=M300.0
//任务执行完成并且没有错误,该位置1
BUSY
:
=M300.1
//该位为1,代表任务未完成,不能激活新任务
ERROR
:
=M300.2
//通信过程中有错误发生,该位置1
STATUS
:
=MW302
//有错误发生时,会显示错位信息号
3.在PLC_1的OB1中调用接收指令T_RCV并配置基本参数
为了实现PLC_1接收来自PLC_2的数据,则在PLC_1中调用接收指令T_RCV并配置基本参数。
① 创建并定义PLC_1的接收数据区DB块。
通过“Projecttree”>“PLC_1”>“Programblocks”>“Addnewblock”,选择“Datablock”创建DB块,选择绝对寻址,点击“OK”键,定义发送数据区为100个字节的数组,如图12及图13所示。
图12.创建接收数据区DB块
注意:
对于双边编程通信的CPU,如果通信数据区使用DB块,既可以将DB块定义成符号寻址,也可以定义成绝对寻址。
使用指针寻址方式,必须创建绝对寻址的DB块。
图13.定义接收数据区为字节类型的数组
② 调用“TRCV”在OB1内调用
进入“Projecttree”>“PLC_1”>“Programblocks”>“OB1”主程序中,从右侧窗口“Instructions”>“Communications”>“OPENUserCommunications”下调用“TRCV”指令,配置接口参数,如图14所示。
图14.调用TRCV指令并配置接口参数
参数说明:
输入接口参数:
EN_R
:
=TRUE
//准备好接收数据
ID
:
=1
//连接号,使用的是TCON的连接参数中ID号
LEN
:
=100
//接收数据长度为100个字节
DATA
:
=P#DB4.DBX0.0BYTE100
//接收数据区的地址
输出接口参数:
NDR
:
=M310.0
//该位为1,接收任务成功完成
BUSY
:
=M310.1
//该位为1,代表任务未完成,不能激活新任务
ERROR
:
=M310.2
//通信过程中有错误发生,该位置1
STATUS
:
=MW312
//有错误发生时,会显示错误信息号
RCVD_LEN
:
=MW314
//实际接收数据的字节数
注意:
LEN设置为65535可以接收变长数据。
在PLC_2中调用并配置“TCON”、“TSEND”、“TRCV”通信指令
1.在PLC_2的OB1中调用“TCON”通信指令
①在第一个CPU中调用发送通信指令,进入“Projecttree”>“PLC_2”>“Programblocks”>“OB1”主程序中,从右侧窗口“Instructions”>“Communications”>“OPENUserCommunications”下调用“TCON”指令,创建连接,如图15所示。
图15.调用“TCON”通信指令
②创建DB2分配连接参数,见图16所示
图16.创建连接数据块DB2(Con_DB)
③定义PLC_2的连接参数“TCON”
PLC_1的TCON指令的连接参数需要在指令下方的属性窗口“Properties”>“Configuration”>“Connectionparameter”中设置,如图17所示。
图17.定义TCON连接参数
连接参数说明:
Endpoint
:
可以通过点击选择按钮选择伙伴CPU:
PLC_2
Connectiontype
:
选择通信协议为TCP(也可以选择ISOonTCP或UDP协议)
ConnectionID
:
连接的地址ID号,这个ID号在后面的编程里会用到
Connectiondata
:
创建连接时,生成的Con_DB块。
见图2所示
Activeconnectionsetup
:
选择通信伙伴PLC_1作为主动连接
Addressdetails
:
定义通信伙伴方的端口号为:
2000;如果选用的是ISOonTCP协议,则需要设定的TSAP地址(ASCII形式),本地PLC_2可以设置成“PLC2”,伙伴方PLC_1可以设置成“PLC1”。
2.在PLC_2中在OB1调用“TRCV”通信指令
接收从PLC_1发送到PLC_2的100个字节数据
①创建并定义接收数据区DB块。
通过“Projecttree”>“PLC_2”>“Programblocks”>“Addnewblock”,选择“Datablock”创建DB块,选择符号寻址,点击“OK”键,定义接收数据区为100个字节的数组,图18及图19所示。
图18.创建接收数据区DB块
图19.定义接收区为100个字节的数组
②定义调用“TRCV”程序
图20.TRCV块参数配置
参数配置:
输入接口参数:
EN_R
:
=TRUE
//准备好接收数据
ID
:
=1
//建立连接并一直保持连接
LEN
:
=100
//接收的数据长度为100个字节
DATA
:
=P#DB4.DBX0.0BYTE100
//接收数据区,DB块选用的是符号寻址
输出接口参数:
DONE
:
=M310.0
//任务执行完成并且没有错误,该位置1
BUSY
:
=M310.1
//该位为1,代表任务未完成,不能激活新任务
ERROR
:
=M310.2
//通信过程中有错误发生,该位置1
STATUS
:
=MW312
//有错误发生时,会显示错误信息号
RCVD_LEN
:
=MW314
//实际接收数据的字节数
3.在PLC_2中调用并配置“TSEND”通信指令
PLC_2将发送100个字节数据到PLC_1中,如何创建发送数据块DB3,与创建接收数据块方法相同,不再详述。
在PLC_2中调用发送指令并配置块参数,发送指令与接收指令使用同一个连接,如图21所示。
图21.调用TSEND指令并配置块接口参数
参数说明:
输入接口参数:
REQ
:
=M0.3
//使用2Hz的时钟脉冲,上升沿激活发送任务
ID
:
=1
//连接ID号,通过TCON创建的连接
LEN
:
=100
//发送数据长度为100个字节
DATA
:
=P#DB3.DBX0.0BYTE100
//发送数据区的符号地址
输出接口参数:
DONE
:
M300.0
//任务执行完成并且没有错误,该位置1
BUSY
:
M300.1
//该位为1,代表任务未完成,不能激活新任务
ERROR
:
M300.2
//通信过程中有错误发生,该位置1
STATUS
:
MW302
//有错误发生时,会显示错误信息号
下载硬件组态及程序并监控通信结果
下载两个CPU中的所有硬件组态及程序,从监控表中可以看到,PLC_1的TSEND指令发送数据:
“66”,“55”,“44”数据,PLC_2接收到数据:
“66”,“55”,“44”。
而PLC_2发送数据“11”,“22”,“33”,PLC_1接收数据是“11”,“22”,“33””,如图22所示。
图22.PLC_1及PLC_2的监控表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- S71200 之间 TCP 通信