Table of Contents

Class McpX

Namespace
McpXLib
Assembly
McpXLib.dll

MCプロトコル拡張クラス

public class McpX : Mcp, IDisposable, IPlc
Inheritance
McpX
Implements
Inherited Members

Remarks

Mcpクラス(MCプロトコル)を拡張して、デバイスアクセス点数などの機能制限を補うクラスです。

Constructors

McpX(string, int, string?, bool, bool, RequestFrame)

インスタンス初期化

public McpX(string ip, int port, string? password = null, bool isAscii = false, bool isUdp = false, RequestFrame requestFrame = RequestFrame.E3)

Parameters

ip string

PLCのIPアドレスを指定します。

port int

PLCのポートを指定します。

password string

PLCのリモートパスワードを指定します。(リモートパスワードを設定している場合に指定してください。)

isAscii bool

ASCIIコードによる交信を行う場合にtrueを指定します。(デフォルトは、バイナリ交信:falseです。)

isUdp bool

UDPによる交信を行う場合にtrueを指定します。(デフォルトは、TCP交信:falseです。)

requestFrame RequestFrame

フレーム(データ交信電文)の種類を指定します。(デフォルトは、3Eフレーム:RequestFrame.E3です。)

Remarks

PLCのパラメータ設定に合わせたPLCの接続情報を指定します。
必要に応じて、リモートロックの解除を行います。

Exceptions

RecivePacketException

受信したパケットの内容が不正な値の場合に例外をスローします。

McProtocolException

PLCからエラーコードを受信した場合に例外をスローします。

Methods

BatchReadAsync<T>(Prefix, string, ushort)

連続デバイス読み込み(非同期)

public Task<T[]> BatchReadAsync<T>(Prefix prefix, string address, ushort length) where T : unmanaged

Parameters

prefix Prefix

読み込み対象の先頭デバイスコードを指定します。

address string

読み込み対象の先頭アドレスを指定します。

length ushort

読み込み対象の要素数を指定します。
指定された型Tに応じて、内部的に読み込むデバイス点数は自動的に調整されます。
そのため、この引数には「最終的に取得する配列の要素数(T型の要素数)」を指定してください。

Returns

Task<T[]>

PLCから読み込んだ値を指定された型Tに変換して返します。

Type Parameters

T

読み込むデータの型。bool, short, int などの値型を指定します。 unmanaged 制約があるため、参照型は使用できません。

Remarks

指定したデバイス範囲の値を非同期でPLCから読み込みます。

Exceptions

DeviceAddressException

指定したアドレスが不正の場合に例外をスローします。

RecivePacketException

受信したパケットの内容が不正な値の場合に例外をスローします。

McProtocolException

PLCからエラーコードを受信した場合に例外をスローします。

BatchRead<T>(Prefix, string, ushort)

連続デバイス読み込み

public T[] BatchRead<T>(Prefix prefix, string address, ushort length) where T : unmanaged

Parameters

prefix Prefix

読み込み対象の先頭デバイスコードを指定します。

address string

読み込み対象の先頭アドレスを指定します。

length ushort

読み込み対象の要素数を指定します。
指定された型Tに応じて、内部的に読み込むデバイス点数は自動的に調整されます。
そのため、この引数には「最終的に取得する配列の要素数(T型の要素数)」を指定してください。

Returns

T[]

PLCから読み込んだ値を指定された型Tに変換して返します。

Type Parameters

T

読み込むデータの型。bool, short, int などの値型を指定します。 unmanaged 制約があるため、参照型は使用できません。

Remarks

指定したデバイス範囲の値をPLCから読み込みます。

Exceptions

DeviceAddressException

指定したアドレスが不正の場合に例外をスローします。

RecivePacketException

受信したパケットの内容が不正な値の場合に例外をスローします。

McProtocolException

PLCからエラーコードを受信した場合に例外をスローします。

BatchWriteAsync<T>(Prefix, string, T[])

連続デバイス書き込み(非同期)

public Task<T[]> BatchWriteAsync<T>(Prefix prefix, string address, T[] values) where T : unmanaged

Parameters

prefix Prefix

書き込み対象の先頭デバイスコードを指定します。

address string

書き込み対象の先頭アドレスを指定します。

values T[]

書き込みする値を配列で指定します。

Returns

Task<T[]>

valuesの値をそのまま返します。

Type Parameters

T

書き込むデータの型。bool, short, int などの値型を指定します。 unmanaged 制約があるため、参照型は使用できません。

Remarks

指定したデバイス範囲に値を非同期でPLCへ書き込みます。
指定された型Tに応じて、内部的に書き込むデバイス点数は自動的に調整されます。

Exceptions

DeviceAddressException

指定したアドレスが不正の場合に例外をスローします。

RecivePacketException

受信したパケットの内容が不正な値の場合に例外をスローします。

McProtocolException

PLCからエラーコードを受信した場合に例外をスローします。

BatchWrite<T>(Prefix, string, T[])

連続デバイス書き込み

public T[] BatchWrite<T>(Prefix prefix, string address, T[] values) where T : unmanaged

Parameters

prefix Prefix

書き込み対象の先頭デバイスコードを指定します。

address string

書き込み対象の先頭アドレスを指定します。

values T[]

書き込みする値を配列で指定します。

Returns

T[]

valuesの値をそのまま返します。

Type Parameters

T

書き込むデータの型。bool, short, int などの値型を指定します。 unmanaged 制約があるため、参照型は使用できません。

Remarks

指定したデバイス範囲に値をPLCへ書き込みます。
指定された型Tに応じて、内部的に書き込むデバイス点数は自動的に調整されます。

Exceptions

DeviceAddressException

指定したアドレスが不正の場合に例外をスローします。

RecivePacketException

受信したパケットの内容が不正な値の場合に例外をスローします。

McProtocolException

PLCからエラーコードを受信した場合に例外をスローします。

Dispose()

インスタンス破棄

public override void Dispose()

Remarks

使用済みのリソースを解放し、必要に応じてPLCのリモートロックを実行します。

RandomReadAsync<T1, T2>((Prefix prefix, string address)[], (Prefix prefix, string address)[])

ランダムデバイス読み込み(非同期)

public Task<(T1[] wordValues, T2[] doubleValues)> RandomReadAsync<T1, T2>((Prefix prefix, string address)[] wordAddresses, (Prefix prefix, string address)[] doubleWordAddresses) where T1 : unmanaged where T2 : unmanaged

Parameters

wordAddresses (Prefix, string)[]

16ビット単位で読み込むデバイスアドレスの配列を指定します。
prefix:読み込み対象のデバイスコードを指定します。
address:読み込み対象のアドレスを指定します。

doubleWordAddresses (Prefix, string)[]

32ビット単位で読み込むデバイスの配列を指定します。
prefix:読み込み対象のデバイスコードを指定します。
address:読み込み対象のアドレスを指定します。

Returns

Task<(T1[] wordValues, T2[] doubleValues)>

PLCから読み込んだ値を指定した型T1T2に変換して返します。
wordValues: 16ビット単位で読み込まれた T1型の値の配列
doubleValues: 32ビット単位で読み込まれた T2型の値の配列

Type Parameters

T1

16ビット単位で読み込むデータの型。bool, short, int などの値型を指定します。 unmanaged 制約があるため、参照型は使用できません。

T2

32ビット単位で読み込むデータの型。bool, short, int などの値型を指定します。 unmanaged 制約があるため、参照型は使用できません。

Remarks

指定したデバイスの値を非同期でPLCから読み込みます。
指定された型T1T2に応じて、内部的に読み込むデバイス点数は自動的に調整されます。

Exceptions

DeviceAddressException

指定したアドレスが不正の場合に例外をスローします。

RecivePacketException

受信したパケットの内容が不正な値の場合に例外をスローします。

McProtocolException

PLCからエラーコードを受信した場合に例外をスローします。

RandomRead<T1, T2>((Prefix prefix, string address)[], (Prefix prefix, string address)[])

ランダムデバイス読み込み

public (T1[] wordValues, T2[] doubleValues) RandomRead<T1, T2>((Prefix prefix, string address)[] wordAddresses, (Prefix prefix, string address)[] doubleWordAddresses) where T1 : unmanaged where T2 : unmanaged

Parameters

wordAddresses (Prefix, string)[]

16ビット単位で読み込むデバイスアドレスの配列を指定します。
prefix:読み込み対象のデバイスコードを指定します。
address:読み込み対象のアドレスを指定します。

doubleWordAddresses (Prefix, string)[]

32ビット単位で読み込むデバイスの配列を指定します。
prefix:読み込み対象のデバイスコードを指定します。
address:読み込み対象のアドレスを指定します。

Returns

(T1[] wordValues, T2[] doubleValues)

PLCから読み込んだ値を指定した型T1T2に変換して返します。
wordValues: 16ビット単位で読み込まれた T1型の値の配列
doubleValues: 32ビット単位で読み込まれた T2型の値の配列

Type Parameters

T1

16ビット単位で読み込むデータの型。bool, short, int などの値型を指定します。 unmanaged 制約があるため、参照型は使用できません。

T2

32ビット単位で読み込むデータの型。bool, short, int などの値型を指定します。 unmanaged 制約があるため、参照型は使用できません。

Remarks

指定したデバイスの値をPLCから読み込みます。
指定された型T1T2に応じて、内部的に読み込むデバイス点数は自動的に調整されます。

Exceptions

DeviceAddressException

指定したアドレスが不正の場合に例外をスローします。

RecivePacketException

受信したパケットの内容が不正な値の場合に例外をスローします。

McProtocolException

PLCからエラーコードを受信した場合に例外をスローします。

RandomWriteAsync<T1, T2>((Prefix prefix, string address, T1 value)[], (Prefix prefix, string address, T2 value)[])

ランダムデバイス書き込み(非同期)

public Task RandomWriteAsync<T1, T2>((Prefix prefix, string address, T1 value)[] wordDevices, (Prefix prefix, string address, T2 value)[] doubleWordDevices) where T1 : unmanaged where T2 : unmanaged

Parameters

wordDevices (Prefix prefix, string address, T1 value)[]

16ビット単位で書き込むデバイスの配列を指定します。
prefix:書き込み対象のデバイスコードを指定します。
address:書き込み対象のアドレスを指定します。
value:書き込みする値を指定します。

doubleWordDevices (Prefix prefix, string address, T2 value)[]

32ビット単位で書き込むデバイスの配列を指定します。
prefix:書き込み対象のデバイスコードを指定します。
address:書き込み対象のアドレスを指定します。 ・value:書き込みする値を指定します。

Returns

Task

Type Parameters

T1

16ビット単位で書き込むデータの型。bool, short, int などの値型を指定します。 unmanaged 制約があるため、参照型は使用できません。

T2

32ビット単位で書き込むデータの型。bool, short, int などの値型を指定します。 unmanaged 制約があるため、参照型は使用できません。

Remarks

指定したデバイスに対し、値を非同期でPLCへ書き込みます。
指定された型T1T2に応じて、内部的に読み込むデバイス点数は自動的に調整されます。

Exceptions

DeviceAddressException

指定したアドレスが不正の場合に例外をスローします。

RecivePacketException

受信したパケットの内容が不正な値の場合に例外をスローします。

McProtocolException

PLCからエラーコードを受信した場合に例外をスローします。

RandomWrite<T1, T2>((Prefix prefix, string address, T1 value)[], (Prefix prefix, string address, T2 value)[])

ランダムデバイス書き込み

public void RandomWrite<T1, T2>((Prefix prefix, string address, T1 value)[] wordDevices, (Prefix prefix, string address, T2 value)[] doubleWordDevices) where T1 : unmanaged where T2 : unmanaged

Parameters

wordDevices (Prefix prefix, string address, T1 value)[]

16ビット単位で書き込むデバイスの配列を指定します。
prefix:書き込み対象のデバイスコードを指定します。
address:書き込み対象のアドレスを指定します。
value:書き込みする値を指定します。

doubleWordDevices (Prefix prefix, string address, T2 value)[]

32ビット単位で書き込むデバイスの配列を指定します。
prefix:書き込み対象のデバイスコードを指定します。
address:書き込み対象のアドレスを指定します。 ・value:書き込みする値を指定します。

Type Parameters

T1

16ビット単位で書き込むデータの型。bool, short, int などの値型を指定します。 unmanaged 制約があるため、参照型は使用できません。

T2

32ビット単位で書き込むデータの型。bool, short, int などの値型を指定します。 unmanaged 制約があるため、参照型は使用できません。

Remarks

指定したデバイスに対し、値をPLCへ書き込みます。
指定された型T1T2に応じて、内部的に読み込むデバイス点数は自動的に調整されます。

Exceptions

DeviceAddressException

指定したアドレスが不正の場合に例外をスローします。

RecivePacketException

受信したパケットの内容が不正な値の場合に例外をスローします。

McProtocolException

PLCからエラーコードを受信した場合に例外をスローします。

ReadAsync<T>(Prefix, string)

単一デバイス読み込み(非同期)

public Task<T> ReadAsync<T>(Prefix prefix, string address) where T : unmanaged

Parameters

prefix Prefix

読み込み対象の先頭デバイスコードを指定します。

address string

読み込み対象の先頭アドレス

Returns

Task<T>

PLCから読み込んだ値を指定された型Tに変換して返します。

Type Parameters

T

読み込むデータの型。bool, short, int などの値型を指定します。 unmanaged 制約があるため、参照型は使用できません。

Remarks

指定したデバイスの値を非同期でPLCから読み込みます。
指定された型Tに応じて、内部的に読み込むデバイス点数は自動的に調整されます。

Exceptions

DeviceAddressException

指定したアドレスが不正の場合に例外をスローします。

RecivePacketException

受信したパケットの内容が不正な値の場合に例外をスローします。

McProtocolException

PLCからエラーコードを受信した場合に例外をスローします。

ReadString(Prefix, string, ushort)

文字列読み込み

public string ReadString(Prefix prefix, string address, ushort length)

Parameters

prefix Prefix

読み込み対象の先頭デバイスコードを指定します。

address string

読み込み対象の先頭アドレスを指定します。

length ushort

読み込みデバイス点数を指定します。

Returns

string

PLCから読み込んだ値(Shift_JIS)を文字列に変換して返します。

Remarks

指定したデバイス範囲の値を文字列として、PLCから読み込みます。

Exceptions

DeviceAddressException

指定したアドレスが不正の場合に例外をスローします。

RecivePacketException

受信したパケットの内容が不正な値の場合に例外をスローします。

McProtocolException

PLCからエラーコードを受信した場合に例外をスローします。

ReadStringAsync(Prefix, string, ushort)

文字列読み込み(非同期)

public Task<string> ReadStringAsync(Prefix prefix, string address, ushort length)

Parameters

prefix Prefix

読み込み対象の先頭デバイスコードを指定します。

address string

読み込み対象の先頭アドレスを指定します。

length ushort

読み込みデバイス点数を指定します。

Returns

Task<string>

PLCから読み込んだ値(Shift_JIS)を文字列に変換して返します。

Remarks

指定したデバイス範囲の値を文字列として、非同期でPLCから読み込みます。

Exceptions

DeviceAddressException

指定したアドレスが不正の場合に例外をスローします。

RecivePacketException

受信したパケットの内容が不正な値の場合に例外をスローします。

McProtocolException

PLCからエラーコードを受信した場合に例外をスローします。

Read<T>(Prefix, string)

単一デバイス読み込み

public T Read<T>(Prefix prefix, string address) where T : unmanaged

Parameters

prefix Prefix

読み込み対象の先頭デバイスコードを指定します。

address string

読み込み対象の先頭アドレスを指定します。

Returns

T

PLCから読み込んだ値を指定された型Tに変換して返します。

Type Parameters

T

読み込むデータの型。bool, short, int などの値型を指定します。 unmanaged 制約があるため、参照型は使用できません。

Remarks

単一デバイスの値をPLCから読み込みます。
指定された型Tに応じて、内部的に読み込むデバイス点数は自動的に調整されます。

Exceptions

DeviceAddressException

指定したアドレスが不正の場合に例外をスローします。

RecivePacketException

受信したパケットの内容が不正な値の場合に例外をスローします。

McProtocolException

PLCからエラーコードを受信した場合に例外をスローします。

WriteAsync<T>(Prefix, string, T)

単一デバイス書き込み(非同期)

public Task WriteAsync<T>(Prefix prefix, string address, T value) where T : unmanaged

Parameters

prefix Prefix

書き込み対象の先頭デバイスコードを指定します。

address string

書き込み対象の先頭アドレスを指定します。

value T

書き込みする値を指定します。

Returns

Task

Type Parameters

T

書き込むデータの型。bool, short, int などの値型を指定します。 unmanaged 制約があるため、参照型は使用できません。

Remarks

指定したデバイスに値を非同期でPLCへ書き込みます。
指定された型Tに応じて、内部的に書き込むデバイス点数は自動的に調整されます。

Exceptions

DeviceAddressException

指定したアドレスが不正の場合に例外をスローします。

RecivePacketException

受信したパケットの内容が不正な値の場合に例外をスローします。

McProtocolException

PLCからエラーコードを受信した場合に例外をスローします。

WriteString(Prefix, string, string)

文字列書き込み

public void WriteString(Prefix prefix, string address, string value)

Parameters

prefix Prefix

書き込み対象の先頭デバイスコードを指定します。

address string

書き込み対象の先頭アドレスを指定します。

value string

書き込みする文字列を指定します。

Remarks

指定したデバイスに対して、Shift_JISに変換した文字列データをPLCへ書き込みます。

Exceptions

DeviceAddressException

指定したアドレスが不正の場合に例外をスローします。

RecivePacketException

受信したパケットの内容が不正な値の場合に例外をスローします。

McProtocolException

PLCからエラーコードを受信した場合に例外をスローします。

WriteStringAsync(Prefix, string, string)

文字列書き込み(非同期)

public Task WriteStringAsync(Prefix prefix, string address, string value)

Parameters

prefix Prefix

書き込み対象の先頭デバイスコードを指定します。

address string

書き込み対象の先頭アドレスを指定します。

value string

書き込みする文字列を指定します。

Returns

Task

Remarks

指定したデバイスに対して、Shift_JISに変換した文字列データを非同期でPLCへ書き込みます。

Exceptions

DeviceAddressException

指定したアドレスが不正の場合に例外をスローします。

RecivePacketException

受信したパケットの内容が不正な値の場合に例外をスローします。

McProtocolException

PLCからエラーコードを受信した場合に例外をスローします。

Write<T>(Prefix, string, T)

単一デバイス書き込み

public void Write<T>(Prefix prefix, string address, T value) where T : unmanaged

Parameters

prefix Prefix

書き込み対象の先頭デバイスコードを指定します。

address string

書き込み対象の先頭アドレスを指定します。

value T

書き込みする値を指定します。

Type Parameters

T

書き込むデータの型。bool, short, int などの値型を指定します。 unmanaged 制約があるため、参照型は使用できません。

Remarks

単一デバイスの値をPLCに書き込みます。
指定された型Tに応じて、内部的に書き込むデバイス点数は自動的に調整されます。

Exceptions

DeviceAddressException

指定したアドレスが不正の場合に例外をスローします。

RecivePacketException

受信したパケットの内容が不正な値の場合に例外をスローします。

McProtocolException

PLCからエラーコードを受信した場合に例外をスローします。