Communications.Modbus

네임스페이스 Going.Basis.Communications.Modbus — Modbus RTU/TCP 마스터·슬레이브 통신

public enum ModbusFunction
Modbus 함수 코드
Values
BITREAD_F1 = 1 BITREAD_F2 = 2 WORDREAD_F3 = 3 WORDREAD_F4 = 4 BITWRITE_F5 = 5 WORDWRITE_F6 = 6 MULTIBITWRITE_F15 = 15 MULTIWORDWRITE_F16 = 16 WORDBITSET_F26 = 26
public class ModbusCRC
Modbus CRC-16 및 LRC 체크섬 계산 유틸리티
Static Methods
static voidGetCRC(byte[] pby, int nSize, ref byte byFirstReturn, ref byte bySecondReturn)바이트 배열의 CRC-16 계산
static voidGetCRC(List<byte> pby, int startindex, int nSize, ref byte byFirstReturn, ref byte bySecondReturn)리스트의 CRC-16 계산 (오프셋 지정)
static voidGetLRC(byte[] pby, int nSize, ref byte byFirstReturn, ref byte bySecondReturn)LRC (ASCII 모드) 체크섬 계산

public class ModbusRTUMaster : IDisposable
Modbus RTU 마스터. FC1/2(비트읽기), FC3/4(워드읽기), FC5(비트쓰기), FC6(워드쓰기), FC15/16(다중쓰기), FC26(워드비트셋).
Properties
stringPort get set시리얼 포트 이름
intBaudrate get set통신 속도
ParityParity get set패리티
intDataBits get set데이터 비트
StopBitsStopBits get set정지 비트
intTimeout get set응답 대기 시간 (ms). 기본값: 100
intInterval get set메시지 간격 (ms). 기본값: 10
intBufferSize get set수신 버퍼 크기. 기본값: 1024
boolIsOpen get포트 열림 여부
boolIsStart get통신 시작 여부
boolAutoReconnect get set자동 재연결
boolIsDisposed getDispose 호출 여부
stringModuleId get모듈 식별자 (GUID)
object?Tag get set사용자 정의 데이터
Methods — 제어
voidStart()통신 시작
voidStop()통신 정지
voidDispose()리소스 해제
boolContainAutoID(int MessageID)자동 ID 존재 확인
boolRemoveManual(int MessageID)수동 메시지 ID로 삭제
boolRemoveAuto(int MessageID)자동 메시지 ID로 삭제
voidClearManual()수동 메시지 전체 삭제
voidClearAuto()자동 메시지 전체 삭제
voidClearWorkSchedule()작업 큐 전체 삭제
Methods — 자동 읽기
voidAutoBitRead_FC1(int id, int slave, int startAddr, int length, int? timeout = null)FC1 코일 자동 읽기
voidAutoBitRead_FC2(int id, int slave, int startAddr, int length, int? timeout = null)FC2 입력 비트 자동 읽기
voidAutoWordRead_FC3(int id, int slave, int startAddr, int length, int? timeout = null)FC3 보유 레지스터 자동 읽기
voidAutoWordRead_FC4(int id, int slave, int startAddr, int length, int? timeout = null)FC4 입력 레지스터 자동 읽기
Methods — 수동 읽기/쓰기
voidManualBitRead_FC1(int id, int slave, int startAddr, int length, int? repeatCount = null, int? timeout = null)FC1 수동 읽기
voidManualBitRead_FC2(int id, int slave, int startAddr, int length, int? repeatCount = null, int? timeout = null)FC2 수동 읽기
voidManualWordRead_FC3(int id, int slave, int startAddr, int length, int? repeatCount = null, int? timeout = null)FC3 수동 읽기
voidManualWordRead_FC4(int id, int slave, int startAddr, int length, int? repeatCount = null, int? timeout = null)FC4 수동 읽기
voidManualBitWrite_FC5(int id, int slave, int startAddr, bool value, int? repeatCount = null, int? timeout = null)FC5 단일 코일 쓰기
voidManualWordWrite_FC6(int id, int slave, int startAddr, int value, int? repeatCount = null, int? timeout = null)FC6 단일 레지스터 쓰기
voidManualMultiBitWrite_FC15(int id, int slave, int startAddr, bool[] values, int? repeatCount = null, int? timeout = null)FC15 다중 코일 쓰기
voidManualMultiWordWrite_FC16(int id, int slave, int startAddr, int[] values, int? repeatCount = null, int? timeout = null)FC16 다중 레지스터 쓰기
voidManualWordBitSet_FC26(int id, int slave, int startAddr, byte bitIndex, bool value, int? repeatCount = null, int? timeout = null)FC26 레지스터 내 비트 설정
Events
EventHandler<BitReadEventArgs>BitReadReceived비트 읽기 응답
EventHandler<WordReadEventArgs>WordReadReceived워드 읽기 응답
EventHandler<BitWriteEventArgs>BitWriteReceivedFC5 쓰기 응답
EventHandler<WordWriteEventArgs>WordWriteReceivedFC6 쓰기 응답
EventHandler<MultiBitWriteEventArgs>MultiBitWriteReceivedFC15 응답
EventHandler<MultiWordWriteEventArgs>MultiWordWriteReceivedFC16 응답
EventHandler<WordBitSetEventArgs>WordBitSetReceivedFC26 응답
EventHandler<TimeoutEventArgs>TimeoutReceived타임아웃
EventHandler<CRCErrorEventArgs>CRCErrorReceivedCRC 오류
EventHandlerDeviceOpened포트 열림
EventHandlerDeviceClosed포트 닫힘

public class ModbusRTUSlave
Modbus RTU 슬레이브. 마스터 요청을 이벤트로 수신하고 ProcessXxx 정적 메서드로 응답 데이터를 채움.
Properties
stringPort get set시리얼 포트
intBaudrate get set통신 속도
ParityParity get set패리티
intDataBits get set데이터 비트
StopBitsStopBits get set정지 비트
boolIsOpen get포트 열림 여부
boolIsStart get통신 시작 여부
object?Tag get set사용자 데이터
Methods
voidStart()슬레이브 시작
voidStop()슬레이브 정지
Static Methods — 요청 처리
static voidProcessBitReads(BitReadRequestArgs args, int BaseAddress, bool[] BaseArray)비트 읽기 요청 처리 (응답 데이터 채우기)
static voidProcessWordReads(WordReadRequestArgs args, int BaseAddress, int[] BaseArray)워드 읽기 요청 처리
static voidProcessBitWrite(BitWriteRequestArgs args, int BaseAddress, bool[] BaseArray)비트 쓰기 요청 처리
static voidProcessWordWrite(WordWriteRequestArgs args, int BaseAddress, int[] BaseArray)워드 쓰기 요청 처리
static voidProcessMultiBitWrite(MultiBitWriteRequestArgs args, int BaseAddress, bool[] BaseArray)다중 비트 쓰기 요청 처리
static voidProcessMultiWordWrite(MultiWordWriteRequestArgs args, int BaseAddress, int[] BaseArray)다중 워드 쓰기 요청 처리
static voidProcessWordBitSet(WordBitSetRequestArgs args, int BaseAddress, int[] BaseArray)워드비트셋 요청 처리
Events
EventHandler<BitReadRequestArgs>BitReadRequestFC1/FC2 읽기 요청 수신
EventHandler<WordReadRequestArgs>WordReadRequestFC3/FC4 읽기 요청 수신
EventHandler<BitWriteRequestArgs>BitWriteRequestFC5 쓰기 요청 수신
EventHandler<WordWriteRequestArgs>WordWriteRequestFC6 쓰기 요청 수신
EventHandler<MultiBitWriteRequestArgs>MultiBitWriteRequestFC15 쓰기 요청 수신
EventHandler<MultiWordWriteRequestArgs>MultiWordWriteRequestFC16 쓰기 요청 수신
EventHandler<WordBitSetRequestArgs>WordBitSetRequestFC26 요청 수신
EventHandlerDeviceOpened포트 열림
EventHandlerDeviceClosed포트 닫힘

public class ModbusTCPMaster
Modbus TCP 마스터. RTU Master와 동일한 FC 지원. 소켓 연결/해제 이벤트.
Properties
stringRemoteIP get set원격 호스트 IP. 기본값: "127.0.0.1"
intRemotePort get set원격 포트. 기본값: 502
intTimeout get set응답 대기 (ms). 기본값: 100
intInterval get set메시지 간격 (ms). 기본값: 10
intBufferSize get set수신 버퍼 크기. 기본값: 1024
boolIsOpen get소켓 연결 여부
boolIsStart get통신 시작 여부
boolAutoReconnect get set소켓 자동 재연결. 기본값: true
boolIsDisposed getDispose 호출 여부
stringModuleId get모듈 식별자 (GUID)
object?Tag get set사용자 정의 데이터
Methods — 제어
voidStart()통신 시작
voidStop()통신 정지
voidDispose()리소스 해제
boolContainAutoID(int MessageID)자동 ID 존재 확인
boolRemoveManual(int MessageID)수동 메시지 ID로 삭제
boolRemoveAuto(int MessageID)자동 메시지 ID로 삭제
voidClearManual()수동 메시지 전체 삭제
voidClearAuto()자동 메시지 전체 삭제
voidClearWorkSchedule()작업 큐 전체 삭제
Methods — FC (RTUMaster와 동일 시그니처)
AutoBitRead_FC1/FC2, AutoWordRead_FC3/FC4, ManualBitRead_FC1/FC2, ManualWordRead_FC3/FC4, ManualBitWrite_FC5, ManualWordWrite_FC6, ManualMultiBitWrite_FC15, ManualMultiWordWrite_FC16, ManualWordBitSet_FC26 — 시그니처 동일
Events
EventHandler<BitReadEventArgs>BitReadReceived비트 읽기 응답
EventHandler<WordReadEventArgs>WordReadReceived워드 읽기 응답
EventHandler<BitWriteEventArgs>BitWriteReceivedFC5 쓰기 응답
EventHandler<WordWriteEventArgs>WordWriteReceivedFC6 쓰기 응답
EventHandler<MultiBitWriteEventArgs>MultiBitWriteReceivedFC15 응답
EventHandler<MultiWordWriteEventArgs>MultiWordWriteReceivedFC16 응답
EventHandler<WordBitSetEventArgs>WordBitSetReceivedFC26 응답
EventHandler<TimeoutEventArgs>TimeoutReceived타임아웃
EventHandler<EventArgs>SocketConnectedTCP 소켓 연결 성공
EventHandler<EventArgs>SocketDisconnectedTCP 소켓 연결 해제

public class ModbusTCPSlave
Modbus TCP 슬레이브. 클라이언트 연결을 수신하고 요청을 이벤트로 전달. ProcessXxx 정적 메서드로 응답 데이터를 채움.
Properties
intLocalPort get set로컬 리스닝 포트. 기본값: 502
boolIsStart get슬레이브 시작 여부
object?Tag get set사용자 데이터
Methods
voidStart()슬레이브 시작
voidStop()슬레이브 정지
Static Methods — 요청 처리 (RTUSlave와 동일 시그니처)
ProcessBitReads, ProcessWordReads, ProcessBitWrite, ProcessWordWrite, ProcessMultiBitWrite, ProcessMultiWordWrite, ProcessWordBitSet — 시그니처 동일 (단, EventArgs 타입은 ModbusTCPSlave 소속)
Events
EventHandler<BitReadRequestArgs>BitReadRequestFC1/FC2 읽기 요청 수신
EventHandler<WordReadRequestArgs>WordReadRequestFC3/FC4 읽기 요청 수신
EventHandler<BitWriteRequestArgs>BitWriteRequestFC5 쓰기 요청 수신
EventHandler<WordWriteRequestArgs>WordWriteRequestFC6 쓰기 요청 수신
EventHandler<MultiBitWriteRequestArgs>MultiBitWriteRequestFC15 쓰기 요청 수신
EventHandler<MultiWordWriteRequestArgs>MultiWordWriteRequestFC16 쓰기 요청 수신
EventHandler<WordBitSetRequestArgs>WordBitSetRequestFC26 요청 수신
EventHandler<EventArgs>SocketConnected클라이언트 연결 수신
EventHandler<EventArgs>SocketDisconnected클라이언트 연결 해제

public class MasterRTU
단순화된 Modbus RTU 마스터. 모니터링 설정 후 Dictionary로 최신값 조회.
Properties
stringPort get set시리얼 포트
intBaudrate get set통신 속도
ParityParity get set패리티
intDataBits get set데이터 비트
StopBitsStopBits get set정지 비트
intInterval get set폴링 간격 (ms)
intTimeout get set타임아웃 (ms)
boolIsStart get통신 시작 여부
boolIsOpen get포트 열림 여부
Dictionary<int, string>BitAreas get비트 영역 매핑 (baseAddr → 코드 접두사)
Dictionary<int, string>WordAreas get워드 영역 매핑 (baseAddr → 코드 접두사)
Dictionary<int, Mems>Devices get슬레이브별 비트/워드 최신값 저장소
Dictionary<int, DateTime>LastReceived get슬레이브별 최종 수신 시간
object?Tag get set사용자 정의 데이터
Methods
voidStart()통신 시작
voidStop()통신 정지
voidMonitorBit_F1(int slave, int startAddr, int length)FC1 코일 모니터링 등록
voidMonitorBit_F2(int slave, int startAddr, int length)FC2 입력 비트 모니터링
voidMonitorWord_F3(int slave, int startAddr, int length)FC3 레지스터 모니터링
voidMonitorWord_F4(int slave, int startAddr, int length)FC4 입력 레지스터 모니터링
voidSetWord(int slave, string addr, int value)워드 주소에 값 쓰기
voidSetBit(int slave, string addr, bool value)비트 주소에 값 쓰기
int?GetWord(int slave, string addr)워드 주소 값 읽기
bool?GetBit(int slave, string addr)비트 주소 값 읽기
Events
EventHandlerDeviceOpened포트 열림
EventHandlerDeviceClosed포트 닫힘

public class SlaveRTU
단순화된 Modbus RTU 슬레이브. BitAreas / WordAreas Dictionary로 데이터 영역을 관리.
Properties
intSlave get set슬레이브 주소. 기본값: 1
stringPort get set시리얼 포트
intBaudrate get set통신 속도
ParityParity get set패리티
intDataBits get set데이터 비트
StopBitsStopBits get set정지 비트
boolIsStart get통신 시작 여부
boolIsOpen get포트 열림 여부
Dictionary<int, BitMemory>BitAreas get비트 데이터 영역 (baseAddr → 메모리)
Dictionary<int, WordMemory>WordAreas get워드 데이터 영역 (baseAddr → 메모리)
object?Tag get set사용자 정의 데이터
Methods
voidStart()슬레이브 시작
voidStop()슬레이브 정지
Events
EventHandlerDeviceOpened포트 열림
EventHandlerDeviceClosed포트 닫힘

public class MasterTCP
단순화된 Modbus TCP 마스터 (MasterRTU의 TCP 버전). RemoteIP, RemotePort로 연결.
Properties
stringRemoteIP get set원격 서버 IP
intRemotePort get set원격 서버 포트
intInterval get set폴링 간격 (ms)
intTimeout get set타임아웃 (ms)
boolIsStart get통신 시작 여부
boolIsOpen get소켓 연결 여부
Dictionary<int, string>BitAreas get비트 영역 매핑 (baseAddr → 코드 접두사)
Dictionary<int, string>WordAreas get워드 영역 매핑 (baseAddr → 코드 접두사)
Dictionary<int, Mems>Devices get슬레이브별 비트/워드 최신값 저장소
Dictionary<int, DateTime>LastReceived get슬레이브별 최종 수신 시간
object?Tag get set사용자 정의 데이터
Methods — MasterRTU와 동일
Start, Stop, MonitorBit_F1/F2, MonitorWord_F3/F4, SetWord, SetBit, GetWord, GetBit — 시그니처 동일
Events
EventHandler<EventArgs>DeviceOpened소켓 연결 성공
EventHandler<EventArgs>DeviceClosed소켓 연결 해제

public class SlaveTCP
단순화된 Modbus TCP 슬레이브. LocalPort로 수신 대기.
Properties
intSlave get set슬레이브 주소. 기본값: 1
intLocalPort get set로컬 포트
boolIsStart get슬레이브 시작 여부
Dictionary<int, BitMemory>BitAreas get비트 데이터 영역
Dictionary<int, WordMemory>WordAreas get워드 데이터 영역
object?Tag get set사용자 정의 데이터
Methods
voidStart()슬레이브 시작
voidStop()슬레이브 정지
Events
EventHandler<EventArgs>SocketConnected클라이언트 연결 수신
EventHandler<EventArgs>SocketDisconnected클라이언트 연결 해제

public class Mems
MasterRTU/MasterTCP의 Devices에 저장되는 슬레이브 데이터 컨테이너.
Properties
Dictionary<string, bool>Bits get비트 값 (주소문자열 → 값)
Dictionary<string, int>Words get워드 값 (주소문자열 → 값)
검색 결과가 없습니다.