modbus MODBUS tcp 통신 파이썬 코드
페이지 정보

본문
# pip list pymodbus
# pip list pymodbustcp
# from pymodbus.client.sync import ModbusTcpClient : 사용안됨
# from pymodbus.client import ModbusTcpClient : 이거루 사용
import os, sys, time
from pyModbusTCP.client import ModbusClient
#####################################################################################
host = "172.30.1.5"
port = 8899
timeout = 2
debug_type = False
#####################################################################################
#####################################################################################
def read_holding_registers(slaveID, reg_addr, reg_nb):
client = ModbusClient(host, port, slaveID, timeout=timeout, debug=debug_type)
response = client.read_holding_registers(reg_addr, reg_nb)
if response == None:
print("read_holding_registers Error:", response)
else:
# values = response.registers
print("read_holding_registers Values:", response)
client.close()
def read_input_registers(slaveID, reg_addr, reg_nb):
client = ModbusClient(host, port, slaveID, timeout=timeout, debug=debug_type)
response = client.read_input_registers(reg_addr, reg_nb)
if response == None:
print("read_input_registers Error:", response)
else:
# values = response.registers
print("read_input_registers Values:", response)
client.close()
def read_coils(slaveID, bit_addr, bit_nb):
client = ModbusClient(host, port, slaveID, timeout=timeout, debug=debug_type)
response = client.read_coils(bit_addr, bit_nb)
if response == None:
print("read_coils Error:", response)
else:
# values = response.registers
print("read_coils Values:", response)
client.close()
def write_coils(slaveID, bit_addr, bit_value):
client = ModbusClient(host, port, slaveID, timeout=timeout, debug=debug_type)
client.write_single_coil(bit_addr, bit_value)
client.close()
def write_single_register(slaveID, reg_addr, reg_value):
client = ModbusClient(host, port, slaveID, timeout=timeout, debug=debug_type)
client.write_single_register(reg_addr, reg_value)
client.close()
def write_multiple_registers(slaveID, reg_addr, reg_value):
client = ModbusClient(host, port, slaveID, timeout=timeout, debug=debug_type)
client.write_multiple_registers(reg_addr, reg_value)
client.close()
#####################################################################################
# write_single_register(1, 1, 0)
write_coils(1, 0, 1)
while True:
# slaveID, start_register, read_num
# r = read_coils(1, 0, 8)
# r = read_holding_registers(2, 0, 8)
print("SlaveID : 1, 시작주소 : 0, 읽을갯수 : 8")
r = read_coils(1, 0, 8)
print(r)
print("SlaveID : 2, 시작주소 : 0, 읽을갯수 : 8")
r = read_holding_registers(2, 0, 8)
print("=================")
time.sleep(2)
- 다음글tcp socket 를 이용한 기상센서 데이타 읽기 23.06.05
댓글목록
등록된 댓글이 없습니다.