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

더 자세히 ...

Public 멤버 함수

byte[] BuildMemoryAreaRead (OmronFinsConnectionOptions options, PlcAddress address, int count, bool bitAccess)
byte[] BuildMemoryAreaWriteWords (OmronFinsConnectionOptions options, PlcAddress address, IReadOnlyList< short > values)
byte[] BuildMemoryAreaWriteBits (OmronFinsConnectionOptions options, PlcAddress address, IReadOnlyList< bool > values)

Private 멤버 함수

byte[] BuildFrame (OmronFinsConnectionOptions options, byte[] command)

정적 Private 멤버 함수

static byte[] BuildMemoryCommandBody (OmronFinsCommand command, PlcAddress address, int count, bool bitAccess, byte[]? payload)

Private 속성

int _sid

상세한 설명

메모리 영역 읽기 및 쓰기 작업을 위한 Omron FINS 명령 프레임을 생성합니다.

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

멤버 함수 문서화

◆ BuildFrame()

byte[] Dreamine.PLC.Omron.Fins.Protocol.OmronFinsFrameBuilder.BuildFrame ( OmronFinsConnectionOptions options,
byte[] command )
inlineprivate

FINS 헤더와 명령 본문을 결합하고 다음 서비스 ID를 할당합니다.

매개변수
options네트워크·노드·유닛 주소를 제공하는 연결 옵션입니다.
command헤더 뒤에 복사할 명령 본문입니다.
반환값
완성된 원시 FINS 프레임입니다.
예외
ArgumentNullExceptionoptions 또는 commandnull일 때 발생할 수 있습니다.

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

287 {
288 var frame = new byte[10 + command.Length];
289 frame[0] = 0x80;
290 frame[1] = 0x00;
291 frame[2] = 0x02;
292 frame[3] = options.DestinationNetwork;
293 frame[4] = options.DestinationNode;
294 frame[5] = options.DestinationUnit;
295 frame[6] = options.SourceNetwork;
296 frame[7] = options.SourceNode;
297 frame[8] = options.SourceUnit;
298 frame[9] = unchecked((byte)Interlocked.Increment(ref _sid));
299 Buffer.BlockCopy(command, 0, frame, 10, command.Length);
300 return frame;
301 }

다음을 참조함 : _sid, Dreamine.PLC.Omron.Fins.Options.OmronFinsConnectionOptions.DestinationNetwork, Dreamine.PLC.Omron.Fins.Options.OmronFinsConnectionOptions.DestinationNode, Dreamine.PLC.Omron.Fins.Options.OmronFinsConnectionOptions.DestinationUnit, Dreamine.PLC.Omron.Fins.Options.OmronFinsConnectionOptions.SourceNetwork, Dreamine.PLC.Omron.Fins.Options.OmronFinsConnectionOptions.SourceNode, Dreamine.PLC.Omron.Fins.Options.OmronFinsConnectionOptions.SourceUnit.

다음에 의해서 참조됨 : BuildMemoryAreaRead(), BuildMemoryAreaWriteBits(), BuildMemoryAreaWriteWords().

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

◆ BuildMemoryAreaRead()

byte[] Dreamine.PLC.Omron.Fins.Protocol.OmronFinsFrameBuilder.BuildMemoryAreaRead ( OmronFinsConnectionOptions options,
PlcAddress address,
int count,
bool bitAccess )
inline

FINS 메모리 영역 읽기 프레임을 생성합니다.

매개변수
options프레임 헤더에 사용할 FINS 연결 옵션입니다.
address읽기를 시작할 PLC 주소입니다.
count읽을 요소 수입니다.
bitAccess요청이 비트 영역 접근인지 여부입니다.
반환값
생성된 원시 FINS 요청 프레임입니다.
예외
ArgumentOutOfRangeException주소 오프셋 또는 요소 수가 FINS 허용 범위를 벗어날 때 발생합니다.
NotSupportedExceptionPLC 장치 형식을 FINS가 지원하지 않을 때 발생합니다.

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

96 {
97 var command = BuildMemoryCommandBody(OmronFinsCommand.MemoryAreaRead, address, count, bitAccess, null);
98 return BuildFrame(options, command);
99 }

다음을 참조함 : BuildFrame(), BuildMemoryCommandBody().

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

◆ BuildMemoryAreaWriteBits()

byte[] Dreamine.PLC.Omron.Fins.Protocol.OmronFinsFrameBuilder.BuildMemoryAreaWriteBits ( OmronFinsConnectionOptions options,
PlcAddress address,
IReadOnlyList< bool > values )
inline

비트 값용 FINS 메모리 영역 쓰기 프레임을 생성합니다.

매개변수
options프레임 헤더에 사용할 FINS 연결 옵션입니다.
address쓰기를 시작할 PLC 주소입니다.
values0 또는 1 바이트로 기록할 비트 값입니다.
반환값
생성된 원시 FINS 요청 프레임입니다.
예외
ArgumentNullExceptionvaluesnull일 때 발생합니다.
ArgumentOutOfRangeException주소 오프셋 또는 값 개수가 FINS 허용 범위를 벗어날 때 발생합니다.

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

240 {
241 var payload = values.Select(value => value ? (byte)1 : (byte)0).ToArray();
242 var command = BuildMemoryCommandBody(OmronFinsCommand.MemoryAreaWrite, address, values.Count, true, payload);
243 return BuildFrame(options, command);
244 }

다음을 참조함 : BuildFrame(), BuildMemoryCommandBody().

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

◆ BuildMemoryAreaWriteWords()

byte[] Dreamine.PLC.Omron.Fins.Protocol.OmronFinsFrameBuilder.BuildMemoryAreaWriteWords ( OmronFinsConnectionOptions options,
PlcAddress address,
IReadOnlyList< short > values )
inline

워드 값용 FINS 메모리 영역 쓰기 프레임을 생성합니다.

매개변수
options프레임 헤더에 사용할 FINS 연결 옵션입니다.
address쓰기를 시작할 PLC 주소입니다.
values빅 엔디언 페이로드로 기록할 워드 값입니다.
반환값
생성된 원시 FINS 요청 프레임입니다.
예외
ArgumentNullExceptionvaluesnull일 때 발생할 수 있습니다.
ArgumentOutOfRangeException주소 오프셋 또는 값 개수가 FINS 허용 범위를 벗어날 때 발생합니다.
OverflowException값 개수에 2를 곱한 페이로드 길이가 정수 범위를 벗어날 때 발생할 수 있습니다.

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

169 {
170 var payload = new byte[values.Count * 2];
171 for (var i = 0; i < values.Count; i++)
172 {
173 OmronFinsEndian.WriteInt16(payload, i * 2, values[i]);
174 }
175
176 var command = BuildMemoryCommandBody(OmronFinsCommand.MemoryAreaWrite, address, values.Count, false, payload);
177 return BuildFrame(options, command);
178 }

다음을 참조함 : BuildFrame(), BuildMemoryCommandBody(), Dreamine.PLC.Omron.Fins.Protocol.OmronFinsEndian.WriteInt16().

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

◆ BuildMemoryCommandBody()

byte[] Dreamine.PLC.Omron.Fins.Protocol.OmronFinsFrameBuilder.BuildMemoryCommandBody ( OmronFinsCommand command,
PlcAddress address,
int count,
bool bitAccess,
byte?[] payload )
inlinestaticprivate

메모리 영역 명령, 주소, 개수 및 선택적 페이로드를 FINS 명령 본문으로 인코딩합니다.

매개변수
command인코딩할 FINS 명령 코드입니다.
address명령의 시작 PLC 주소입니다.
count처리할 포인트 수입니다.
bitAccess비트 영역 코드를 사용할지 여부입니다.
payload본문 뒤에 추가할 선택적 쓰기 페이로드입니다.
반환값
인코딩된 FINS 명령 본문입니다.
예외
ArgumentOutOfRangeExceptioncount 가 1~65535가 아니거나 주소 오프셋이 0~65535가 아닐 때 발생합니다.
NotSupportedExceptionPLC 장치 형식을 FINS가 지원하지 않을 때 발생합니다.

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

381 {
382 if (count <= 0)
383 {
384 throw new ArgumentOutOfRangeException(nameof(count), count, "The FINS point count must be greater than zero.");
385 }
386
387 if (address.Offset is < 0 or > ushort.MaxValue)
388 {
389 throw new ArgumentOutOfRangeException(
390 nameof(address),
391 address.Offset,
392 "The FINS address offset must be between 0 and 65535.");
393 }
394
395 if (count > ushort.MaxValue)
396 {
397 throw new ArgumentOutOfRangeException(
398 nameof(count),
399 count,
400 "The FINS point count must be between 1 and 65535.");
401 }
402
403 var areaCode = OmronFinsMemoryAreaMapper.Map(address, bitAccess);
404 var bodyLength = 8 + (payload?.Length ?? 0);
405 var body = new byte[bodyLength];
406 var commandValue = (ushort)command;
407
408 OmronFinsEndian.WriteUInt16(body, 0, commandValue);
409 body[2] = areaCode;
410 OmronFinsEndian.WriteUInt16(body, 3, (ushort)address.Offset);
411 body[5] = (byte)(address.BitOffset ?? 0);
412 OmronFinsEndian.WriteUInt16(body, 6, (ushort)count);
413
414 if (payload is not null)
415 {
416 Buffer.BlockCopy(payload, 0, body, 8, payload.Length);
417 }
418
419 return body;
420 }

다음을 참조함 : Dreamine.PLC.Omron.Fins.Devices.OmronFinsMemoryAreaMapper.Map(), Dreamine.PLC.Omron.Fins.Protocol.OmronFinsEndian.WriteUInt16().

다음에 의해서 참조됨 : BuildMemoryAreaRead(), BuildMemoryAreaWriteBits(), BuildMemoryAreaWriteWords().

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

멤버 데이터 문서화

◆ _sid

int Dreamine.PLC.Omron.Fins.Protocol.OmronFinsFrameBuilder._sid
private

sid 값을 보관합니다.

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

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


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