84 lines
1.6 KiB
Markdown
Raw Permalink Normal View History

2025-07-23 01:35:14 +08:00
# Modbus TCP <20>ͻ<EFBFBD><CDBB><EFBFBD>ģ<EFBFBD><C4A3>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>libmodbus<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Modbus TCP<43>ͻ<EFBFBD><CDBB><EFBFBD>ʵ<EFBFBD>֣<EFBFBD><D6A3><EFBFBD><E1B9A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Modbus<75><73><EFBFBD><EFBFBD>֧<EFBFBD>֡<EFBFBD>
## <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
- <20><><EFBFBD><EFBFBD>libmodbus<75><73><EFBFBD>ȶ<EFBFBD>ʵ<EFBFBD><CAB5>
- ֧<><D6A7><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>׼Modbus<75><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
- <20>̰߳<DFB3>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD><D3B9><EFBFBD>
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD>32λ<32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
- <20><><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
- <20><>ƽ̨֧<CCA8>֣<EFBFBD>Windows/Linux<75><78>
## ֧<>ֵ<EFBFBD>Modbus<75><73><EFBFBD><EFBFBD>
- <20><>ȡ<EFBFBD><C8A1>Ȧ<EFBFBD><C8A6>0x01<30><31>
- <20><>ȡ<EFBFBD><C8A1>ɢ<EFBFBD><C9A2><EFBFBD>루0x02<30><32>
- <20><>ȡ<EFBFBD><C8A1><EFBFBD>ּĴ<D6BC><C4B4><EFBFBD><EFBFBD><EFBFBD>0x03<30><33>
- <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>0x04<30><34>
- д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȧ<EFBFBD><C8A6>0x05<30><35>
- д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּĴ<D6BC><C4B4><EFBFBD><EFBFBD><EFBFBD>0x06<30><36>
- д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȧ<EFBFBD><C8A6>0x0F<30><46>
- д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּĴ<D6BC><C4B4><EFBFBD><EFBFBD><EFBFBD>0x10<31><30>
## API<50>ӿ<EFBFBD>
### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
```cpp
ModbusTCPClient client("192.168.1.100", 502);
if (client.connect()) {
// <20><><EFBFBD>ӳɹ<D3B3>
}
```
### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
```cpp
std::vector<bool> coils;
client.readCoils(0, 10, coils);
std::vector<uint16_t> registers;
client.readHoldingRegisters(0, 10, registers);
```
### д<><D0B4><EFBFBD><EFBFBD>
```cpp
client.writeSingleCoil(0, true);
client.writeSingleRegister(0, 1234);
std::vector<bool> coils = {true, false, true};
client.writeMultipleCoils(0, coils);
std::vector<uint16_t> registers = {1234, 5678};
client.writeMultipleRegisters(0, registers);
```
## <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
### <20><><EFBFBD><EFBFBD>
- Qt 5.x <20><><EFBFBD><EFBFBD><EFBFBD>߰汾
- C++17 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
- libmodbusԴ<73><EFBFBD>Ѱ<EFBFBD><D1B0><EFBFBD><EFBFBD><EFBFBD>VrNetsģ<73><C4A3><EFBFBD>У<EFBFBD>
### <20><><EFBFBD><EFBFBD>
```bash
qmake ModbusTCPClient.pro
make
```
### ʹ<><CAB9>
<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>а<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
```pro
LIBS += -L../Module/ModbusTCPClient -lModbusTCPClient
INCLUDEPATH += ../Module/ModbusTCPClient/Inc
```
## <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>API<EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD>boolֵָʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>getLastError()<29><>ȡ<EFBFBD><C8A1>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
```cpp
if (!client.readCoils(0, 10, coils)) {
qDebug() << "Error:" << client.getLastError();
}
2025-06-08 12:48:04 +08:00
```