simatic net opc服务器常作为simatic plc与第三方上位机通讯的中介。在tdc系统中调用相应的功能块,也可以实现simatic tdc 与 opc的通讯,为上位机提供更灵活的访问tdc的方式。本文简要的介绍了建立 tdc 与opc ethernet通讯的方法与步骤。
1. 建立tdc与opc的s7连接
1.1 tdc的软硬件配置
建立基于以太网的s7通讯,需要为tdc系统配置以太网通讯模块cp51m1(6dd1661-0ae1),并调用tcp/ip初始化功能块。
图1 组态tdc并配置cp51m1
cp51m1的ip地址通常与pc站网卡处于同一网段,如:
cp51m1:192.168.0.220;pc站网卡:192.168.0.24。
图2 tcp/ip初始化
“@tcp/ip”用来建立tcp/ip通讯耦合,并且必须在大于等于32ms并小于等于256ms的循环周期中调用。
建立s7通讯之前必须调用“s7con”块,初始化s7应用层服务。
图3 s7服务初始化
同样“s7con”块也必须在大于等于32ms并小于等于256ms的循环周期中调用。
其中主要参数的含义为:
“us”:格式为 最多6个字符的通道名称. cpu槽号,如“yyu.01”。
“tnr”:s7 tsap号,默认为3。
“nos”:通讯设备的个数(与tdc通讯的opc服务器的个数)。
“tld”:通讯报文格式,默认为0,最大通讯字节240。
tdc为opc服务器提供可供访问的db块,调用“s7db_p”建立db1,并为db1赋值
图4 s7服务初始化
其中“s7db_p”主要参数的含义为:
“len”:db块长度。
“nbf”:db块缓冲区个数,一般设为1。
“bsl”:选择缓冲区,一般设为1。
“sav”:db是否存储在sav区域。
“s7db_p”功能块只是开辟了通讯的数据存储区,如果要对存储区的数据进行读写操作,就需要调用读写功能块。本文中所示的例子程序使用“read int”读取整数数据,“write in”写入整数数据。
其中“read int”及“write in”主要参数的含义为:
“off1”和“off2”:读写数据在数据存储区内的偏移量。如两参数之和为零,存取存储区内的第一个整数;两参数之和为2,存取存储区内的的第二个整数,以此类推。
“swp”:用来设定是否交换高低字节,此处设为1。
读取或写入其它类型数据的方法与本例相同,只是调用的读写功能块稍有不同,本文不再详述。
1.2 pc站及opc的组态
组态pc站,并建立与tdc的s7连接。
图5 组态pc站
图6 建立s7连接
图中的“partner”的rack/slot指tdc的机架号与槽号,connection resource为连接资源号,“local”为10,“partner”为3。具体含义见下表
表1 s7连接资源
然后就可以通过opc scout来测试opc服务器是否能正常通讯。
图7 测试s7连接
由于opc scout不能直接浏览到tdc的db1,需要手动输入存取地址。如果s7连接名称是“s7_connection_1”,存取地址“s7:[ s7_connection_1]db1.int0代表db块中的第1个16位整数。
2. 建立tdc与opc的tcp连接
2.1 在tdc中调用发送和接收功能块
图8 发送功能块
其中“ctv_p”主要参数的含义为:
“at”:通道参数,如“ct.t-02001”,其中“ct”为用户定义的通道名称,“2001”为tcp通讯的本地端口号。
“mod”:通讯模式,对于tcp通讯,一般设为“h”。
“en”:发送势能,设为1。
“nby”:发送的字节长度。
图9 接收功能块
“crv_p”功能块比“ctv_p”功能块多一个参数,设为1000ms,其它参数含义相同。
2.2 为pc站组态tcp连接
图10 建立tcp连接并设置地址、端口
图11 设置发送接收字节
“send buffer size”等于“crv_p”的“nby”参数值。“receive buffer size”等于“ctv_p”的“nby”参数值。
通过opc测试建立的tcp连接。
图12 测试tcp连接