北岛夜话
原创工业智能控制领域(PLC、单片机/嵌入式、机器人、通信、机器视觉)的技术及经验分享。
文章528 浏览8040779

西门子PLC以太网开放式用户通信连载(1)-TCON

从今天这篇文章开始,我们以连载的方式来介绍西门子PLC基于以太网的开放式用户通信(Open User Communicaton)。文章以西门子S7-1200 PLC为例,但对于S7-300/400,S7-1500系列PLC也具有相同的指导意义。开放式用户通信基本包括四个步骤:建立连接,接收数据,发送数据和断开连接,各个步骤均有相应的功能块(指令)来实现。今天这篇文章,我们先来介绍建立连接的指令:TCON。

cover.png

在开放式用户通信中,无论是使用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指令,如下图:

TCON_Instruction.PNG

将其拖拽到程序块中,系统会自动弹出为该指令添加背景数据块的对话框。可以选择使用独立背景数据块(Single instance DB)或者多重背景数据块(Mutil instance DB),如下图:

TCON_DB.PNG

本例程中我们选择独立背景数据块,点击【OK】确认,系统会将该DB块添加到【系统块】-【程序资源】列表中。程序中TCON指令如下图:

TCON.PNG

下面来介绍下该指令中各参数的含义:

  1. REQ:建立连接请求,需要一个上升沿的的信号变化;

  2. ID:连接资源的唯一标识;

  3. CONNECT:一个指向连接资源的指针。连接资源是一个包含相关配置参数的DB块;

  4. DONE:通信连接的过程是否完成,1=已经完成;

  5. BUSY:是否正在进行通信连接,1=正在连接,0=未开始连接或已经完成;

  6. ERROR:连接过程中是否有错误发生,0=没有错误,1=有错误;

  7. STATUS:连接的状态;

下面这张表格是常见的ERROR和STAUS的描述:

TCON_Status.PNG

对于TCON连接参数(TCON_Param)的分配,可以使用如下任意一种方式:

  • 手动创建TCON_Param的DB块,分配参数并直接以指令写入;

  • 使用属性窗口进行分配;

我们来介绍相对简单的属性窗口分配的方法:

在TCON指令的属性(Properties)窗口中,点击【配置(Configuration)】-【连接(Connection)】,选择需要通信的伙伴。

通信伙伴可以是项目中已有的CPU,或者不指定。本例程对通信伙伴选择【不指定(unspecified)】。
然后点击【连接数据(Connection Data)】右侧的列表框,选择【新建(new)】,系统会自动创建一个用于配置连接参数的DB块,本例程中默认创建的DB名称为:PLC_1_Connection_DB,如下图:

connection_data.png

建议将其重命名以增加可读性。

在程序列表中,找到新创建的DB块右键选择【重命名】,将其修改为:TCON_Param_DB:

rename_connection_data.png

假设我们使用TCP协议,在【连接类型(Connection Type)】的列表框中选择TCP;
【连接ID(Connection ID)】根据实际情况填写,这里设置为1;
设置通信伙伴的IP地址设置为:192.168.0.60,端口号为:2010;
将本地PLC设置为主动连接(Active connection establishment);

这样连接参数就配置好了,如下图:

connection_config_complete.png

最后给TCON指令各参数进行赋值,如下图:

TCON_complete.PNG

这样,在Start_Connect(I0.2)的上升沿,程序就可与通信伙伴进行连接了。

好了,关于西门子开放式用户通信的连接指令TCON就先介绍到这里,欢迎扫描下面的二维码关注我们的微信公众号。


已经过安全软件检测无毒,请您放心下载。

取消

感谢您的支持,欢迎常来看看!

扫码支持
一点动力,多少随意

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论

  • TSend指令的数据源不能使用绝对地址引用是什么情况,写入不报警,发送没反应,符号地址就可以发送

  • 使用tcon和电脑端的tcpip工具通讯,为什么一直是7002或7000,不管是做客户端还是服务器