Dreamine.PLC.Core 1.0.1
Dreamine.PLC.Core 산업 자동화 및 I/O 기능을 제공합니다.
로딩중...
검색중...
일치하는것 없음
Dreamine.PLC.Core.Clients.PlcClientBase 클래스 참조abstract

더 자세히 ...

Dreamine.PLC.Core.Clients.PlcClientBase에 대한 상속 다이어그램 :
Dreamine.PLC.Core.Clients.PlcClientBase에 대한 협력 다이어그램:

Public 멤버 함수

async Task< PlcResult > ConnectAsync (CancellationToken cancellationToken=default)
async Task< PlcResult > DisconnectAsync (CancellationToken cancellationToken=default)
async Task< PlcResult< bool[]> > ReadBitsAsync (PlcAddress address, int count, CancellationToken cancellationToken=default)
async Task< PlcResult< short[]> > ReadWordsAsync (PlcAddress address, int count, CancellationToken cancellationToken=default)
async Task< PlcResult > WriteBitsAsync (PlcAddress address, IReadOnlyList< bool > values, CancellationToken cancellationToken=default)
async Task< PlcResult > WriteWordsAsync (PlcAddress address, IReadOnlyList< short > values, CancellationToken cancellationToken=default)
virtual async ValueTask DisposeAsync ()

Protected 멤버 함수

Task< PlcResult > ConnectCoreAsync (CancellationToken cancellationToken)
Task< PlcResult > DisconnectCoreAsync (CancellationToken cancellationToken)
Task< PlcResult< bool[]> > ReadBitsCoreAsync (PlcAddress address, int count, CancellationToken cancellationToken)
Task< PlcResult< short[]> > ReadWordsCoreAsync (PlcAddress address, int count, CancellationToken cancellationToken)
Task< PlcResult > WriteBitsCoreAsync (PlcAddress address, IReadOnlyList< bool > values, CancellationToken cancellationToken)
Task< PlcResult > WriteWordsCoreAsync (PlcAddress address, IReadOnlyList< short > values, CancellationToken cancellationToken)
void SetState (PlcConnectionState state)

속성

PlcConnectionState State = PlcConnectionState.Disconnected [get, private set]

이벤트

EventHandler< PlcConnectionState >? StateChanged

Private 멤버 함수

void ThrowIfDisposed ()

정적 Private 멤버 함수

static PlcResult ValidateReadRequest (PlcAddress address, int count)
static PlcResult ValidateWriteBitRequest (PlcAddress address, IReadOnlyList< bool > values)
static PlcResult ValidateWriteWordRequest (PlcAddress address, IReadOnlyList< short > values)

Private 속성

readonly AsyncLock _syncLock = new()
volatile bool _disposed
int _disposeGuard

상세한 설명

PLC 클라이언트의 공통 상태, 검증, 오류 처리 및 동기화를 구현합니다.

PlcClientBase.cs 파일의 18 번째 라인에서 정의되었습니다.

멤버 함수 문서화

◆ ConnectAsync()

async Task< PlcResult > Dreamine.PLC.Core.Clients.PlcClientBase.ConnectAsync ( CancellationToken cancellationToken = default)
inline

잠금을 획득하고 구체 전송에 연결하며 상태를 갱신합니다.

매개변수
cancellationToken연결 및 잠금 대기 취소 토큰입니다.
반환값
연결 결과입니다.
예외
OperationCanceledException잠금을 획득하기 전에 토큰이 취소된 경우 발생합니다.
ObjectDisposedException클라이언트가 이미 해제된 경우 발생합니다.

PlcClientBase.cs 파일의 108 번째 라인에서 정의되었습니다.

109 {
110 using (await _syncLock.LockAsync(cancellationToken).ConfigureAwait(false))
111 {
112 ThrowIfDisposed();
113
114 if (State == PlcConnectionState.Connected)
115 {
116 return PlcResult.Success();
117 }
118
119 SetState(PlcConnectionState.Connecting);
120
121 try
122 {
123 var result = await ConnectCoreAsync(cancellationToken).ConfigureAwait(false);
124
125 SetState(result.IsSuccess
126 ? PlcConnectionState.Connected
127 : PlcConnectionState.Faulted);
128
129 return result;
130 }
131 catch (OperationCanceledException ex)
132 {
133 SetState(PlcConnectionState.Disconnected);
134 return PlcResult.Failure(ex.Message);
135 }
136 catch (Exception ex)
137 {
138 SetState(PlcConnectionState.Faulted);
139 return PlcResult.Failure(ex.Message);
140 }
141 }
142 }

다음을 참조함 : _syncLock, ConnectCoreAsync(), SetState(), State, ThrowIfDisposed().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ ConnectCoreAsync()

Task< PlcResult > Dreamine.PLC.Core.Clients.PlcClientBase.ConnectCoreAsync ( CancellationToken cancellationToken)
abstractprotected

구체 PLC 전송에 연결합니다.

매개변수
cancellationToken취소 토큰입니다.
반환값
연결 결과입니다.

다음에 의해서 참조됨 : ConnectAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ DisconnectAsync()

async Task< PlcResult > Dreamine.PLC.Core.Clients.PlcClientBase.DisconnectAsync ( CancellationToken cancellationToken = default)
inline

잠금을 획득하고 구체 전송 연결을 해제하며 상태를 갱신합니다.

매개변수
cancellationToken연결 해제 및 잠금 대기 취소 토큰입니다.
반환값
연결 해제 결과입니다.
예외
OperationCanceledException잠금을 획득하기 전에 토큰이 취소된 경우 발생합니다.

PlcClientBase.cs 파일의 176 번째 라인에서 정의되었습니다.

177 {
178 using (await _syncLock.LockAsync(cancellationToken).ConfigureAwait(false))
179 {
180 if (_disposed || State == PlcConnectionState.Disconnected)
181 {
182 return PlcResult.Success();
183 }
184
185 var previousState = State;
186 SetState(PlcConnectionState.Disconnecting);
187
188 try
189 {
190 var result = await DisconnectCoreAsync(cancellationToken).ConfigureAwait(false);
191
192 SetState(PlcConnectionState.Disconnected);
193 return result;
194 }
195 catch (OperationCanceledException ex)
196 {
197 SetState(previousState);
198 return PlcResult.Failure(ex.Message);
199 }
200 catch (Exception ex)
201 {
202 SetState(PlcConnectionState.Faulted);
203 return PlcResult.Failure(ex.Message);
204 }
205 }
206 }

다음을 참조함 : _disposed, _syncLock, DisconnectCoreAsync(), SetState(), State.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ DisconnectCoreAsync()

Task< PlcResult > Dreamine.PLC.Core.Clients.PlcClientBase.DisconnectCoreAsync ( CancellationToken cancellationToken)
abstractprotected

구체 PLC 전송 연결을 해제합니다.

매개변수
cancellationToken취소 토큰입니다.
반환값
연결 해제 결과입니다.

다음에 의해서 참조됨 : DisconnectAsync(), DisposeAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ DisposeAsync()

virtual async ValueTask Dreamine.PLC.Core.Clients.PlcClientBase.DisposeAsync ( )
inlinevirtual

동시 호출을 차단하고 구체 전송 연결을 최선 노력으로 해제합니다.

반환값
비동기 해제 작업입니다.

PlcClientBase.cs 파일의 540 번째 라인에서 정의되었습니다.

541 {
542 if (Interlocked.CompareExchange(ref _disposeGuard, 1, 0) != 0)
543 {
544 return;
545 }
546
547 // Set _disposed before disconnecting so ThrowIfDisposed blocks concurrent callers immediately.
548 // DisconnectAsync checks _disposed and would short-circuit, so we disconnect directly here.
549 _disposed = true;
550
551 try
552 {
553 using (await _syncLock.LockAsync(CancellationToken.None).ConfigureAwait(false))
554 {
555 if (State is not (PlcConnectionState.Disconnected or PlcConnectionState.Disconnecting))
556 {
557 SetState(PlcConnectionState.Disconnecting);
558
559 try
560 {
561 await DisconnectCoreAsync(CancellationToken.None).ConfigureAwait(false);
562 }
563 catch
564 {
565 // Ignore disconnect errors during disposal.
566 }
567
568 SetState(PlcConnectionState.Disconnected);
569 }
570 }
571 }
572 catch
573 {
574 // Ignore lock acquisition errors during disposal.
575 }
576
577 GC.SuppressFinalize(this);
578 }

다음을 참조함 : _disposed, _disposeGuard, _syncLock, DisconnectCoreAsync(), SetState(), State.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ ReadBitsAsync()

async Task< PlcResult< bool[]> > Dreamine.PLC.Core.Clients.PlcClientBase.ReadBitsAsync ( PlcAddress address,
int count,
CancellationToken cancellationToken = default )
inline

요청과 연결 상태를 검증한 뒤 구체 전송에서 비트를 읽습니다.

매개변수
address시작 주소입니다.
count읽을 비트 수입니다.
cancellationToken읽기 취소 토큰입니다.
반환값
비트 읽기 결과입니다.
예외
ObjectDisposedException클라이언트가 해제된 경우 발생합니다.

PlcClientBase.cs 파일의 254 번째 라인에서 정의되었습니다.

258 {
259 ThrowIfDisposed();
260
261 var validationResult = ValidateReadRequest(address, count);
262 if (!validationResult.IsSuccess)
263 {
264 return PlcResult<bool[]>.Failure(validationResult.Message ?? "Invalid PLC bit read request.", validationResult.ErrorCode);
265 }
266
267 if (State != PlcConnectionState.Connected)
268 {
269 return PlcResult<bool[]>.Failure("The PLC client is not connected.");
270 }
271
272 try
273 {
274 return await ReadBitsCoreAsync(address, count, cancellationToken).ConfigureAwait(false);
275 }
276 catch (OperationCanceledException ex)
277 {
278 return PlcResult<bool[]>.Failure(ex.Message);
279 }
280 catch (Exception ex)
281 {
282 SetState(PlcConnectionState.Faulted);
283 return PlcResult<bool[]>.Failure(ex.Message);
284 }
285 }

다음을 참조함 : ReadBitsCoreAsync(), SetState(), State, ThrowIfDisposed(), ValidateReadRequest().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ ReadBitsCoreAsync()

Task< PlcResult< bool[]> > Dreamine.PLC.Core.Clients.PlcClientBase.ReadBitsCoreAsync ( PlcAddress address,
int count,
CancellationToken cancellationToken )
abstractprotected

구체 PLC 전송에서 비트를 읽습니다.

매개변수
address시작 주소입니다.
count비트 수입니다.
cancellationToken취소 토큰입니다.
반환값
비트 결과입니다.

다음에 의해서 참조됨 : ReadBitsAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ReadWordsAsync()

async Task< PlcResult< short[]> > Dreamine.PLC.Core.Clients.PlcClientBase.ReadWordsAsync ( PlcAddress address,
int count,
CancellationToken cancellationToken = default )
inline

요청과 연결 상태를 검증한 뒤 구체 전송에서 워드를 읽습니다.

매개변수
address시작 주소입니다.
count읽을 워드 수입니다.
cancellationToken읽기 취소 토큰입니다.
반환값
워드 읽기 결과입니다.
예외
ObjectDisposedException클라이언트가 해제된 경우 발생합니다.

PlcClientBase.cs 파일의 333 번째 라인에서 정의되었습니다.

337 {
338 ThrowIfDisposed();
339
340 var validationResult = ValidateReadRequest(address, count);
341 if (!validationResult.IsSuccess)
342 {
343 return PlcResult<short[]>.Failure(validationResult.Message ?? "Invalid PLC word read request.", validationResult.ErrorCode);
344 }
345
346 if (State != PlcConnectionState.Connected)
347 {
348 return PlcResult<short[]>.Failure("The PLC client is not connected.");
349 }
350
351 try
352 {
353 return await ReadWordsCoreAsync(address, count, cancellationToken).ConfigureAwait(false);
354 }
355 catch (OperationCanceledException ex)
356 {
357 return PlcResult<short[]>.Failure(ex.Message);
358 }
359 catch (Exception ex)
360 {
361 SetState(PlcConnectionState.Faulted);
362 return PlcResult<short[]>.Failure(ex.Message);
363 }
364 }

다음을 참조함 : ReadWordsCoreAsync(), SetState(), State, ThrowIfDisposed(), ValidateReadRequest().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ ReadWordsCoreAsync()

Task< PlcResult< short[]> > Dreamine.PLC.Core.Clients.PlcClientBase.ReadWordsCoreAsync ( PlcAddress address,
int count,
CancellationToken cancellationToken )
abstractprotected

구체 PLC 전송에서 워드를 읽습니다.

매개변수
address시작 주소입니다.
count워드 수입니다.
cancellationToken취소 토큰입니다.
반환값
워드 결과입니다.

다음에 의해서 참조됨 : ReadWordsAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ SetState()

void Dreamine.PLC.Core.Clients.PlcClientBase.SetState ( PlcConnectionState state)
inlineprotected

연결 상태를 변경하고 상태 변경 이벤트를 발생시킵니다.

매개변수
state새 연결 상태입니다.

PlcClientBase.cs 파일의 814 번째 라인에서 정의되었습니다.

815 {
816 if (State == state)
817 {
818 return;
819 }
820
821 State = state;
822 StateChanged?.Invoke(this, state);
823 }

다음을 참조함 : State, StateChanged.

다음에 의해서 참조됨 : ConnectAsync(), DisconnectAsync(), DisposeAsync(), ReadBitsAsync(), ReadWordsAsync(), WriteBitsAsync(), WriteWordsAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ThrowIfDisposed()

void Dreamine.PLC.Core.Clients.PlcClientBase.ThrowIfDisposed ( )
inlineprivate

클라이언트가 이미 해제되었으면 예외를 발생시킵니다.

예외
ObjectDisposedException이미 해제된 경우 발생합니다.

PlcClientBase.cs 파일의 961 번째 라인에서 정의되었습니다.

962 {
963 ObjectDisposedException.ThrowIf(_disposed, GetType().Name);
964 }

다음을 참조함 : _disposed.

다음에 의해서 참조됨 : ConnectAsync(), ReadBitsAsync(), ReadWordsAsync(), WriteBitsAsync(), WriteWordsAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ValidateReadRequest()

PlcResult Dreamine.PLC.Core.Clients.PlcClientBase.ValidateReadRequest ( PlcAddress address,
int count )
inlinestaticprivate

읽기 주소와 항목 수를 검증합니다.

매개변수
address주소입니다.
count항목 수입니다.
반환값
검증 결과입니다.

PlcClientBase.cs 파일의 854 번째 라인에서 정의되었습니다.

855 {
856 var addressResult = PlcValidation.ValidateAddress(address);
857 if (!addressResult.IsSuccess)
858 {
859 return addressResult;
860 }
861
862 return PlcValidation.ValidateCount(count);
863 }

다음을 참조함 : Dreamine.PLC.Core.Validation.PlcValidation.ValidateAddress(), Dreamine.PLC.Core.Validation.PlcValidation.ValidateCount().

다음에 의해서 참조됨 : ReadBitsAsync(), ReadWordsAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ValidateWriteBitRequest()

PlcResult Dreamine.PLC.Core.Clients.PlcClientBase.ValidateWriteBitRequest ( PlcAddress address,
IReadOnlyList< bool > values )
inlinestaticprivate

비트 쓰기 주소와 값 컬렉션을 검증합니다.

매개변수
address주소입니다.
values값입니다.
반환값
검증 결과입니다.

PlcClientBase.cs 파일의 894 번째 라인에서 정의되었습니다.

895 {
896 var addressResult = PlcValidation.ValidateAddress(address);
897 if (!addressResult.IsSuccess)
898 {
899 return addressResult;
900 }
901
902 return PlcValidation.ValidateBitValues(values);
903 }

다음을 참조함 : Dreamine.PLC.Core.Validation.PlcValidation.ValidateAddress(), Dreamine.PLC.Core.Validation.PlcValidation.ValidateBitValues().

다음에 의해서 참조됨 : WriteBitsAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ ValidateWriteWordRequest()

PlcResult Dreamine.PLC.Core.Clients.PlcClientBase.ValidateWriteWordRequest ( PlcAddress address,
IReadOnlyList< short > values )
inlinestaticprivate

워드 쓰기 주소와 값 컬렉션을 검증합니다.

매개변수
address주소입니다.
values값입니다.
반환값
검증 결과입니다.

PlcClientBase.cs 파일의 934 번째 라인에서 정의되었습니다.

935 {
936 var addressResult = PlcValidation.ValidateAddress(address);
937 if (!addressResult.IsSuccess)
938 {
939 return addressResult;
940 }
941
942 return PlcValidation.ValidateWordValues(values);
943 }

다음을 참조함 : Dreamine.PLC.Core.Validation.PlcValidation.ValidateAddress(), Dreamine.PLC.Core.Validation.PlcValidation.ValidateWordValues().

다음에 의해서 참조됨 : WriteWordsAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ WriteBitsAsync()

async Task< PlcResult > Dreamine.PLC.Core.Clients.PlcClientBase.WriteBitsAsync ( PlcAddress address,
IReadOnlyList< bool > values,
CancellationToken cancellationToken = default )
inline

요청과 연결 상태를 검증한 뒤 구체 전송에 비트를 씁니다.

매개변수
address시작 주소입니다.
values쓸 비트 값입니다.
cancellationToken쓰기 취소 토큰입니다.
반환값
비트 쓰기 결과입니다.
예외
ObjectDisposedException클라이언트가 해제된 경우 발생합니다.

PlcClientBase.cs 파일의 412 번째 라인에서 정의되었습니다.

416 {
417 ThrowIfDisposed();
418
419 var validationResult = ValidateWriteBitRequest(address, values);
420 if (!validationResult.IsSuccess)
421 {
422 return validationResult;
423 }
424
425 if (State != PlcConnectionState.Connected)
426 {
427 return PlcResult.Failure("The PLC client is not connected.");
428 }
429
430 try
431 {
432 return await WriteBitsCoreAsync(address, values, cancellationToken).ConfigureAwait(false);
433 }
434 catch (OperationCanceledException ex)
435 {
436 return PlcResult.Failure(ex.Message);
437 }
438 catch (Exception ex)
439 {
440 SetState(PlcConnectionState.Faulted);
441 return PlcResult.Failure(ex.Message);
442 }
443 }

다음을 참조함 : SetState(), State, ThrowIfDisposed(), ValidateWriteBitRequest(), WriteBitsCoreAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ WriteBitsCoreAsync()

Task< PlcResult > Dreamine.PLC.Core.Clients.PlcClientBase.WriteBitsCoreAsync ( PlcAddress address,
IReadOnlyList< bool > values,
CancellationToken cancellationToken )
abstractprotected

구체 PLC 전송에 비트를 씁니다.

매개변수
address시작 주소입니다.
values비트 값입니다.
cancellationToken취소 토큰입니다.
반환값
쓰기 결과입니다.

다음에 의해서 참조됨 : WriteBitsAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ WriteWordsAsync()

async Task< PlcResult > Dreamine.PLC.Core.Clients.PlcClientBase.WriteWordsAsync ( PlcAddress address,
IReadOnlyList< short > values,
CancellationToken cancellationToken = default )
inline

요청과 연결 상태를 검증한 뒤 구체 전송에 워드를 씁니다.

매개변수
address시작 주소입니다.
values쓸 워드 값입니다.
cancellationToken쓰기 취소 토큰입니다.
반환값
워드 쓰기 결과입니다.
예외
ObjectDisposedException클라이언트가 해제된 경우 발생합니다.

PlcClientBase.cs 파일의 491 번째 라인에서 정의되었습니다.

495 {
496 ThrowIfDisposed();
497
498 var validationResult = ValidateWriteWordRequest(address, values);
499 if (!validationResult.IsSuccess)
500 {
501 return validationResult;
502 }
503
504 if (State != PlcConnectionState.Connected)
505 {
506 return PlcResult.Failure("The PLC client is not connected.");
507 }
508
509 try
510 {
511 return await WriteWordsCoreAsync(address, values, cancellationToken).ConfigureAwait(false);
512 }
513 catch (OperationCanceledException ex)
514 {
515 return PlcResult.Failure(ex.Message);
516 }
517 catch (Exception ex)
518 {
519 SetState(PlcConnectionState.Faulted);
520 return PlcResult.Failure(ex.Message);
521 }
522 }

다음을 참조함 : SetState(), State, ThrowIfDisposed(), ValidateWriteWordRequest(), WriteWordsCoreAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ WriteWordsCoreAsync()

Task< PlcResult > Dreamine.PLC.Core.Clients.PlcClientBase.WriteWordsCoreAsync ( PlcAddress address,
IReadOnlyList< short > values,
CancellationToken cancellationToken )
abstractprotected

구체 PLC 전송에 워드를 씁니다.

매개변수
address시작 주소입니다.
values워드 값입니다.
cancellationToken취소 토큰입니다.
반환값
쓰기 결과입니다.

다음에 의해서 참조됨 : WriteWordsAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ _disposed

volatile bool Dreamine.PLC.Core.Clients.PlcClientBase._disposed
private

disposed 값을 보관합니다.

PlcClientBase.cs 파일의 37 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : DisconnectAsync(), DisposeAsync(), ThrowIfDisposed().

◆ _disposeGuard

int Dreamine.PLC.Core.Clients.PlcClientBase._disposeGuard
private

dispose Guard 값을 보관합니다.

PlcClientBase.cs 파일의 46 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : DisposeAsync().

◆ _syncLock

readonly AsyncLock Dreamine.PLC.Core.Clients.PlcClientBase._syncLock = new()
private

sync Lock 값을 보관합니다.

PlcClientBase.cs 파일의 28 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : ConnectAsync(), DisconnectAsync(), DisposeAsync().

속성 문서화

◆ State

PlcConnectionState Dreamine.PLC.Core.Clients.PlcClientBase.State = PlcConnectionState.Disconnected
getprivate set

현재 PLC 연결 상태를 가져옵니다.

PlcClientBase.cs 파일의 56 번째 라인에서 정의되었습니다.

56{ get; private set; } = PlcConnectionState.Disconnected;

다음에 의해서 참조됨 : ConnectAsync(), DisconnectAsync(), DisposeAsync(), ReadBitsAsync(), ReadWordsAsync(), SetState(), WriteBitsAsync(), WriteWordsAsync().

이벤트 문서화

◆ StateChanged

EventHandler<PlcConnectionState>? Dreamine.PLC.Core.Clients.PlcClientBase.StateChanged

PLC 연결 상태가 변경될 때 발생합니다.

PlcClientBase.cs 파일의 66 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : SetState().


이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: