iconDreamine
← 목록

Dreamine.IO.Abstractions

stablev1.0.1

I/O 디바이스 공통 추상화 — IIoDevice, IIoChannel 인터페이스.

#abstractions#analog-io#digital-io#dreamine#industrial-automation#interfaces#io
TFM net8.0Package Dreamine.IO.Abstractions

Dreamine.IO.Abstractions

English documentation

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 0DI00 또는 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 --> IDeviceChannel

API 문서

타입

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

IAnalogInputChannel

\if KO 공급자 독립적인 아날로그 입력 읽기 작업을 정의합니다. \endif \if EN Defines provider-neutral analog-input read operations. \endif

IAnalogOutputChannel

\if KO 공급자 독립적인 아날로그 출력 읽기 및 쓰기 작업을 정의합니다. \endif \if EN Defines provider-neutral analog-output read and write operations. \endif

IDigitalInputChannel

\if KO 공급자 독립적인 디지털 입력 읽기 작업을 정의합니다. \endif \if EN Defines provider-neutral digital-input read operations. \endif

IDigitalOutputChannel

\if KO 공급자 독립적인 디지털 출력 읽기 및 쓰기 작업을 정의합니다. \endif \if EN Defines provider-neutral digital-output read and write operations. \endif

IIoController

\if KO 연결 생명 주기와 디지털·아날로그 채널을 제공하는 공급자 독립 산업용 I/O 컨트롤러를 정의합니다. \endif \if EN Defines a provider-neutral industrial I/O controller with connection lifecycle and digital and analog channels. \endif

IoConnectionOptions

\if KO 공급자 독립적인 산업용 I/O 연결 옵션을 나타냅니다. \endif \if EN Represents provider-neutral industrial I/O connection options. \endif

IoConnectionState

\if KO 산업용 I/O 컨트롤러의 현재 연결 상태를 나타냅니다. \endif \if EN Represents the current industrial I/O controller connection state. \endif

IoPoint

\if KO 모듈 및 채널 주소로 식별되는 디지털 I/O 지점을 나타냅니다. \endif \if EN Represents a digital I/O point identified by module and channel address. \endif

IoProvider

\if KO 런타임 어셈블리를 참조하지 않고 지원되는 산업용 I/O 공급자 제품군을 식별합니다. \endif \if EN Identifies a supported industrial I/O provider family without referencing its runtime assemblies. \endif

IoResult

\if KO 성공 여부와 선택적 오류 정보를 포함하는 산업용 I/O 작업 결과를 나타냅니다. \endif \if EN Represents an industrial I/O operation result containing success state and optional error information. \endif

IoResult`1

\if KO 형식화된 값을 포함하는 산업용 I/O 작업 결과를 나타냅니다. \endif \if EN Represents an industrial I/O operation result containing a typed value. \endif

AnalogIoPoint

#ctor Method

\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. \endif
Channel— \if KO 채널 인덱스입니다. \endif \if EN The channel index. \endif
Name— \if KO 선택적 논리 지점 이름입니다. \endif \if EN The optional logical point name. \endif
Unit— \if KO 선택적 공학 단위입니다. \endif \if EN The optional engineering unit. \endif
Channel Property

\if KO 채널 인덱스입니다. \endif \if EN The channel index. \endif

Module Property

\if KO 모듈 인덱스입니다. \endif \if EN The module index. \endif

Name Property

\if KO 선택적 논리 지점 이름입니다. \endif \if EN The optional logical point name. \endif

Unit Property

\if KO 선택적 공학 단위입니다. \endif \if EN The optional engineering unit. \endif

IAnalogInputChannel

ReadAsync Method

\if KO 단일 아날로그 입력 지점을 비동기적으로 읽습니다. \endif \if EN Asynchronously reads one analog-input point. \endif

point— \if KO 읽을 아날로그 입력 지점입니다. \endif \if EN The analog-input point to read. \endif
cancellationToken— \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

ReadAsync Method

\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. \endif
cancellationToken— \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

ReadAsync Method

\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. \endif
cancellationToken— \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

WriteAsync Method

\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. \endif
value— \if KO 출력할 값입니다. \endif \if EN The value to output. \endif
cancellationToken— \if KO 쓰기 취소 토큰입니다. \endif \if EN A token used to cancel the write. \endif

반환: \if KO 쓰기 작업 결과입니다. \endif \if EN The write-operation result. \endif

WriteAsync Method

\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. \endif
cancellationToken— \if KO 쓰기 취소 토큰입니다. \endif \if EN A token used to cancel the write. \endif

반환: \if KO 일괄 쓰기 결과입니다. \endif \if EN The batch-write result. \endif

IDigitalInputChannel

ReadAsync Method

\if KO 단일 디지털 입력 지점을 비동기적으로 읽습니다. \endif \if EN Asynchronously reads one digital-input point. \endif

point— \if KO 읽을 디지털 입력 지점입니다. \endif \if EN The digital-input point to read. \endif
cancellationToken— \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

ReadAsync Method

\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. \endif
cancellationToken— \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

ReadAsync Method

\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. \endif
cancellationToken— \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

ReadAsync Method

\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. \endif
cancellationToken— \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

WriteAsync Method

\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. \endif
value— \if KO 출력할 상태입니다. \endif \if EN The state to output. \endif
cancellationToken— \if KO 쓰기 취소 토큰입니다. \endif \if EN A token used to cancel the write. \endif

반환: \if KO 쓰기 결과입니다. \endif \if EN The write result. \endif

WriteAsync Method

\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. \endif
cancellationToken— \if KO 쓰기 취소 토큰입니다. \endif \if EN A token used to cancel the write. \endif

반환: \if KO 일괄 쓰기 결과입니다. \endif \if EN The batch-write result. \endif

IIoController

ConnectAsync Method

\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

DisconnectAsync Method

\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

AnalogInputs Property

\if KO 아날로그 입력 채널을 가져옵니다. \endif \if EN Gets the analog-input channel. \endif

AnalogOutputs Property

\if KO 아날로그 출력 채널을 가져옵니다. \endif \if EN Gets the analog-output channel. \endif

DigitalInputs Property

\if KO 디지털 입력 채널을 가져옵니다. \endif \if EN Gets the digital-input channel. \endif

DigitalOutputs Property

\if KO 디지털 출력 채널을 가져옵니다. \endif \if EN Gets the digital-output channel. \endif

State Property

\if KO 현재 I/O 연결 상태를 가져옵니다. \endif \if EN Gets the current I/O connection state. \endif

StateChanged Event

\if KO I/O 연결 상태가 변경되었을 때 발생합니다. \endif \if EN Occurs when the I/O connection state changes. \endif

IoConnectionOptions

DeviceIndex Property

\if KO 보드, 장치 또는 컨트롤러 인덱스를 가져오거나 설정합니다. \endif \if EN Gets or sets the board, device, or controller index. \endif

Name Property

\if KO 선택적 논리 연결 이름을 가져오거나 설정합니다. \endif \if EN Gets or sets the optional logical connection name. \endif

Properties Property

\if KO 구체 어댑터만 해석해야 하는 공급자별 옵션 사전을 가져옵니다. \endif \if EN Gets provider-specific options interpreted only by the concrete adapter. \endif

Provider Property

\if KO I/O 공급자 제품군을 가져오거나 설정합니다. \endif \if EN Gets or sets the I/O provider family. \endif

IoConnectionState

Connected Field

\if KO 컨트롤러가 연결되어 있습니다. \endif \if EN The controller is connected. \endif

Connecting Field

\if KO 컨트롤러에 연결 중입니다. \endif \if EN The controller is connecting. \endif

Disconnected Field

\if KO 컨트롤러 연결이 끊겨 있습니다. \endif \if EN The controller is disconnected. \endif

Disconnecting Field

\if KO 컨트롤러 연결을 해제하는 중입니다. \endif \if EN The controller is disconnecting. \endif

Faulted Field

\if KO 컨트롤러 연결이 오류 상태입니다. \endif \if EN The controller connection is faulted. \endif

IoPoint

#ctor Method

\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. \endif
Channel— \if KO 채널 인덱스입니다. \endif \if EN The channel index. \endif
Name— \if KO 선택적 논리 지점 이름입니다. \endif \if EN The optional logical point name. \endif
Channel Property

\if KO 채널 인덱스입니다. \endif \if EN The channel index. \endif

Module Property

\if KO 모듈 인덱스입니다. \endif \if EN The module index. \endif

Name Property

\if KO 선택적 논리 지점 이름입니다. \endif \if EN The optional logical point name. \endif

IoProvider

Ajin Field

\if KO Ajinextek AXT 기반 I/O 구현입니다. \endif \if EN An Ajinextek AXT-based I/O implementation. \endif

Comizoa Field

\if KO Comizoa 기반 I/O 구현입니다. \endif \if EN A Comizoa-based I/O implementation. \endif

Fastech Field

\if KO Fastech 기반 I/O 구현입니다. \endif \if EN A Fastech-based I/O implementation. \endif

Generic Field

\if KO 공급자 독립 또는 인메모리 I/O 구현입니다. \endif \if EN A provider-neutral or in-memory I/O implementation. \endif

IoResult

#ctor Method

\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. \endif
errorCode— \if KO 선택적 장치 또는 어댑터 오류 코드입니다. \endif \if EN The optional device or adapter error code. \endif
message— \if KO 선택적 결과 메시지입니다. \endif \if EN The optional result message. \endif
Failure Method

\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. \endif
errorCode— \if KO 선택적 오류 코드입니다. \endif \if EN The optional error code. \endif

반환: \if KO 실패 I/O 결과입니다. \endif \if EN A failed I/O result. \endif

Success Method

\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

ErrorCode Property

\if KO 선택적 장치 또는 어댑터 오류 코드를 가져옵니다. \endif \if EN Gets the optional device or adapter error code. \endif

IsSuccess Property

\if KO 작업 성공 여부를 가져옵니다. \endif \if EN Gets whether the operation succeeded. \endif

Message Property

\if KO 선택적 결과 메시지를 가져옵니다. \endif \if EN Gets the optional result message. \endif

IoResult`1

#ctor Method

\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. \endif
value— \if KO 선택적 결과 값입니다. \endif \if EN The optional result value. \endif
errorCode— \if KO 선택적 오류 코드입니다. \endif \if EN The optional error code. \endif
message— \if KO 선택적 결과 메시지입니다. \endif \if EN The optional result message. \endif
Failure Method

\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. \endif
errorCode— \if KO 선택적 오류 코드입니다. \endif \if EN The optional error code. \endif

반환: \if KO 형식화된 실패 결과입니다. \endif \if EN A typed failed result. \endif

Success Method

\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

Value Property

\if KO 결과 값을 가져옵니다. \endif \if EN Gets the result value. \endif