본 예제는 FC16 (Write Multiple Registers) 기능을 이용하여 여러 개의 Holding Register 값을 한 번에 전송하는 테스트입니다.
PC에서 Modbus RTU Slave 프로그램을 실행한 뒤, CUBLOC2에서 전송한 데이터가 정상적으로 기록되는지 확인하였습니다.
전송 후 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
FC16은 여러 개의 파라미터를 한 번에 전송할 때 유용합니다.
예를 들어:
등에 사용할 수 있습니다.