分享

基于单片机的维控触摸屏使用心得

 天凉凉个秋 2016-11-23

 

本人是一名在校大学生,去年十月份协助老师做一个项目,其中需要触摸屏作为人机界面,由于我们的触摸屏是在户外使用的,所以需要一定的保护等级,后来我们买了维控的触摸屏,型号为LEVI777T,老师解释说选择该触摸屏的主要原因是它满足IP65保护等级。但是当我们使用时才发现该触摸屏的工作方式与之前的触摸屏工作方式不太一样,之前的触摸屏是作为单片机的从机,单片机控制触摸屏的显示,而现在的触摸屏却反客为主,变成主机,并向单片机不断发送消息,询问自己的状态。我意识到这是一种新的工作方式,没办法只能从头开始学,从一开始模拟出开关的动作到最后一步步完全制作出项目需要的界面,我深深体会到该触摸屏给我开发带来的便利。下面我将从维控触摸屏的工作方式,界面设计,基本控件的使用,脚本等方面分享自己的心得体会,希望大家在我的基础上开发出更好的人机界面。
    本人选择的协议ModBus RTU Slave,由于是根据项目需要慢慢摸索的,所以介绍的也是最常用的几个方面。
1 触摸屏的工作方式
    在选择协议为ModBus RTU Slave时,触摸屏是作为主机的,与之相连的单片机是作为从机的,触摸屏上的每一种控件都会实时的向单片机发送询问消息(基于ModBus协议编写),询问本控件此时的状态,单片机必须实时回复该消息,回复的消息也必须是基于ModBus协议的编写的,触摸屏如果在一定时限内没有收到回复指令,那么在该屏的上方就会提示某些地址通讯超时。我们必须保持触摸屏和单片机的连接,不能让其出现超时的现象。
2 触摸屏的界面设计
    维控的触摸屏提供了LEVI Studio工程编辑器这个开发工具帮助我们快速开发出适合自己项目的界面。LEVI Studio 拥有Windows 最流行的界面风格,提供丰富的设计资源,采用所见即所得的设计理念。通过简单的控件拖放,文本添加,然后通过串口或者 Usb把这个工程下载到触摸屏,就设计出了自己的人机界面。
    下图是项目的界面,在工程里先把需要的控件摆放妥当,再加上适当的文字说明,根据需要填写控件的属性。然后通过串口或者Usb把该工程下到触摸屏里,触摸屏显示的内容跟我们在工程里看到的一模一样。
               
主界面
子界面
主要用到的控件有:数字输入\显示控件(用于环境参数的显示和时间等的设定),位开关,功能开关。
3 触摸屏基本控件的使用
3.1 ModBus协议
    由于在工程参数里设置的通讯协议是ModBus RTU Slave,那么屏与单片机之间的通信是基于ModBus协议的。所以有必要了解一下ModBus协议。ModBus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
查询—回应周期
  (1)查询:查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。例如功能代码03是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了一种验证消息内容是否正确的方法。
  (2)回应:在回应消息中的功能代码是在查询消息中的功能代码的回应。数据段包括了从设备收集的数据:寄存器值或状态。
2.RTU
       起始位     设备地址    功能代码     数据      CRC校验         结束符
T1-T2-T3-T4      8Bit             8Bit         n个8Bit      16Bit         T1-T2-T3-T4
单片机与触摸屏通信的消息都是按照上面这个格式来编写的。
3.2 位开关的使用
位开关的地址分片内陆址和片外地址,片内陆址指的是触摸屏的内部寄存器地址,对这些地址操作是不会引发触摸屏发消息的。片外地址需要通过串口通信进行操作的。后面的介绍如没有特殊说明都是指片外地址。
位开关有两个地址需要设置,分别为操作地址和监控地址。在屏上点一下(触发)位开关,屏就会发出一条操作地址所指的片外线圈的置位或复位请求。屏隔一段时间发送一条查询消息来查询监控地址所指的片外线圈的状态,外部设备要实时返回该线圈的状态,如果是开则返回置位状态,那么触摸屏上的位开关就会显示成置位的状态。把这两个地址设成一样(如2#060),以ON开关为例,此时的工作流程如下:在屏点一下开关,触摸屏就向单片机发送一条置位请求(功能代码:05),单片机在收到该消息以后,把60所指的位置位,并返回给触摸屏一条消息,告知此位置位成功,那么触摸屏上的位开关就会显示切换到置位的状态。如果过了段时间60所指的位在外部被复位,等到查询60所指的位状态的消息过来,返回给屏的消息告知此位已经复位,那么屏上的位开关就会切换到复位状态。
涉及通讯的消息如下:
(1)查询位状态 
请求 :
                                  高字节   低字节      高字节   低字节     
fe                   01            00       3C                 00       08       校验码
PLC站号   功能码        起始位地址              查询数量      
当屏需要不只一个位开关时,每个位开关都需要向单片机发消息了解自己的状态,这样就需要发很多条消息。替代的方法是把这些消息联合起来做一条发,从某个开关开始到最后一个开关,总共有多少个片外地址,也就是查询数量,从哪一个片外地址开始,也就是起始位地址,当然这几个开关的监控地址必须设置成连续的。   
响应:                     
fe                     01                            01                                CD                 校验码
PLC站号   功能码   字节数(8个开关=1字节) 8个开关的状态
响应信息中位开关的状态与数据区的每一位的值相对应,低位对应低地址的状态,高位对应高地址的状态,1=ON,0=OFF。若返回的位开关数不是8的倍数,那么剩余的高位填0。8个位开关的状态用CD表示,其二进制位表示为1100 1101,那么8个位开关从高地址(左)到低地址(右)的状态为ON-ON-OFF-OFF-ON-ON-OFF-ON。
(2)强制单个开关
请求:
1. 请求置位                               高字节                低字节
fe                      05                   00      3C             FF      00         校验码
PLC站号     功能码               位开关地址          置位请求
2.请求复位                        高字节             低字节
fe                     05           00       3C          00      00         校验码
PLC站号     功能码      位开关地址        复位请求
                             
FF00请求置位开关为ON状态,0000请求复位开关为OFF状态。
回应:与请求对应相同。
    根据请求返回指令,告诉触摸屏此时已经置位或复位成功,触摸屏解析回复的指令,然后做相应的显示。
3.3 数字输入\显示控件的使用
    数字输入\显示控件也提供了两个操作地址:读取地址和写入地址。这和位开关控件相似,读取地址对应于监控地址,数字输入\显示控件也会隔一段时间向单片机发送一条消息查询读取地址所指的片外寄存器的值,单片机必须实时返回这个值,触摸屏把返回回来的值在该控件上显示。写入地址则对应操作地址,在屏上点一下数字输入\显示控件(触发一下),屏上就会出现一个小键盘,选择点一个数字,屏就会把所选的数字包装成一条消息发送给单片机,单片机在收到这条消息以后,把写入地址对应的寄存器的值赋成成屏发过来的数字后,并返回一条消息,告诉屏赋值成功,屏就会在控件上显示该数字。
一.涉及的通讯消息
(1)    查询寄存器状态
1.    请求:   
                 高字节    低字节           高字节    低字节
fe                  03               00            6b                  00            03             校验码
PLC站号  功能码             开始地址                   查询寄存器数量
2.    回应:                               高字节   低字节                        
fe                  03          06           00           01           00    02       00    03      校验码
PLC站号 功能码    字节数     第一个寄存器          第二个      第三个
    用十六位二进制数来表示寄存器的数据,第一个寄存器的值为1,第二个寄存器的值为2,第三个寄存器的值为3。
(2)    预置单个寄存器
1.    请求:  
                 高字节   低字节        高字节    低字节
fe                      06         00        01                       00       03        校验码
PLC站号     功能码    预置的寄存器地址          预置的值
2.    回应:与请求的相同,表示赋值成功。
       预置的值可以是用户从触摸屏的小键盘输入,也可以是在脚本中赋值。
二.数据处理
    在项目中表示环境的一些参数需要用到浮点数和有符号数,在这里我简单的介绍一下处理方法。
    对于浮点数,在数据格式这个属性项里可以设值小数点的位置,如我们要屏显示数据格式为:保留一位小数,如15.6。我们就设置小数位为1位,然后把最终显示的数(15.6)按扩大十倍(156)来发送,屏接收到数据后会按设定的要求在指定的位置加上这个小数点,显示成带一位小数的格式。
    对于有符号数,例如-50,就需要做如下的处理:-50+0xffff+1。其实是把-50首先扩展成16位的二进制数,高位补0,最高位为符号位。然后再对这个数取补码。负数的发送就是发送其补码。
4 触摸屏脚本的使用
       维控触摸屏提供的脚本丰富了控制手段。在脚本里可以把一些重要的数据存入掉电保护区。利用脚本可以实现一些控制,以项目为例:实现一个定时灌溉,如在近一个月内,每天早上的8点到9点打开阀门浇灌一个小时。这涉及用脚本定时打开和关闭位开关。实现的方法如下:设置个定时脚本,定时时间为1s,这样这个脚本每一秒就执行一次,在这脚本里首先读系统时间,然后与设置的时间来比较,如果时间在这个范围内,就把阀门地址赋值为1,效果相当于点了一下阀门开关,那么屏就向单片机发送消息请求打开阀门,单片机在打开阀门以后,通知触摸屏阀门已打开,触摸屏收到消息后,就把阀门开关显示成开的状态。关阀门的流程与开阀门的类似。触摸屏的辅助控制减轻的单片机的负担,而且两者结合能把许多问题简单化,用户可以根据自己的需求灵活得加以应用。
5 总结

       本文从单片机开发的角度,分别从界面设计,基本控件的使用,脚本等几个方面介绍维控触摸屏。对于单片机开发维控触摸屏具有一定的参考价值。只要了解一些基本的原理,用单片机来开发维控触摸屏也是很简单的。

(来源:福州富昌维控电子科技有限公司)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多