2016-11-07 19 views
-1

지루한 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을하지 표시해야합니다 , 그래서 이것은 옳지 않을 수 있습니다.

코일 주소에 대해 어떤 종류의 범위를 사용해야합니까? 아무도 어떻게해야하는지 설명 할 수 있습니까?

Teco SG3 Modbus Manual

답변

0

난 당신이 무슨 일을하는지에 전혀 익숙하지 해요,하지만 워드 프로세서 얼핏 당신이 READ_COILS 명령에 대한 모든 필요한 매개 변수를 지정하지 않을 것을 보여준다 - 또한 거기에 " quantity_of_x "매개 변수 (이 특정 명령의 경우 읽을 코일 수)는 modbus-tk의 기본값은 0입니다. 따라서 얻은 결과와 정확히 일치하는 총 0 코일의 값을 요청하고 있습니다. 이 매개 변수는 분명히 0x10의 배수 여야하기 때문에 Q1-8 값 이외의 다른 값을 요청해야합니다. 나머지 8 개 값은 가비지입니다.

+0

감사합니다 ... 당신은 ... 나는 좋은 문서에 대한 높고 낮은 찾고있다 MODBUS-TK에 대한 문서를 찾을 않았고 그것을 찾을 수있는 곳. –

+0

독립형 문서가 보이지 않았지만 https://github.com/ljean/modbus-tk/blob/master/modbus_tk/modbus.py에서 찾은 소스 자체에 docstrings이 있습니다. – jasonharper

+0

16의 배수가되는 코일은 어색하고 비표준적인 행동입니다. 어쨌든, 이것은 Modbus입니다. 각 구현에는 그 특징이 있습니다. 코일 수를 16으로 사용하면 효과가 있습니다. – Ronaldo

0

"01H : 사용자가 10H의 시작 주소와 동일한 다수를 설정하고, 또한 코일 10H의 동일한 다수의 수량"

모드 버스 구현은 일반적으로 중 전체 레지스터 값 (당신이 사용하고있는 내가 생각하는) 기대 또는 오프셋. 이 경우 기본 레지스터에 16 (10h)을 곱하여 오프셋에 도달하려고 시도 했습니까?

단서를 찾기 위해 발신 메시지와 수신 메시지를 살펴 보았습니까? Wireshark는 자동으로 Modbus 메시지를 해독합니다.

저는 직접적인 답을 갖고 있지 않습니다. 모든 modbus 구현이 조금씩 다르므로 직접해야 할 것들이 많이 있습니다.

스킬 레벨을 모르지만 wireshark의 메시지 (바이트)를 포착하여 정확하게 장치가 반환하는 것을 확인하고 보내는 메시지를 확인하는 것으로 시작합니다. 이 정보는 도움이 될 수

http://support.autosoln.com/support/index.php?/Knowledgebase/Article/View/63/0/modbus-protocol-overview-debugging-your-acm-configuration-by-dissecting-modbus-messages