迪文科技论坛

 找回密码
 立即注册
搜索
查看: 15588|回复: 44

【分享】基于T5平台DGUS屏的modbus开发心得

[复制链接]

567

主题

167

回帖

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11956
发表于 2019-6-10 11:28:56 | 显示全部楼层 |阅读模式
DGUS 第一代K600+屏有一个专门的modbus内核程序;
T5系列的屏要实现标准的modbus  RTU协议通信,需要通过OS程序来实现,因此T5系列的屏要具备以下条件:
1、要支持OS程序;
2、有除了串口2外的其他串口引出。
首先到迪文官网下载或者联系客服拿一下T5  MODBUS文件—V7的文件资料,里面有modbus使用配置开发文档、OS源程序等。
一、Modbus的屏上配置
T5  Modbus的屏上规划地址是从0XE000开始配置,不同于DGUS第一代屏是从0X5000开始,因此可通过22.bin字库文件0X1C000~0X1FFFF的16KB空间大小来定义Modbus运行参数
或者通过 T5 OS直接访问0XE000~0XFFFF的8KW变量空间来定义Modbus运行参数。
其中Modbus参数配置定义如下:

其中,0XE000~0XE007是基础通信参数设置,从0XE008后是modbus指令配置,每条指令占用8个变量地址。
首先启动modbus协议0XE000为5A A5,然后根据设置好波特率、串口模式、主从机模式等,而波特率是0XE002地址1位定点小数,譬如设置为115200,那么就把0XE002地址的值设置为1152,即是0X0480。
在0XE000~0XE007配置好基本通信参数后,就配置Modbus指令,是从0X1C010~0X1FFFF,最多可配置1023条指令,两条指令之间可以连续也可以间隔若干条指令地址。
每条指令是16个字节,第一个字节是一个标志位,配5A时表明指令有效,接着配置的是设备地址、指令,读写长度根据当前实际读取情况来配置,指令等待时间是最长等待时间,若设置为500MS,在500MS内,若没有收到应答,就会跳过当前这条指令,轮训下一条指令;
接着是3个配置模式:
1、0X0000表所有页面下均执行当前的指令,
2、0X0001表指定页面下才执行当前指令,
3、0X0002表仅在指定的VP地址变为5A时才执行当前指令,若一些参数仅在特定页面下查询或者修改下发指令给主板,那么尽量使用0X0001和0X0002模式,因为0X0000模式下会均执行这条指令,这样如果指令多,就会增加数据传输的负担,轮训效率减慢,那么就可以配置01模式,在一些特定页面时才下发,或者02模式,若参数改变,再先一个地址里赋值为5A,从而实现只当变量值改变后才下发,而不是没有改变也下发,提高通信效率;后面就是配置屏上的VP地址和MODBUS设备地址,通过这两个地址的配置,从而绑定了屏跟主板的数据交互,屏上的VP地址和modbus地址的数据交互,把屏上的VP地址值发送给modbus地址,或者把modbus地址的值读取回来放在VP地址里。

二、Modbus master模式下的指令代码

注意:
1、 Modbus的位(线圈)变量是按照LSB定义的,而T5平台modbus是按照MSB定义;
2、 0XE000~0XE007的参数为主从机通用,Modbus通信不启动时,0XE000~0XFFFF变量可以任意使用规划以及串口任意使用,不过启动后,要按照对应格式来配置相应的参数;
3、 单次最多可读写90个字,若设定读写数据长度大于上限,则会自动跳过该条指令;
4、 禁止将读写数据在VP空间的起始地址以及起始地址+数据长度大于0XDFFF,否则将视为无效指令;
三、22.bin文件配置说明
        1、确保系统配置为上电加载22号文件初始化,第0X08的第5位配置为1;
        2、根据规定来配置T5 变量地址0XE000~0XFFFF的值,对应22号文件的地址是0X1C000~0X1FFFF;
3、若为主机模式,配置好0X1C000开始的16字节接口参数内容后,指令配置范围是从0X1C010~0X1FFFF开始配置;如若屏是从机,那么值配置0X1C000开始的16字节接口参数即可;
主机模式22文件配置
从机模式22文件配置
若想快速定位配置的空间地址0X1C000~0X1FFFF,那可点击跳转行,如下:
四、拷录文件
        在22文件配置好modbus指令后,那么就把22文件和os代码放到DWIN_SET文件夹里拷进去屏即可实现MODBUS通信。

        


本帖子中包含更多资源

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

x
回复

使用道具 举报

1

主题

30

回帖

788

积分

高级会员

Rank: 4

积分
788
发表于 2019-6-25 16:33:29 | 显示全部楼层
你好,;Modbus_VP  Modbus_EN  EQU  E000H    这个0XE000H变量,在T5平台Modbus主从机OS使用说明_V5.pdf文档里有详细介绍
那么;OS_VPMODBUS_SP          EQU  710H  ,这个710H变量又在哪个文档里有详细介绍呀?
还有版主能不能有更详细介绍寄存器,就一个T5_Modbus_V7.asm文件,很难跟屏对得上通信变量呀,一头雾水
回复

使用道具 举报

567

主题

167

回帖

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11956
 楼主| 发表于 2019-6-25 16:49:55 | 显示全部楼层
dejl 发表于 2019-6-25 16:33
你好,;Modbus_VP  Modbus_EN  EQU  E000H    这个0XE000H变量,在T5平台Modbus主从机OS使用说明_V5.pdf文 ...

您好,其实不需要完全弄明白整个modbus os的架构,您那边只需要会怎么配置22文件就行。例如先配置一条03读指令,然后串口测试看能否按照要求格式能串口发出来03读指令的数据。
回复

使用道具 举报

1

主题

30

回帖

788

积分

高级会员

Rank: 4

积分
788
发表于 2019-6-25 17:06:59 | 显示全部楼层
dwinForumAdmin 发表于 2019-6-25 16:49
您好,其实不需要完全弄明白整个modbus os的架构,您那边只需要会怎么配置22文件就行。例如先配置一条03 ...

对,我只要使用,比如现在我要用03指令,触摸屏上我要设置哪个地址才能输出,比如读PLC的4X01呀,我也没有看到对应寄存器地址,所以我不知到怎样用起来
回复

使用道具 举报

1

主题

30

回帖

788

积分

高级会员

Rank: 4

积分
788
发表于 2019-6-25 17:10:51 | 显示全部楼层
dwinForumAdmin 发表于 2019-6-25 16:49
您好,其实不需要完全弄明白整个modbus os的架构,您那边只需要会怎么配置22文件就行。例如先配置一条03 ...

这个710H变量是保密的吗?为什么竟然我问了,又不告诉我呢?
回复

使用道具 举报

1

主题

30

回帖

788

积分

高级会员

Rank: 4

积分
788
发表于 2019-6-25 17:50:08 | 显示全部楼层
dejl 发表于 2019-6-25 17:10
这个710H变量是保密的吗?为什么竟然我问了,又不告诉我呢?

已发电话
回复

使用道具 举报

0

主题

7

回帖

334

积分

中级会员

Rank: 3Rank: 3

积分
334
发表于 2019-6-25 17:52:20 | 显示全部楼层
你好!OS_VPMODBUS_SP          EQU  710H 是OS程序中的一些中间状态变量,和E000H的特殊功能寄存器不同。
一般情况,只需要用UltraEdit文本编辑器软件打开 22_ModbusMaster.bin文件,参考使用说明设置下,就可以做好需要通信的 MODBUS指令了。
回复

使用道具 举报

1

主题

30

回帖

788

积分

高级会员

Rank: 4

积分
788
发表于 2019-6-25 18:08:58 | 显示全部楼层
用T5_Modbus_V7.asm  我打开下面这个测试程序,屏是可以自动不断发出03等指令,但取消下面这行测试程序,屏是一直没有任何指令发出的,我并不知道在屏上放置数据变量,该设什么地址才能让屏发出读取指令
;        CALL MODBUS_SET                        ;MODBUS参数配置,用于测试(也可用于从OS配置MODBUS)
回复

使用道具 举报

1

主题

30

回帖

788

积分

高级会员

Rank: 4

积分
788
发表于 2019-6-25 18:13:09 | 显示全部楼层
迪文工程师只说打开串口4功能就可以用,我已知道配置22文件打开MODBUS功能,但并没有说到怎么用,可以仔细看我上面回复吗?我连寄存器对应表都没有搞明白,你告诉我可以用?
回复

使用道具 举报

1

主题

30

回帖

788

积分

高级会员

Rank: 4

积分
788
发表于 2019-6-25 18:17:17 | 显示全部楼层
迪文工程师你们好,你可以告诉我比如:比如我界面上放个数据量,设置地址0X1000H,屏就会发出03指令吗,0X1000H就是代表读PLC4X01吗?这些更新表,你应该告诉我呀?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 03:08 , Processed in 0.068967 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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