威纶通官方论坛

请教:HMI与单片机在MUDBUS下32位数据传输

[复制链接]
发表于 2014-1-15 18:39:18 | 显示全部楼层 |阅读模式
本帖最后由 bhbyuanyuan 于 2014-1-15 18:41 编辑

我们知道的是:若在HMI定义一个显示框,地址为6X01,一个输入框,地址为6X02,数据格式均为16-bit Unsigned,则在其与单片机进行数据通讯时,
单片机端程序为
(1)读寄存器:
switch(writeadr)
{
        case 0:                                  //总数ProduceNum为16-bit Unsigned
        SlaveOutputBuf=ProduceNum/256;                 // 高8位
        i++;   
        SlaveOutputBuf=ProduceNum%256;  //  低8位                                                               
        break;//
        ……
}
(2)写寄存器:
writeadr=CommBuf[3];
if(writeadr==1)                           //总数ProduceSetNum为16-bit Unsigned
{
        ProduceSetNum=CommBuf[4]*256+CommBuf[5];                 
}
这样是可以进行数据传输的。但是当数据变为32-bit Unsigned的时候,单片机端的软件该怎么编写呢?
现在想到的办法就是(1)读32-bit寄存器时,单片机将32-bit Unsigned的数据分成两个16-bit Unsigned的数据来传输到HMI,再在HMI端再通过宏指令进行处理,再在显示框显示出32-bit Unsigned的数据结果;(2)在写32-bit寄存器时,HMI将输入框的32-bit Unsigned的数据分成两个16-bit Unsigned的数据来传输给单片机,然后单片机再进行计算得出32-bit Unsigned的数据结果。想请教大家的是,还有没有其他比较简单的方法呢?
 楼主| 发表于 2014-1-17 11:24:42 | 显示全部楼层
都没有人来指导下么?
发表于 2014-1-17 15:28:01 | 显示全部楼层
用03功能码读多双字数据的时候,只要将数值显示元件的资料格式定义为32位的资料格式,然后你可以将高低字的数据放到一帧去返回给触摸屏,触摸屏能自动将他转换成32位数据。

触摸屏用16功能码写双字数据的时候,也是将双字数据放在一帧的连续字节中,你再到单片机中运算就能得到数据。
 楼主| 发表于 2014-1-17 15:37:05 | 显示全部楼层
回复 3# weinview


    嗯~刚刚发现了,确实是这样的,还是谢谢你~
您需要登录后才可以发帖 登录 | 注册

本版积分规则

回复帖子

Archiver|小黑屋|威纶通官网 ( 粤ICP备06054553号 )

GMT+8, 2024-11-30 05:47

Powered by Discuz! X3.4

© 2001-2023 Comsenz Inc.

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