基于Modbus协议的螺丝机HMI系统设计
2019-08-26石小仕姚娅川吴昊翰刘富瑞
石小仕, 姚娅川, 吴昊翰, 刘富瑞
(1.四川轻化工大学自动化与信息工程学院, 四川 自贡 643000;2.人工智能四川省重点实验室, 四川 宜宾 644000;3.广安市广安区花桥镇人民政府, 四川 广安 638550)
引 言
在螺丝机的使用过程中,工人需要实时了解机器的运行状态、工件锁付情况以及对参数进行及时调整,因此需要设计出一套实际可用的螺丝机HMI系统来方便工人与机器进行交互。
早期的HMI系统是由七段数码管、LED灯、开关按键等简易电子元件构成,同时还需设计出相应的逻辑控制电路,这种HMI系统功能简单,显示内容少,可操作性差[1],早期的HMI系统存在的问题,引起了许多专家学者及企业的关注,人们纷纷开始对螺丝机或其它产品的HMI系统进行升级改造。例如,蔡湘云[2]等人将螺丝机连接PC,利用PC的显示屏作为人机交互窗口,这样可以丰富显示内容,但是因为外加了PC使得螺丝机的一体化程度降低;林敏、覃羡烘[3-4]等人采用PLC作为系统主控制器,可以使用简单方便的梯形图进行程序设计,但张红[5]等人却提到各种不同的HMI系统与不同厂商的PLC产品之间可能支持不一致的通信协议,比如西门子PLC的某些型号只能使用其厂商默认的专用PPI协议,这使得HMI系统可移植性变差;郑恒亮[6]等人设计的动车HMI系统,给出了一种切屏更新算法,在切屏时才刷新数据,减少了数据的传输量,但此方法依然是传统的数据交换方式,需要有CPU参与其中。可见,各个领域改进的HMI系统,解决了一些早期HMI系统存在的问题,但是也衍生出了其他的方面不足。
本设计在总结前人设计经验的基础上,再结合螺丝机自身工作的需求,采用STM32作为螺丝机HMI系统的主控制器。相比于PLC控制器,STM32不仅可以降低设计成本,而且可以更灵活地进行软件系统设计。通信协议引入工业自动化领域通用的Modbus协议,加强了螺丝机HMI系统的可移植性,并且在主从设备中间数据交换时,使用了数据预装载附加DMA功能的方法解决了系统在实际生产中发现的切屏刷新延迟的问题。同时,为了提高了机器的一体化程度并丰富界面显示内容,引入4.3寸工业触摸屏作为人机交互窗口,工业触摸屏实物图如图1所示。
图1 触摸屏实物图
1 系统概述
设计的螺丝机HMI系统主要面向流水线工人和车间维修人员,故系统的设计应考虑到参数显示是否清晰直观、操作是否流畅、切屏逻辑是否合理等问题。同时,针对不同的操作人员,系统要设置不同的操作权限,以防止螺丝机在运作过程中发生错误操作。系统主要由3个模块构成,分别是通信模块、人机交互模块、数据存储模块,系统构成框图如图2所示。
图2 螺丝机HMI系统构成框图
数据存储模块是由E2PROM芯片24C16通过I2C总线进行搭建,能够储存用户常用的工件坐标信息和机器工作日志,并能实现当用户开机后系统快速恢复上次工作状态的功能。人机交互模块,该模块与操作人员有着最频繁的接触,在该模块中操作人员不仅可以通过界面查看当前工件螺丝的锁付进度、工件加工数据、文件管理信息等内容,而且可以进行触屏操作来对待锁付工件的坐标进行补偿,以及选择U盘或E2PROM内存储的文件。
2 螺丝机HMI系统硬件平台设计
本设计采用HollySys的HT8421T型工业级触摸屏,该屏内置AM3352芯片,屏幕主要参数见表1。
表1 工业触摸屏参数表
触摸屏通过RS485接口与控制器进行连接,其硬件电路采用磁耦隔离方案,电路原理图如图3所示。图3中,ADuM1411为三入一出四通道数字隔离芯片,PSM712用于热拔插保护,F1、F2自恢复保险是防止负载过大导致485芯片损坏。
图3 螺丝机HMI系统部分硬件电路图
3 螺丝机HMI系统软件设计
3.1 数据传输及参数计算
3.1.1 螺丝机HMI系统中的Modbus协议
Modbus协议是广泛应用于工业自动化领域的一种数字通信协议[7],该协议已经成为一种通用工业标准,因此采用Modbus协议作为螺丝机HMI系统的通信协议可以加强系统的可移植性。一个完整的基于Modbus协议的通信过程包括主设备的查询和从设备的回应两部分,在本设计中将螺丝机的电机和电批作为执行机构,工业触摸屏作为主站,控制器作为从站,主、从设备通信原理图如图4所示。
图4 主、从设备通信原理图
在异步串行通信中,Modbus协议主要有RTU和ASCII两种模式,根据实际情况,本设计采用远程终端单元(RTU)模式,该模式下的消息帧格式见表2。
表2 消息帧格式
其中,螺丝机HMI系统涉及到的功能码有01、03、04、05,各码解释如下:
(1)功能码01:读线圈状态,从一个远程设备中读1~2000个连续的线圈状态;
(2)功能码03:读保持寄存器,从远程设备中读保持寄存器连续块的内容;
(3)功能码04:读输入寄存器,从远程设备中读1~125个连续输入寄存器;
(4)功能码05:写单个线圈,将一个远程设备中的一个输出写为ON或OFF。
3.1.2 参数计算
遵从Modbus RTU协议要求,传输过程中每一个信息帧之间至少间隔3.5个字符位,因此需要计算出相应的帧间超时时间。在本设计中,串口的波特率设为9600 bit/s,1个字符一般情况下包括1个起始位、8位数据位、1位校验位、1位停止位,这样说来3.5个字符需要38.5 bit,将以上数据带入式(1)中,可得帧间超时时间Tot约为4 ms,然后开启控制器的通用定时器用来计时,根据式(2)可计算定时器的溢出时间,本设计将定时器的预分频系数PSC设为72,那么装载值为ARR=Tot。
(1)
(2)
式(1)、(2)中,Tot:帧间超时时间;B:波特率;Tout:定时器溢出时间;W:字符数;L:字符长度;ARR:定时器装载值;PSC:定时器预分频系数;HCLK:控制器时钟频率。
为了保证接收数据的正确性,还需对信息帧进行错误检测,Modbus协议的RTU模式多采用CRC校验,假设预置了一个16位的寄存器,这里称该寄存器为CRC寄存器,再定义一个整型变量k,CRC校验算法流程如图5所示,图中Byte从信息帧的第一个字节开始。
图5 CRC校验算法流程图
3.2 切屏优化
在螺丝机HMI系统中,不同界面切换后会对显示的数据进行相应的更新,显示数据更新的快慢是衡量系统优越性的关键因素之一。团队在设计初期便遭遇到了切屏相关的问题,当界面进行切换后,新界面上的基本固件虽然显现迅速,但是一些需要实时操作的数据在屏幕上的刷新却存在一定的延迟。
切屏延时问题的存在,不仅影响了用户的操作体验,而且会拖慢工业生产进度,影响工件螺丝锁付效率,特别是在机器运作时工人不能及时解读到相关参数还可能造成潜在的安全隐患。为了解决问题,团队对系统进行了切屏优化。
3.2.1 数据预装载
螺丝机HMI系统显示的数据主要来源于U盘或者E2PROM内。以E2PROM为例,分析发现,屏幕上需要显示的螺孔坐标、待锁工件型号、机器工作日志等数据都存放在E2PROM中,每当切换到相应数据的显示界面时,从机需要先对24C16芯片进行读操作,这明显延长了主机上显现出相关内容的时间。为此提出了一种数据预装载的方法,该方法充分利用了开机时设备初始化的空档期,因为控制器启动速度快于屏幕加载,开机后屏幕会有一个开机画面的过程,在这期间在控制器中开辟一个缓存空间,并将E2PROM内的数据提前读取到控制器的缓存中,然后将显示框地址与控制器缓存中对应数据地址进行直接映射,之后若要显示相关数据便可直接从控制器缓存中获取。
数据预装载的思想专门为备用数据在控制器中开辟了存储空间,省去了之前现场操作外设的繁琐步骤。将HMI系统连接JLINK仿真器对数据预装载情况进行硬件调试,可见控制器缓存中得到的预装载数据如图6所示。
图6 数据预装载结果图
3.2.2 启动DMA功能
如果单纯的使用串口进行主、从设备之间的数据交互,频繁地触发串口中断,不仅会严重影响CPU的执行效率,而且也会间接的降低数据的转移速度。因此,为了切屏后数据刷新不出现卡顿,开启控制器的DMA(Direct Memory Access:直接内存存取)功能用于数据交互。DMA是一种可以减轻CPU负担的数据转移方式,其优势在于DMA总线独立于控制器内核。开启该功能后主、从机之间可以实现数据直接传输,不像传统数据传输那样需要经历CPU寄存器环节,这样即能保证主、从设备间数据的高效传输,又能在数据传输的同时为CPU腾出更多资源参与界面刷新的其他工作。
DMA的配置过程如下:
(1)使能DMA时钟
RCC_AHBPeriphClockCmd();
(2)初始化DMA通道参数
DMA_Init();
(3)使能串口DMA发送
USART_DMACmd();
(4)使能DMA通道启动传输
DMA_Cmd();
(5)查询DMA传输状态
DMA_GetFlagStatus();
(6)获取/设置通道当前剩余数据量
DMA_GetCurrDataCounter();
DMA_SetCurrDataCounter();
对切屏优化效果的验证,会在以下现场试验章节详细说明。
3.3 界面设计
3.3.1 界面设计原则
螺丝机HMI系统界面是操作人员与机器交互的重要媒介,是人、机对话最为直接的平台,因此与其他图形界面设计一样,螺丝机HMI系统界面设计也应遵循直观性、丰富性、逻辑合理性。
3.3.2 界面设计步骤
图7 界面设计组态软件窗口
螺丝机HMI系统的界面设计借助HollySys公司开发的HT8001CN组态软件进行,软件窗口如图7所示。本设计选用的该组态软件适配为工业触摸屏,软件提供大量的图形对象可以像搭积木那样方便地建立界面的图形接口,缩短了开发周期。界面设计完成后,HT8001CN组态软件最终会生成相应的配置文件,设计人员可以用通过SD卡或USB接口将配置文件下载到工业触摸屏中进行调试。
螺丝机HMI系统界面设计步骤如下:
(1)变量规划。设计过程中用表格来记录和整理所需变量的分配情况;
(2)界面配置。利用HT8001CN组态软件提供的基本控件来进行界面配置,对界面上的控件进行编号,并分配变量地址和返回值,指定按键的触发条件,HT8001CN提供的基本控件见表3。
表3 基本控件表
(3)美化界面。利用PS、美图秀秀等图像处理软件对界面中的背景、图标、字体等相关元素进行艺术加工,最后再将结果导入到组态软件中;
(4)调试与修改。把设计最终生成的配置文件借助SD卡或USB接口下载到工业触摸屏中,并将屏幕通过RS485连接到控制器开始数据通信,进行界面的调试和修改。
3.3.3 界面框架及程序设计
图8 界面框架图
螺丝机HMI系统界面框架如图8所示。框架中每个子模块对应一个子界面,每一级子界面又包含若干个功能二级界面。在接收触摸按键值后,主设备进行相应的界面跳转,并向从设备发送请求。当从设备收到请求后,会先对信息帧进行CRC校验,然后进行功能码判断。一切无误后,从设备会给予主设备回应,主设备对回应信息帧进行分析,最后对界面内容进行刷新,进入正常的人机交互状态,界面程序设计流程如图9所示。
图9 界面设计程序流程图
4 试验与结果分析
将设计完成的基于Modbus协议的螺丝机HMI系统投放到工厂的生产线中进行实地试验,现场试验如图10所示。
图10 现场试验图
试验前期,先对触摸屏的参数、通信参数等系统重要参数进行配置,如图11所示。
图11 系统重要参数配置
现场试验中,对比了切屏优化前后各个界面跳转时相应数据刷新的结果,并记录了主要界面刷新时间。切屏优化前后数据刷新时间对比见表4。
表4 切屏优化前后数据刷新时间对比表
从表4中可以看出,采用数据预装载附加DMA功能的方法对切屏进行优化有着显著的效果。特别是U盘内和E2PROM内的数据刷新,在未优化时,系统需要提前操作U盘或者24C16芯片,这将会消耗大量时间,而采用该方法后,数据刷新时间缩短了约3~4秒。对于锁付监控,因为该界面为动画展示过程,涉及数据存取情况较少,所以优化效果不明显。总之,数据预装载附加DMA功能的方法适用于数据量大、外设数据传输频繁的情况,能有效的提升用户操作的流畅感。
产线上的操作工人与维修人员是螺丝机HMI系统最终的服务对象,他们对于系统的使用有着最直接的体验感受,因此他们对于系统的综合性评价也有着不可忽视的话语权。将该设计在产线上投入使用一个月后,设计团队对产线工人和维修人员进行了问卷调查,调查结果如图12所示。
图12 用户调查结果
由图12中可以看出,系统的稳定性和直观性得到了用户的肯定,但是界面的美化和按键的逻辑性得分相对较低,这将是该套系统在今后还需要进一步改进的地方。
5 结束语
本设计基于Modbus协议的螺丝机HMI系统,采用STM32作为系统控制器,并嵌入4.3寸工业触摸屏作为HMI系统人机交互的窗口,系统的通信协议引用工业自动化领域通用的Modbus协议。本文中还给出了该协议重要参数的计算方法以及CRC校验流程。针对切屏后界面数据刷新延时的问题,开启了控制器DMA功能,并提出了一种数据信息预装载的办法,有效地对切屏进行了优化。最后遵循界面设计的原则,设计出了逻辑合理、简洁直观、功能齐全的系统界面。该设计已在工厂流水线上成功投入使用,具有很高的社会经济价值。