资源描述
深度挖掘-台达DOP人机界面“一机多屏”的实现
中达电通股份有限公司PLC产品处 王乃全
前言:
随着人机界面的发展及用户对高功能的追求,人机界面“一机多屏”的使用方式越来越频繁。本文用清晰的图示结合一个样例详细的说明台达DOP是如何实现“一机多屏”功能的。
关键字:人机界面 宏指令
问题的引出与解答:
现在市面上很多的人机界面(HMI)都提供了方便的一台控制器连接两台或者更多人机的功能,也就是大家常说的“一机多屏”,如WeinView、Hitech等都可以实现。台达的人机功能很强,但在Screen Editor编辑软件中并没有提供这样的功能。那么如果用户想使用“一机多屏”就没有办法了吗?
当然不是这样,台达人机很好的一个特点就是提供了2个通讯口,而且2个通讯口可以独立使用。这样,我们就可以用一个通讯口连接控制器,另一个通讯口连接第二台或者第三台触摸屏了。
解决方法有了,下面我们就结合一个样例来看一看DOP是怎么做到的。
系统图:
如上面这样的系统图,我们可以用一个人机作为Master HMI,其余若干个人机作为Slave HMI,分别为2#、3#......。Master HMI的COM1与一台EH PLC通过RS232连接,COM2与各个Slave HMI通过RS485连接。这样,Master HMI作为两条线路上的主站,负责交换两条线路上的数据。
本例我们采用两台HMI同一个PLC连接,所以将上面的系统图简化并作个变形,以形成我们熟悉的样子。两台人机直接通过MODBUS ASCII来连接。
如下图:
样例要实现的功能:
1、 两台人同时显示PLC的数据变化。
2、 当其中任意一台人机修改PLC寄存器的数值时,同时能在另一台人机上一起变化。
3、 当一台人机切换画面时,另一台人机也会自动切换。
功能分析与框图:
DOP有个很大的特点就是支持宏指令功能,所以这些功能都要依靠宏来实现。我们先设功能1中PLC用到的寄存器地址为D200, D201。2#Slave HMI与之对应的地址设为$109, $110,根据下表DOP内部与MODBUS的对应关系可以知道对应MODBUS的地址为W40110, W40111。然后在Master HMI中用BMOV指令将D区传送给$区就行了。
Modbus address
HMI 内部数据定义
W40001 ~ W41024
$0 ~ $1023
内部缓存器
W42001 ~ W43024
$M0 ~ $M1023
断电保持内部缓存器
W44001
RCPNO
配方编号缓存器
W45001 ~ ...
RCP0 ~ RCPn
配方缓存器
B00001 ~ B01024
$2000.0 ~ $2063.15
内部缓存器(bit)
B01025 ~ B02048
$M200.0 ~ $M263.15
断电保持内部缓存器(bit)
功能2要实现主从人机换画面同步,就要用【系统控制区】来帮忙了。设主从人机共用从机的MODBUS地址W40100来切换画面。
功能3实现比较麻烦一点。关键是主从机都可以改变PLC中的数据。设PLC中的寄存器地址为D100, D101。2#Slave HMI与之相对应的地址是W40010, W40011。我们的思路是这样:当1#Master HMI完成对D100, D101的数值输入的时候,触发一个标志位1#$101.0(1#表示1#Master,2#表示2#Slave HMI)。在1#backgroud宏中检查$101如果为1,就Call子宏2,在子宏2中用BMOV指令把D100, D101分为传送给2#W40010, 2#W40011以达到数据同时改变。同时启动D100, D101的执行后宏,先做200ms延时,之后复位$101.0.
同样的做法,当2#完成对2#W40010, 2#W40011数值输入后触发标志位2#B00001。因为在1#backgroud宏的IF语句中不能直接使用BasePort或者Link2的地址,所以要先把2#B00001GET到$100.0,之后在在1#backgroud宏中检查$100如果为1,就Call子宏1,在子宏1中用BMOV指令把2#W40010, 2#W40011分为传送给D100, D101以达到数据同时改变。同时启动2#W40010, 2#W40011的执行后宏,先做200ms延时,之后复位2#B00001。
三种功能实现的图示图下图所示:
PLC 1#Master HMI 2#Slave HMI
内部宏
$ 区
D区
功能一图示
2#从HMI
系统控制区
BASEPORT W40100
1#主HMI
系统控制区
LINK2 W40100
2#W40100
功能二图示
延时200ms
复位1#$101.0
写入后触发
1#$101.0为ON
D100 D101
写入
1#$100.0=2#B00001
延时200ms
复位2#B00001
写入后触发
2#B00001为ON
2#W40010 2#W40011
写入
CALL 2
1#$101.0=ON
CALL 1
1#$100.0=ON
子宏2
2#W40010 =D100
2#W40011= D101
子宏1
D100=2#W40010
D101=2#W40011
功能三逻辑框图
其中绿色表示在2#Slave HMI中执行的;桔色表示在1#Master HMI中执行的
Screen Editor软件的编写:
上面我们做了大量的准备工作,建立方案、理清思路、建立方框图,最终还是要通过Screen Editor来软件实现。下面我们就一步一步的编写软件。由于篇幅的限制,一些基本的软件操作就不在此文说明,本文只提到一些比较关键的点。
1、1#Master HM程序的编写:
功能2要用到的地址,长度为1
1#Master HMI型号及其BasePort(COM1)PLC类型
启动Screen Editor软件,建立一个新文件,【设定模组参数】的设置如图:一般
上图中1#Master HMI的COM1连接DVP PLC,作为PLC的主站。与PLC的通讯参数设置如下图
新建一个Link2,用1#Master HMI的COM2去连接2#Slave HMI,如图通讯Link2
此处PLC的站号就是2#的人机站号
通讯延迟时间设为5ms是为了改善通讯效果。实际运用可根据需要进行调整
新增Link2,用COM2 RS485。选择ASCII(Master)控制器。即1#通过Link2作为2#的主站,2#作为1#的从站。
新建如下图的1-Screen_1画面。其中D101的属性设置与D100一样。
完成输入后将$101.0设为ON,同时启动执行后宏
D100的属性设置
D100的执行后宏
两个数值显示的地址就用PLC的实际地址D200 D201
1-Screen_1画面
换画面就直接对W40100设常数值就可以了。想切换到哪里,就把数值设置成第几个Screen。
建立如图的2-Screen_1画面,来配合切换画面的实现
2-Screen_2画面
建立如图的Backgroud宏
建立如图的两个子宏
子宏1 子宏2
这样,1#Master HMI的程序就编写完成了。
2、2#Slave HMI的程序编写
【设定模组参数】如下图所示
换画面的地址与1#用一样的。实际上也就是2#的$99
2#Slave HMI作为1#的从站,这里要注意控制器类型的选择
同样用COM2 RS485,
这里的人机站号就是
1# Link2的PLC站号。
为2#建立2个画面
D101的属性设置
实际的输入地址是W40011
1-Screen_1画面
1-Screen_1画面2个数值显示D也用W(即2#$)来代替。
2-Screen_2画面
这样,2#Slave HMI的程序也完成了。
最后实际运行的情况如图
通过以上的连接,小节如下:
1、 所有的从机与PLC的数据交换都是通过主机中的宏完成周转的。
2、 每台人机可以运行不一样的程序。
3、 举一反三。这种形式推广的一个变型就是可以在多台人机和多台控制器之间轻松的完成数据的交换。
结束语:
台达电子作为享誉国际的机电产品供应商,每一样产品都是精雕细琢的杰作。台达人机的2个通讯口独立使用和方便的宏指令结合,可以完成许多复杂的通讯功能。希望以此为例,大家能够挖掘处更多的潜在应用。
参考书籍《DOP A系列人机界面应用技术手册》
2006年4月6日
展开阅读全文