SIPLUS S7-1200 CPU 1214C DC/DC/DC -25...+60°C 带防腐蚀涂层 基于 6ES7214-1AG40-0XB0 可使用信号电路板。 。 紧凑型 CPU,DC/DC/DC, 机载 I/O: “14 DI 24V DC;10 数字输出 24V DC;" 2 AI 0-10V DC, 电源:直流 20.4-28.
SIEMENS西门子6AG12141AG405XB0
SIEMENS西门子6AG12141AG405XB0
OUT
接收函数信息,包括接收数据的源地址和端口、状态信息等,数据类型为结构体,接收函数信息参考表1:
表1:接收函数信息
结构 | 名称 | 数据类型 |
函数调用信息 | 结果 | DINT |
数据源地址 | 发送方IP地址 | ARRAY [0..3] OF USINT |
数据源端口 | 发送方端口 | UINT |
接收数据长度 | 接收到有效字节数 | UDINT |
4.2 TCP通信方式
TCP通信方式在发送接收数据前必须建立通信连接,连接需要在通信双方编程建立。主动连接的一方作为户端,被动连接的一方作为服务器。下面以SIMOTION D435与S7-300 CP343-1通信为例介绍TCP通信方式。
4.2.1在PLC侧建立通信连接
在STEP7项目下创建S7-300站点,插入以太网通信处理器CP343-1,选择与SIMOTION在相同的网络上。在NETPRO中点击CPU,在下面的连接表中插入一个连接如图14所示:
图14 建立TCP连接
连接的站点选择“Unspecified”,连接方式选择“TCP connection”,点击“Apply”键确认进入连接属性界面,如图15所示:
图14 配置TCP常规信息
在“General Information”栏中,“Block Parameters”参数显示CP343-1的地址及连接号,这两个参数也是PLC调用发送和接收通信功能块赋值参数。“Active connection establishment”选项决定通信双方哪一个是主动连接(户端),哪一个是被动连接(数据服务器)。选择该选项为主动连接,在SIMOTION 侧需要调用函数“_tcpOpenServer”与PLC建立连接,如果没有选择该选项为被动连接,在SIMOTION 侧需要调用函数“_tcpOpenClient” 与PLC建立连接。本例中选择PLC为数据服务器,SIMOTION为客户端。
点击“Address”栏配置SIMTION的IP地址及端口号,如图15所示:
图15 配置通信方IP地址
配置完成后将配置选项下载到PLC中。
4.2.2在SIMOTION侧建立通信连接
与PLC在NETPRO中创建连接不同,在SIMOTION侧需要调用函数建立连接,通信函数存储于在“Communication”->“Data transfer”目录下,函数调用的示例程序参考图16:
图16 SIMOTION侧建立TCP连接(户端)
函数参数解释如下:
Port
SIMOTION 端口号,数据类型UINT,在NETPRO中定义为2001。
ServerAddress
PLC的IP地址,数据类型为数组,ARRAY [0..3] OF USINT,在4个字节中输IP地址,例如192、168、1、112,表示IP地址为192.168.1.112。
ServerPort
PLC的端口号,数据类型UINT,例子程序中在NETPRO定义为2000。
NextCommand
枚举数据类型,元素中包括“IMMEDIAY ”、“WHEN_COMMAND_DONE。
“IMMEDIAY”:接收命令与后续所要执行的命令同步执行。
“WHEN_COMMAND_DONE”:接收命令执行或失败后执行后续的命令,异步执行。
OUT
调用函数返回信息,包括调用状态和连接号。数据类型为结构体(StructRetTcpOpenClient),返回信息参考表2:
表2:TCP 户端连接函数返回信息
结构 | 名称 | 数据类型 |
functionResult | 状态信息,可以查看通信连接是否建立 | DINT |
connectionId | 连接号,用于发送和接收函数的参数赋值 | DIN |
连接函数调用一次,得到连接号后停止调用。
注意:此函数调用需用上升沿信号进行使能。
4.2.3在PLC侧编写通信程序
通信连接建立后,在通信双方需要编写通信函数或通信功能块。在S7-300 PLC侧OB35中(间隔发送)调用发送功能块FC5 AG_SEND(“Libraries”->“Standard Library”->“SIMATIC_NET_CP”->“CP300”,示例程序如下:
CALL "AG_SEND"
ACT :=TRUE
ID :=1
LADDR :=W#16#100
SEND :=P#DB1.DBX 0.0 BYTE 60
LEN :=60
DONE :=M1.2
ERROR :=M1.3
STATUS:=MW2
通信函数FC5的参数含义:
ACT :为1触发。
ID :参考本地CPU连接表中的块参数。
LADDR :参考本地CPU连接表中的块参数。
SEND : 发送区。zui大通信数据为8192字节。与SIMOTION之间zui大4096个字节。
LEN : 实际发送数据长度。
DONE :每次发送成功,产生一个上升沿。
ERROR :错误位。
STATUS:通讯状态字。
示例程序中S7-300 PLC发送DB1中前60个字节。
在通信方CPU OB1中调用接受函数FC6 AG_RECV(“Libraries”->“Standard Library”->“SIMATIC_NET_CP”->“CP300”,示例程序如下:
CALL "AG_RECV"
ID :=1
LADDR :=W#16#100
RECV :=P#DB2.DBX 0.0 BYTE 60
NDR :=M10.1
ERROR :=M10.2
STATUS:=MW12
LEN :=MW14
通信函数FC6的参数含义:
ID :参考本地CPU连接表中的块参数。
LADDR :参考本地CPU连接表中的块参数。
RECV : 接收区。接收区应等于发送区。
NDR : 每次接收到新数据,产生一个上升沿。
ERROR :错误位。
STATUS:通讯状态字。
LEN : 实际接收数据长度。
示例程序中S7-300 PLC将接收的数据存储于本地数据区DB2的前60个字节中。
4.2.4在SIMOTION侧编写通信程序
在PLC侧调用发送和接收功能块,在SIMOTION侧相应调用发送和接收函数与之相匹配,通信函数存储于在“Communication”->“Data transfer”目录下,发送函数调用的示例程序参考图17,发送函数与PLC的接收功能块相匹配。
图17 调用发送函数
发送函数参数解释如下:
ConnectionId
参考_TcpOpenClient函数建立的连接。
NextCommand
枚举数据类型,元素中包括“IMMEDIAY ”、“WHEN_COMMAND_DONE。
“IMMEDIAY”:接收命令与后续所要执行的命令同步执行。
“WHEN_COMMAND_DONE”:接收命令执行或失败后执行后续的命令,异步执行。
DataLength
发送数据的字节长度,数据类型为UDINT,例子中为60,发送数据区Data中前60个字节。
Data
发送数据区,数据类型为数组,ARRAY [0..4095] OF BYTE。
OUT
输出通信状态,数据类型为DINT。
接收函数调用的示例程序参考图18,接收函数与PLC的发送功能块相匹配。