无组态连接MPI通信适合S7-200、S7-300、S7-400之间的通信,通过调用SFC65、SFC66、SFC67、SFC68来实现。无组态通信不能和全局数据方式混合使用。
无组态通信分为双边通信方式和单边通信方式。
单边无组态通信方式只在一方编写通信程序,即客户端和服务器端的访问模式。编写程序的一方为客户端,另一方为服务器端。当S7-200/300/400进行单边无组态通信时,S7-300/400既可作为客户端,也可以作为服务器端,但S7-200只能作为服务器端。
【例6-2】有两台设备,分别由一台CPU 314C-2DP和一台CPU 226CN控制,从设备1上的CPU 314C-2DP发出起停控制命令,设备2的CPU 226CN收到命令后,对设备2进行起停控制,同时设备1上的CPU 314C-2DP监控设备2的运行状态。
【解】
将设备1上的CPU 314C-2DP作为客户端,客户端的MPI地址为2,将设备2上的CPU226CN作为服务器端,服务器端的MPI地址为3。
1.主要软硬件配置
①1套STEP 7 V5.5CN。
②1台CPU 314C-2DP。
③1台CPU 226CN。
④1台EM 277。
⑤1根PC/MPI适配器(或者CP 5611卡)。
⑥1根MPI电缆(含两个网络总线连接器)。
⑦1套STEP 7-Micro/WIN V4.0 SP9。
MPI通信硬件配置图如图6-22所示,PLC接线图如图6-23所示。
图6-22 MPI通信硬件配置图
a)方案1 b)方案2
图6-23 PLC接线图
从图6-22可以看出S7-200系列PLC与S7-300系列PLC间的MPI通信有两种配置方案。方案1只要将MPI网络电缆(含两个网络总线连接器)连接在S7-300系列PLC的MPI接口和S7-200系列PLC的编程口上即可,而方案2却需要另加一个EM 277模块,显然成本多一些,但若S7-200系列PLC的编程接口不够用时,方案2是可以选择的配置方案。
2.硬件组态
S7-200系列PLC与S7-300系列PLC间的MPI通信只能采用无组态通信,无组态通信指通信无需组态,完成通信任务,只需要编写程序即可。只要用到S7-300系列PLC,硬件组态还是不可缺少的,这点读者必须清楚。
1)新建工程并插入站点。新建工程,命名为“6-1”,再插入站点,重命名为“Master”,如图6-24所示,双击“硬件”图标,打开硬件组态界面。
图6-24 新建工程并插入站点
2)组态客户端硬件。先插入导轨,再插入CPU模块,如图6-25所示,双击“CPU 314C-2DP”,打开MPI通信参数设置界面,单击“属性”按钮,如图6-26所示。
图6-25 组态客户端硬件
3)设置客户端的MPI通信参数。先选定MPI的通信波特率为187.5 kbit/s,再选定客户端的MPI地址为“2”,然后单击“确定”按钮,如图6-27所示。最后编译保存和下载硬件组态。
(www.xing528.com)
图6-26 打开MPI通信参数设置界面
图6-27 设置客户端的MPI通信参数
4)打开系统块。完成以上步骤后,S7-300的硬件组态完成,但还必须设置S7-200的通信参数。先打开STEP 7-Micro/WIN,选定工具条中的“系统块”按钮,并双击之,如图6-28所示。
5)设置服务器端的MPI通信参数。先将用于MPI通信的接口(本例为port0)的地址设置成“3”,一定不能设定为“2”,再将波特率设定为“187.5 kbit/s”,这个数值与S7-300的波特率必须相等,最后单击“确认”按钮,如图6-29所示。这一步不少初学者容易忽略,其实这一步非常关键,因为各站的波特率必须相等,这是一个基本原则。系统块设置完成后,还要将其下载到S7-200中,否则通信是不能建立的。
图6-28 打开系统块
图6-29 设置服务器端的MPI通信参数
【关键点】硬件组态时,必须将S7-200和S7-300的波特率设置值为相等,此外S7-300的硬件组态和S7-200的系统块必须下载到相应的PLC中才能起作用。
3.相关指令介绍
X_PUT(SFC68)是发送数据的指令,通过SFC68(X_PUT),将数据写入不在同一个本地S7站中的通信伙伴。在通信伙伴上没有相应系统功能块。在通过REQ=1调用SFC68之后,激活写作业。此后,可以继续调用SFC68,直到BUSY=0指示接收到应答为止。
必须要确保由SD参数(在发送CPU上)定义的发送区和由VAR_ADDR参数(在通信伙伴上)定义的接收区长度相同。SD的数据类型还必须和VAR_ADDR的数据类型相匹配。X_PUT(SFC68)指令的输入和输出的含义见表6-8。
表6-8 X_PUT(SFC68)指令的输入和输出含义
X_GET(SFC67)是接收数据的指令,通过SFC67(X_GET),可以从本地S7站以外的通信伙伴中读取数据。在通信伙伴上没有相应系统功能块。在通过REQ=1调用SFC67之后,激活读作业。此后,可以继续调用SFC67,直到BUSY=0指示数据接收为止。然后,RET_VAL便包含了以字节为单位的、已接收的数据块的长度。
【关键点】ANY数据类型是指数据类型是任意的,即可以是字节、字、双字等,但接收端和发送端必须是相同的。
必须要确保由RD参数定义的接收区(在接收CPU上)至少和由VAR_ADDR参数定义的要读取的区域(在通信伙伴上)一样大。RD的数据类型还必须和VAR_ADDR的数据类型相匹配。X_GET(SFC67)指令的输入和输出的含义见表6-9。
表6-9 X_GET(SFC67)指令的输入和输出含义
4.程序编写
X_PUT(SFC68)发送数据的指令和X_GET(SFC67)接收数据的指令是系统功能,也就是系统预先定义的功能,只要将“库”展开,再展开“Standard library(标准库)”,选定“X_PUT”或者“X_GET”,再双击之,“X_PUT”或者“X_GET”就自动在网络中指定的位置弹出,如图6-30所示。
图6-30 X_PUT和X_GET指令的位置
客户端的程序如图6-31所示,服务器端并不需要编写程序。
图6-31 客户端程序
图6-31 客户端程序(续)
【关键点】本例客户端地址为“2”,服务器端的地址为“3”,因此硬件配置采用方案1时,必须将“PPI口”的地址设定为“3”。而采用方案2时,必须将EM 277的地址设定为“3”,设定完成后,还要将EM 277断电,新设定的地址才能起作用,方案2不用设置波特率。指令“X_PUT”的参数SD和VAR_ADDR的数据类型可以据实际情况确定,但在同一程序中数据类型必须一致。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。