1.数据的一致性
数据的一致性(Consistency)又称为连续性。通信块被执行、通信数据被传送的过程如果被一个更高优先级的OB块中断,将会使传送的数据不一致(不连续)。即被传输的数据一部分来自中断之前,一部分来自中断之后,因此这些数据是不连续的。
在通信中,有的从站用来实现复杂的控制功能,例如模拟量闭环控制或电气传动等。从站与主站之间需要同步传送比字节、字和双字更大的数据区,这样的数据称为一致性数据。需要绝对一致性传送的数据量越大,系统的中断反应时间越长。可以用系统功能SFC14“DPRD_DAT”和SFC15“DPWR_DAT”来传送要求具有一致性的数据。这两个SFC在实际程序中被广泛使用。
随书光盘中的例程“SFC14_15”的硬件和通信组态与前面的项目“智能从站”基本上相同,其区别在于参数“一致性”被组态为“全部”(见图6-28),因此需要在用户程序中调用SFC15“DPWR_DAT”,将数据“打包”后发送,调用SFC14“DPRD_DAT”,将接收到的数据“解包”。这样DP主站指定的数据区被连续地传送到DP从站。SFC14、SFC15的参数RECORD指定的地址区和长度应与组态的参数一致。
图6-28 组态主从通信的地址区
如果从具有模块化设计或具有多个DP标识符的DP非智能从站读取数据,通过组态时指定的起始地址,每次调用SFC14只能访问一个模块或一个DP标识符的数据。
DP主站用SFC15发送的输出数据被智能从站用SFC14读出,并作为其输入数据保存。反之也适用于智能从站发送给主站的数据的处理。用于通信的I/Q区的起始地址LADDR的数据类型为WORD,应使用十六进制数格式。100对应的十六进制数为16#64。
3.生成数据块
右键单击SIMATIC管理器左边窗口中CPU 412-2DP的“块”,执行出现的快捷菜单中的命令,生成数据块DB1。打开DB1,生成一个有10个字元素的数组ARAY。用复制和修改名称的方法创建内部结构相同的DB2。(www.xing528.com)
4.OB1的程序
在双方的主程序OB1中,调用SFC15“DPWR_DAT”,将DB1中的数据“打包”后发送。调用SFC14“DPRD_DAT”,将接收到的数据“解包”后存放到DB2中。
DP主站和智能从站的OB1中的用户程序基本上相同,下面是主站OB1的程序:
参数RECORD的数据类型为ANY,如果指定SFC14的参数RECORD的实参为P# DB2.DBX0.0 BYTE 20,因为DB2中的数组ARAY的大小刚好为20B,输入后会变为DB2.ARAY,也可以直接输入DB2.ARAY。
从站OB1中的程序与主站的基本上相同,图6-29给出了通信双方的信号关系图。
通信双方OB100的程序分别将DB1中要发送的数据初始化为16#1111和16#2222,将保存接收数据的DB2清零。双方的OB35每100ms将DB1.DBW0的值加1,运行时它被传送给对方的DB2.DBW0。将通信双方的程序块和组态信息下载到硬件CPU,用PROFIBUS电缆连接主站和从站的DP接口,接通主站和从站的电源,将CPU切换到RUN模式。
用变量表监控双方接收到的DB2中的DBW0、DBW2和DBW18,监控时可以看到双方的DB2.DBW0的值在不断增大。
图6-29 DP主站与智能从站的数据传输示意图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。