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 void | GetCRC | (byte[] pby, int nSize, ref byte byFirstReturn, ref byte bySecondReturn) | 바이트 배열의 CRC-16 계산 |
| static void | GetCRC | (List<byte> pby, int startindex, int nSize, ref byte byFirstReturn, ref byte bySecondReturn) | 리스트의 CRC-16 계산 (오프셋 지정) |
| static void | GetLRC | (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
| string | Port get set | 시리얼 포트 이름 |
| int | Baudrate get set | 통신 속도 |
| Parity | Parity get set | 패리티 |
| int | DataBits get set | 데이터 비트 |
| StopBits | StopBits get set | 정지 비트 |
| int | Timeout get set | 응답 대기 시간 (ms). 기본값: 100 |
| int | Interval get set | 메시지 간격 (ms). 기본값: 10 |
| int | BufferSize get set | 수신 버퍼 크기. 기본값: 1024 |
| bool | IsOpen get | 포트 열림 여부 |
| bool | IsStart get | 통신 시작 여부 |
| bool | AutoReconnect get set | 자동 재연결 |
| bool | IsDisposed get | Dispose 호출 여부 |
| string | ModuleId get | 모듈 식별자 (GUID) |
| object? | Tag get set | 사용자 정의 데이터 |
Methods — 제어
| void | Start | () | 통신 시작 |
| void | Stop | () | 통신 정지 |
| void | Dispose | () | 리소스 해제 |
| bool | ContainAutoID | (int MessageID) | 자동 ID 존재 확인 |
| bool | RemoveManual | (int MessageID) | 수동 메시지 ID로 삭제 |
| bool | RemoveAuto | (int MessageID) | 자동 메시지 ID로 삭제 |
| void | ClearManual | () | 수동 메시지 전체 삭제 |
| void | ClearAuto | () | 자동 메시지 전체 삭제 |
| void | ClearWorkSchedule | () | 작업 큐 전체 삭제 |
Methods — 자동 읽기
| void | AutoBitRead_FC1 | (int id, int slave, int startAddr, int length, int? timeout = null) | FC1 코일 자동 읽기 |
| void | AutoBitRead_FC2 | (int id, int slave, int startAddr, int length, int? timeout = null) | FC2 입력 비트 자동 읽기 |
| void | AutoWordRead_FC3 | (int id, int slave, int startAddr, int length, int? timeout = null) | FC3 보유 레지스터 자동 읽기 |
| void | AutoWordRead_FC4 | (int id, int slave, int startAddr, int length, int? timeout = null) | FC4 입력 레지스터 자동 읽기 |
Methods — 수동 읽기/쓰기
| void | ManualBitRead_FC1 | (int id, int slave, int startAddr, int length, int? repeatCount = null, int? timeout = null) | FC1 수동 읽기 |
| void | ManualBitRead_FC2 | (int id, int slave, int startAddr, int length, int? repeatCount = null, int? timeout = null) | FC2 수동 읽기 |
| void | ManualWordRead_FC3 | (int id, int slave, int startAddr, int length, int? repeatCount = null, int? timeout = null) | FC3 수동 읽기 |
| void | ManualWordRead_FC4 | (int id, int slave, int startAddr, int length, int? repeatCount = null, int? timeout = null) | FC4 수동 읽기 |
| void | ManualBitWrite_FC5 | (int id, int slave, int startAddr, bool value, int? repeatCount = null, int? timeout = null) | FC5 단일 코일 쓰기 |
| void | ManualWordWrite_FC6 | (int id, int slave, int startAddr, int value, int? repeatCount = null, int? timeout = null) | FC6 단일 레지스터 쓰기 |
| void | ManualMultiBitWrite_FC15 | (int id, int slave, int startAddr, bool[] values, int? repeatCount = null, int? timeout = null) | FC15 다중 코일 쓰기 |
| void | ManualMultiWordWrite_FC16 | (int id, int slave, int startAddr, int[] values, int? repeatCount = null, int? timeout = null) | FC16 다중 레지스터 쓰기 |
| void | ManualWordBitSet_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> | BitWriteReceived | FC5 쓰기 응답 |
| EventHandler<WordWriteEventArgs> | WordWriteReceived | FC6 쓰기 응답 |
| EventHandler<MultiBitWriteEventArgs> | MultiBitWriteReceived | FC15 응답 |
| EventHandler<MultiWordWriteEventArgs> | MultiWordWriteReceived | FC16 응답 |
| EventHandler<WordBitSetEventArgs> | WordBitSetReceived | FC26 응답 |
| EventHandler<TimeoutEventArgs> | TimeoutReceived | 타임아웃 |
| EventHandler<CRCErrorEventArgs> | CRCErrorReceived | CRC 오류 |
| EventHandler | DeviceOpened | 포트 열림 |
| EventHandler | DeviceClosed | 포트 닫힘 |
public class ModbusRTUSlave
Modbus RTU 슬레이브. 마스터 요청을 이벤트로 수신하고 ProcessXxx 정적 메서드로 응답 데이터를 채움.
Properties
| string | Port get set | 시리얼 포트 |
| int | Baudrate get set | 통신 속도 |
| Parity | Parity get set | 패리티 |
| int | DataBits get set | 데이터 비트 |
| StopBits | StopBits get set | 정지 비트 |
| bool | IsOpen get | 포트 열림 여부 |
| bool | IsStart get | 통신 시작 여부 |
| object? | Tag get set | 사용자 데이터 |
Methods
| void | Start | () | 슬레이브 시작 |
| void | Stop | () | 슬레이브 정지 |
Static Methods — 요청 처리
| static void | ProcessBitReads | (BitReadRequestArgs args, int BaseAddress, bool[] BaseArray) | 비트 읽기 요청 처리 (응답 데이터 채우기) |
| static void | ProcessWordReads | (WordReadRequestArgs args, int BaseAddress, int[] BaseArray) | 워드 읽기 요청 처리 |
| static void | ProcessBitWrite | (BitWriteRequestArgs args, int BaseAddress, bool[] BaseArray) | 비트 쓰기 요청 처리 |
| static void | ProcessWordWrite | (WordWriteRequestArgs args, int BaseAddress, int[] BaseArray) | 워드 쓰기 요청 처리 |
| static void | ProcessMultiBitWrite | (MultiBitWriteRequestArgs args, int BaseAddress, bool[] BaseArray) | 다중 비트 쓰기 요청 처리 |
| static void | ProcessMultiWordWrite | (MultiWordWriteRequestArgs args, int BaseAddress, int[] BaseArray) | 다중 워드 쓰기 요청 처리 |
| static void | ProcessWordBitSet | (WordBitSetRequestArgs args, int BaseAddress, int[] BaseArray) | 워드비트셋 요청 처리 |
Events
| EventHandler<BitReadRequestArgs> | BitReadRequest | FC1/FC2 읽기 요청 수신 |
| EventHandler<WordReadRequestArgs> | WordReadRequest | FC3/FC4 읽기 요청 수신 |
| EventHandler<BitWriteRequestArgs> | BitWriteRequest | FC5 쓰기 요청 수신 |
| EventHandler<WordWriteRequestArgs> | WordWriteRequest | FC6 쓰기 요청 수신 |
| EventHandler<MultiBitWriteRequestArgs> | MultiBitWriteRequest | FC15 쓰기 요청 수신 |
| EventHandler<MultiWordWriteRequestArgs> | MultiWordWriteRequest | FC16 쓰기 요청 수신 |
| EventHandler<WordBitSetRequestArgs> | WordBitSetRequest | FC26 요청 수신 |
| EventHandler | DeviceOpened | 포트 열림 |
| EventHandler | DeviceClosed | 포트 닫힘 |
public class ModbusTCPMaster
Modbus TCP 마스터. RTU Master와 동일한 FC 지원. 소켓 연결/해제 이벤트.
Properties
| string | RemoteIP get set | 원격 호스트 IP. 기본값: "127.0.0.1" |
| int | RemotePort get set | 원격 포트. 기본값: 502 |
| int | Timeout get set | 응답 대기 (ms). 기본값: 100 |
| int | Interval get set | 메시지 간격 (ms). 기본값: 10 |
| int | BufferSize get set | 수신 버퍼 크기. 기본값: 1024 |
| bool | IsOpen get | 소켓 연결 여부 |
| bool | IsStart get | 통신 시작 여부 |
| bool | AutoReconnect get set | 소켓 자동 재연결. 기본값: true |
| bool | IsDisposed get | Dispose 호출 여부 |
| string | ModuleId get | 모듈 식별자 (GUID) |
| object? | Tag get set | 사용자 정의 데이터 |
Methods — 제어
| void | Start | () | 통신 시작 |
| void | Stop | () | 통신 정지 |
| void | Dispose | () | 리소스 해제 |
| bool | ContainAutoID | (int MessageID) | 자동 ID 존재 확인 |
| bool | RemoveManual | (int MessageID) | 수동 메시지 ID로 삭제 |
| bool | RemoveAuto | (int MessageID) | 자동 메시지 ID로 삭제 |
| void | ClearManual | () | 수동 메시지 전체 삭제 |
| void | ClearAuto | () | 자동 메시지 전체 삭제 |
| void | ClearWorkSchedule | () | 작업 큐 전체 삭제 |
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> | BitWriteReceived | FC5 쓰기 응답 |
| EventHandler<WordWriteEventArgs> | WordWriteReceived | FC6 쓰기 응답 |
| EventHandler<MultiBitWriteEventArgs> | MultiBitWriteReceived | FC15 응답 |
| EventHandler<MultiWordWriteEventArgs> | MultiWordWriteReceived | FC16 응답 |
| EventHandler<WordBitSetEventArgs> | WordBitSetReceived | FC26 응답 |
| EventHandler<TimeoutEventArgs> | TimeoutReceived | 타임아웃 |
| EventHandler<EventArgs> | SocketConnected | TCP 소켓 연결 성공 |
| EventHandler<EventArgs> | SocketDisconnected | TCP 소켓 연결 해제 |
public class ModbusTCPSlave
Modbus TCP 슬레이브. 클라이언트 연결을 수신하고 요청을 이벤트로 전달. ProcessXxx 정적 메서드로 응답 데이터를 채움.
Properties
| int | LocalPort get set | 로컬 리스닝 포트. 기본값: 502 |
| bool | IsStart get | 슬레이브 시작 여부 |
| object? | Tag get set | 사용자 데이터 |
Methods
| void | Start | () | 슬레이브 시작 |
| void | Stop | () | 슬레이브 정지 |
Static Methods — 요청 처리 (RTUSlave와 동일 시그니처)
| ProcessBitReads, ProcessWordReads, ProcessBitWrite, ProcessWordWrite, ProcessMultiBitWrite, ProcessMultiWordWrite, ProcessWordBitSet — 시그니처 동일 (단, EventArgs 타입은 ModbusTCPSlave 소속) |
Events
| EventHandler<BitReadRequestArgs> | BitReadRequest | FC1/FC2 읽기 요청 수신 |
| EventHandler<WordReadRequestArgs> | WordReadRequest | FC3/FC4 읽기 요청 수신 |
| EventHandler<BitWriteRequestArgs> | BitWriteRequest | FC5 쓰기 요청 수신 |
| EventHandler<WordWriteRequestArgs> | WordWriteRequest | FC6 쓰기 요청 수신 |
| EventHandler<MultiBitWriteRequestArgs> | MultiBitWriteRequest | FC15 쓰기 요청 수신 |
| EventHandler<MultiWordWriteRequestArgs> | MultiWordWriteRequest | FC16 쓰기 요청 수신 |
| EventHandler<WordBitSetRequestArgs> | WordBitSetRequest | FC26 요청 수신 |
| EventHandler<EventArgs> | SocketConnected | 클라이언트 연결 수신 |
| EventHandler<EventArgs> | SocketDisconnected | 클라이언트 연결 해제 |
public class MasterRTU
단순화된 Modbus RTU 마스터. 모니터링 설정 후 Dictionary로 최신값 조회.
Properties
| string | Port get set | 시리얼 포트 |
| int | Baudrate get set | 통신 속도 |
| Parity | Parity get set | 패리티 |
| int | DataBits get set | 데이터 비트 |
| StopBits | StopBits get set | 정지 비트 |
| int | Interval get set | 폴링 간격 (ms) |
| int | Timeout get set | 타임아웃 (ms) |
| bool | IsStart get | 통신 시작 여부 |
| bool | IsOpen 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
| void | Start | () | 통신 시작 |
| void | Stop | () | 통신 정지 |
| void | MonitorBit_F1 | (int slave, int startAddr, int length) | FC1 코일 모니터링 등록 |
| void | MonitorBit_F2 | (int slave, int startAddr, int length) | FC2 입력 비트 모니터링 |
| void | MonitorWord_F3 | (int slave, int startAddr, int length) | FC3 레지스터 모니터링 |
| void | MonitorWord_F4 | (int slave, int startAddr, int length) | FC4 입력 레지스터 모니터링 |
| void | SetWord | (int slave, string addr, int value) | 워드 주소에 값 쓰기 |
| void | SetBit | (int slave, string addr, bool value) | 비트 주소에 값 쓰기 |
| int? | GetWord | (int slave, string addr) | 워드 주소 값 읽기 |
| bool? | GetBit | (int slave, string addr) | 비트 주소 값 읽기 |
Events
| EventHandler | DeviceOpened | 포트 열림 |
| EventHandler | DeviceClosed | 포트 닫힘 |
public class SlaveRTU
단순화된 Modbus RTU 슬레이브. BitAreas / WordAreas Dictionary로 데이터 영역을 관리.
Properties
| int | Slave get set | 슬레이브 주소. 기본값: 1 |
| string | Port get set | 시리얼 포트 |
| int | Baudrate get set | 통신 속도 |
| Parity | Parity get set | 패리티 |
| int | DataBits get set | 데이터 비트 |
| StopBits | StopBits get set | 정지 비트 |
| bool | IsStart get | 통신 시작 여부 |
| bool | IsOpen get | 포트 열림 여부 |
| Dictionary<int, BitMemory> | BitAreas get | 비트 데이터 영역 (baseAddr → 메모리) |
| Dictionary<int, WordMemory> | WordAreas get | 워드 데이터 영역 (baseAddr → 메모리) |
| object? | Tag get set | 사용자 정의 데이터 |
Methods
| void | Start | () | 슬레이브 시작 |
| void | Stop | () | 슬레이브 정지 |
Events
| EventHandler | DeviceOpened | 포트 열림 |
| EventHandler | DeviceClosed | 포트 닫힘 |
public class MasterTCP
단순화된 Modbus TCP 마스터 (MasterRTU의 TCP 버전). RemoteIP, RemotePort로 연결.
Properties
| string | RemoteIP get set | 원격 서버 IP |
| int | RemotePort get set | 원격 서버 포트 |
| int | Interval get set | 폴링 간격 (ms) |
| int | Timeout get set | 타임아웃 (ms) |
| bool | IsStart get | 통신 시작 여부 |
| bool | IsOpen 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
| int | Slave get set | 슬레이브 주소. 기본값: 1 |
| int | LocalPort get set | 로컬 포트 |
| bool | IsStart get | 슬레이브 시작 여부 |
| Dictionary<int, BitMemory> | BitAreas get | 비트 데이터 영역 |
| Dictionary<int, WordMemory> | WordAreas get | 워드 데이터 영역 |
| object? | Tag get set | 사용자 정의 데이터 |
Methods
| void | Start | () | 슬레이브 시작 |
| void | Stop | () | 슬레이브 정지 |
Events
| EventHandler<EventArgs> | SocketConnected | 클라이언트 연결 수신 |
| EventHandler<EventArgs> | SocketDisconnected | 클라이언트 연결 해제 |
public class Mems
MasterRTU/MasterTCP의 Devices에 저장되는 슬레이브 데이터 컨테이너.
Properties
| Dictionary<string, bool> | Bits get | 비트 값 (주소문자열 → 값) |
| Dictionary<string, int> | Words get | 워드 값 (주소문자열 → 값) |
검색 결과가 없습니다.