我们的全部技术支持人员不监督这个论坛。如果您需要我们工作人员的帮助,请从“问一个问题”页面提交你的问题


登录注册在论坛上发表/回复。

ModbusMaster指令


海洋学家 2012年8月20日下午05:50

我正试图将一个K-30 CO2 (co2meter.com)传感器集成到我的CR1000设置中。这是一个轮询的十六进制传感器。我认为指令应该是这样的:

Modbusmaster(因此,COM1 9600 0 4, CO2_hex, 3, 1, 3100, 2)

Result和CO2_hex都是变量,但我可能将它们格式化为错误的东西。

我已经正确地将传感器的RxD和TxD连接到C1/C2。根据手册的传感器地址是FE(或254),但0应该只是广播给任何传感器,因为唯一连接的是我的K-30,这是我的理解,这应该是工作的。我需要使用函数04,来读取输入寄存器。在此之前我需要使用SerialOpen命令吗?那么命令的十六进制转换呢?谢谢。


- c


山姆 2012年8月26日下午05:30

从传感器ModBus指南,“寻址规则”,可从co2meter.com:
"目前没有广播*命令"

使用附录A中“CO2 Read Sequence”的第一个例子,在我看来,你的ModbusMaster指令应该是

公共结果为Float
公共二氧化碳
ModBusMaster(因此,COM1、9600、254、4、二氧化碳、4、1、3100年,1)

该指令将使用“读输入寄存器”以9600波特率查询COM1上的传感器254。它请求输入寄存器4,长度为1。一个寄存器是2字节/ 16位。ModBus中令人困惑的是“寄存器号”与“地址”。寄存器编号从1开始;也就是说,它们被编号为1、2、3……寻址从0开始;即寄存器的地址是0,1,2,3…寄存器4的起始地址是3。你要找的值在寄存器4 /地址3中。

想看它的动作吗?

编程让记录器每20秒运行一次ModBusMaster指令。


公共结果为Float
公共二氧化碳
BeginProg
扫描(20秒3,0)
ModBusMaster(因此,COM1、9600、254、4、二氧化碳、4、1、3100年,1)
NextScan
EndProg


然后连接到您的日志记录器与终端仿真器,如HyperTerm或终端仿真器包含在LN。然后按几次enter键,得到CR1000>提示符。输入“9”(COM1)。设置一个超时时间,并要求流量以十六进制显示。您将看到记录器每20秒发送一次请求。如果连接/配置正确,您将看到传感器响应。交互应该看起来像Modbus指南所展示的CO2传感器。类似的

T: fe 04 00 03 00 01 d5 c5
R: fe 04 02 01 90 ac d8


AdamPFR 2020年10月9日上午05:07

haydenmh 2021年12月1日下午04:10

这篇文章正在审查中。

登录注册在论坛上发表/回复。
Baidu