IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側は

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側は

IoTClient是一个IoTデバイス通信プロトコル実装クライアント側は,将包括主流PLC通信読み取り、ModBusProtocol、Bacnet协议等常用工业通信プロトコル。本组件基于.NET Standard 2.0,可用于.Net的跨プラットフォーム开发,如Windows、Linux甚至可运行于Raspberry Piについて上。

Instructions for Use

引用组件

Nugetインストール 

Install-Package IoTClient

或图形化インストール

IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト

ModBusTcp读書き込み操作。

//1、实例化クライアント側は - 入力正确的IPポートと港。
ModBusTcpClient client = new ModBusTcpClient("127.0.0.1", 502);

//2、書き込み操作。 - 参数依次是:address 、值 、ステーション番号 、function code
client.Write("4", (short)33, 2, 16);

//2.1、【注意】写入データ的时候需要明确データ型
client.Write("0", (short)33, 2, 16);    //写入shortタイプ数值
client.Write("4", (ushort)33, 2, 16);   //写入ushortタイプ数值
client.Write("8", (int)33, 2, 16);      //写入intタイプ数值
client.Write("12", (uint)33, 2, 16);    //写入uintタイプ数值
client.Write("16", (long)33, 2, 16);    //写入longタイプ数值
client.Write("20", (ulong)33, 2, 16);   //写入ulongタイプ数值
client.Write("24", (float)33, 2, 16);   //写入floatタイプ数值
client.Write("28", (double)33, 2, 16);  //写入doubleタイプ数值
client.Write("32", true, 2, 5);         //写入コイルタイプ值
client.Write("100", "orderCode", stationNumber);  //写入ストリング·ストリング

//3、読み取り操作。 - 参数依次是:address 、ステーション番号 、function code
var value = client.ReadInt16("4", 2, 3).Value;

//3.1、其他タイプデータ読み取り
client.ReadInt16("0", stationNumber, 3);    //shortタイプデータ読み取り
client.ReadUInt16("4", stationNumber, 3);   //ushortタイプデータ読み取り
client.ReadInt32("8", stationNumber, 3);    //intタイプデータ読み取り
client.ReadUInt32("12", stationNumber, 3);  //uintタイプデータ読み取り
client.ReadInt64("16", stationNumber, 3);   //longタイプデータ読み取り
client.ReadUInt64("20", stationNumber, 3);  //ulongタイプデータ読み取り
client.ReadFloat("24", stationNumber, 3);   //floatタイプデータ読み取り
client.ReadDouble("28", stationNumber, 3);  //doubleタイプデータ読み取り
client.ReadCoil("32", stationNumber, 1);    //コイルタイプデータ読み取り
client.ReadDiscrete("32", stationNumber, 2);//离散タイプデータ読み取り
client.ReadString("100", stationNumber,10); //読み取りストリング·ストリング

//4、もしない主动Open,则会每次读書き込み操作。的时候自动打开自动和接続を閉じる,这样会使読み書き效率大大减低。所以建议手动Open和Close。
client.Open();

//5、读書き込み操作。都会戻る操作结果对象Result
var result = client.ReadInt16("4", 2, 3);
//5.1 読み取り是否成功(true或false)
var isSucceed = result.IsSucceed;
//5.2 読み取り失敗的異常信息
var errMsg = result.Err;
//5.3 読み取り操作实际送信的リクエスト报文
var requst  = result.Requst;
//5.4 読み取り操作サーバー側。レスポンス的报文
var response = result.Response;
//5.5 読み取り到的值
var value3 = result.Value;

//6、バッチ読み取り
var list = new List<ModBusInput>();
list.Add(new ModBusInput()
{
    Address = "2",
    DataType = DataTypeEnum.Int16,
    FunctionCode = 3,
    StationNumber = 1
});
list.Add(new ModBusInput()
{
    Address = "2",
    DataType = DataTypeEnum.Int16,
    FunctionCode = 4,
    StationNumber = 1
});
list.Add(new ModBusInput()
{
    Address = "199",
    DataType = DataTypeEnum.Int16,
    FunctionCode = 3,
    StationNumber = 1
});
var result = client.BatchRead(list);

//7、构造函数その他のパラメータ
//IP、ポート、タイムアウト時間、大リトルエンディアン設定
ModBusTcpClient client = new ModBusTcpClient("127.0.0.1", 502, 1500, EndianFormat.ABCD);

ModBusTcpもっと見る使用方式,请参照ユニット测试

ModBusRtu读書き込み操作。

//实例化クライアント側は - [COM portName,Baud rate,data bit,stop bit,パリティ検査]
ModBusRtuClient client = new ModBusRtuClient("COM3", 9600, 8, StopBits.One, Parity.None);

//其他读書き込み操作。和ModBusTcpClient的读書き込み操作。一致

ModBusAscii读書き込み操作。

//实例化クライアント側は - [COM portName,Baud rate,data bit,stop bit,パリティ検査]
ModbusAsciiClient client = new ModbusAsciiClient("COM3", 9600, 8, StopBits.One, Parity.None);

//其他读書き込み操作。和ModBusTcpClient的读書き込み操作。一致

ModbusRtuOverTcp读書き込み操作。

//シリアルポート透传 即:用Tcp的方式送信Rtu格式报文

//实例化クライアント側は - IP、ポート、タイムアウト時間、大リトルエンディアン設定
ModbusRtuOverTcpClient client = new ModbusRtuOverTcpClient("127.0.0.1", 502, 1500, EndianFormat.ABCD);

//其他读書き込み操作。和ModBusTcpClient的读書き込み操作。一致

SiemensClient(シーメンス)读書き込み操作。

//1、实例化クライアント側は - 入力型号、IPポートと港。
//其他型号:SiemensVersion.S7_200、SiemensVersion.S7_300、SiemensVersion.S7_400、SiemensVersion.S7_1200、SiemensVersion.S7_1500
SiemensClient client = new SiemensClient(SiemensVersion.S7_200Smart, "127.0.0.1",102);

//2、書き込み操作。
client.Write("Q1.3", true);
client.Write("V2205", (short)11);
client.Write("V2209", 33);
client.Write("V2305", "orderCode");             //写入ストリング·ストリング

//3、読み取り操作。
var value1 = client.ReadBoolean("Q1.3").Value;
var value2 = client.ReadInt16("V2205").Value;
var value3 = client.ReadInt32("V2209").Value;
var value4 = client.ReadString("V2305").Value; //読み取りストリング·ストリング

//4、もしない主动Open,则会每次读書き込み操作。的时候自动打开自动和接続を閉じる,这样会使読み書き效率大大减低。所以建议手动Open和Close。
client.Open();

//5、读書き込み操作。都会戻る操作结果对象Result
var result = client.ReadInt16("V2205");
//5.1 読み取り是否成功(true或false)
var isSucceed = result.IsSucceed;
//5.2 読み取り失敗的異常信息
var errMsg = result.Err;
//5.3 読み取り操作实际送信的リクエスト报文
var requst  = result.Requst;
//5.4 読み取り操作サーバー側。レスポンス的报文
var response = result.Response;
//5.5 読み取り到的值
var value4 = result.Value;

注意:についてシーメンス的PLCaddress

VB263、VW263、VD263中的B、W、D分别表示:byte型(8位)、word型(16位)、doubleword型(32位)。

在本组件传入アドレス的时候必要なし。带データ型,直接使用对应方法読み取り对应タイプ即可,如:
VB263       - client.ReadByte("V263")
VD263       - client.ReadFloat("V263")
VD263       - client.ReadInt32("V263")
DB108.DBW4  - client.ReadUInt16("DB108.4")
DB1.DBX0.0  - client.ReadBoolean("DB1.0.0")
DB1.DBD0    - client.ReadFloat("DB1.0")
C#data type 智能200 1200/1500/300
少量 V1.0 DB1.DBX1.0
byte VB1 DB1.DBB1

ushort
大众2 DB1.DBW2
int
uint
浮動小数点数
VD4 DB1.DBD4

シーメンス客户ベストプラクティス

1、什么时候不要主动Open
シーメンスplc一般最多允许8个长连接。所以当连接数不够用的时候或者做测试的时候就不要主动Open,这样组件会自动Open并即时Close。

2、什么时候主动Open
当长连接数量还够用,且想要提升読み書き性能。

3、除了主动Openconnect,还可以経由批量読み書き,大幅提升読み書き性能。
//バッチ読み取り
Dictionary<string, DataTypeEnum> addresses = new Dictionary<string, DataTypeEnum>();
addresses.Add("DB4.24", DataTypeEnum.Float);
addresses.Add("DB1.434.0", DataTypeEnum.Bool);
addresses.Add("V4109", DataTypeEnum.Byte);
...
var result = client.BatchRead(addresses);

//一括書き込みき込み入
Dictionary<string, object> addresses = new Dictionary<string, object>();
addresses.Add("DB4.24", (float)1);
addresses.Add("DB4.0", (float)2);
addresses.Add("DB1.434.0", true);
...
var result = client.BatchWrite(addresses);

4、【注意】写入データ的时候需要明确データ型
client.Write("DB4.12", 9);          //写入的是intType
client.Write("DB4.12", (float)9);   //写入的是floatType

5、SiemensClient是线程セキュリティ类
由于plc长连接有限,SiemensClient被设计成线程セキュリティ类。可以把SiemensClient設定成单例,在多个线程之间使用SiemensClient的实例读書き込み操作。plc。

MitsubishiClient(三菱)读書き込み操作。

//1、实例化クライアント側は - 入力正确的IPポートと港。
MitsubishiClient client = new MitsubishiClient(MitsubishiVersion.Qna_3E, "127.0.0.1",6000);

//2、書き込み操作。
client.Write("M100", true);
client.Write("D200", (short)11);
client.Write("D210", 33);

//3、読み取り操作。
var value1 = client.ReadBoolean("M100").Value;
var value2 = client.ReadInt16("D200").Value;
var value3 = client.ReadInt32("D210").Value;

//4、もしない主动Open,则会每次读書き込み操作。的时候自动打开自动和接続を閉じる,这样会使読み書き效率大大减低。所以建议手动Open和Close。
client.Open();

//5、读書き込み操作。都会戻る操作结果对象Result
var result = client.ReadInt16("D210");
//5.1 読み取り是否成功(true或false)
var isSucceed = result.IsSucceed;
//5.2 読み取り失敗的異常信息
var errMsg = result.Err;
//5.3 読み取り操作实际送信的リクエスト报文
var requst  = result.Requst;
//5.4 読み取り操作サーバー側。レスポンス的报文
var response = result.Response;
//5.5 読み取り到的值
var value4 = result.Value;

OmronFinsClient(オムロン)读書き込み操作。

//1、实例化クライアント側は - 入力正确的IPポートと港。
OmronFinsClient client = new OmronFinsClient("127.0.0.1",6000);

//2、書き込み操作。
client.Write("M100", true);
client.Write("D200", (short)11);
client.Write("D210", 33);

//3、読み取り操作。
var value1 = client.ReadBoolean("M100").Value;
var value2 = client.ReadInt16("D200").Value;
var value3 = client.ReadInt32("D210").Value;

//4、もしない主动Open,则会每次读書き込み操作。的时候自动打开自动和接続を閉じる,这样会使読み書き效率大大减低。所以建议手动Open和Close。
client.Open();

//5、读書き込み操作。都会戻る操作结果对象Result
var result = client.ReadInt16("D210");
//5.1 読み取り是否成功(true或false)
var isSucceed = result.IsSucceed;
//5.2 読み取り失敗的異常信息
var errMsg = result.Err;
//5.3 読み取り操作实际送信的リクエスト报文
var requst  = result.Requst;
//5.4 読み取り操作サーバー側。レスポンス的报文
var response = result.Response;
//5.5 読み取り到的值
var value4 = result.Value;

AllenBradleyClient(ロックウェル)读書き込み操作。

//1、实例化クライアント側は - 入力正确的IPポートと港。
AllenBradleyClient client = new AllenBradleyClient("127.0.0.1",44818);

//2、書き込み操作。 
client.Write("A1", (short)11); 

//3、読み取り操作。
var value = client.ReadInt16("A1").Value;

//4、もしない主动Open,则会每次读書き込み操作。的时候自动打开自动和接続を閉じる,这样会使読み書き效率大大减低。所以建议手动Open和Close。
client.Open();

//5、读書き込み操作。都会戻る操作结果对象Result
var result = client.ReadInt16("A1");
//5.1 読み取り是否成功(true或false)
var isSucceed = result.IsSucceed;
//5.2 読み取り失敗的異常信息
var errMsg = result.Err;
//5.3 読み取り操作实际送信的リクエスト报文
var requst  = result.Requst;
//5.4 読み取り操作サーバー側。レスポンス的报文
var response = result.Response;
//5.5 読み取り到的值
var value4 = result.Value;

基于IoTClient库的一些项目

IoTClient Tool 桌面程序工具(开源)

所属个人:农码一生

IoTClient Tool桌面程序工具,アドレス开源

  • 1、可用于测试PLC及相关协议的通信
  • 2、可作为IoTClient库使用例の例。
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト1
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト2
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト3
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト4
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト5
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト6
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト7
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト8
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト9
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト10

iotgateway(开源)

所属个人:iioter

IoTゲートウェイ

IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト11

能源管理系统()

会社名:会社名:擎纳尔科技

能源管理-现场-单项目

IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト12
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト13

能源管理-云端-多项目

IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト14
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト15
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト16
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト17
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト18
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト19
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト20

能源管理-モバイル端末。

IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト21
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト22
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト23
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト24
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト25
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト26
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト27

海底捞即将控制()

会社名:会社名:擎纳尔科技

海底捞终止控制-web

IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト28
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト29
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト30
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト31

海底捞终止控制-モバイル端末。

IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト32
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト33
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト34
IoTClient:基于C#开发的IoTデバイス通信プロトコルクライアント側はイラスト35
Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.