从今天这篇文章开始,我们以连载的方式来介绍西门子PLC基于以太网的开放式用户通信(Open User Communicaton)。文章以西门子S7-1200 PLC为例,但对于S7-300/400,S7-1500系列PLC也具有相同的指导意义。开放式用户通信基本包括四个步骤:建立连接,接收数据,发送数据和断开连接,各个步骤均有相应的功能块(指令)来实现。今天这篇文章,我们先来介绍建立连接的指令:TCON。
在开放式用户通信中,无论是使用TCP协议,还是ISO-ON-TCP协议或者UDP协议,都需要使用TCON指令来建立连接。对于TCP或者ISO-ON-TCP协议,TCON会在通信伙伴之间建立真实的连接;对于UDP协议,TCON指令只是用来配置相关的通信参数。关于二者之间的区别,请参考文章:UDP协议通信需要建立连接吗?
下面我们以S7-1200为例,介绍如何在博途(Portal)环境下配置与使用TCON指令。
在【指令(Instructions)】-【通信(communications)】-【开放式用户通信(Open user communication)】- 【其它(others)】列表中找到TCON指令,如下图:
将其拖拽到程序块中,系统会自动弹出为该指令添加背景数据块的对话框。可以选择使用独立背景数据块(Single instance DB)或者多重背景数据块(Mutil instance DB),如下图:
本例程中我们选择独立背景数据块,点击【OK】确认,系统会将该DB块添加到【系统块】-【程序资源】列表中。程序中TCON指令如下图:
下面来介绍下该指令中各参数的含义:
REQ:建立连接请求,需要一个上升沿的的信号变化;
ID:连接资源的唯一标识;
CONNECT:一个指向连接资源的指针。连接资源是一个包含相关配置参数的DB块;
DONE:通信连接的过程是否完成,1=已经完成;
BUSY:是否正在进行通信连接,1=正在连接,0=未开始连接或已经完成;
ERROR:连接过程中是否有错误发生,0=没有错误,1=有错误;
STATUS:连接的状态;
下面这张表格是常见的ERROR和STAUS的描述:
对于TCON连接参数(TCON_Param)的分配,可以使用如下任意一种方式:
手动创建TCON_Param的DB块,分配参数并直接以指令写入;
使用属性窗口进行分配;
我们来介绍相对简单的属性窗口分配的方法:
在TCON指令的属性(Properties)窗口中,点击【配置(Configuration)】-【连接(Connection)】,选择需要通信的伙伴。
通信伙伴可以是项目中已有的CPU,或者不指定。本例程对通信伙伴选择【不指定(unspecified)】。
然后点击【连接数据(Connection Data)】右侧的列表框,选择【新建(new)】,系统会自动创建一个用于配置连接参数的DB块,本例程中默认创建的DB名称为:PLC_1_Connection_DB,如下图:
建议将其重命名以增加可读性。
在程序列表中,找到新创建的DB块右键选择【重命名】,将其修改为:TCON_Param_DB:
假设我们使用TCP协议,在【连接类型(Connection Type)】的列表框中选择TCP;
【连接ID(Connection ID)】根据实际情况填写,这里设置为1;
设置通信伙伴的IP地址设置为:192.168.0.60,端口号为:2010;
将本地PLC设置为主动连接(Active connection establishment);
这样连接参数就配置好了,如下图:
最后给TCON指令各参数进行赋值,如下图:
这样,在Start_Connect(I0.2)的上升沿,程序就可与通信伙伴进行连接了。
好了,关于西门子开放式用户通信的连接指令TCON就先介绍到这里,欢迎扫描下面的二维码关注我们的微信公众号。
发表评论
UDP广播指令怎么配置连接参数,远程伙伴IP和端口?
TSend指令的数据源不能使用绝对地址引用是什么情况,写入不报警,发送没反应,符号地址就可以发送
使用tcon和电脑端的tcpip工具通讯,为什么一直是7002或7000,不管是做客户端还是服务器
这个应该是已经建立连接了,能不能发送数据?