本帖最后由 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的数据结果。想请教大家的是,还有没有其他比较简单的方法呢? |