对于PLC之间的数据交换,只关心数据的发送区和接收区,全局数据包的通信方式是在配PLC硬件的过程中,组态所要通信PLC站之间的发送区和接收区,不需要任何程序处理,这种通信方式只适合S7-300/300/400 PLC之间相互通信。
下面将以举例的方式介绍全局数据包通信,使用的软硬件如下:
所需硬件:CPU315-2DP,CPU416-2DP
所需软件:STEP7 V5.2 SP1
注意: TIA软件平台不再支持全局数据包通信方式
1)首先打开编程软件STEP7,建立一个新项目如MPI_GD,在此项目下插入两个站STATION1/CPU416-2DP, STATION2/CPU315-2DP,分别组态硬件,插入CPU,配置MPI的站号和通信速率,在本例中MPI的站号分别设置为2号站和4号站,通信速率为187.5Kbit/S 。
这些工作完成以后,可以组态数据的发送区和接收区。点击项目名MPI_GD后出现STATION1,STATION2和MPI网,点击MPI,再点击菜单“Options”->
“Define Global Date”进入组态画面如图1、2:
图1进入全局数据组态界面
图2 全局数据组态界面
2) 插入所有需要通信的PLC站CPU
双击GD ID右边的CPU栏选择需要通信PLC站的CPU。CPU栏总共有15列,这就意味者最多有15个CPU能够参与通信。在每个CPU栏底下填上数据的发送区和接收区,例如:CPU416-2DP的发送区为DB1.DBB0~DB1.DBB21,可以填写为DB1.DBB0:22 ,然后在菜单“edit”选择“Sender”作为发送区。
CPU315-2DP的接收区为DB1.DBB0~21,可以填写为DB1.DBB0:22。编译存盘后,把组态数据分别下载到CPU中,这样数据就可以相互交换了。发送接收数据区的设置参考图3:
图3 设置通信区
地址区可以为DB,M,I,Q,区,长度S7-300最大为22个字节,S7-400最大为54个字节。发送区与接收区应一致,所以在上例中通信区最大为22个字节。
了解多个CPU通信首先要了解GD ID,编译以后,每行通信区都会有GD ID号,
可以参考图3为
A:全局数据包的循环数,每一循环数表示和一个CPU通信,例如两个S7-300CPU通信,发送与接收是一个循环,S7-400中三个CPU之间的发送与接收是一个循环,
循环数与CPU有关,S7-300CPU 最多为 4个,所以最多和4个CPU通信。S7-400CPU414-2DP最多为 8个,S7-400CPU416-2DP最多为 16个。
B:全局数据包的个数。表示一个循环有几个全局数据包,例如两个S7站相互通信
一个循环有两个数据包。如图4所示:
图4 一个循环两个数据包
C:一个数据包里的数据区数
可以参考图5: CPU315-2DP 发送4组数据到CPU416-2DP,4个数据区是一个数据包。从上面可以知道一个数据包最大为22个字节,在这种情况下每个额外的数据区占用两个字节,所以数据量最大为16个字节。
图5 一个数据包里的数据区数
对于A,B,C的介绍只是用于优化数据的接收区和发送区,减少CPU的通信负载,简单应用可以不用考虑这些,GD ID编译后自动生成。
在多个CPU通信时,有时通信会中断,是什么原因造成通信中断?我们编译完成后,在菜单“View”中点击“Scan Rates”和“GD Status”可以扫描系数和状态字。如图6所示:
图6 通信诊断
S R: 扫描频率系数。如图6 SR1.1 为225,表示发送更新时间为225×CPU循环时间。范围为1~255。通信中断的问题往往设置扫描时间过快。可改大一些。
GDS:每包数据的状态字(双字)。可根据状态字编写相应的错误处理程序,结构如下:
第一位:发送区域长度错误。
第二位:发送区数据块不存在。
第四位:全局数据包丢失。
第五位:全局数据包语法错误。
第六位:全局数据包数据对象丢失。
第七位:发送区与接收区数据对象长度不一致。
第八位:接收区长度错误。
第九位:接收区数据块不存在。
第十二位:发送方从新启动。
第三十二位:接收区接收到新数据。
GST:所有GDS 相“OR”的结果
如果编程者使用CP5511/5611编程卡可以首先诊断一下连线是否可靠,如上例中S7-300 MPI地址是2,S7-400MPI地址是4,用CP卡连接到MPI网上(PROFIBUS接头必须有编程口)可以直接读出2,4号站,在“控制面板 ” -> “PG/PC interface” ->“ Diagnostics”->“read”读出所以网上站号,如图7所示:
图7 使用网卡诊断站号
0号站位CP5611站号,如果没有读出2,4号站,说明连线有问题或MPI网传输速率不一致,可以把问题具体化。
如果需要控制数据的发送与接收,在某一事件,某一时刻,接收和发送所需要的数据,这时将用到事件触发的数据传送。这种通信方式通过调用CPU的系统功能SFC60 (GD_SND),SFC61(GD_RCV)来完成的,而且只有S7-400CPU支持,并且必须设置CPU的SR(扫描频率)为0,可参考图8全局数据的组态画面:
图8 在S7-400CPU侧的SR为0
与上面作法相同编译存盘后下载到相应的CPU中,然后在S7-400侧中调用SFC60/61控制接收与发送。
所需硬件:CPU315-2DP,CPU416-2DP。
所需软件:STEP7 V5.2 SP1
CIRCLE_ID,BLOCK_ID参考GD A。B。C。
例子中M1.1为1时CPU416接收CPU315的数据MB20~MB29放到MB40~MB49中,M1.0为1时CPU416发送数据MB60~MB69到CPU315MB60~MB69中