wolfgd 发表于 2020-12-14 16:57:37

【开源】 DWIN智能屏DGo开源框架

背景      通常我们设计开发一个产品时,与用户交互部分的功能是最重要也是最繁琐的,采用PLC或单片机+触摸屏实现,成本高,体积较大。偶然机会在淘宝发现的迪文的串口DGUS智能屏,通过串口和单片机或PLC通讯实现用户界面的交互,是个非常好的设计模式。采用智屏能大幅度降低开发成本和周期,又给用户提供友好的图形中文界面。      经过一段时间的研究发现,GUI设计简单高效,通过CPU OS核与单片机或PLC串行通讯实现数据交互编程很方便,实际开发中我们既要设计单片机/PLC程序还要完成CPU OS协调控制程序实现与GUI OS的数据交互和用户操作指令的传达,增加了开发过程,降低了开发的速度。能不能建立一个统一开发框架实现单片机或PLC数据映射到DGUS OS的存储器中,GUI的用户操作指令或数据修改指令映射到单片机或PLC中,简化设计开发过程,提高开发速度,DGo框架就出现了…
DGo框架说明通过串口采用ModBus RTU Master通讯协议,将单片机或PLC设备的数据同步到DWin屏的存储0x1000以上的空间中。
通讯配置:通讯接口:串口2 9600,n,8,1通讯协议:ModBus RTU Master 实现功能码 3   616
开发环境:Keil C51或 TKStudio
测试环境:智能屏: EKT043 开发板单片机/PLC:ModBus Slave软件模拟下载地址:https://www.modbustools.com/DGUS T5L固件版本:V4.020201207      DWIN Tools 版本: 7.6.23
例子工程:
例子说明:将保持寄存器中的前10个数据,同步到 0x1100 存储器中三个参数的地址为 0x1001 ~ 0x1003
按钮命令地址为 0x1000

框架功能:第0页默认位通讯状态画面

0首页通讯状态画面:上电显示2s。当通讯正常时,显示第一页画面。
任何时候通讯失败,系统自动切换到0页,通讯恢复后自动切换到第一页。

第一页主画面:由三个可修改参数、4个按钮和10个数据中状态


按钮:
<修改参数1>: 通过功能码 6 ,参数1的数值同步到第9个数据
<修改参数1-3>: 通过功能码 16 ,参数1~参数3的数值同步到 7~9
<修改参数1-3带命令>: 通过功能码 6 ,参数1~参数3的数值和命令的高8位同步到 0~3
<换页>发送用户指令实现换页

框架功能图



DGo框架源代码



wolfgd 发表于 2020-12-14 17:05:42

本帖最后由 wolfgd 于 2020-12-15 16:06 编辑

循环任务

配置一条或多条循环执行通讯任务,获取设备的数据。目前只支持功能码3


配置任务列表在文件 taskdefine.h 中




循环策略
500ms循环执行。执行函数在 userTask.c 中


命令任务
根据用户操作触摸屏下达的指令执行。该任务列表的第0个任务系统占用,用于配置用户操作命令字在DGUS中的起始地址和随后参数的个数(地址跟随在命令字后)。系统自动获取指定命令地址的数值状态,当非零时,执行命令并将命令地址内容清零。


配置任务列表在文件 taskdefine.h 中


命令字说明:


用户操作命令
执行函数在 userTask.c 中


DGo框架开发流程:首先确认需求,1.如果只显设备的状态信息,只要配置循环任务获取相关数据就可以了。2.如果还要修改设备中的参数,那就配置一个或多个命令任务,在GUI界面中用户操作相应的按键时执行指定的命令任务。3.如果当设备的状态信息中某个数据有变化,需要界面切换显示窗口,那就在循环策略中完成。

大部分的项目只需要前两步的配置就可以完成了。欢迎大家交流分享!



wolfgd 发表于 2020-12-14 17:06:00

本帖最后由 wolfgd 于 2020-12-15 16:30 编辑

举个例子:Modbus串行通信协议在工业领域被广泛使用,市面上的大部分有通讯功能的仪表和主流PLC都提供了该功能接口。例如:将10个锅炉的温度数据集中显示,锅炉的温控仪表提供ModBus RTU Slave接口,数据地址从3开始了连续2个字,我们设置温控仪表的通讯参数为:9600,n,8,1 通讯地址依次从1到10,然后在DGo框架配置10个循环任务将数据映射到DGUS存储器中就可以了。第一步:配置循环任务struct TX_CYCLIC_STRUCT code CyclicTaskList[]={{       {1,3,2,0x1010},        {2,3,2,0x1012},        {3,3,2,0x1014},        {4,3,2,0x1016},        {5,3,2,0x1018},        {6,3,2,0x101a},        {7,3,2,0x101c},        {8,3,2,0x101e},        {9,3,2,0x1020},        {10,3,2,0x1022},        {0,0,0,0}};将循环策略中的代码删除void CycleStrategy(){}第二步:编译DGo框架程序。
第三步:设计GUI界面将 数据变量显示 组件的变量地址配置为存储器对应的地址。第四步:将DGo框架程序和GUI界面程序下载到智能屏中,完成!

yx0100 发表于 2020-12-14 17:55:42

感觉是个好东西MARK下

wolfgd 发表于 2020-12-15 10:09:27

ModBus RTU 通讯协议规范

dingyu000111 发表于 2020-12-15 11:01:10

这个才是开源的典型代表作真的很棒

Bensenl 发表于 2020-12-15 13:06:08

火钳刘明

wolfgd 发表于 2020-12-15 16:05:31

dingyu000111 发表于 2020-12-15 11:01
这个才是开源的典型代表作真的很棒

互相学习:handshake

wolfgd 发表于 2020-12-17 11:14:18

TKStudio IDE集成开发环境,比Keil的 uVision5 好用!

链接:https://pan.baidu.com/s/15oDFmgkGZpOJbkzytGcHlQ
提取码:zd6q
复制这段内容后打开百度网盘手机App,操作更方便哦--来自百度网盘超级会员V3的分享

wolfgd 发表于 2020-12-18 11:15:23

TKStudio IDE集成开发环境,在设备库中添加DWin T5 芯片方法,如下图:


页: [1] 2 3
查看完整版本: 【开源】 DWIN智能屏DGo开源框架