这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
reference:library:modbus [2017/04/07 10:03] – 外部编辑 127.0.0.1 | reference:library:modbus [2023/06/07 04:24] (当前版本) – 外部编辑 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== | ||
+ | |||
+ | |||
+ | 这个库是为了让你的控制器之间通过Modbus协议进行通讯。 | ||
+ | |||
+ | Modbus是一种用在工业自动化的主从协议,也可以用在别的地方,比如智能家居。 | ||
+ | |||
+ | Modbus一般使用 RS-232 或者 RS-485 协议作为物理层(也叫Modbus串口),Modbus 通过以太网或者WiFi (也叫Modbus IP)使用 TCP/ | ||
+ | |||
+ | 最新的版本库允许控制器作为从机使用,支持Modbus串口和Modbus IP。 | ||
+ | |||
+ | 更多的关于Modbus的信息可以在这里看到: | ||
+ | |||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | |||
+ | |||
+ | ===== 特点 ===== | ||
+ | |||
+ | 作为从机使用(master mode in development) | ||
+ | |||
+ | 支持Modbus串口 (RS-232 or RS485) 和 Modbus IP (TCP) | ||
+ | |||
+ | |||
+ | 所有功能的异常响应 | ||
+ | |||
+ | Modbus 功能支持: | ||
+ | |0x01| - 读线圈寄存器| | ||
+ | |0x02|- 读状态寄存器 (读离散输入)| | ||
+ | |0x03| - 读保持寄存器| | ||
+ | |0x04| - 读输入寄存器| | ||
+ | |0x05| - 写单线圈寄存器| | ||
+ | |0x06|- 写单保持寄存器| | ||
+ | |0x0F| - 写多线圈寄存器| | ||
+ | |0x10| - 写多保持寄存器| | ||
+ | |||
+ | <WRAP left round tip 100%> | ||
+ | |||
+ | 1 .当使用Modbus IP 的tcp协议(默认502端口)时,消息传输之后连接就中断,也就是说,并不是持续的连接。如果你需要持续连接tcp,你就必须去掉ModbusIP.h(或者ModbusIP_*)开头这句话前面的注释。 | ||
+ | |||
+ | <code cpp> | ||
+ | #define TCP_KEEP_ALIVE | ||
+ | </ | ||
+ | 2.默认寄存器是从0开始的。使用测试软件的时候要注意,在ScadaBR 这个软件里,寄存器从0开始,设置寄存器为100,就在库文件里被设置为100了。但是,在CAS Modbus Scanner 里 是从1开始的,所以在库文件里设置寄存器为100,实际上软件里就是101. | ||
+ | 3.之前的库文件里,可以选择限制保持寄存器的功能,来节省程序空间,注释掉这句话就好了 | ||
+ | |||
+ | <code cpp> | ||
+ | #define USE_HOLDING_REGISTERS_ONLY | ||
+ | </ | ||
+ | |||
+ | |||
+ | 这样的话 只有下面这几个功能是支持的。 | ||
+ | <code cpp> | ||
+ | 0x03 - 读保持寄存器 | ||
+ | 0x06 - 写单保持寄存器 | ||
+ | 0x10 - 写多保持寄存器 | ||
+ | </ | ||
+ | 4.Modbus串口要从硬件串口和软件串口选择,你可以在ModbusSerial.h 文件里,把这句话注释掉 | ||
+ | |||
+ | <code cpp># | ||
+ | |||
+ | |||
+ | 现在你可以在主程序中加上下面的几句话: | ||
+ | <code cpp> | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | </ | ||
+ | 在setup() 中: | ||
+ | <code cpp> | ||
+ | SoftwareSerial myserial(2, | ||
+ | mb.config(& | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | === Modbus术语 === | ||
+ | |||
+ | 声明寄存器类型: | ||
+ | |||
+ | | Register type | Use as | Access | ||
+ | | Coil | Digital Output | ||
+ | | Holding Register | ||
+ | | Input Status | ||
+ | | Input Register | ||
+ | |||
+ | 注意: | ||
+ | |||
+ | 输入状态有时也叫离散输入 | ||
+ | 保持寄存器是从机用来存储数值的 | ||
+ | 使用例程: | ||