지루한 PLC 모드 버스 전문가가 엔터테인먼트를 필요로합니다. 나는 이것을 알아 내려고 미쳤습니다.PLC/Modbus 리드 코일 상태 읽기 (modbus tk)
teco SG2 20VR-D에서 출력 코일 Q1 ~ Q8의 상태를 읽으려고합니다.
저는 파이썬에서 Modbus-TK를 사용하고 있습니다. 코일에 쓰거나 레지스터를 읽는 등의 방법으로 쉽게 통신 할 수 있습니다. 그러나 출력 코일 Q1-Q8을 읽는 방법을 알지 못합니다. 그들의 상태를 확인할 수 있습니다.
주소 표는 첨부 된 PDF의 29/31 페이지에 있습니다. 내 단위가 V3 유형입니다.
29 페이지의 작은 글씨를 읽으면 10 시간 씩 곱하는 것에 대한 약간의 암시적인 메시지가 나타납니다 ???? 도움!
이 명령을 사용할 때 유일한 값에 대해 0 인 간단한 튜플을 얻습니다.
slave_address = 1
command = 1 #read coils
coil_address = 11312 # this is 2c30h converted to decimal. 2c30h is the address for Q1 according to the pdf
master.execute(slave_address, command, coil_address)
(나는 Pycharm의 표현 ...을 평가 할 때 내가 무엇을 얻을이) 결과 :
result = {tuple} <type 'tuple'>:()
__len__ = {int} 0
문제는 Q1은 (폐쇄)에 통전되고 그래서 0 1 65280을하지 표시해야합니다 , 그래서 이것은 옳지 않을 수 있습니다.
코일 주소에 대해 어떤 종류의 범위를 사용해야합니까? 아무도 어떻게해야하는지 설명 할 수 있습니까?
감사합니다 ... 당신은 ... 나는 좋은 문서에 대한 높고 낮은 찾고있다 MODBUS-TK에 대한 문서를 찾을 않았고 그것을 찾을 수있는 곳. –
독립형 문서가 보이지 않았지만 https://github.com/ljean/modbus-tk/blob/master/modbus_tk/modbus.py에서 찾은 소스 자체에 docstrings이 있습니다. – jasonharper
16의 배수가되는 코일은 어색하고 비표준적인 행동입니다. 어쨌든, 이것은 Modbus입니다. 각 구현에는 그 특징이 있습니다. 코일 수를 16으로 사용하면 효과가 있습니다. – Ronaldo