PROFIBUS-DP主站通过控制命令输出同步(SNYC)和输入冻结(FREEZE)命令,可以实现某些DP从站同步数据通信。系统所涉及的DP从站必须组态在SYNC和FREEZE组中,DP主站利用全局控制报文同时发送SYNC或FREEZE控制命令给所有的DP从站。
SYNC命令同步DP从站的输出,DP从站在SYNC模式时,输出被冻结,主站发送的数据存在DP从站的本地缓存器中,只有在接收SYNC控制命令后,所有DP从站将缓存器中的数据传送到输出,这样可以同步若干个DP从站的输出。
使用UNSYNC可以取消同步命令,取消后从站循环更新输出。同步过程如图1-1所示。
图1-1 同步过程
若要冻结若干DP从站上的数据,就要用到FREEZE命令,当FREEZE控制命令发送到一组DP从站时,所有的DP从站同时冻结输入点的现有信号,以便由DP主站来读取这些信号。DP从站上的输入数据在接收到另一个FREEZE命令时更新,如果没有新的FREEZE命令,输入数据保持当前值不变。
用UNFREEZE命令可以取消DP从站的FREEZE模式,循环更新从站输入信号,此时,输入数据可以立即由DP从站更新并被DP主站读取。输入冻结过程如图1-2所示。
图1-2 冻结过程
本例的系统由PS307电源、CPU 319-3 PN/DP模块、IM153模块、仿真模块SM374等组成,以下将展示如何实现PROFIBUS-DP的同步冻结功能。
序号 |
操作 |
图示 |
1. |
首先进行系统的硬件组态,打开STEP7 V5.5软件,插入一个S7-300主站,本例中为CPU 319-3 PN/DP模块。 |
|
2. |
组态DP从站,本例中两个从站的站地址分别设置为4和5,每个从站各有一个仿真模块SM374。此仿真模块在组态时,组态为8点输入8点输出,订货号为6ES7 323-1BH00-0AA0的模块。 |
|
3. |
双击CPU中主站的DP接口,弹出DP主站的属性窗口,记录DP主站的诊断起始地址,编程时使用。 |
|
4. |
双击PROFIBUS(1),弹出DP master system(1)的属性窗口,选择Group Properties选项卡,选择DP总线中每组的同步冻结功能,每条总线最多分为8个组,每组默认使能同步冻结功能。 |
|
5. |
点击Group Assigment选项卡,将从站分组。本例中将4号站和5号站分在组1中。如果有更多从站,可以继续分配在组1中,也可以分配到不同的组中,每组的同步冻、结功能可以分别设置,也可在用户程序中分别使能和禁止。 |
|
在OB1中调用系统功能SFC11启动同步冻结。当M100.0为1时,执行在MB102字节中定义的模式。程序如图3-1所示。
十六进制下,SFC11的MODE参数含义如下:4为取消冻结,8为冻结模式,10为取消同步,20为同步模式。也可以同时设置不矛盾的两种模式,十六进制下,MODE参数:14非同步冻结,18冻结非同步,24同步非冻结,28同步冻结。需要注意的是,当主站热启动或者暖启动后,DP从站保持SYNC和FREEZE模式。
图3-1 程序编写
将程序下载至PLC中,并且在变量表中观察以下变量MB0,MB1,QB0,QB1,IB0,IB1。其中将MB0与MB1修改为B#16#F0,可以看到QB0与QB1的值也随之更改为B#16#F0,但是实际的输出模块上的输出区并没有任何LED灯亮,这是因为数据被保存在两个从站本地接口模块的存储器中,并没有发送给模块。
而在从站的仿真模块上的输入区有输入信号,但是监控表中的IB0与IB1的数值仍为 B#16#00,这是因为接口模块一直向主站发送上次输入过程值,并没有更新输入过程数据(本例中主站为CPU 319-3 PN/DP),如图3-2所示。
图3-2 CPU中数据与实际模块状态对比
这时,在程序中使能SFC11,则两个从站立即将输出数据从缓存中发送给输出模块,并且更新输入模块的数据并发送给主站。这样便实现了两个从站的输出同步与输入冻结功能。如图3-3所示。
图3-3 输入冻结与输出同步