Dreamine.IO.Abstractions
Dreamine IO 패키지군에서 공통으로 사용하는 벤더 중립 산업용 I/O 계약 레이어입니다.
이 패키지는 Digital Input, Digital Output, Analog Input, Analog Output 흐름에서 공통으로 사용할 인터페이스와 모델만 정의합니다. Ajin, Comizoa, Fastech 또는 기타 벤더 런타임 DLL은 참조하지 않습니다.
목적
Dreamine.IO.Abstractions는 I/O 계층의 최하위 계약 레이어입니다. 애플리케이션, 샘플, 시뮬레이터, 실제 벤더 어댑터가 이 계약을 공유하되 MIT 패키지 안에 벤더 라이선스 바이너리가 들어오지 않도록 분리합니다.
Application / Sample
↓
Dreamine.IO.Abstractions
↑
Vendor Adapters / Simulators
포함 계약
- I/O Controller 추상화
- Digital Input / Output 채널 추상화
- Digital Input / Output 다점 읽기 계약
- Analog Input / Output 채널 추상화
- 공통 I/O 연결 상태
- Digital / Analog Point 모델
- 공통 I/O Result 모델
- 벤더 중립 연결 옵션
현재 메모
- Digital Input은 단점 읽기와 다점 읽기를 지원합니다.
- Digital Output은 단점 읽기, 다점 읽기, 단점 쓰기, 다점 쓰기를 지원합니다.
- 포인트 번호는 0-base입니다. 예를 들어 channel
0은DI00또는DO00입니다. - A접/B접, debounce, ON delay, OFF delay 같은 FA 현장용 신호 보정 레이어는 아직 구현하지 않았습니다. 이 기능은 특정 벤더 프로토콜 안이 아니라 raw I/O 채널 위에 얹는 벤더 중립 wrapper로 추가하는 방향이 적합합니다.
설계 규칙
- 이 패키지는 벤더 중립으로 유지합니다.
- Ajin AXT, Comizoa, Fastech 또는 기타 벤더 런타임 어셈블리를 참조하지 않습니다.
- 벤더 SDK 소스 파일이나 바이너리를 이 패키지에 복사하지 않습니다.
- 실제 벤더 어댑터는
Dreamine.IO.Ajin,Dreamine.IO.Comizoa,Dreamine.IO.Fastech같은 별도 패키지로 분리합니다. - 런타임 어댑터 사용자는 벤더 소프트웨어를 직접 설치하고 정식 라이선스를 보유해야 합니다.
벤더 런타임 정책
이 패키지는 벤더 런타임 DLL을 포함하지 않습니다. IoProvider enum은 공급사 계열을 식별하기 위한 값일 뿐, Dreamine이 해당 벤더 런타임을 재배포한다는 의미가 아닙니다.
라이선스
MIT License.
구조 다이어그램
classDiagram
class IDeviceChannel {
<<interface>>
+IsOpen bool
+OpenAsync() Task
+CloseAsync() Task
+ReadAsync(int) Task~byte[]~
+WriteAsync(byte[]) Task
+DataReceived event
}
class IProtocolHandler~TReq, TResp~ {
<<interface>>
+BuildRequest(TReq) byte[]
+ParseResponse(byte[]) TResp
+Validate(byte[]) bool
}
class IDeviceScanner {
<<interface>>
+ScanAsync() Task~IEnumerable~DeviceInfo~~
+Ping(string) Task~bool~
}
class DeviceInfo {
+string Name
+string Address
+string Protocol
+bool IsAvailable
}
class IChannelFactory {
<<interface>>
+Create(DeviceInfo) IDeviceChannel
}
IDeviceChannel --> DeviceInfo
IDeviceScanner --> DeviceInfo
IChannelFactory --> IDeviceChannelAPI 문서
타입
\if KO 모듈 및 채널 주소와 선택적 공학 단위로 식별되는 아날로그 I/O 지점을 나타냅니다. \endif \if EN Represents an analog I/O point identified by module and channel address with an optional engineering unit. \endif
\if KO 공급자 독립적인 아날로그 입력 읽기 작업을 정의합니다. \endif \if EN Defines provider-neutral analog-input read operations. \endif
\if KO 공급자 독립적인 아날로그 출력 읽기 및 쓰기 작업을 정의합니다. \endif \if EN Defines provider-neutral analog-output read and write operations. \endif
\if KO 공급자 독립적인 디지털 입력 읽기 작업을 정의합니다. \endif \if EN Defines provider-neutral digital-input read operations. \endif
\if KO 공급자 독립적인 디지털 출력 읽기 및 쓰기 작업을 정의합니다. \endif \if EN Defines provider-neutral digital-output read and write operations. \endif
\if KO 연결 생명 주기와 디지털·아날로그 채널을 제공하는 공급자 독립 산업용 I/O 컨트롤러를 정의합니다. \endif \if EN Defines a provider-neutral industrial I/O controller with connection lifecycle and digital and analog channels. \endif
\if KO 공급자 독립적인 산업용 I/O 연결 옵션을 나타냅니다. \endif \if EN Represents provider-neutral industrial I/O connection options. \endif
\if KO 산업용 I/O 컨트롤러의 현재 연결 상태를 나타냅니다. \endif \if EN Represents the current industrial I/O controller connection state. \endif
\if KO 모듈 및 채널 주소로 식별되는 디지털 I/O 지점을 나타냅니다. \endif \if EN Represents a digital I/O point identified by module and channel address. \endif
\if KO 런타임 어셈블리를 참조하지 않고 지원되는 산업용 I/O 공급자 제품군을 식별합니다. \endif \if EN Identifies a supported industrial I/O provider family without referencing its runtime assemblies. \endif
\if KO 성공 여부와 선택적 오류 정보를 포함하는 산업용 I/O 작업 결과를 나타냅니다. \endif \if EN Represents an industrial I/O operation result containing success state and optional error information. \endif
\if KO 형식화된 값을 포함하는 산업용 I/O 작업 결과를 나타냅니다. \endif \if EN Represents an industrial I/O operation result containing a typed value. \endif
AnalogIoPoint
\if KO 모듈 및 채널 주소와 선택적 공학 단위로 식별되는 아날로그 I/O 지점을 나타냅니다. \endif \if EN Represents an analog I/O point identified by module and channel address with an optional engineering unit. \endif
Module— \if KO 모듈 인덱스입니다. \endif \if EN The module index. \endifChannel— \if KO 채널 인덱스입니다. \endif \if EN The channel index. \endifName— \if KO 선택적 논리 지점 이름입니다. \endif \if EN The optional logical point name. \endifUnit— \if KO 선택적 공학 단위입니다. \endif \if EN The optional engineering unit. \endif\if KO 채널 인덱스입니다. \endif \if EN The channel index. \endif
\if KO 모듈 인덱스입니다. \endif \if EN The module index. \endif
\if KO 선택적 논리 지점 이름입니다. \endif \if EN The optional logical point name. \endif
\if KO 선택적 공학 단위입니다. \endif \if EN The optional engineering unit. \endif
IAnalogInputChannel
\if KO 단일 아날로그 입력 지점을 비동기적으로 읽습니다. \endif \if EN Asynchronously reads one analog-input point. \endif
point— \if KO 읽을 아날로그 입력 지점입니다. \endif \if EN The analog-input point to read. \endifcancellationToken— \if KO 읽기 취소 토큰입니다. \endif \if EN A token used to cancel the read. \endif반환: \if KO 측정값을 포함하는 I/O 결과입니다. \endif \if EN An I/O result containing the measured value. \endif
\if KO 여러 아날로그 입력 지점을 비동기적으로 읽습니다. \endif \if EN Asynchronously reads multiple analog-input points. \endif
points— \if KO 순서대로 읽을 지점 목록입니다. \endif \if EN The ordered list of points to read. \endifcancellationToken— \if KO 읽기 취소 토큰입니다. \endif \if EN A token used to cancel the read. \endif반환: \if KO 요청 순서의 측정값 배열을 포함하는 결과입니다. \endif \if EN A result containing measured values in request order. \endif
IAnalogOutputChannel
\if KO 단일 아날로그 출력 지점의 현재 값을 읽습니다. \endif \if EN Reads the current value of one analog-output point. \endif
point— \if KO 읽을 출력 지점입니다. \endif \if EN The output point to read. \endifcancellationToken— \if KO 읽기 취소 토큰입니다. \endif \if EN A token used to cancel the read. \endif반환: \if KO 현재 출력 값을 포함하는 결과입니다. \endif \if EN A result containing the current output value. \endif
\if KO 단일 아날로그 출력 지점에 값을 씁니다. \endif \if EN Writes a value to one analog-output point. \endif
point— \if KO 쓸 출력 지점입니다. \endif \if EN The output point to write. \endifvalue— \if KO 출력할 값입니다. \endif \if EN The value to output. \endifcancellationToken— \if KO 쓰기 취소 토큰입니다. \endif \if EN A token used to cancel the write. \endif반환: \if KO 쓰기 작업 결과입니다. \endif \if EN The write-operation result. \endif
\if KO 여러 아날로그 출력 지점에 값을 씁니다. \endif \if EN Writes values to multiple analog-output points. \endif
values— \if KO 지점별 출력 값 사전입니다. \endif \if EN The output values keyed by point. \endifcancellationToken— \if KO 쓰기 취소 토큰입니다. \endif \if EN A token used to cancel the write. \endif반환: \if KO 일괄 쓰기 결과입니다. \endif \if EN The batch-write result. \endif
IDigitalInputChannel
\if KO 단일 디지털 입력 지점을 비동기적으로 읽습니다. \endif \if EN Asynchronously reads one digital-input point. \endif
point— \if KO 읽을 디지털 입력 지점입니다. \endif \if EN The digital-input point to read. \endifcancellationToken— \if KO 읽기 취소 토큰입니다. \endif \if EN A token used to cancel the read. \endif반환: \if KO 입력 상태를 포함하는 결과입니다. \endif \if EN A result containing the input state. \endif
\if KO 여러 디지털 입력 지점을 비동기적으로 읽습니다. \endif \if EN Asynchronously reads multiple digital-input points. \endif
points— \if KO 순서대로 읽을 지점 목록입니다. \endif \if EN The ordered list of points to read. \endifcancellationToken— \if KO 읽기 취소 토큰입니다. \endif \if EN A token used to cancel the read. \endif반환: \if KO 요청 순서의 입력 상태 배열을 포함하는 결과입니다. \endif \if EN A result containing input states in request order. \endif
IDigitalOutputChannel
\if KO 단일 디지털 출력 지점의 현재 상태를 읽습니다. \endif \if EN Reads the current state of one digital-output point. \endif
point— \if KO 읽을 출력 지점입니다. \endif \if EN The output point to read. \endifcancellationToken— \if KO 읽기 취소 토큰입니다. \endif \if EN A token used to cancel the read. \endif반환: \if KO 현재 출력 상태를 포함하는 결과입니다. \endif \if EN A result containing the current output state. \endif
\if KO 여러 디지털 출력 지점의 현재 상태를 읽습니다. \endif \if EN Reads the current states of multiple digital-output points. \endif
points— \if KO 순서대로 읽을 출력 지점 목록입니다. \endif \if EN The ordered list of output points to read. \endifcancellationToken— \if KO 읽기 취소 토큰입니다. \endif \if EN A token used to cancel the read. \endif반환: \if KO 요청 순서의 출력 상태 배열을 포함하는 결과입니다. \endif \if EN A result containing output states in request order. \endif
\if KO 단일 디지털 출력 지점에 상태를 씁니다. \endif \if EN Writes a state to one digital-output point. \endif
point— \if KO 쓸 출력 지점입니다. \endif \if EN The output point to write. \endifvalue— \if KO 출력할 상태입니다. \endif \if EN The state to output. \endifcancellationToken— \if KO 쓰기 취소 토큰입니다. \endif \if EN A token used to cancel the write. \endif반환: \if KO 쓰기 결과입니다. \endif \if EN The write result. \endif
\if KO 여러 디지털 출력 지점에 상태를 씁니다. \endif \if EN Writes states to multiple digital-output points. \endif
values— \if KO 지점별 출력 상태 사전입니다. \endif \if EN The output states keyed by point. \endifcancellationToken— \if KO 쓰기 취소 토큰입니다. \endif \if EN A token used to cancel the write. \endif반환: \if KO 일괄 쓰기 결과입니다. \endif \if EN The batch-write result. \endif
IIoController
\if KO I/O 컨트롤러에 비동기적으로 연결합니다. \endif \if EN Asynchronously connects to the I/O controller. \endif
cancellationToken— \if KO 연결 취소 토큰입니다. \endif \if EN A token used to cancel connection. \endif반환: \if KO 연결 작업 결과입니다. \endif \if EN The connection-operation result. \endif
\if KO I/O 컨트롤러 연결을 비동기적으로 해제합니다. \endif \if EN Asynchronously disconnects from the I/O controller. \endif
cancellationToken— \if KO 연결 해제 취소 토큰입니다. \endif \if EN A token used to cancel disconnection. \endif반환: \if KO 연결 해제 작업 결과입니다. \endif \if EN The disconnection-operation result. \endif
\if KO 아날로그 입력 채널을 가져옵니다. \endif \if EN Gets the analog-input channel. \endif
\if KO 아날로그 출력 채널을 가져옵니다. \endif \if EN Gets the analog-output channel. \endif
\if KO 디지털 입력 채널을 가져옵니다. \endif \if EN Gets the digital-input channel. \endif
\if KO 디지털 출력 채널을 가져옵니다. \endif \if EN Gets the digital-output channel. \endif
\if KO 현재 I/O 연결 상태를 가져옵니다. \endif \if EN Gets the current I/O connection state. \endif
\if KO I/O 연결 상태가 변경되었을 때 발생합니다. \endif \if EN Occurs when the I/O connection state changes. \endif
IoConnectionOptions
\if KO 보드, 장치 또는 컨트롤러 인덱스를 가져오거나 설정합니다. \endif \if EN Gets or sets the board, device, or controller index. \endif
\if KO 선택적 논리 연결 이름을 가져오거나 설정합니다. \endif \if EN Gets or sets the optional logical connection name. \endif
\if KO 구체 어댑터만 해석해야 하는 공급자별 옵션 사전을 가져옵니다. \endif \if EN Gets provider-specific options interpreted only by the concrete adapter. \endif
\if KO I/O 공급자 제품군을 가져오거나 설정합니다. \endif \if EN Gets or sets the I/O provider family. \endif
IoConnectionState
\if KO 컨트롤러가 연결되어 있습니다. \endif \if EN The controller is connected. \endif
\if KO 컨트롤러에 연결 중입니다. \endif \if EN The controller is connecting. \endif
\if KO 컨트롤러 연결이 끊겨 있습니다. \endif \if EN The controller is disconnected. \endif
\if KO 컨트롤러 연결을 해제하는 중입니다. \endif \if EN The controller is disconnecting. \endif
\if KO 컨트롤러 연결이 오류 상태입니다. \endif \if EN The controller connection is faulted. \endif
IoPoint
\if KO 모듈 및 채널 주소로 식별되는 디지털 I/O 지점을 나타냅니다. \endif \if EN Represents a digital I/O point identified by module and channel address. \endif
Module— \if KO 모듈 인덱스입니다. \endif \if EN The module index. \endifChannel— \if KO 채널 인덱스입니다. \endif \if EN The channel index. \endifName— \if KO 선택적 논리 지점 이름입니다. \endif \if EN The optional logical point name. \endif\if KO 채널 인덱스입니다. \endif \if EN The channel index. \endif
\if KO 모듈 인덱스입니다. \endif \if EN The module index. \endif
\if KO 선택적 논리 지점 이름입니다. \endif \if EN The optional logical point name. \endif
IoProvider
\if KO Ajinextek AXT 기반 I/O 구현입니다. \endif \if EN An Ajinextek AXT-based I/O implementation. \endif
\if KO Comizoa 기반 I/O 구현입니다. \endif \if EN A Comizoa-based I/O implementation. \endif
\if KO Fastech 기반 I/O 구현입니다. \endif \if EN A Fastech-based I/O implementation. \endif
\if KO 공급자 독립 또는 인메모리 I/O 구현입니다. \endif \if EN A provider-neutral or in-memory I/O implementation. \endif
IoResult
\if KO 성공 상태와 선택적 오류 정보로 새 결과를 초기화합니다. \endif \if EN Initializes a new result with success state and optional error information. \endif
isSuccess— \if KO 작업 성공 여부입니다. \endif \if EN Whether the operation succeeded. \endiferrorCode— \if KO 선택적 장치 또는 어댑터 오류 코드입니다. \endif \if EN The optional device or adapter error code. \endifmessage— \if KO 선택적 결과 메시지입니다. \endif \if EN The optional result message. \endif\if KO 메시지와 선택적 오류 코드를 포함하는 실패 I/O 결과를 만듭니다. \endif \if EN Creates a failed I/O result with a message and optional error code. \endif
message— \if KO 실패 메시지입니다. \endif \if EN The failure message. \endiferrorCode— \if KO 선택적 오류 코드입니다. \endif \if EN The optional error code. \endif반환: \if KO 실패 I/O 결과입니다. \endif \if EN A failed I/O result. \endif
\if KO 값이 없는 성공 I/O 결과를 만듭니다. \endif \if EN Creates a successful I/O result without a value. \endif
반환: \if KO 성공 I/O 결과입니다. \endif \if EN A successful I/O result. \endif
\if KO 선택적 장치 또는 어댑터 오류 코드를 가져옵니다. \endif \if EN Gets the optional device or adapter error code. \endif
\if KO 작업 성공 여부를 가져옵니다. \endif \if EN Gets whether the operation succeeded. \endif
\if KO 선택적 결과 메시지를 가져옵니다. \endif \if EN Gets the optional result message. \endif
IoResult`1
\if KO 성공 상태, 값 및 선택적 오류 정보로 새 형식화된 결과를 초기화합니다. \endif \if EN Initializes a typed result with success state, value, and optional error information. \endif
isSuccess— \if KO 작업 성공 여부입니다. \endif \if EN Whether the operation succeeded. \endifvalue— \if KO 선택적 결과 값입니다. \endif \if EN The optional result value. \endiferrorCode— \if KO 선택적 오류 코드입니다. \endif \if EN The optional error code. \endifmessage— \if KO 선택적 결과 메시지입니다. \endif \if EN The optional result message. \endif\if KO 값 없이 메시지와 선택적 오류 코드를 포함하는 실패 결과를 만듭니다. \endif \if EN Creates a failed result without a value and with a message and optional error code. \endif
message— \if KO 실패 메시지입니다. \endif \if EN The failure message. \endiferrorCode— \if KO 선택적 오류 코드입니다. \endif \if EN The optional error code. \endif반환: \if KO 형식화된 실패 결과입니다. \endif \if EN A typed failed result. \endif
\if KO 지정한 값을 포함하는 성공 I/O 결과를 만듭니다. \endif \if EN Creates a successful I/O result containing the specified value. \endif
value— \if KO 결과 값입니다. \endif \if EN The result value. \endif반환: \if KO 값을 포함하는 성공 결과입니다. \endif \if EN A successful result containing the value. \endif
\if KO 결과 값을 가져옵니다. \endif \if EN Gets the result value. \endif