S7-1500 CPU之间TCP通讯组态
S7-1500 与 S7-1500 之间的以太网通信可以通过 TCP 或 ISO on TCP 协议来实现,使用的通信指令是在双方 CPU 调用 T-block (TSEND_C, TRCV_C, TCON, TDISCON, TSEN, TRCV) 指令来实现。通信方式为双边通信,因此 TSEND 和 TRCV 必须成对出现。
硬件和软件需求及所完成的通信任务
硬件: ① S7-1500 CPU ② PC (带以太网卡) ③ TP电缆(以太网电缆)
软件: STEP7 V14
所完成的通信任务: ① 将PLC_1 的通信数据区 DB3 块中的 100 个字节的数据发送到 PLC_2 的接收数据区 DB4 块中。 ② 将PLC_2 的通信数据区 DB3 块中的 100 个字节的数据发送到 PLC_1 的接收数据区 DB4 块中。
通信的编程,连接参数及通信参数的配置
1. 打开 STEP7 v14 软件并新建项目 在 STEP7 v14的 “Portal View” 中选择 “Create new project” 创建一个新项目
2. 添加硬件并命名PLC 然后进入 “Project view”,在“Project tree” 下双击 “Add new device”,在对话框中选择所使用的S7-1500 CPU添加到机架上,命名为 PLC_1,如图1.所示。 同样方法再添加通信伙伴的S7-1500 CPU ,命名为 PLC_2。
图1. 添加新设备
为了编程方便,使用 CPU 属性中定义的时钟位,定义方法如下: 在 “Project tree” > “PLC_1” > “Device configuration” 中,选中 CPU ,然后在下面的属性窗口中,“Properties” > “System and clock memory” 下,将系统位定义在MB1,时钟位定义在MB0,如图2.所示。 时钟位我们主要使用 M0.3,它是以2Hz 的速率在0和1之间切换的一个位,可以使用它去自动激活发送任务。
图2. 系统位与时钟位 3. 为 PROFINET 通信口分配以太网地址 在 “Device View”中点击 CPU 上代表PROFINET 通信口的绿色小方块,在下方会出现PROFINET 接口的属性,在 “Ethernet addresses” 下分配IP 地址为 192.168.0.1 ,子网掩码为255.255.255.0,如图3. 所示。
图3. 分配IP 地址
同样方法,在同一个项目里添加另一个新设备S7-1500 CPU 并为其分配 IP 地址为192.168.0.2
4. 创建 CPU之间的逻辑网络连接 在项目树 “Project tree”>“Devices & Networks” >“Networks view” 视图下,创建两个设备的连接。用鼠标点中 PLC_1 上的PROFINET通信口的绿色小方框,然后拖拽出一条线,到另外一个PLC_2 上的PROFINET通信口上,松开鼠标,连接就建立起来了,如图4.所示。
图4. 建立两个 CPU的逻辑连接
5. 创建 CPU之间的TCP连接 创建TCP连接方式有两种方式:使用程序块、使用组态的连接。使用程序块:参见PLC编程方式 使用组态的连接:两种方式 1、在项目树 “Project tree”>“Devices & Networks” >“Networks view” 视图下,创建两个设备的连接。选择连接,下拉列表选择tcp,然后用鼠标点中 PLC_1 上的PROFINET通信口的绿色小方框,然后拖拽出一条线,到另外一个PLC_2 上的PROFINET通信口上,松开鼠标,连接就建立起来了,如图5.所示。
图5. 建立两个 CPU的逻辑连接 2、在项目树 “Project tree”>“Devices & Networks” >“Networks view” 视图下,创建两个设备的连接。选择连接,下拉列表选择tcp,然后用鼠标点中 PLC_1 上右键选择添加新连接如图6,然后在弹出的对话框内选择要连接的PLC,点击添加按钮,如图7所示。通过这种方式建立的连接可以在连接选项内看到已经建立的连接,并且可以更改连接相关参数,如图8所示。用此方式编程中需要注意,选择连接类型时要选择使用组态的连接如图9所示。编程功能块管脚参数,参见PLC编程方式
图6. 建立两个 CPU的逻辑连接
图7. 建立两个 CPU的逻辑连接
图8. 建立两个 CPU的逻辑连接
图9. 建立两个 CPU的逻辑连接
P.S.
西门子PLC有哪些通信方式?
1、串口通信 西门子PLC支持串口通信,在S7-200和S7-200Smart中,都直接集成了串口,但是从S7-1200到S7-1500,慢慢都取消掉了,如果需要,可以通过扩展模块的方式来增加,出现这种现象的原因,其实也是工业发展的必然结果。串口通信的优势在于简单、成本低,但是劣势也非常明显,就是传输效率低。西门子早期的串口通信主要是Profibus DP通信,但是上位机是无法直接与西门子PLC走Profibus DP通信的,因此,西门子PLC常用的串口通信方案如下所示: PPI通信:PPI通信只针对S7-200和S7-200 Smart系列PLC,其他型号不支持。 ModbusRTU Master:西门子PLC对Modbus协议支持还是比较不错的,这里是指PLC做Slave(即从站),上位机做Master(即主站)。 ModbusRTU Slave:这里是指PLC做Master(即主站),上位机做Slave(即从站)。
2、以太网通信 西门子PLC通信还是以太网通信为主,可能很多人都知道西门子主要的两种私有协议分别是S7协议和Profinet总线,但是Profinet是一种总线协议,目前据我了解,C#是无法直接与西门子PLC走Profinet通信的。因此,西门子PLC常用的以太网通信方案如下所示: S7通信:基本上从S7-200到S7-1500均可以实现,这里有很多可以选择的开源或商业库,包括http://s7.net、pronodave、libnodave、sharp7,也可以自己封装通信库。 ModbusTCP Server:这里是指PLC做Server(即服务器),上位机做Client(即客户端)。 ModbusTCP Client:这里是指PLC做Client(即客户端),上位机做Server(即服务器)。 OpenProtocol Server:这里是指开放式TCP通信,PLC做TCPServer(即服务器),上位机做TCPClient(即客户端)。 OpenProtocol Client:这里是指PLC做TCPClient(即客户端),上位机做TCPServer(即服务器)。
3、OPC通信 OPC通信是工业控制中常用的一种通信方式,这里主要在于OPC软件的选择以及OPCDA和OPCUA的选择,因此,西门子PLC常用的OPC通信方案如下所示: PC Access系列:西门子针对S7-200开发PC-Access软件,针对S7-200 Smart又提供了PC-Access Smart软件,可以直接通过这些软件实现OPCDA通信。 Simatic Net 系列OPCDA:Simatic Net是西门子主推的OPC软件,支持西门子全系列,这里主要是OPCDA通信方式。 Simatic Net 系列OPCUA:新版的Simatic Net也开始支持OPCUA,这里主要是OPCUA通信方式。 KepServer 系列OPCDA:KepServer同样作为一款商业OPC软件,在国内使用率非常高,同样也支持西门子全系列,这里主要是OPCDA通信方式。 Simatic Net 系列OPCUA:新版的KepServer也开始支持OPCUA,这里主要是OPCUA通信方式。