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

더 자세히 ...

Dreamine.PLC.Mitsubishi.MC.Protocol.MitsubishiMcBinary3EFrameBuilder에 대한 협력 다이어그램:

Public 멤버 함수

 MitsubishiMcBinary3EFrameBuilder ()
 MitsubishiMcBinary3EFrameBuilder (MitsubishiMcDeviceCodeMapper deviceCodeMapper)
PlcResult< byte[]> BuildBatchReadFrame (MitsubishiMcConnectionOptions options, PlcAddress address, int count, bool isBitAccess)
PlcResult< byte[]> BuildBatchWriteWordsFrame (MitsubishiMcConnectionOptions options, PlcAddress address, IReadOnlyList< short > values)
PlcResult< byte[]> BuildBatchWriteBitsFrame (MitsubishiMcConnectionOptions options, PlcAddress address, IReadOnlyList< bool > values)

정적 Private 멤버 함수

static List< byte > BuildBatchAccessPayload (MitsubishiMcCommand command, MitsubishiMcSubCommand subCommand, PlcAddress address, int count, MitsubishiMcDeviceCode deviceCode)
static byte[] BuildFrame (MitsubishiMcConnectionOptions options, IReadOnlyCollection< byte > payload)

Private 속성

readonly MitsubishiMcDeviceCodeMapper _deviceCodeMapper

정적 Private 속성

const ushort SubHeader = 0x5000

상세한 설명

Mitsubishi MC 프로토콜 Binary 3E 요청 프레임을 만듭니다.

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

생성자 & 소멸자 문서화

◆ MitsubishiMcBinary3EFrameBuilder() [1/2]

Dreamine.PLC.Mitsubishi.MC.Protocol.MitsubishiMcBinary3EFrameBuilder.MitsubishiMcBinary3EFrameBuilder ( )
inline

기본 디바이스 매퍼로 프레임 빌더를 초기화합니다.

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

46 : this(new MitsubishiMcDeviceCodeMapper())
47 {
48 }

◆ MitsubishiMcBinary3EFrameBuilder() [2/2]

Dreamine.PLC.Mitsubishi.MC.Protocol.MitsubishiMcBinary3EFrameBuilder.MitsubishiMcBinary3EFrameBuilder ( MitsubishiMcDeviceCodeMapper deviceCodeMapper)
inline

지정한 디바이스 매퍼로 프레임 빌더를 초기화합니다.

매개변수
deviceCodeMapper디바이스 코드 매퍼입니다.
예외
ArgumentNullException매퍼가 null인 경우 발생합니다.

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

75 {
76 _deviceCodeMapper = deviceCodeMapper ?? throw new ArgumentNullException(nameof(deviceCodeMapper));
77 }

다음을 참조함 : _deviceCodeMapper.

멤버 함수 문서화

◆ BuildBatchAccessPayload()

List< byte > Dreamine.PLC.Mitsubishi.MC.Protocol.MitsubishiMcBinary3EFrameBuilder.BuildBatchAccessPayload ( MitsubishiMcCommand command,
MitsubishiMcSubCommand subCommand,
PlcAddress address,
int count,
MitsubishiMcDeviceCode deviceCode )
inlinestaticprivate

일괄 접근 명령 헤더 페이로드를 만듭니다.

매개변수
command명령입니다.
subCommand하위 명령입니다.
address주소입니다.
count항목 수입니다.
deviceCode디바이스 코드입니다.
반환값
명령 페이로드입니다.

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

426 {
427 const int batchAccessHeaderLength = 10;
428 var payload = new List<byte>(batchAccessHeaderLength);
429
430 MitsubishiMcEndian.WriteUInt16LittleEndian(payload, (ushort)command);
431 MitsubishiMcEndian.WriteUInt16LittleEndian(payload, (ushort)subCommand);
432 MitsubishiMcEndian.WriteUInt24LittleEndian(payload, address.Offset);
433 payload.Add((byte)deviceCode);
434 MitsubishiMcEndian.WriteUInt16LittleEndian(payload, checked((ushort)count));
435
436 return payload;
437 }

다음을 참조함 : Dreamine.PLC.Mitsubishi.MC.Protocol.MitsubishiMcEndian.WriteUInt16LittleEndian(), Dreamine.PLC.Mitsubishi.MC.Protocol.MitsubishiMcEndian.WriteUInt24LittleEndian().

다음에 의해서 참조됨 : BuildBatchReadFrame(), BuildBatchWriteBitsFrame(), BuildBatchWriteWordsFrame().

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

◆ BuildBatchReadFrame()

PlcResult< byte[]> Dreamine.PLC.Mitsubishi.MC.Protocol.MitsubishiMcBinary3EFrameBuilder.BuildBatchReadFrame ( MitsubishiMcConnectionOptions options,
PlcAddress address,
int count,
bool isBitAccess )
inline

일괄 읽기 요청 프레임을 만듭니다.

매개변수
options연결 옵션입니다.
address시작 주소입니다.
count읽을 디바이스 수입니다.
isBitAccess비트 접근 여부입니다.
반환값
프레임 바이트 결과입니다.
예외
ArgumentNullException옵션이 null인 경우 발생합니다.
OverflowException항목 수 또는 프레임 길이가 프로토콜 범위를 벗어난 경우 발생합니다.
ArgumentOutOfRangeException주소 오프셋이 24비트 범위를 벗어난 경우 발생합니다.

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

150 {
151 ArgumentNullException.ThrowIfNull(options);
152
153 if (count <= 0)
154 {
155 return PlcResult<byte[]>.Failure("The read count must be greater than zero.");
156 }
157
158 var deviceCodeResult = _deviceCodeMapper.Map(address.DeviceType);
159 if (!deviceCodeResult.IsSuccess)
160 {
161 return PlcResult<byte[]>.Failure(
162 deviceCodeResult.Message ?? "Unsupported Mitsubishi MC device type.",
163 deviceCodeResult.ErrorCode);
164 }
165
166 var payload = BuildBatchAccessPayload(
167 MitsubishiMcCommand.BatchRead,
168 isBitAccess ? MitsubishiMcSubCommand.Bit : MitsubishiMcSubCommand.Word,
169 address,
170 count,
171 deviceCodeResult.Value);
172
173 return PlcResult<byte[]>.Success(BuildFrame(options, payload));
174 }

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

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

◆ BuildBatchWriteBitsFrame()

PlcResult< byte[]> Dreamine.PLC.Mitsubishi.MC.Protocol.MitsubishiMcBinary3EFrameBuilder.BuildBatchWriteBitsFrame ( MitsubishiMcConnectionOptions options,
PlcAddress address,
IReadOnlyList< bool > values )
inline

일괄 비트 쓰기 요청 프레임을 만듭니다.

매개변수
options연결 옵션입니다.
address시작 주소입니다.
values비트 값입니다.
반환값
프레임 바이트 결과입니다.
예외
ArgumentNullException옵션 또는 값이 null인 경우 발생합니다.
OverflowException항목 수 또는 프레임 길이가 범위를 벗어난 경우 발생합니다.
ArgumentOutOfRangeException주소 오프셋이 24비트 범위를 벗어난 경우 발생합니다.

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

334 {
335 ArgumentNullException.ThrowIfNull(options);
336 ArgumentNullException.ThrowIfNull(values);
337
338 if (values.Count == 0)
339 {
340 return PlcResult<byte[]>.Failure("The bit value collection must not be empty.");
341 }
342
343 var deviceCodeResult = _deviceCodeMapper.Map(address.DeviceType);
344 if (!deviceCodeResult.IsSuccess)
345 {
346 return PlcResult<byte[]>.Failure(
347 deviceCodeResult.Message ?? "Unsupported Mitsubishi MC device type.",
348 deviceCodeResult.ErrorCode);
349 }
350
351 var payload = BuildBatchAccessPayload(
352 MitsubishiMcCommand.BatchWrite,
354 address,
355 values.Count,
356 deviceCodeResult.Value);
357
358 for (var i = 0; i < values.Count; i += 2)
359 {
360 var high = values[i] ? 0x10 : 0x00;
361 var low = i + 1 < values.Count && values[i + 1] ? 0x01 : 0x00;
362
363 payload.Add((byte)(high | low));
364 }
365
366 return PlcResult<byte[]>.Success(BuildFrame(options, payload));
367 }

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

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

◆ BuildBatchWriteWordsFrame()

PlcResult< byte[]> Dreamine.PLC.Mitsubishi.MC.Protocol.MitsubishiMcBinary3EFrameBuilder.BuildBatchWriteWordsFrame ( MitsubishiMcConnectionOptions options,
PlcAddress address,
IReadOnlyList< short > values )
inline

일괄 워드 쓰기 요청 프레임을 만듭니다.

매개변수
options연결 옵션입니다.
address시작 주소입니다.
values워드 값입니다.
반환값
프레임 바이트 결과입니다.
예외
ArgumentNullException옵션 또는 값이 null인 경우 발생합니다.
OverflowException항목 수 또는 프레임 길이가 범위를 벗어난 경우 발생합니다.
ArgumentOutOfRangeException주소 오프셋이 24비트 범위를 벗어난 경우 발생합니다.

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

239 {
240 ArgumentNullException.ThrowIfNull(options);
241 ArgumentNullException.ThrowIfNull(values);
242
243 if (values.Count == 0)
244 {
245 return PlcResult<byte[]>.Failure("The word value collection must not be empty.");
246 }
247
248 var deviceCodeResult = _deviceCodeMapper.Map(address.DeviceType);
249 if (!deviceCodeResult.IsSuccess)
250 {
251 return PlcResult<byte[]>.Failure(
252 deviceCodeResult.Message ?? "Unsupported Mitsubishi MC device type.",
253 deviceCodeResult.ErrorCode);
254 }
255
256 var payload = BuildBatchAccessPayload(
257 MitsubishiMcCommand.BatchWrite,
259 address,
260 values.Count,
261 deviceCodeResult.Value);
262
263 foreach (var value in values)
264 {
265 MitsubishiMcEndian.WriteUInt16LittleEndian(payload, unchecked((ushort)value));
266 }
267
268 return PlcResult<byte[]>.Success(BuildFrame(options, payload));
269 }

다음을 참조함 : _deviceCodeMapper, BuildBatchAccessPayload(), BuildFrame(), Dreamine.PLC.Mitsubishi.MC.Protocol.MitsubishiMcEndian.WriteUInt16LittleEndian().

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

◆ BuildFrame()

byte[] Dreamine.PLC.Mitsubishi.MC.Protocol.MitsubishiMcBinary3EFrameBuilder.BuildFrame ( MitsubishiMcConnectionOptions options,
IReadOnlyCollection< byte > payload )
inlinestaticprivate

라우팅 헤더, 길이, 타이머 및 페이로드를 결합해 Binary 3E 프레임을 만듭니다.

매개변수
options연결 옵션입니다.
payload명령 페이로드입니다.
반환값
완성된 프레임입니다.

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

472 {
473 const int frameHeaderLength = 11;
474 var frame = new List<byte>(frameHeaderLength + payload.Count);
475
476 MitsubishiMcEndian.WriteUInt16LittleEndian(frame, SubHeader);
477 frame.Add(options.NetworkNumber);
478 frame.Add(options.PlcNumber);
479 MitsubishiMcEndian.WriteUInt16LittleEndian(frame, options.DestinationModuleIoNumber);
480 frame.Add(options.DestinationModuleStationNumber);
481
482 var requestDataLength = checked((ushort)(payload.Count + 2));
483 MitsubishiMcEndian.WriteUInt16LittleEndian(frame, requestDataLength);
484 MitsubishiMcEndian.WriteUInt16LittleEndian(frame, options.MonitoringTimer);
485
486 frame.AddRange(payload);
487
488 return frame.ToArray();
489 }

다음을 참조함 : Dreamine.PLC.Mitsubishi.MC.Options.MitsubishiMcConnectionOptions.DestinationModuleIoNumber, Dreamine.PLC.Mitsubishi.MC.Options.MitsubishiMcConnectionOptions.DestinationModuleStationNumber, Dreamine.PLC.Mitsubishi.MC.Options.MitsubishiMcConnectionOptions.MonitoringTimer, Dreamine.PLC.Mitsubishi.MC.Options.MitsubishiMcConnectionOptions.NetworkNumber, Dreamine.PLC.Mitsubishi.MC.Options.MitsubishiMcConnectionOptions.PlcNumber, SubHeader, Dreamine.PLC.Mitsubishi.MC.Protocol.MitsubishiMcEndian.WriteUInt16LittleEndian().

다음에 의해서 참조됨 : BuildBatchReadFrame(), BuildBatchWriteBitsFrame(), BuildBatchWriteWordsFrame().

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

멤버 데이터 문서화

◆ _deviceCodeMapper

readonly MitsubishiMcDeviceCodeMapper Dreamine.PLC.Mitsubishi.MC.Protocol.MitsubishiMcBinary3EFrameBuilder._deviceCodeMapper
private

device Code Mapper 값을 보관합니다.

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

다음에 의해서 참조됨 : BuildBatchReadFrame(), BuildBatchWriteBitsFrame(), BuildBatchWriteWordsFrame(), MitsubishiMcBinary3EFrameBuilder().

◆ SubHeader

const ushort Dreamine.PLC.Mitsubishi.MC.Protocol.MitsubishiMcBinary3EFrameBuilder.SubHeader = 0x5000
staticprivate

Sub Header 값을 보관합니다.

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

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


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