Modbus RTU Master 통신 테스트 (FC3)

본 예제는 FC3 (Read Holding Registers) 기능을 이용하여 Slave 장치의 Holding Register 데이터를 읽어오는 테스트입니다.

PC에서 Modbus RTU Slave 프로그램을 실행한 뒤, CUBLOC2에서 Register 데이터를 정상적으로 읽어오는지 확인하였습니다.

테스트 내용

  • Slave ID : 1
  • 시작 주소 : 0
  • 읽기 개수 : 10개 Register
  • 읽은 데이터는 Buf() 배열에 저장

읽어온 Register 값은 Debug 창에 출력하여 확인하였습니다.

테스트 코드

'------------------------------------------------------------
' FC3 (Read Holding Registers) 테스트
'------------------------------------------------------------
Dim Buf(9) As Integer
Dim Err As Integer
Dim KeyNow As Byte
Dim KeyOld As Byte
Opencom 0, 115200, PROTO_8N1
' 채널0, 응답 대기시간 100ms
Modbusmaster 0, 100
KeyOld = 0
Do
    KeyNow = In(4)
    ' 스위치 OFF -> ON 순간에 1회 실행
    If KeyNow = 1 And KeyOld = 0 Then
        ' FC3 실행
        ' Slave ID=1
        ' 시작주소=0
        ' 10개 Register 읽기
        Modbusread 0, 1, 3, 0, 10, Buf()
        Err = Modbuserror()
        If Err = 0 Then
            Debug "FC3 Read OK", Cr
            Debug "Buf0=", Dec Buf(0), Cr
            Debug "Buf1=", Dec Buf(1), Cr
            Debug "Buf2=", Dec Buf(2), Cr
            Debug "Buf3=", Dec Buf(3), Cr
            Debug "Buf4=", Dec Buf(4), Cr
            Debug "Buf5=", Dec Buf(5), Cr
            Debug "Buf6=", Dec Buf(6), Cr
            Debug "Buf7=", Dec Buf(7), Cr
            Debug "Buf8=", Dec Buf(8), Cr
            Debug "Buf9=", Dec Buf(9), Cr
        Else
            Debug "FC3 Error=", Dec Err, Cr
        End If
    End If
    KeyOld = KeyNow
Loop

결과

  • Holding Register 데이터가 정상적으로 읽힘
  • Slave 프로그램의 Register 값과 동일하게 표시됨
  • 반복 테스트 중 통신 오류 없이 안정적으로 동작 확인
  • Register 값 변경 시 읽기 결과도 즉시 반영됨

FC3은 다음과 같은 용도로 사용할 수 있습니다.

  • 온도값 읽기
  • 인버터 상태 읽기
  • 전력량 데이터 읽기
  • 센서 측정값 모니터링
  • PLC 데이터 교환

← Modbus RTU 마스터로 돌아가기