Dgus
屏的modbus配置与调试
1:dgus屏modbus现只支持HEX的RTU主机格式,
暂时不支持ascii格式的通信模式, 暂时不支持从机格式的通信模式
2: modbus内核升级。SD卡升级如下(串口升级请参考串口升级文档)。
modbus内核为“DGUS_V71_MODBUS”,把内核文件装入sd卡上的DWIN_SET 文件夹中(可以随工程文件考入,也单独拷入即可),插到屏的sd卡接口。
3: modbus协议的配置方式有3种,
1)由屏上页面配置。一般测试可以用这个方法,请参考modbus7寸8寸历程。
>如上图的第二条指令03指令:
是将设备5的356(0x0164)地址的2个字的数读到屏上变量地址0001的显示,发送模式是 0,所有页面均可执行,
(如果要改成01模式,后面发送标志改成10,那么此指令会在10页面下才会执行)
上图配置后
屏主动会外发:05 03 01 64 00 02 85 AC
可以用串口测试回应:05 03 04 000A 000B DE36
历程的屏上面地址0x0001和0x0002设会显示数据1.0和1.1显示小数,(因为设置了一位定点小数)
>如上图的第二条指令16(0x10)指令: 是将屏上面变量地址4098(0x1002),的数写进0设备地址2,发送模式是2,也就是当4111(0x100F)这个设置的 按键返回地址键值0x005A按下之后,才进行发送,发送一次后地址0x100F键值底层自动清零。
以上两条可以用于测试通讯或简单的功能直接界面配置替换。
2)由22.bin文件配置。这个方法是90%的用户用的方法,22文件要单独拿出来写,不然点击生成配置文件,22文件会被软件本身未有初始值设置的控件的地方而清空。
Modbus协议在屏的内存地址0x5000(word)开始定义,UltraEdit-32打开是由字节编辑,那么0x5000折算到22.bin的字节地址为:0x5000X2=0xA000 . 用UltraEdit-32 打开22.bin(见图1)
图1:
0xa000=5A 表示启用modbus。 0xa001=A5 表示启用modbus。 0xa002=5A 表示保存配置文件。
0xa003=00 填入 5A 表示从22.bin把配置文件读入缓冲区 (22.bin配置时不用填,默认 00 即可)。
0xa004=00 与0xa005设定通信波特率,0060=9600 0480=115200 0xa005=60
0xa006=00 00H=8N1 01H=8E1 02H=8O1 03H=8N2 0xa007=00 默认 00 即可 ~
0xa00a=00 默认 00 即可
共16字节。
modbus协议指令
第一条modbus协议指令从0xa010开始。 0xa010 =5A 写入5A表示C,其他无效。 0xa011 =01 从机ID号。
0xa012 =03 modbus读取从机参数指令03。 0xa013 =22 读取从机参数的字节数,字数=0x11
0xa014 =00 与0xa015构成通信超时时间(0064=100ms) 0xa015 =64 0xa016 =00
0xa017 =01 0001表示只在0xa018 0xa019表示的页面下执行modbus 0xa018 =00
0xa019 =0A 000A表示本条只在10号页面下执行,其他页时停止执行。 (如果0xa016~0xa019均写0x0000, 0x0000 那么此条指令会在所有页面下均可执行;
如果0xa016~0xa019均写的0x0002 ,0x100F 那么此条指令会在在当地址0x100F写入0x005A后执行本条指令。实质的应用是做一个:键值0x0005A、地址0x100F的“按键返回”控件,当这个按键按下之后执行一次本条指令)
0xa01a =20
0xa01b =00 (是读或写数据的DGUS屏上面的存放地址2000) 0xa01c =10
0xa01d =00 0xa01c 0xa01d 从机数据地址1000。
0xa01e =00 读或写是否成功标志位,指令发送时是00,发送完成后等数据返回 时等于FF ,表示从机成功返回 ,等于00,返回错误或超时。 0xa01f = 00 保留默认 00
第二条modbus协议指令从0xa010开始。 0xa020 ~ 0xa02F 第三。。。。。。。。。。。。。。。。
依此类推。
3)由os程序代码配置。其实就是上电写入变量地址,比第二种方法进步的地方是不需要单独拿出22文件来写。注:由于升级了modbus内核,DGUS的0x5A 0xA5的协议屏不再支持,DGUS_5.04上位机软件串口下载无效,所以这种写法适用于5寸屏以上能用ED2的下载器用户,方便直接通过插上SD卡槽的串口下载os。下文的os写法可以直接复制到os编译软件进行查看。
; DWIN OS IJNE R255,0,4
;比较R255里面不是0后往下跳转4行
CALL MODBUS启用配置 CALL 第一条03指令 CALL 第一条06指令
LDBR R255,1,1 ;上电运行一次即可,0x5000以后地址不再访问 END
;=======================================
MODBUS启用配置: LDWR R0,0X5000 ;注:所有的变量地址都要经过R0和R1,在进行处理。
LDWR R10,0X5AA5 ;5000 其他的指令参考os指导说明文档。
LDWR R12,0X5A00 ;5001
;LDWR R14,0X0480 ;5002 9600=0060 115200= 0480 LDWR R14,0X0060 ;5002 9600=0060 115200= 0480 LDBR R16,0X00,10 ;5003 8N1 MOVXR R10,0,8 RET ;======================================= ;CMD 03 第一条03指令: LDWR R0,0X5008 LDBR R10,0X5A,1 ;
LDBR R11,0X01,1 ;ID LDBR R12,0X03,1 ;CMD LDBR R13,46,1 ;LEN *2 ;2 LDWR R14,0X0190 ;TIM 400MS LDWR R16,0X0001 ;MARK LDWR R18,7 ;MARK LDWR R20,0X0001 ;DGUS ADDRE LDWR R22,0X0001 ;ID_ADDRE LDWR R24,0X0000
MOVXR R10,0,8 ;READ_X1-X7 RET
;CMD 06 第一条06指令: LDWR R0,0X5058 LDBR R10,0X5A,1 ; LDBR R11,0X01,1 ;ID LDBR R12,0X06,1 ; CMD
LDBR R13,2,1 ;LEN *2 ;2 LDWR R14,0X0190 ;TIM 400MS LDWR R16,0X0002 ;MARK
LDWR R18,0X0060 ;MARK LDWR R20,0X000D ;DGUS ADDRE LDWR R22,0X000D ;ID_ADDRE LDWR R24,0XFF00
MOVXR R10,0,8 ;READ_X1-X7 RET
4:调试问题及解决方法
1) Modbus只是定义了一种通信数据格式,与硬件的通信接口没有任何关系, 通信口无论是RS232,485,还TTL电平连接都能运行modbus。
2) 配置好Modbus 协议后,下载到屏里,接上sscom32调试助手, 选择好波特率,若是配置了在任何页面都读取的指令,则屏会发送数据到 sscom32调试助手上。
3) 配置好后,若没有发送数据,则先检查配置文件有无错误,
波特率是否正确,22.bin文件是否被重新编译(用配置软件编译后, 22.bin文件会被改写清零。)
4) 用RS-232 TO 485 转接头调试时,转接头A+ 接屏A+. B- 接屏的B-。 或485+ 接屏A+. ,485- 接屏B-.。
转接头的GND 最好接到屏的 GND,有的转接头(无源)不好
GND不连接时有FFFFFFFFFF往串口发送。
1、 MODBUS本条指令处理定时时间怎样理解?
答:主机的读指令间隔是最大间隔,如果从机立即应答,那么应答后就会立马执行下一条指令。写指令的间隔就是真实的间隔,不论从机是否应答,间隔始终为设定的,从上往下依次执行。
读指令如果想让其以某一个时间频率读最简单的办法:可以在01模式指定页面运行指令,读指令穿插一条虚拟的写指令,这样交替达到即使立即响应也能延时的目的。
2、 MODBUS读写指令发送方式02模式如何运用? 答:实际就是利用按键返回按下发送一次,比如按键返回配置地址0x1000,键值0x005A,当这个按键按下的时候,配置指向的modbus屏上面的地址指令会下发一次,底层自动清零键值,不会重复发。一般对于写指令,数据变量录入参数之后,如果不额外配置一个按键返回用02模式发送,那么可以用os判断数据录入变化了就自动下发,不变化就不发,这里写os一般是用的写02模式下的时候也是会底层会自动清零键值。
3、 MODBUS和os配合问题? 答:os可以将运行周期调成是120ms或者80ms运行一次,这样变量刷新的处理速度会加快,但是屏上面变量的处理能力会下降,os的周期和MODBUS配置的指令是分开的,modbus多条指令从第一条到最后一条然后再从第一条重新开始,这个进行的时间是要看用户的实际需要,所以在某种程度上需要合理配合。尽量利用用01模式,尤其是写指令,可以在指定的页面配合指令的发送,os方面也可以判断页面分页运行的模式,这样避免所有指令发送等待周期过长。
4.对于miniDGUS屏的modbus配置,参考mini屏的文档,配置地址不同,功能上面大致一样,注意miniDGUS出厂的屏一般自带了迪文DGUS协议和modbus配置协议内核,用户无须升级内核,miniDGUS屏配置了modbus协议之后,原来的DGUS协议还能继续用,比较方便适合用DGUS5.04软件下载配置文件。