modbus modbus RTU 데이타 읽기 - 3082 ADAM 데이타 읽기 1
페이지 정보

본문
import sys
import time
import serial
import serial.rs485
#===============================================================
# i_data : 3082ADAM에서 읽어온 hex값(str로 변환된 값)
def def_3082_hex(i_data):
ret = [[]] * 9
ret[0] = i_data[0:6]
ret[1] = def_3082(i_data[6:10])
ret[2] = def_3082(i_data[10:14])
ret[3] = def_3082(i_data[14:18])
ret[4] = def_3082(i_data[18:22])
ret[5] = def_3082(i_data[22:26])
ret[6] = def_3082(i_data[26:30])
ret[7] = def_3082(i_data[30:34])
ret[8] = def_3082(i_data[34:38])
return ret
#===============================================================
#===============================================================
# i_data : 3082ADAM 에서 읽어온 수치값
# 계산식을 해서, mA 값으로 변환하기
def def_3082( i_data ):
i_data = int(i_data, 16)
ret = i_data * 20 / 4095
return ret
#===============================================================
ser = serial.Serial("COM3", baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=1)
print("ser ==>", ser)
if ser.is_open:
print(ser.name, " : port open success")
while True:
# HEX (16) converted to BYTES (2), pay attention to Python3.7 and python2.7 conversion
send_data = bytes.fromhex('01 03 00 00 00 08 44 0C') # Send data to B '\ XFF \ X01 \ x00u \ x00 \ x00v'
ser.write(send_data) # send command
time.sleep(1) # Delay, otherwise len_return_data will return 0, which is easy to ignore! ! !
return_data = ser.inWaiting() # Get buffer data (received data) length
if return_data:
hex_data = ser.read(return_data) # Read buffer data
# BYTES (2) Convert to HEX (16), pay attention to the difference between Python3.7 and python2.7, and turn into a string, intercept the required data field, and turn to 10
read_data = def_3082_hex( str(hex_data.hex()) )
print(read_data)
else:
print(ser.name, " : port open failed")
[이 게시물은 최고관리자님에 의해 2022-11-23 13:44:07 소스코드에서 이동 됨]
- 이전글modbus RTU 데이타 읽기 - 3082 ADAM 데이타 읽기 2 21.12.13
- 다음글modbus TCP 데이타 읽기 22.11.08
댓글목록
등록된 댓글이 없습니다.