Modbus RTU Master 통신 테스트 (FC16)

본 예제는 FC16 (Write Multiple Registers) 기능을 이용하여 여러 개의 Holding Register 값을 한 번에 전송하는 테스트입니다.

PC에서 Modbus RTU Slave 프로그램을 실행한 뒤, CUBLOC2에서 전송한 데이터가 정상적으로 기록되는지 확인하였습니다.

테스트 내용

  • Slave ID : 1
  • 시작 주소 : 0
  • 전송 개수 : 5개 Register
  • 전송 데이터 :
    • 100
    • 200
    • 300
    • 400
    • 500

전송 후 Slave 프로그램의 Holding Register 값이 동일하게 변경되는 것을 확인하였습니다.

테스트 코드

'------------------------------------------------------------
' FC16 (Write Multiple Registers) 테스트
'------------------------------------------------------------
 
Dim Buf(4) 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
        ' 전송할 데이터 설정
        Buf(0) = 100
        Buf(1) = 200
        Buf(2) = 300
        Buf(3) = 400
        Buf(4) = 500
        ' FC16 실행
        Modbuswrite 0, 1, 16, 0, 5, Buf()
 
        Err = Modbuserror()
        If Err = 0 Then
            Debug "FC16 Write OK", Cr
        Else
            Debug "FC16 Error=", Dec Err, Cr
        End If
    End If
    KeyOld = KeyNow
Loop

결과

  • 5개의 Register 값이 한 번에 정상 기록됨
  • Slave 프로그램에서 데이터 변경 확인 완료
  • 긴 FC16 프레임도 정상 송수신됨
  • 응답(ACK) 정상 수신 확인

FC16은 여러 개의 파라미터를 한 번에 전송할 때 유용합니다.

예를 들어:

  • 인버터 파라미터 설정
  • 서보 드라이브 초기값 설정
  • 장비 초기화 데이터 다운로드

등에 사용할 수 있습니다.

← Modbus RTU 마스터로 돌아가기