人机交互触摸屏高度(DGUS屏人机交互控制)
人机交互触摸屏高度(DGUS屏人机交互控制)4.采用串口转以太网模块连接电脑,上位机软件实时监控并控制,11路AD采样输入,都可以通过拨码开关来控制,16路开关量输入(监控设备的开关状态),17路开关输出(通过继电器控制,带指示灯),EEPROM存储一些设定参数,模拟量DAC输出3.通讯采用RS232和485,协议在27楼一 、mini-PLC整体功能1.整体电源采用24V开关电源供电2.单片机型号为STM32F103ZE,100个引脚
作为触摸屏的人机交互控制,大家会想到经常用的平板,比如一些机器人控制,都是用平板来做人机交互,就是通过触摸控制,机器人完成相应
的动作,还有最最常见的自动取款机等等,不过这些大部分都基于linux系统下通过GUI软件来做图形界面的,这次尝试一下利用组态软件来做人机
交互,这个组态软件在PLC控制当中应用最多的,看看组态软件在DGUS屏上是怎么应用的
最终的产品是mini-PLC
一 、mini-PLC整体功能
1.整体电源采用24V开关电源供电
2.单片机型号为STM32F103ZE,100个引脚
3.通讯采用RS232和485,协议在27楼
4.采用串口转以太网模块连接电脑,上位机软件实时监控并控制,11路AD采样输入,都可以通过拨码开关来控制,16路开关量输入(监控设备的开关状态),17路开关输出(通过继电器控制,带指示灯),EEPROM存储一些设定参数,模拟量DAC输出
二、整体软件功能
1.使用了三个串口,第一个串口负责和迪文屏通信,第二个串口负责和串口转以太网模块通讯,第三个串口负责485通讯
2.使用了三个通用定时器中断,滴答定时器中断,
3.RTC时钟
4.AD和DA转换
5.看门狗
6.采用嵌入式实时操作系统ucos2,多任务执行
既然是人机交互 ,光有上位机软件是不行的,必须结合下位机才可以
这次是通过232串口和单片机通讯的,单片机采用STM32F103
准备用这个7寸触摸屏开开发
DGUS 是迪文图形应用服务软件的简称,是基于K600 内核迪文屏所设计的智慧型人机界面系统软件。使用搭载DGUS软件的迪文屏,可帮助用户零代码快速开发全图形触摸屏人机界面。
与传统的LCM通过时序或指 令控制显示不同,DGUS屏采用直接变量驱动显示方式,所有的显示和操作都是基于预先设置好的变量配置文件来工作的,整个开发过程通过PC软件来设计完成触控和变量配置文件。
整体的功能挺多的
软件的基本操作,举一个简单的例子
比如一个开和关按钮,一个运行状态
我们触摸开是,键值为1
我们触摸关时,键值为0
这个是一个变量图标的运行状态,右边是0和1的两个状态,对应不同的图标
首先我们基本配置一下
配置通信波特率、帧头的两个字节,暂时不启用校验
看看通讯协议
没有校验的话通讯过程就8个字节
比如
① 显示整数数据 1005A A5 05 82 5420 0064
含义:0x5A 0xA5:
帧头;0x 05:
数据长度为 82 53 00 00 64 这 5 个字节;
0x 82:写操作;
0x 5420:变量地址;0x 0064:
数据 100。整数范围:-32768 到 32767,占 2 字节。
实际上就是变量地址和数据
和单片机差不多,向变量地址里写数据
串口发送:5AA50483000004
这是一条读系统变量接口Device_ID的帧开头:0x5AA5
数据长度:0x04
从变量空间指定开始地址读取指定长度:0x83
开始地址:0x0000读取数据字长度0x04
收到:5A A5 0C 83 00 00 04 96 57 16 20 27 17 10 25
帧开头:0x5AA5数据长度:0x0C83 00 00 04 和发送相同Device_ID 96 57 16 20 27 17 10 25
串口发送:5AA50483001401 显示当前页面ID开始地址:0x0014读取数据字长度0x01
一个字长此处表示两个字节收到:5A A5 06 83 00 14 01 00 05
当前页面:0x0005串口发送:5AA50483003101
读取当前背光亮度值收到:5A A5 06 83 00 31 01 5A 64
读取当前背光亮度值0x64表示最大值
大家可以看到上面的工程界面中,都需要背景图的,这个图就需要用软件来设计了
由于这屏的分辨率是800*480,需要转换一下
这里选择转换的分辨率
选择转换就可以了
对于图像编辑这块,可以分享一个简单的软件Adobe Fireworks CS6
DGUS软件这块后续实际应用再介绍
这是PLC的硬件主控图
基本参数
1.11路AD采样输入,全部光耦隔离
2.232通讯
3.485通讯
4.24C02存储
5.1DAC转换
6.16路开关量输入
7.17路开关输出
这是PLC的驱动电路这块
采用传统的ULN2003和三极管驱动
每路都有开关指示灯
AD采样可以用拨码开关
多路工业接口
对于PLC和外设状态实时监控这块,使用了串口转以太网模块USR-TCP232-T2
图形基本原理
串口转以太网模块需要用AT配置
这是实物,可以看看
我们使用了以下几个引脚
Link 引脚为 T2 建立通讯连接的状态指示引脚,建立通讯连接时,此管脚会输出低电平,无连接建立则输 出高电平。当 T2 处于 TCP 模式时,建立通讯连接后,Link 引脚会自动拉低,否则处于拉高状态。当 T2 处于 UDP 模式时,Link 引脚一直处于拉低状态。USR-TCP232-T2 产品中“Link”备用引脚,可作 Link 指示
这是电机驱动板
这是驱动板成品
这是主控板
在这简单分享一下UCOS实时操作系统
任务的结构--任务控制块首先这个任务控制块是非常的大的,这里面使用很多的宏定义,估计是可以让使用者使用的时候按需配置。所以这里只是整理一些必须要用到的功能,不常用的不讲,讲了就会变成一本书了。
(1)任务的关键 OS_STK == 任务的堆栈,用于保存任务的信息,最主要的是保存在程序的运行的SP指针。任务切换的实质就是SP指针的变化,通过SP指针的变化,可以跳转到你想要去的任何的一块不受保护的地址去。
(2)任务的链表: struct os_tcb *OSTCBNext; 指向下一个任务,此处使用链表是可以通过指针访问下一个任务的内容,可以使用这个双向链表放置到某些队列当中,实现同优先级的多任务。
(3)事件控制块:OS_EVENT *OSTCBEventPtr; 是一个技术组件,用于后面的消息和消息队列,邮箱和信号量等的设计。
首先对OS初始化
然后建立任务
一是创建任务函数
二是关闭OS中断
三是打开OS中断
这个我们在stm32程序中也见过,用过软件定时器的坛友明白,临界中断的关闭和打开
可以看一下
前面说了实时操作系统的初始化,创建任务,还少一个心跳,就是实时操作系统的时钟节拍
我们采用stm32内核的滴答定时器作为1ms心跳
1.先使能滴答定时器中断
所以在设定滴答定时器初始化函数时,只需设定:
就能满足uCOS-II想要的节拍时间了。
2.中断服务
底层程序这块就介绍到这
介绍一下触摸屏主界面
1.RTC实时显示
2.温度、压力等信息上传
3.主要是切换到其他界面控制
4.外设状态上传
针对其他界面介绍。其他界面都有 主界面按钮切换,这是PLC的外设状态实时上传
较复杂的外设参数设定,主要是烘干这块
热泵参数设定
外设的开停机控制
其他页面不一一介绍了
开始组装调试,上下两块板子采用铜柱对接,排针电气连接
最后需要把工程文件放到SD卡里,SD卡开插到触摸屏板子上
我们上电就可以加载我们的图像界面了
最后就是这个mini-PLC图,已经上电了
这是主函数,非常简洁标准的
创建了几个任务,发送任务,接受任务,多任务的看门狗设计
最后总结
DGUS屏的PLC,巧妙的利用通用的STM32单片机,实现了非常智能化的工程控制,比如电磁阀,压缩机,风机,抽湿风机等设备
实现双重控制和监控,一是现场用DGUS屏的PLC,二是通过PLC的串口转以太网模块连接电脑,坐在办公室也可以实时控制监控各个设备状态