支持ModBus协议的组态式人机界面系统的设计*
2015-11-02何鹏飞张琼琼赵鸿博
何鹏飞,何 平,张琼琼,赵鸿博
(1.中国科学院大学,北京 100039;2.中国科学院沈阳计算技术研究所 高档数控国家研究中心,沈阳 110168;3.沈阳高精数控有限公司,沈阳 110168)
支持ModBus协议的组态式人机界面系统的设计*
何鹏飞1,2,何 平2,3,张琼琼1,2,赵鸿博1,2
(1.中国科学院大学,北京 100039;2.中国科学院沈阳计算技术研究所 高档数控国家研究中心,沈阳 110168;3.沈阳高精数控有限公司,沈阳 110168)
人机界面在工业控制领域得到广泛应用。针对传统人机界面画面固定,通用性差等缺点,采用STM32平台设计了一种基于组态式的,画面可重配置的人机界面系统。通过组态软件设计画面,从而应用到不同的设备或工业控制系统。文章提出一种多层次的有限状态机来实现画面的显示与跳转,从而可以实现复杂画面逻辑。并采用ModBus协议将其应用于多轴控制器中,实现对电机速度、位移、报警信息等参数的显示与修改。对ModBus协议的支持,可以实现连接不同的设备和一个设备网络,从而监控多个设备中的状态参数。
HMI;STM32;组态软件;ModBus协议
0 引言
人机界面(Human Machine Interface,简称HMI)是人与计算机之间或其他控制系统之间进行交互、信息交换的媒介[2]。传统人机界面一般采用工控机的方式来对自动化设备进行监控。但是其成本比较高、体积大、接口比较简单、稳定性比较差等原因逐渐被现代HMI人机界面所取代。新一代的人机界面支持组态式画面,可以重新配置,支持多种总线协议,而且比较轻便、价格低廉。这种人机界面得到了更多开发商的投资和研究。
在国外,日本在人机界面市场有极高的占有率。日本的普洛菲斯(Proface)国际贸易有限公司,在全球范围内占据主导地位,成为全球HMI行业领袖。在国内大陆市场,三菱电机自动化有限公司、深圳市步科电气有限公司的产品有一定的占有率。对于一些低端应用,很少将这种人机交互界面做成一个独立的产品,只是嵌入到相应的设备中,作为系统的显示模块。这种方式显示画面固定,只能对不同的设备开发不同的应用界面。HMI人机界面可以实现画面的组态,用户通过组态软件可以实现画面的定制,实现不同的应用。本文设计的人机界面不但支持这种画面的定制,而且采用工业通用总线—ModBus RTU协议,可以实现连接多个设备,控制一个设备网络中的多个不同类型的设备。从而观测多种不同类型设备的状态。并且提出了一种基于组件的画面显示系统,可以很方便的扩充组件库。
1 控制器结构
硬件平台采用ST公司的STM32F103R8T6芯片,片上SRAM 20KB、FLASH 64KB。编译器采用Keil MDK 4.7,使用STM32 3.5固件库程序以及USB 3.2固件库。操作系统采用Keil编译器自带的RTX-ARM操作系统。在STM32硬件平台之上,使用ST公司提供的STM32固件库和USB固件库程序设计各模块驱动程序。如下图1所示。
图1 系统结构
HMI人机界面系统包含7个模块;组态软件、USB通讯模块、画面数据解析模块、液晶显示模块、按键检测模块、画面切换模块,任务控制模块,RS485通讯模块。各个模块之间关系如图2所示。
图2 系统模块结构
在任务控制层,使用RTX-ARM实时内核建立多任务,使用任务间通讯机制—邮箱(MailBox),进行任务间通讯。RTX-ARM内核提供空闲任务和时基任务。创建5个用户任务;系统初始化任务、数据下载任务、液晶显示任务、按键扫描任务、PLC通讯任务。任务之间关系如图3所示。其中PLCTask用来与硬件设备通讯,不仅仅是PLC,也可以与多轴控制器、变频器等。
图3 任务设计
时基任务具有最高优先级,优先级为0。空闲任务优先级为255,优先级最低。初始化任务为优先级11,下载任务为优先级10,PLC通讯任务优先级为5,LCD显示任务优先级为3,按键扫描任务优先级为6。
2 画面存储与显示系统
2.1 数据存储
STM32F103R8T6片上资源有限,只有 20KB SRAM、64KB FLASH存储空间。将FLASH分为两个部分,前50KB存储程序代码段和只读数据段,后16KB存储画面参数配置数据。将FLASH读写模拟成EEPROM的读写方式。
由于存储空间有限,片上FLASH中没有增加文件系统,采用自定义索引表的方式检索存储在FLASH中的画面数据。索引表中画面数据的存储顺序为;有效标志、索引表、工程设置数据、报警列表、画面数据、控件数据、提取的字库数据[7]。
2.2 液晶显示
交互显示界面是HMI控制器最主要的功能,是监测与显示和控制设备参数的界面。对于文本型液晶显示人机界面,液晶显示器采用LCM19264液晶屏。这种单色文本型液晶屏支持192×64点阵。液晶屏分为3屏,每屏为64×64点阵。液晶屏供电电压与背光电压为5V。可以支持显示ASCII字符、汉字、点阵图片等。
画面显示系统,包含液晶屏驱动程序、控件显示模块、画面状态机组成。液晶屏驱动程序是画面显示系统的基础,主要分为三个层次;液晶时序控制层、基础元素显示层、控件显示层。
液晶屏时序控制层,包含;等待液晶屏忙、读数据、写数据、读状态、写命令、选择哪个屏、清屏等指令集的实现。时序控制层是液晶屏驱动的基础,实现最基础的命令操作。
基础元素显示层主要实现液晶屏的基本显示元素。包含;显示字符、显示汉字、在任意位置显示点、显示一条直线、显示填充的和非填充的圆形、正方形、三角形等。还包括显示一幅点阵图片、对画面进行滚屏显示,左右动态滚动显示。这一层实现了液晶屏驱动程序的主要功能元素。每个功能是液晶屏驱动程序提供给上层应用程序的接口。
控件显示层位于液晶屏驱动程序之上,主要完成常见的几种控件图形的显示。包含的常用控件有;文本、动态文本、棒状图、趋势图、寄存器、指示灯、功能键、点阵图片等类型控件。
2.3 组件模型
通用的嵌入式组件模型也比较多,Philips公司用于消费电子产品的组件模型Koala、ABB公司用于现场设备的组件模型PECOS、比利时IWT协会赞助的SEESCOA项目的CCOM模型等等[4]。每个组件必须有三种基本的结构;组件体、接口、接口连接器。其中接口连接器用于组件之间的通讯。
引入显示组件可以实现单个组件的独立操作,更新组件库。对于这种显示组件,显然这些通用的组件模型,不是很适用。但是可以对这些组件模型进行裁剪、增添新的功能,使之适合控件显示组件模型。采用对Philips公司用于消费电子产品的Koala组件模型进行裁剪,设计应用于HMI控制器画面不同控件的显示组件。每一个显示组件由一个三元组DispComp=<I,C,A>组成[4]。I表示接口,包含provides接口和requires接口[1],即输入接口和输出接口。C表示Com接口,显示组件之间的连接关系,也是一种接口,但是与输入和输出接口不一样,主要实现一幅画面多个组件显示时,一个组件显示更新,通过Com接口通知其他组件,防止显示组件之间的覆盖。A表示Attribute,是显示组件的属性,描述组件的坐标、显示长度、宽度、对应的寄存器地址、设备局号等等。Com接口通过显示组件内部属性信息,计算显示组件的显示范围,以及动态变化的最大范围等于其他组件通讯,方式显示覆盖发生。组件模型如图4所示。
图4 显示组件
其中P和R分别表示provides接口和requires接口。对于不同的组件的属性信息和接口都不同,但都有共同点。比如接口都包含显示组件图形、清除组件显示区域等。每个显示组件的属性也有共同点,如组件的位置坐标、显示范围等。
显示组件的每个接口都可以通过一种接口描述语言IDL(Interface Definition Language)进行描述。对于显示组件的接口描述[1];
每个显示组件的接口都包含P接口和R接口。P接口向外提供数据,R接口从外面接收数据。COM接口主要包括组件向外提供访问组件内属性的接口。COM接口也是一种特殊的P接口。
每个显示组件由接口和属性组成。显示组件也可以使用组件描述语言CDL(Component Description Language)进行描述[1]。
一个组件包含R类的所有接口、P类所有接口以及COM接口,还包括组件的私有属性。组件的私有属性有固定不变的属性和可以变化的属性。大多数属性都是由组态软件制作画面时设计好的,是属于固定不变的。但是对于一些变化性控件,如动态文本。可以根据对应寄存器的值显示不同长度的字符串。在变化的过程中,可以使用COM接口通知其他组件自己的显示范围。还有控件左右滚动的过程中,需要更改控件的固有坐标属性。
将八种控件制作成组件类型,组成组件库,需要新增加组件时,只需要将其放入组件库中,画面切换和显示层就可以使用新组件。如图5所示。
图5 组件库
利用组件库中的组件就可以很方便的进行画面的显示,可以对每个显示组件进行单独操作。画面的刷新也是以组件为单元,不要需要刷新整幅画面。
2.4 画面切换
在组件库之上是画面显示与切换层。是画面显示系统的中间层,由任务控制层调用。画面切换采用一种多层次有限状态机的方式[9],又辅助以状态可定制的有限状态机和采用变量辅助的方式。对于HMI人机界面这种复杂的画面切换,必须采用多种方式结合。比如人机界面的画面个数,是由用户在上位机组态软件制作画面时定制的。画面的个数在一次应用中是确定的,但是在多次应用中又是一种无限的状态。对于这种情况采用状态个数可定制的有限状态机。根据当前应用,读取画面个数,创建不同的状态。画面切换状态机如图6所示。
图6 不同画面切换
对于每幅画面的状态切换采用一种多层次的有限状态机[9]。画面顶层状态机包含四个状态;主界面、报警显示、口令验证、寄存器设定。每个状态通过不同的按键进行切换,见图7所示。
图7 画面主状态切换
对于寄存器设定状态又分为子状态机,每个数字闪动是一个状态,在该状态下,可以切换不同的子状态,控制需要修改的数字的闪动,见图8所示。
图8 寄存器设定状态机
报警列表状态也分为多个子状态。主要根据用户在组态软件中建立的报警数目有关系。参考图9所示。
口令验证状态分为几个子状态。对于输入的指令和在组态软件设计的画面工程设置中设置的口令进行验证。
图9 口令验证状态机
3 人机界面通讯系统
3.1 USB与PC数据传输
USB(Universal Serial Bus)通用串行总线,是一种外部总线标准。全速模式速率理论上可以达到12MBit/s。USB的传输类型有4种;控制传输、批量传输、中断传输和等时传输[8]。由于HMI与组态软件之间通讯,运行组态软件的PC机是USB主设备,HMI控制器为USB从设备。主设备将画面数据发送给从设备,因而采用批量传输的方式。
课题中采用基于USB通信设备类CDC(Communication Device Class)的USB虚拟串口的传输方式[10]。可以利用Windows中已有的设备驱动程序usbser.sys,在Windows系统中将USB设备虚拟成串口方式。组态软件只需要操作串口就可以将数据发送至USB设备。
组态软件与HMI控制器之间传输数据采用自定义传输协议。组态软件为主设备,发送请求帧,从设备为HMI控制器,回复响应帧。帧格式如图10所示。
图10 自定义数据传输协议
帧号、命令、状态、字节数均为1Byte,校验位为2Byte。
采用CRC16位校验,校验失败几率为0.0047%。请求帧命令有两种;READ(0x01)、WRITE(0x02)。当发送写命令时即将画面数据传输于HMI控制器。字节数字段描述一帧中包含数据的字节个数。当发送读命令时,没有数据字段。读命令用于读取HMI控制器FLASH中存储的数据,用于仿真或其他扩展应用。响应帧的字节数字段描述收到的数据字节数或是回复主机请求的数据。写命令时,没有数据字段,只返回收到的字节数。
响应帧状态字段为;数据接收正常(0x00)、发送命令错误(0x01)、帧号顺序错误(0x02)、校验错误(0x03)。
帧与帧之间间距大于10ms,字符之间间距可以不用考虑。主设备等待超时时间为600ms,从设备超时时间为500ms,主设备600ms内未收到响应帧,将重新发送请求帧。从设备500ms内没有收到请求帧,表示数据接收完毕,发送响应帧。主设备数据发送完毕,并且收到正确响应帧,不再发送请求帧。整个数据传输结束。图11为组态软件向HMI控制器发送“WRITE”命令,传输画面数据帧的响应过程。
图11 请求与响应帧示例
其中,0x5C00为请求帧校验码、0xC1A1为响应帧校验码。响应帧状态字段为0x00,表示接收数据正确,并返回接收到的数据字节数0x02。
Windows下提供了usbser.sys驱动程序,但是还必须编写.inf驱动程序安装文件,将其存放于C;WINDOWSinf目录下。
3.2 ModBus RTU与设备通讯
ModBus串行链路协议是一个主/从协议,位于OSI模型第二层。在物理层,课题采用TIA/EIA-485(RS485)两线制串行总线协议。ModBus串行总线协议的传输模式分为ASCII和RTU模式。RTU模式传输数据密度更大,报文中每个8位字节含有两个4位十六进制字符。ModBus RTU报文帧如图12所示。
图12 RTU报文帧
其中帧间距至少为T3.5个字符时间间隔。字符间距为至少为T1.5时间间隔。当波特率小于等于19200bps时必须严格遵守该协议,否则采用两个定时器。建议T1.5=750us,T3.5=1.75ms。另外对于响应超时,还需要一个定时器,超时响应时间设为500ms。
地址码用来指定从设备地址,可以支持连接多个从设备。CRC校验采用CRC16校验码,校验失败几率为0.0047%,可以保证数据帧的传输可靠性。功能码域指明了主设备需要请求的动作。ModBus的数据模型主要有4类[11];离散量输入(单个比特只读型)、线圈(单个比特读写型)、输入寄存器(16比特只读型)和保持寄存器(16比特读写型)。对于HMI控制器为了能够支持多种类型的设备,尤其是连接至一个设备网络中,也必须支持多个类型的功能码,能够获取不同设备的不同类型的数据。HMI支持的功能码如表1所示。
表1 HMI控制器支持的功能码
对于HMI控制器,属于ModBus主设备。HMI控制器用来监测和控制其他工控设备,显示和修改设备参数。HMI每隔一段时间向从设备发起请求数据的协议帧,从设备响应主设备请求,将数据发送给主设备,主设备根据参数数据和每个显示组件的固有属性,显示一幅画面。
作为ModBus主设备,以200ms为周期查询从设备的状态。
4 组态软件
通过组态软件可以设计不同应用的控制系统界面,将画面数据下载到控制器中,与控制器组成HMI人机界面系统。也有很多通用的工业组态软件,支持很多不同工业应用,画面非常绚丽,可以制作非常有好的控制界面。这类组态软件运行于PC机,与PC机组成HMI人机界面控制系统,也是一种工控机[3]。对于文本型人机界面,不需要复杂的显示界面,因而使用C#.NET平台设计了一种专用的组态软件,可以支持画面的重新配置与软件的仿真,见图13所示。
图13 组态软件编辑器
通过上位机组态软件可以实现画面的制作,通过简单地软件仿真,可以实现系统逻辑功能的检查,从而可以观测系统运行过程的画面切换状态。
5 应用实例
由于HMI控制器使用通用的工业设备通信标准协议—ModBus RTU协议,所以可以支持很多工业设备,可以用于显示或修改设备参数等。对于文本型人机界面系统,可以应用到一些简单,不需要复杂界面的设备。如PLC设备、多轴控制器、变频器等设备。但是必须要求这些设备也支持ModBus RTU协议,用于响应人机界面的请求。ModBus协议也支持连接到一个设备网络中,这样就可以控制一个网络中,多个不同类型的设备。通过RTU协议帧中地址位指定每个设备,功能码用于指定获取设备什么类型的参数。
课题中将HMI人机界面应用于多轴控制器。多轴控制器用于控制步进电机,可以通过指令灵活的控制电机,灵活方便的实现单轴进退,输入输出点对点控制,控制功能灵活,可以通过上位机运动控制器的解释器编辑指令。将HMI人机界面应用与多轴控制器,可以为它提供良好的、组态式的、用户可以配置、自制需要的显示界面。另外,HMI人机界面还可以控制多个多轴控制器,显示和修改多个电机的参数。多轴控制器也不用增加自己的显示界面和按键,只要支持ModBus协议就可以与人机界面通讯。图14为人机界面应用于多轴控制器控制电机的运行状态图。图4a和图4c为HMI显示电机的运行参数,分两屏显示。PC机上运行伺服控制器调试解释器软件,运行伺服指令。多轴控制算法,并没有完全实现,HMI人机界面接收的是一台伺服电机的数据。包含电机的初始速度、加速度、最大速度、目标位置、当前速度、当前位置、程序PC值。
图14 HM I运行状态图
6 结论
本文设计了一种组态式的文本型人机界面系统。详细介绍了人机界面系统的各个模块的设计思想。包含通讯系统的设计、数据存储设计以及显示系统设计。这三个模块组成了人机界面控制器。设计了一种上位机组态软件,使人机界面控制器具有画面可重配置性,用户可以根据不同应用定制画面。对于显示控件,采用组件技术的设计思想,设计了一种画面显示组件库,实现显示组件的灵活扩展。采用多层[参考文献]
次的有限状态机,实现画面的跳转与切换,可以实现逻辑比较复杂的画面切换。通讯系统采用工业标准的ModBus RTU通讯协议,可以实现人机界面与多个设备通讯,将一个网络中的不同类型设备的参数显示在一个界面中,能够更方便的实现设备参数和状态的显示和修改,方便用户管理不同的设备。
[1]Rob van Ommering,Frank van der Linden,Jeff Kramer etal. The Koala Component Model for Consumer Electronics softer ware[J].IEEE Computer,2000(3);78-85.
[2]Marcin Jamro,Bartosz Trybus.IEC 61131-3 Programmable Human Machine Interfaces for Control Devices[M].Sopot,Poland,2013.
[3]Huang Qian,QingHai Heng,Jian Sun.Designing Industrial Batching System Based on Touch Panel And PLC[C].Beijing;ICEMI,2009.
[4]马伟民.基于组件技术的人机界面研究[D].杭州;杭州电子科技大学,2009.
[5]董鹏云,赵兴群,夏翎.文本型人机界面接口的设计[J].工业控制计算机,2005,18(4);43-68.
[6]汪琼.人机界面的四种设计方法[J].计算机科学,1998,25(4);37-41.
[7]周孝慧.嵌入式控制系统人机界面的开发及应用[D].武汉;华中科技大学,2004.
[8]方旭.基于STM32处理器的两种USB通讯方法的实现[J].科技信息,2010(21);589-568.
[9]刘晋,任玉帅.层次状态机在嵌入式用户界面中的应用研究[J].微计算机应用,2008,29(11);91-94.
[10]Jan Axelson.USB开发者大全[M].李鸿鹏,译.4版.北京;人民邮电出版社,2011.
[11]靳东,张承瑞,胡天亮,等.实时以太网EtherMAC与Modbus RTU协议通讯[J].组合机床与自动化加工技术,2013(9);62-65.
[12]蒋明柯,皮佑国.数控系统中RS485串行通信协议的设计[J].组合机床与自动化加工技术,2013(5);23-26.
Configurable Human Computer Interface System Design Based on ModBus Protocol
HE Peng-fei1,2,HE Ping2,3,ZHANG Qiong-qiong1,2,ZHAO Hong-bo1,2
(1.University of Chinese Academy of Sciences,Beijing 100039,China;2.National Engineering Research Center For High-End CNC,Shenyang Institute of Computing Technology of Chinese Academy of Sciences,Shenyang 110004,China)
;HM I(Human Machine Interface)is w idely applied in industrial control filed.Traditional HM I have disadvantages of poor universality and fixed pictures.Design a new one with a Feature of pictures reconfiguration based on STM 32 platform.Through the configuration software design of the screen,which is applied to different equipment or the industrial control system.Proposed amulti-level finite state machine to implement display and jump functions.And the ModBus protocol has been used in the multi-axis controller to achieve the visualization and modification of motor parameters comprising speed,displacement,alarm information and so forth.
;HM I;STM 32;configuration;ModBus protocol
TH164;TG659
A
1001-2265(2015)05-0038-05 DOI:10.13462/j.cnki.mmtamt.2015.05.011
2014-06-01;
2014-10-20
″高档数控机床与基础制造装备″国家科技重大专项、基于二次开发平台的专用数控系统开发与应用(2013ZX04007-011)
何鹏飞(1988—),男,陕西兴平人,中国科学院大学硕士研究生,研究方向为嵌入式系统应用,(E-mail)hepengfei@sict.ac.cn。