pymodbus 라이브러리를 사용하여 Modbus 디바이스와 통신하기 위해 주요 기능 코드를 지정하려면 client 객체의 메서드를 호출하면 됩니다. 위 예제에서는 이미 holding 레지스터를 읽는 기능 코드 3을 사용하여 read_holding_registers() 메서드를 호출하고 있습니다.
다른 기능 코드를 사용하려면 해당 기능에 맞는 메서드를 호출해야 합니다. 주요 Modbus 기능 코드와 해당하는 pymodbus 메서드는 다음과 같습니다.
Read Coils (기능 코드 1)
메서드: read_coils(address, count, unit)
Read Discrete Inputs (기능 코드 2)
메서드: read_discrete_inputs(address, count, unit)
Read Holding Registers (기능 코드 3)
메서드: read_holding_registers(address, count, unit)
Read Input Registers (기능 코드 4)
메서드: read_input_registers(address, count, unit)
Write Single Coil (기능 코드 5)
메서드: write_coil(address, value, unit)
Write Single Register (기능 코드 6)
메서드: write_register(address, value, unit)
Write Multiple Coils (기능 코드 15)
메서드: write_coils(address, values, unit)
Write Multiple Registers (기능 코드 16)
메서드: write_registers(address, values, unit)
예를 들어, 기능 코드 4를 사용하여 입력 레지스터를 읽으려면 다음과 같이 코드를 수정할 수 있습니다.
# 입력 레지스터 값 읽기 (기능 코드 4)
result = client.read_input_registers(address=0, count=1, unit=1)
# 결과 출력
print(result.registers)
기능 코드에 맞는 메서드를 호출하여 필요한 기능을 사용할 수 있습니다. 위 예제에서는 주소 0에서부터 1개의 레지스터를 읽는 경우입니다. address, count, unit 파라미터 값을 필요에 따라 변경하여 원하는 Modbus 디바이스의 레지스터를 읽거나 쓸 수 있습니다.
'Raspberry Pi' 카테고리의 다른 글
python, modbus, serial (0) | 2023.04.13 |
---|---|
라즈베리파이3 와이파이 연결불가인 경우 (0) | 2017.01.23 |