如果需要发送的数据超过76B,可以将数据分为若干个数据包来发送,即多次调用SFC 65“X_SEND”。每次调用的接收方的MPI地址DEST_ID相同,但是数据包标识符REQ_ID不同。接收方用SFC66“X_RCV”接收数据后,根据接收到的REQ_ID判别收到的是哪一包数据,并分别存放到不同的地址区。
1.组态硬件和网络
在STEP 7中创建一个项目“MPI_UC_1”,用S7基本通信在S7-300和S7-400之间交换数据。要求将它们的DB1和DB2中76B的数据发送给对方的DB3,接收方将它们分别保存到DB4和DB5。随书光盘中S7基本通信的例程在文件夹“\Project\MPI_UC”中。
图14-27 SIMATIC管理器
生成两个站,CPU分别为CPU 413-2DP和CPU 315-2DP(见图14-27),将它们连接到MPI网络上,它们的MPI站地址分别为2和3。通信双方都需要调用通信块,一方调用X_SEND来发送数据,另一方调用X_RCV来接收数据。这种通信方式适用于S7-300/400之间的通信。
2.编写发送数据的程序
如果在OB1中调用SFC 65“X_SEND”,在REQ信号M1.0为1时的每个扫描周期调用一次SFC 65,发送数据的频率太快,将会加重CPU的负担。因此在循环中断组织块OB35中调用SFC 65,每隔一定的时间间隔(默认值为100ms)调用两次SFC 65。
下面是2号站的OB35中的程序:
程序段1:准备要发送的数据
程序段2:发送DB1中的数据
程序段3:发送DB2中的数据
程序段4:断开动态连接
3.编写接收数据的程序
下面是2号站的OB1中接收数据的程序:
程序段1:从MPI接收数据
程序段2:保存接收到的数据
为了观察数据传输的动态效果,将发送站的ID0传送给第2个数据包中的DB2.DBD2,它对应于3号站接收并保存在DB5.DBD2中的数据。用它来控制接收站的QD0(CPU 413-2DP)或QD4(CPU 315-2DP)。在运行时改变ID0的状态,观察对方的QD0或QD4是否随之而变。
4.初始化程序
在2号站的初始化程序OB100中,调用SFC 21,将存放发送数据的DB 1和DB 2的各个字预置为16#4131和16#4132,将接收数据的DB4和DB5的各个字清零。
5.两个站程序的区别(www.xing528.com)
3号站的程序与2号站的基本上相同,二者的区别如下:
1)在3号站的OB35中,X_SEND和X_ABORT中的通信伙伴的MPI地址DEST_ID为W#16#2。每次中断将DB1.DBW0和DB2.DBW0分别加3和加4。
2)在3号站的初始化程序OB100中,将发送数据的DB1和DB2的各个字预置为16#3151和16#3152。
6.察看动态连接的个数
执行菜单命令“PLC”→“诊断/设置”→“模块信息”,在CPU的“模块信息”对话框的“通讯”选项卡中(见图14-28),可以看到CPU的最大连接个数、PG、OP、S7和其他通信(本例为S7基本通信)占用的连接个数。连接个数变化后,需要点击“更新”按钮,才能看到变化后的连接的个数。
图14-28 模块信息中的“通讯”选项卡
7.运行与监控
将组态信息和程序分别下载到各CPU,然后用PROFIBUS电缆连接编程用的计算机和两台PLC的MPI接口,将两块CPU切换到RUN模式。
在运行时同时打开两个站的变量表(见图14-29和图14-30),其中的M1.0和M1.2是发送使能位,M0.0是接收使能位,M1.4是X_ABORT的使能位,用来断开连接。
图14-29 CPU 413-2DP的变量表
图14-30 CPU 315-2DP的变量表
在运行时用变量表监视接收的DB4、DB5的第一个字DBW0和最后一个字DBW74。在每100ms执行一次的OB35中,两个数据包发送的第一个字DB1.DBW0和DB2.DBW0分别被加1~4,通信伙伴用DB4.DBW0和DB5.DBW0来保存它们。
(1)初始状态
开始运行时双方的SFC的使能位均为0状态(false),动态连接数为0,没有传输数据,用来保存接收的数据的DB4、DB5中的字和QD0、QD4均为0。
(2)建立连接
令3号站的发送使能位M1.0为1,建立了一个动态连接。2号站的接收使能位M0.0必须同时为1,才能接收到3号站发送的数据,2号站的DB4.DBW0的值才会不断增大。
因为每个站既要发送数据,又要接收数据,最多需要两个连接。令2号站的某个发送使能位为1,将建立第二个动态连接。
(3)连接的保持
如果令3号站的发送使能位为0,或者令2号站的接收使能位M0.0为0,都会中断数据传输,2号站的DB4.DBW0或DB5.DBW0的值停止变化。因为SFC 65的参数CONT为1(TRUE),即使发送数据使能位M1.0变为0,数据传输中断,连接仍然保持。
(4)断开连接
将3号站的X_ABORT的使能位M1.4置位为1,将断开一个已建立的连接。M1.4为1时,即使双方的3号站的发送使能位和2号站的接收使能位均为1,也不能传输数据,DB4.DBW0或DB5.DBW0停止变化。双方的M1.4均为1状态时,数据传输完全停止,两条连接均断开,模块信息中的“其他通信”的连接数变为0。
(5)连接的恢复
令X_ABORT的使能位M1.4为0,在对应的发送使能位为1时,将会恢复被断开的连接。
8.两台S7-300之间的通信
随书光盘中的项目MPI_UC_3调用X_SEND和X_RCV,来实现两块CPU315-2DP之间的S7基本通信,硬件、通信的组态、编程和监控的方法与项目MPI_UC_1基本上相同,详细的情况见随书光盘中的项目。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。