MODBUS RTU通信中关于如何将压力温度流量放入数据缓冲区

从站里 一个压力传感器的压力值为10.0是存在VD1000中的,数据缓冲区是VB0开始的100个字,应该是VB0-VB199。定义缓冲区的VD0(VB0,VB1,VB2,VB3)用于存储压力传感器寄存器的地址,程序是不是也要用间接寻指的方式将VD1000转到VD0中呢,即如下程序:LD     M1.0
MOVD   &VB1000, VD0, 
不知道是否是这样做呢。

主站的编程
主站这边通过读取40001放入缓冲取VB100,是不是表示主站的VD100=从站的VD0呢,如果要在主站里显示压力值是不是需要编程即:LD     M1.0
MOVD   *VD100, MD0
这时主站的MD0应该是显示压力值,
第一次接触通信方面,看了一些资料,不知道是不是这样理触的,手头上只有一个CPU224,做了MODSCAN与其的串口测试,000001和100001这方面的测试都是明白了,但对40001这寄存器方面还是不太懂,测试中的值都是0,不管我从站在缓冲区VB0中写入什么值MODSCAN里显示的40001都是0.0.,所以问了上面的那个问题,本身对间接寻址就接触的少

问题补充:
刚根据weiyt工程师说的直接将数据值写入数据缓冲区用MODSCAN32测试了一下,浮点数数据传送对就40001和40003,但整数型数据也是直接传到缓冲区里,不知道分别对应的40000是多少呢,好像显示不出来,请看下面的程序与MODSCAN32的截图

图片说明:

MODBUS RTU通信中关于如何将压力温度流量放入数据缓冲区    MODBUS RTU通信中关于如何将压力温度流量放入数据缓冲区   

最佳答案

1、是的,需要将要发送的数据放到数据缓冲区,并从缓冲区读取主站写来的数据。
    LD M1.0  //该指令是正确的
       MOVD &VB1000,VD0  //该指令是把VB1000的地址传送给VD0,VD0需要的是仪表的数据而不能是变量的地址
    可以修改成:
    LD SM0.0
       MOVD   &VB1000, AC1
       MOVR   *AC1, Symbol_9
     或者直接改成
    LD   SM0.0
      MOVR  VD1000,VD0
2、是的,40001对应第一个字,如果是读指令,那么将40001放到VB100开始的第一个字中,如果要使用,需要将VD100中的数据赋值给需要的变量。
     LD   SM0.0
         MOVR  VD100,VD0
3、40001~49999是读写寄存器的地址
补充
实数需要使用VD方式显示,一次使用2个字完成一个实数读写,如主站40001,40002中两个字存到VW100,VW102,使用VD100来显示实数就是10.0;整数就一个字可以了,如40003中存储10

提问者对于答案的评价:
谢谢

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc368429.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日
下一篇 2021年7月5日

相关推荐

发表回复

登录后才能评论