84 lines
1.5 KiB
Markdown
84 lines
1.5 KiB
Markdown
|
|
# 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();
|
|||
|
|
}
|
|||
|
|
```
|