MODBUS tcp 통신 파이썬 코드 > 시리얼 통신

본문 바로가기

회원로그인

회원가입

시리얼 통신

modbus MODBUS tcp 통신 파이썬 코드

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 59회 작성일 23-06-19 10:11

본문

# 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)

 

댓글목록

등록된 댓글이 없습니다.