在实际的项目中,涉及到两个PLC之间交互数据,如果PLC是西门子,且带集成网口或者CM/CP网口模块,使用S7通讯会显得很方便。比如在两个S7-1200之间或者两个S7-1500之间,抑或者是S7-1200与S7-1500之间。
S7通讯有三组指令,常用的指令是
■ GET,从对方PLC获取数据
■ PUT,将数据写入对方PLC
本篇文章通过一个案例来演示通过GET/PUT指令配置S7通讯的方法。前1-6个步骤是硬件组态,7-10是编程讲解,11-14是不同项目S7通讯的硬件配置和运行验证。
新建项目
首先考虑的是要通讯的两个PLC在一个程序项目中。在一个项目中新建两个PLC(本案例以两个S7-1513-1 PN为例),主动建立连接的PLC为客户端(Client),被动连接的PLC是服务器端(Server)。
02
将两个PLC进行组网
在网络视图中将两个PLC进行组网,新建一个网络连接PN/IE_1,通讯也是基于此网络连接。
03
添加S7连接
选中“连接”,选择“S7连接”,然后在Client PLC点击鼠标右键,点击“添加新连接”。
创建新连接弹出对话框,指定相应的通讯伙伴,本地ID,勾选“建立主动连接”选项框,这些也可以在连接属性设置。最后点击“添加”按钮成功新建一个S7通讯连接。
04
连接的属性
查看S7连接的属性,共有4个选项卡。
■ 常规
■ 本地ID
■ 特殊连接属性
■ 地址详细信息
常规选型卡中,定义了连接的参数;本地ID选型卡中定义了本地的ID号,在GET/PUT指令块中需要填写此参数,本案例选择默认的16#100。特殊连接属性中定义了是否主动建立连接,此链路如果没有激活主动建立连接,则对方链路会自动激活主动建立连接。地址详细信息显示了S7连接的地址信息,建立非指定的伙伴方连接需要配置参数,建立指定的伙伴连接不需要再配置。
05
服务器端配置
服务器端配置,需要在PLC的属性中勾选“允许来自远程对象的GET/PUT访问”,然后新建数据块DB200,并将DB块属性中优化的块访问去除。新建一些变量,如图所示,图中R变量是客户端PLC要写入的值,S变量是客户端要取走的值。
06
客户端配置
客户端配置,在客户端这侧新建数据块DB100, 数据结构和服务器端的一样,S变量是要发送出去的,R变量是从对方获取过来的,同样DB块的属性要设定非优化访问。
服务器端和客户端要交互的数据已经设定完成,如下图所示,在客户端编程,利用PUT指令将客户端S区域的变量值传送到服务器端R中,利用GET指令将服务器端的S区域的变量值获取到客户端R中。