뒤에 이야기 :QModbusTcpClient
을 사용하여 Modbus/TCP
네트워크에 연결된 장치에서 내용을 읽으려고합니다. 이를 위해 나는 기본적으로 유형이 HoldingRegisters
입니다 매개 변수로 QModbusDataUnit::QModbusDataUnit(RegisterType type, int address, quint16 size)
와 QModbusClient::sendReadRequest
를 호출 Qt는 C++ (Qt는 버전 5.7.0)에서 (7, 10 테스트) Windows 프로그램,이 1000
에 동일 주소를 (작성했습니다 다른 주소 일 수 있음,이 특정 문제에는 중요하지 않음). 크기은 장치에서 읽으려는 원하는 데이터의 길이입니다.QModbusTcpClient의 데이터 크기 제한
문제 :size
이 63
보다 작거나 같으면 모든 것이 잘 작동합니다. 이 값을 초과하여 시도 할 때마다 프로그램을 테스트하는 장치에 따라 오류가 발생하지만 일반적으로 잘못된 요청이 표시됩니다.
테스트 : I 여러 실제 장치와 같은 결과를 얻는 Modbus/TCP
simulator 이것을 테스트 한
- , 즉
size
< =63
-> 괜찮;size
>63
- 다른 측면에서> 오류 Modpoll
이 나를size
큰63
이상의 레지스터
과 같은 장치와 시뮬레이터에서 데이터 청크를 읽을 수 있습니다 일부 연구 :이 적혀있다Here, 실제로 제한이 있지만, 256 바이트입니다. 이는 128 16 비트 레지스터와 같습니다. 즉, 내 읽기 시도 한계를 초과합니다.
내 의심 :QModbusTcpClient
은 63
개 이상의 레지스터를 읽을 수 없습니다.
질문 :QModbusTcpClient
을 사용하여이 문제를 경험 한 사람이 있습니까?이 두 가지 데이터를 읽는 것 외에이 제한을 극복 할 수있는 방법이 있습니까?