通过dx方式可以实现profibus从站之间的数据交换,无需再在主站中编写通讯和数据转移程序。系统中至少需要一台profibus 1类主站,两台profibus非智能从站才能够实现dx模式的数据交换。
首先,在step7中创建一个project,分别插入一个主站:cpu314c,两个从站:cpu315-2dp。
然后分别对每个站进行硬件组态。
首先对进行数据发送的从站态。
组态cpu时,要创建一个profibus进行硬件组网络,并设定操作模式为dp slave,然后选择configuration页面,用鼠标点击new键,创建数据交换映射区。
选择input和output区,设定地址和通讯字节长度,数据一致性设置为all。
组态完进行数据发送的从站后,我们再组态主站,同样在插入cpu时,要创建profibus网络,设定为主站模式,并在窗口右侧的profibus dp树型图中选择已经组态的cpu31x站,把它拖到profibus总线上。
这时会弹出链接窗口,选中已经组态的从站,点击connect按钮。
设定主站与从站之间的数据对应关系。
主站的输入与从站的输出对应,主站的输出与从站的输出对应,注意将数据通讯的一致性设置为all。
此时组态接收数据的从站,插入该从站cpu时创建profibus网络,并在configuration页面中新建两个数据交换对应区,分别设置为ms模式和dx模式。
设定dx模式下的通讯交换区时,需要设定发送数据从站的站地址,这里为2。
组态完该从站后,再打开主站的硬件组态窗口,将第二个从站挂到profibus总线上去,点击connect按键,建立主从站的链接。
设定主站与从站的地址对应关系,并将数据一致性选为all。
到此,系统的硬件组态完成,分别将各个站的组态信息下载到plc中。
在数据发送从站的ob1中编写sfc15程序块,并插入发送数据区db1,在数据接收从站中的ob1中编写sfc14程序块,插入接收数据区db2:
注意sfc14和sfc15的laddr参数对应的是ms,dx模式下的local addr中的地址值,并且为16进制,所以w#16#64对应100,w#16#64对应30,在线监视sfc14和sfc15的ret_val参数值为0。
将编写好的ob1,sfc14,sfc15,db1,db2分别下载到两个从站当中,同时为了保证从站调电不导致主站停机,向主站下载ob1,ob82,ob86,ob122等程序块。
将各个站切至运行状态,通过变量表对两个从站进行监视。
可以看出从站间的数据实现了交换。