请选择 进入手机版 | 继续访问电脑版

迪文科技论坛

 找回密码
 立即注册
搜索
查看: 6354|回复: 23

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

[复制链接]

8

主题

101

回帖

1355

积分

金牌会员

Rank: 6Rank: 6

积分
1355
QQ
发表于 2020-12-14 16:57:37 | 显示全部楼层 |阅读模式
背景
        通常我们设计开发一个产品时,与用户交互部分的功能是最重要也是最繁琐的,采用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   6  16

开发环境
Keil C51或 TKStudio

测试环境:
智能屏: EKT043 开发板
单片机/PLC:ModBus Slave软件模拟  下载地址:https://www.modbustools.com/
DGUS T5L固件版本:V4.0  20201207      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框架源代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

8

主题

101

回帖

1355

积分

金牌会员

Rank: 6Rank: 6

积分
1355
QQ
 楼主| 发表于 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.如果当设备的状态信息中某个数据有变化,需要界面切换显示窗口,那就在循环策略中完成。


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



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

8

主题

101

回帖

1355

积分

金牌会员

Rank: 6Rank: 6

积分
1355
QQ
 楼主| 发表于 2020-12-14 17:06:00 | 显示全部楼层
本帖最后由 wolfgd 于 2020-12-15 16:30 编辑

举个例子:
Modbus串行通信协议在工业领域被广泛使用,市面上的大部分有通讯功能的仪表和主流PLC都提供了该功能接口。
例如:将10个锅炉的温度数据集中显示,锅炉的温控仪表提供ModBus RTU Slave接口,数据地址从3开始了连续2个字,我们设置温控仪表的通讯参数为:9600,n,8,1 通讯地址依次从110,然后在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界面程序下载到智能屏中,完成!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

4

主题

309

回帖

2193

积分

金牌会员

Rank: 6Rank: 6

积分
2193
发表于 2020-12-14 17:55:42 | 显示全部楼层
感觉是个好东西MARK下
回复

使用道具 举报

8

主题

101

回帖

1355

积分

金牌会员

Rank: 6Rank: 6

积分
1355
QQ
 楼主| 发表于 2020-12-15 10:09:27 | 显示全部楼层
ModBus RTU 通讯协议规范

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

23

主题

286

回帖

1936

积分

金牌会员

Rank: 6Rank: 6

积分
1936
QQ
发表于 2020-12-15 11:01:10 | 显示全部楼层
这个才是开源的典型代表作真的很棒
运动,编程,热爱生活
回复

使用道具 举报

2

主题

665

回帖

9900

积分

论坛元老

Rank: 8Rank: 8

积分
9900
发表于 2020-12-15 13:06:08 | 显示全部楼层
火钳刘明
回复

使用道具 举报

8

主题

101

回帖

1355

积分

金牌会员

Rank: 6Rank: 6

积分
1355
QQ
 楼主| 发表于 2020-12-15 16:05:31 | 显示全部楼层
dingyu000111 发表于 2020-12-15 11:01
这个才是开源的典型代表作真的很棒

互相学习
回复

使用道具 举报

8

主题

101

回帖

1355

积分

金牌会员

Rank: 6Rank: 6

积分
1355
QQ
 楼主| 发表于 2020-12-17 11:14:18 | 显示全部楼层
TKStudio IDE集成开发环境,比Keil的 uVision5 好用!

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

使用道具 举报

8

主题

101

回帖

1355

积分

金牌会员

Rank: 6Rank: 6

积分
1355
QQ
 楼主| 发表于 2020-12-18 11:15:23 | 显示全部楼层
TKStudio IDE集成开发环境,在设备库中添加DWin T5 芯片方法,如下图:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-4-19 05:36 , Processed in 0.120201 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表