如何对迪文线控器进行二次开发

时间:2018-12-29 分类:产品资讯

目前,迪文线控器产品(2.8寸、3.5寸、4.3寸和7寸)均已稳定在售,下面我们就迪文线控器的开发做一些基本介绍。

 

1UI制作

1.1 软件介绍

迪文提供了UI人机交互界面设计软件DGUS_V7381,客户通过该软件平台能轻松方便的制作和修改UI界面,具体使用见2.2

ac72baf507b89905_html_43d51f482354b7ee

ac72baf507b89905_html_49ac0cb03196381

1.2 软件使用

参考DGUS软件的视频教程,开发出满足需求的交互UI。

ac72baf507b89905_html_e79a9d1719743e09ac72baf507b89905_html_49ac0cb03196381


1.3 地址规划

1.3.1 迪文DGUSII开发平台,所有的功能都是通过变量接口进行的。0000-0FFF变量接口为系统功能接口,(可查阅相关的开发指南)8000H-FFFF作为库和图片等的缓冲区。

ac72baf507b89905_html_ece6477fe635f9efac72baf507b89905_html_49ac0cb03196381

 

1.3.2 查阅T5UID1的开发指南,T5UID1平台有128Kbytes数据变量空间,而OS系统中每个地址是Word类型,所以总共地址空间是0-0xFFFF。其中0x0100-0x0FFF变量存储器空间被系统保留使用,0x1000-0xFFFF变量存储空间用户可以自由使用。

另外,产品中会提供一些基本的库,所以规划了 0x8000-0xFFFF空间被库提前占用,所以实际编程中应用程序可用的空间为0x1000-0x7FFF。

由于在DGUS设计中,UI中的很多控件会绑定一个数据变量,而且为了便于DCS系统设计,最好需要把输入数据和输出数据以及中间数据进行规划。

ac72baf507b89905_html_e3c167e9b0b9555eac72baf507b89905_html_49ac0cb03196381


比如新风应用中,把传感器等的数据都连续存放,把继电器,风机速度输出等变量连续存放,通过modbus总线就可以通过块读(0x03)和块写(0x10)两个指令完成数据交换。


1.4 通讯协议

迪文屏支持以下三种协议情况切换协议见3库调用” 

1)支持迪文命令接口82H\83H,通过这两个命令接口实现对内部变量的读和写。

2)支持Modbus_slave模式,86盒工作在modbusslave模式,通过该模式,外部实现对内部变量的读和写(modbus命令只支持 03H,10H读写)。

3)支持modbus_Master模式,该模式需要编写迪文OS,利用迪文屏上的CPU,实现对外部的控制。


1.5SD卡烧录

Lib文件夹下的 00.lib、01.lib、T5OS_VXX.bin三个文件,以及上面说的所需要的对应工作模式下的DWINOS_main.bin文件和UI工程文件,拷贝到SD卡的 DWIN_SET目录下,然后插卡进行升级。升级一般是先上电,再插升级的SD卡,会出现蓝色屏幕提示升级过程,升级完后拔卡重新上电即可。以后再切换模式,只需升级对应的DWINOS_main.bin文件即可。

ac72baf507b89905_html_49ac0cb03196381ac72baf507b89905_html_343727b90201874c

 

2、OS编写入门

2.1 软件介绍

ac72baf507b89905_html_43d51f482354b7eeac72baf507b89905_html_49ac0cb03196381


2.2 关于DWIN_OS

DWIN_OS平台采用类似汇编程序的编写规范,在DGUS稳定的GUI平台下,方便用户针对自己的特殊需求快速、稳定的进行二次开发。

DWINOS的常见应用是解析用户的数据协议,数据处理。T5的OS性能强大,运算速度快。OS是用一套特殊的汇编语言指令集实现的,指令集请参考《基于T5的DWIN_OS开发指南》和T5UID1应用指南。编译器请使用迪文的  T5_OS_BUILDER2.0.6.0 及以后版本如下图OSBuild3.0.2.3。

ac72baf507b89905_html_6f7982facb00bf4eac72baf507b89905_html_49ac0cb03196381

ac72baf507b89905_html_49ac0cb03196381  ac72baf507b89905_html_ad2b1f165fe3480b


该软件的操作部分并不复杂,打开OS软件,上面的三个图注意红色标注

1、保存会保存为asm文件;

2、编译后如果没有错误左下角会出现BuildOK!编译后会生成DWINOS_xxx.bin文件;

实际开发中,软件基本用到的三个按钮就能完成开发,其他的功能可以不用。OS部分详细教程参考《基于T5_OS汇编指令详解》。

 

3、库调用   

为了方便和简化用户代码量把一些已经写好的功能模块和通讯协议进行封装后加密生成的文件就是库。库文件的存在,一定程度上降低了用户代码量,代码量较大时使用库则方便用户程序的简化。迪文现在的库文件可以方便开发者直接调用,也可根据自身需求写功能块完成。

3.1 基本库介绍

基本库功能模块介绍

1)基本定时  

地址定义如下:

VP_SYS_TIMER_ACC  EQU E200H; 定时累加器,不要改动

VP_SYS_TIMER_SEC_PULSE  EQU E201H;基本秒脉冲

VP_SYS_TIMER_SEC_PULSE_SLOTEQU E202H;高字节表示时隙0-7,低字节每125ms会变1,脉冲形式;(高字节为2并且低字节为1同时满足时,可以认为秒信号A到来;高字节为3并且低字节为1同时满足,也是一个秒信号B到来,但A、B两个秒信号差125ms。)

VP_SYS_TIMER_MM_ACC  EQU E203H ;分钟定时累加器,不要改动

VP_SYS_TIMER_MM_PULSE EQU E204H  ;分钟定时脉冲,每1分钟会变1一次

 

2RTC(软件RTC

0xF430  -  0xF433  设置时钟时间  D7:0x5A表示有效,其余值无效,设置成功后自动清零;D6-D0:  yy:mm:dd:ww:hh:mm:ss   hex码

RTC时间的读取,在OS中可以读取,在T5UID1开发指南中,可以查到接口地址。

UI上显示时钟,只需将时钟控件放到页面上就可以了。

如果需要设置时钟,接口在0xF430-0xF433中,按要求写入接口就可以了。

注意86盒的相关应用设置时钟接口在00.lib库里实现的,并不是T5UID1中实现的,所以不能用T5UID1开发指南的设置RTC接口。

注:此为软件RTC,如存在硬件RTC,需0xF435地址写0x005B,屏蔽掉软件RTC


3modbus的两种模式

485modbus_master模式

这种模式,线控器是主控,控制逻辑需要OS编写。只实现了modbus-master的0x03和0x10指令,其余没有实现。

需要对MODBUS进行操作的话,只需配置相应的结构体即可。

结构体定义见EA10H地址(上表):

通过查看示例代码,程序最后会有结构体的定义:

MODBUS_STRUCT_TABLE:DB   5AH, 01H, 03H, 08H, 02H, 00H, 00H, 00H, 00H, 00H, 40H,00H, 00H, 00H, 00H, 00H,    5AH, 01H, 10H, 08H, 02H, 00H,00H, 00H, 00H, 00H, 40H, 08H, 00H, 08H, 00H, 00H

实现了向01从机地址读和写的过程。

第一条:5AH,01H, 03H, 08H, 02H, 00H, 00H, 00H, 00H, 00H, 40H, 00H, 00H, 00H, 00H,00H

读指令,向01从机地址读,长度8words,最长等待从机响应时间为 512ms(02H,00H),从机的寄存器超始地址是0000H,读到本地起始地址是 4000H。

第二条:5AH,01H, 10H, 08H, 02H, 00H, 00H, 00H, 00H, 00H, 40H, 08H, 00H, 08H, 00H,00H

ac72baf507b89905_html_43ac7319a7aacf9aac72baf507b89905_html_49ac0cb03196381


写指令,向01从机地址写,长度8words,最长等待从机响应时间为512ms,将本地起始地址4008H处写入从机起始地址0008H。

如果电脑上有USB转485功能,可以通过串口助手看到modbus协议数据。 


485modbus_slave模式

EA00H地址写为 5AA5H,即可将485接口配置为slave模式。只支持 03H,10H指令。

外部485主机可以通过以上两条读写指令,读写线控器内部的寄存器。

ac72baf507b89905_html_1d06bd372711d294ac72baf507b89905_html_49ac0cb03196381


3.2 如何使用库文件

线控器一般会将一些功能块进行封装,下面就对库中modbus协议调用进行讲解。

1)首先把NORFLASH的程序转入DGUS变量地址(例子中是将0x000000开始的4KW(8KB)程序数据转入DGUS的0x8000起的地方,每个程序库是4KB,因此缓存了2个库)。然后通过CONFIG03,80H,00H将进行LIB库加载,把0号LIB库程序数据加载到原来的OS程序0x1000开始的位置(也就是我们正常写的OS第一行ORG1000H起的位置),然后CALL0(CALL0x0000),来运行一次LIB中的程序。

运行一遍之后,正常0x1000开始的程序又会自动覆盖掉加载的LIB库程序,开始正常工作。

因此,一般在MAIN主循环里,需要写CONFIG和CALL0,以使得每次LIB库程序都会执行一次。

ac72baf507b89905_html_c97dd55272137cf5

ac72baf507b89905_html_b51c42c26527a775

ac72baf507b89905_html_49ac0cb03196381

2)模式04,将OS编译的库程序bin文件(库程序开头写上0RGXXXXH,这个XXXXH要比正常OS编译bin的大小更靠后,以避免冲突正常OS程序空间里的内容),修改后缀为.LIB,下载到NORFLASH同前03模式。

CONFIG加载时,需要循环8次将1个完整的4KB的程序数据加载到(由于该指令D1D0都只有1个字节,所以规定了D1和D0为地址高字节,后面默认带低字节的0x00地址)

CONFIG加载之后,使用CALLXXXXH 来调用执行一次这部分程序。

模式04中相当于可以在32KB的OS程序代码空间里,任意替换一部分程序,并且支持中断。


ac72baf507b89905_html_49ac0cb03196381ac72baf507b89905_html_e7c0d92a9a0de2c6

3)82H/83H,modbus_master,modbus_slave三种模式切换,打开main.ASM文件切换modbus主从机模式如下图。82H/83H指令屏幕可以自动识别,不需要切换操作。

ac72baf507b89905_html_3604da1742da0b7c

ac72baf507b89905_html_49ac0cb03196381



3.3 OS程序空间扩大

若开发者编写的os超过32kb则需要加载库文件。

T5目前有两种主流方法将OS程序空间扩大:

a.加载加密了的LIB程序库文件,在OS主程序里可以不停的更换需要调用的多个LIB文件(LIB库程序的方法不能中断)。

b.加载不加密的OS文件(可以用LIB到NORFLASH,速度比用字库加载到NANDFLASH的快)

OS的CONFIG指令的03或04模式实现,02模式无效不能用请注意。

ac72baf507b89905_html_aec7a0dc5eb9935eac72baf507b89905_html_49ac0cb03196381

 

3.422号文件初始化说明

22文件可以用来配置modbus,可以减少部分代码量。

1)首先请确保T5屏幕系统配置值为“上电加载22号文件初始化”;

2)此版程序基本功能与DGUS屏的MDOBUS主从机基本一致,但22号文件的参数配置地址改为了0x1D400~0x1FFFF,对映T5变量空间中的最后8KW地址0xEA00~0xFFFF;

3)指令等待时间参数的设置范围与波特率以及MODBUS指令长度有关,默认115200bps下,建议最小设置为20mS;(若不设置此参数,则程序以默认值60mS运行);

4)如下图所示,图1为Modbus主机模式下的22号文件配置参考,0x1c000开始的16字节内容为接口参数;指令配置范围0x1D410~0x1ffff,最多32条指令,两条指令之之间地址需连续;

2为Modbus从机模式下的22号文件配置参考,仅配置0x1D400开始的16个字节即可。


主机模式:

ac72baf507b89905_html_54cbcdeb0c941aff

ac72baf507b89905_html_49ac0cb03196381


从机模式:

ac72baf507b89905_html_49ac0cb03196381ac72baf507b89905_html_76929b0ccacc0297



这些功能模块了解上手后,可以更快捷的进行开发。


了解更多讲解信息,可通过此链接查看相关教学视频:

https://pan.baidu.com/s/1dF1yG05



作者/苗露露