在很多项目上,PLC需要获知HMI的当前状况。通常的做法是,HMI上会被设置一个1HZ的方波的信号,并将该信号写入PLC的某个变量中。PLC程序通过两个定时器监控这个变量的变化情况。如果该变量长时间是1或0,就证明HMI是掉线了,这个信号被称为“心跳信号”。
现在,新一代的HMI设备及广泛采用Profinet网线连接的方式,考察HMI是否掉线变的更加方便。对于Profinet网线连接的HMI,可以在HMI上使能Profinet功能,然后将这台HMI组态在PLC的总线中,通过总线设备诊断指令来判定HMI的状态。
TIA博图软件也提供了专用于向PLC汇报HMI自身状态的功能,只需要简单设置,HMI便可以向PLC自动传送一个状态字,具体的设置方法如下:
首先,需要在PLC中创建一个WORD型的变量。本例中创建的变量名为“HMI_Status”.Coordination,其中“HMI_Status”为DB块的名字,Coordination为这个DB块内WORD型变量的名字。DB块为优化的DB块,没有绝对地址。继续,开始HMI设备的设置。单机项目树中HMI设备下的“连接设置(Coordination)”,待工作区打开连接设置界面后,工作区被分割为上下两个区域。上方显示已创建的连接,下方显示参数。最后,在“工作区下面的区域”内,选择“区域指针(Area point)”选项卡。在这个选项卡中,界面又被分割为两部分,上方为“区域指针(Are point)”,下方为“HMI设备的全局指针(Global area pointer of HMI device)”如果界面未能显示完这两个区域,可用鼠标拖移方式调整。在“区域指针(Area point)”中勾选名为“Coordination”的变量,并在“Coordination”一行的“PLC标签(PLC tag)”中写入之前在PLC中建立变量——“HMI_Status”.Coordination',如下图:
对PLC和HMI均编译和下载后,对变量“HMI_Status”.Coordination'进行观察,如图所示。
对于这个控制字,目前只定义了前三位,后面所有位将会始终为0。前三位的定义如下:
第零位:(由0开始计数),当为0时表示HMI正在启动过程中,当为1时表示HMI已经启动;
第一位:当为0时表示HMI在线,当为1时表示HMI离线;
第二位:1HZ方波的心跳信号。
使用Slice access访问方式提取并监控这三位,如下图:
今天的内容,你学会了吗?