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连接