通过开放式用户通信(Open User communication,OUC), S7-1200/1500 和 S7-300/400 CPU 可以使用集成的 PN/IE 接口进行数据交换。开放式用户通信的主要特点是在所传送的数据结构方面具有高度的灵活性。 这就允许 CPU 与任何通信设备进行开放式数据交换,通信伙伴可以是两个 SIMATIC PLC,也可以是 SIMATIC PLC 和相应的第三方设备,前提是这些设备支持该集成接口可用的连接类型。由于此通信仅由用户程序中的指令进行控制,因此可以在程序中建立和终止事件驱动型连接。 在运行期间,也可以通过用户程序修改连接。
对于具有集成 PN/IE 接口的 CPU,可使用 TCP、UDP 和 ISO-on-TCP 连接类型进行开放式用户通信。
开放式用户通信的编程一般包括三个步骤:
● 建立连接
● 发送接收数据
● 断开连接
一般需要用到如下指令和UDT:
● 面向连接的协议: TCP,ISO on TCP:
o UDT 65“TCON_PAR”,提供数据结构,可以指定连接参数
o "TCON",用于建立连接
o "TDISCON",用于终止连接
o "TSEND",用于发送数据
o "TRCV",用于接收数据
● 无连接协议: UDP
o UDT 65“TCON_PAR”,提供数据结构,可以指定本地通信接入点的参数
o UDT66“TADDR_PAR“,提供数据结构,指定通信伙伴接入点的参数
o "TCON",用于建立本地通信的接入点
o "TDISCON",用于取消本地通信接入点
o "TUSEND",用于发送数据
o "TURCV",用于接收数据
● 对于S7-1200/1500,还可以通过集成的精简指令即可实现建立和终止连接并传送数据,这样编程会更简单。
o TSEND_C(连接建立/终止,发送)
o TRCV_C(连接建立/终止,接收)
对于S7-1500与S7-300/400之间进行开放式用户通信,根据组态编程的方式不同,可以分为:
● 用TIA Portal STEP 7在同一项目下组态编程
● 用TIA Portal STEP 7在不同项目下组态编程
● 不同项目下分别用TIA Portal STEP 7 V1x组态编程S7-1500和用STEP 7 V5.x组态编程S7-300/400
本文以不同项目下分别用TIA Portal STEP 7 V1x组态S7-1500和以经典STEP 7V5.x组态S7-30/400为例介绍如何实现S7-1500与S7-300/400的TCP开放式用户通信。
其中所用设备及IP地址如图1-1所示。
图1 -1网络结构图
本例中在S7-1500侧采用集成的简单指令“TSEND_C”和“TRCV_C”来实现连接关系的建立中止以及数据的发送接收。
2.1 在TIA Portal STEP 7 V13中组态S7-1500CPU,为集成PN口分配IP地址192.168.0.10,子网掩码255.255.255.0,如图2-1所示。
图2 -1配置CPU以太网地址
2.2 在主循环程序中调用功能块“TSEND_C”编写集成发送程序,为其分配背景数据块。如图2-2所示。其接口参数可以通过组态进行配置,在2.3中介绍。该块在REQ上升沿时触发数据发送。
图2 -2调用“TCON_C”管理连接并发送数据
2.3 选中“TSEND_C”块,在属性组态菜单中,按如下顺序为“TSEND-C”块组态连接参数。在本例中,S7-1500与S7-300不在同一项目下,所以首先通信伙伴选择为未指定。然后新建连接数据,系统自动分配连接数据存储在PLC_1_Send_DB中。选择连接类型TCP,选择组态模式为使用程序块。指定通信伙伴的IP地址192.168.0.20,指定连接ID为1,选择一方主动要建立连接,本例中选择S7-1500主动建立连接。接下来定义本地的端口号和通信伙伴端口号。本例中都选择端口号2000。如图2-3所示。此处定义的端口号和IP地址必须与在S7-300侧一致。
图2 -3配置“TSEND_C”的连接参数
配置完成后,可以打开PLC_1_Send_DB查看,如图2-4所示,可以看到其中包含TCP连接所需的参数,并且该PLC_1_Send_DB作为变量已经自动填到“TSEND_C”相应的输入管脚CONNECT上。
图2 -4“TSEND_C”的连接参数
2.4 在属性组态菜单中,按照文字说明为“TSEND-C”块组态块参数,如图2-5所示。本例中,CPU以1Hz频率的系统时钟周期性发送数据,在REQ上升沿时激活。连接关系在CONT为1时建立并保持,为0时断开。发送的地址区为M100.0开始的100个字节。具体参数含义可以选中该块并按F1键,参考在线帮助。
图2 -5调用“TRCV_C”管理连接并接收数据
2.5 在主循环程序中调用功能块“TRCV_C”编写集成接收程序,为其分配背景数据块。如图2-6所示。“TRCV_C”接口参数的配置参考“TSEND_C”块的配置,此处从略。其中,连接参数可以新建,也可以直接选择刚才通过“TSEND_C”建立的连接数据块“PLC_1_Send_DB”。本例中,选择与发送同一个连接数据块。块参数中EN_R参数为1时接收以,CONT参数为1时建立保持连接,为0时断开连接。接收数据存储在M200.0开始的100个字节内。
图2 -6调用“TRCV_C”管理连接并接收数据
2.6 完成编程组态并下载后,可以在S7-1500中,通过点击“TSEND_C”或“TRCV_C”程序块右上角的诊断图标,进入连接在线信息页面可以查看连接状态,如图2-7所示。
图2 -7在S7-1500中查看连接状态信息
3.1 在STEP7 V5.5中组态S7300CPU,为其PN口分配IP地址192.168.0.20,子网掩码255.255.255.0,如图3-1所示。
图3 -1配置S7-300CPU以太网地址
3.2 通过开放式通信向导,创建连接参数。开放式通信向导下载地址:http://support.automation.siemens.com/CN/view/zh/98957840,下载安装后打开向导,定位到所创建的S7-300项目,如图3-2所示。
图3 -2启动开放通信向导,定位项目文件夹
3.3 点击Next,新建连接参数UDT,如图3-3所示。
图3 -3新建连接
3.4 选择连接类型,此处选择TCP native,如图3-4所示。
图3 -4选择连接类型
3.5 点击Next至一步,因为本例中S7-300与通信伙伴S7-1500不在同一项目下而且通信伙伴S7-1500不是S7-300/400系列产品,所以勾选Only communication partner A shall be configured(仅配置伙伴A)和Communication partner B is not a S7-CPU(eg. A PC)(通信伙伴B不是S7-CPU),如图3-5所示。
图3 -5选择通信伙伴
3.6 点击Next至下一步,定义连接ID和连接名,选择是否主动建立连接,本例中,已经在前面配置由S7-1500主动建立连接,所以此处选择passive(被动),选择通信所用的接口,本例中用的是CPU315。指定通信伙伴的IP地址,与S7-1500侧的组态信息要一致。如图3-6所示。
图3 -6指定连接属性
3.7 指定通信双方所用端口号,要与S7-1500侧组态一致,本例中都是2000,如图3-7所示。
图3 -7指定通信端口号
3.8 指定UDT65作为存储连接参数的自定义结构名,如图3-8所示。
图3 -8指定UDT
3.9 点击Next完成配置,此时在项目中会自动生成UDT65,其中包含了连接参数的信息,如图3-9所示。
图3 -9生成UDT
3.10接下来创建数据块DB1,定义一个变量,类型为UDT65,如图3-10所示。
图3 -10创建连接DB块
3.11在OB1中编程调用“TCON”建立连接,“TCON”等程序块存储在“Libraries(库)—Standard Library(标准库)---Communication Blocks(通信块)”下面。当REQ上升沿时触发执行。CONNECT参数输入前面DB1中类型为UDT65的变量connection,如图3-11所示。
图3 -11调用“TCON”建立TCP连接
3.12连接关系建立后,调用“TSEND”块和“TRCV”块发送和接收数据。发送数据块 “TSEND” 在REQ上升沿时触发,接收块“TRCV”在EN_R为1期间激活,每一管 脚的含义可参考在线帮助。如图3-12所示。
图3-12在S7-300中发送接收数据
3.13要想查看连接信息,对于S7-300,可以通过在线查看CPU信息,在Communication标签下,有Open communication via Industrial Ethernet 选项,如图3-13所示。
图3 -13在S7-300中查看通信状态
点击Diagnostics按钮,查看诊断信息,如图3-14所示:
图3 -14在S7-300中查看连接状态
3.14可以根据需要通过调用程序块“TDISCON”来断开连接。该程序块在REQ上升沿时断开相应ID的连接并释放连接资源,如图3-15所示。
图3 -15断开连接块“TDISCON”的调用