IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端缩略图
🌐 Diese Seite ist noch nicht auf Deutsch verfügbar. Die chinesische Version wird angezeigt. Zurück zur chinesischen Seite.
本文目录
  1. 1. 引用组件
  2. 2. ModBusTcp读写Operationen
  3. 3. ModBusRtu读写Operationen
  4. 4. ModBusAscii读写Operationen
  5. 5. ModbusRtuOverTcp读写Operationen
  6. 6. SiemensClient(西门子)读写Operationen
  7. 7. 注意:关于西门子的PLCAdresse
  8. 8. 西门子客户最佳实践
  9. 9. MitsubishiClient(三菱)读写Operationen
  10. 10. OmronFinsClient(欧姆龙)读写Operationen
  11. 11. AllenBradleyClient(罗克韦尔)读写Operationen
  12. 12. IoTClient Tool 桌面程序Werkzeuge(开源)
  13. 13. IoTClient Tool桌面程序Werkzeuge,Adresse开源。
  14. 14. iotgateway(开源)
  15. 15. 物联网网关
  16. 16. 能源管理Das System()
  17. 17. 能源管理-现场-单项目
  18. 18. 能源管理-云端-多项目
  19. 19. 能源管理-移动端
  20. 20. 海底捞即将控制()
  21. 21. 海底捞终止控制-web
  22. 22. 海底捞终止控制-移动端

IoTClient是一个物联网Ausrüstung通讯Vereinbarung实现客户端,将包括主流PLCKommunikationLesen、ModBusVereinbarung、BacnetVereinbarung等常用工业通讯Vereinbarung。本组件基于.NET Standard 2.0,可用于.Net的跨平台开发,如Windows、Linux甚至可Betrieb于Raspberry Pi上。

Benutzungsanweisungen

引用组件

Nuget安装 

Install-Package IoTClient

或图形化安装

IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图

ModBusTcp读写Operationen

//1、实例化客户端 - 输入Richtig.的IP和端口
ModBusTcpClient client = new ModBusTcpClient("127.0.0.1", 502);

//2、写Operationen - Parameter依次是:Adresse 、值 、站Nr. 、Funktionscode
client.Write("4", (short)33, 2, 16);

//2.1、【注意】写入Daten的时候需要明确Datentyp
client.Write("0", (short)33, 2, 16);    //写入shortTypusZahlenwert
client.Write("4", (ushort)33, 2, 16);   //写入ushortTypusZahlenwert
client.Write("8", (int)33, 2, 16);      //写入intTypusZahlenwert
client.Write("12", (uint)33, 2, 16);    //写入uintTypusZahlenwert
client.Write("16", (long)33, 2, 16);    //写入longTypusZahlenwert
client.Write("20", (ulong)33, 2, 16);   //写入ulongTypusZahlenwert
client.Write("24", (float)33, 2, 16);   //写入floatTypusZahlenwert
client.Write("28", (double)33, 2, 16);  //写入doubleTypusZahlenwert
client.Write("32", true, 2, 5);         //写入线圈Typus值
client.Write("100", "orderCode", stationNumber);  //写入Charaktere串

//3、读Operationen - Parameter依次是:Adresse 、站Nr. 、Funktionscode
var value = client.ReadInt16("4", 2, 3).Value;

//3.1、其他TypusDatenLesen
client.ReadInt16("0", stationNumber, 3);    //shortTypusDatenLesen
client.ReadUInt16("4", stationNumber, 3);   //ushortTypusDatenLesen
client.ReadInt32("8", stationNumber, 3);    //intTypusDatenLesen
client.ReadUInt32("12", stationNumber, 3);  //uintTypusDatenLesen
client.ReadInt64("16", stationNumber, 3);   //longTypusDatenLesen
client.ReadUInt64("20", stationNumber, 3);  //ulongTypusDatenLesen
client.ReadFloat("24", stationNumber, 3);   //floatTypusDatenLesen
client.ReadDouble("28", stationNumber, 3);  //doubleTypusDatenLesen
client.ReadCoil("32", stationNumber, 1);    //线圈TypusDatenLesen
client.ReadDiscrete("32", stationNumber, 2);//离散TypusDatenLesen
client.ReadString("100", stationNumber,10); //LesenCharaktere串

//4、如果没有主动Open,则会每次读写Operationen的时候自动Öffnen.自动和SchließenVerbindung,这样会使读写效率大大减低。所以建议手动Open和Close。
client.Open();

//5、读写Operationen都会返回OperationenErgebnis对象Result
var result = client.ReadInt16("4", 2, 3);
//5.1 Lesen是否成功(true或false)
var isSucceed = result.IsSucceed;
//5.2 Lesen gescheitert的异常信息
var errMsg = result.Err;
//5.3 LesenOperationen实际Senden Sie的BitteMeldung
var requst  = result.Requst;
//5.4 LesenOperationen服务端Antwort的Meldung
var response = result.Response;
//5.5 Lesenzu的值
var value3 = result.Value;

//6、批QuantitätLesen
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、构造函数其他Parameter
//IP、端口、超时Zeit、大小端设置
ModBusTcpClient client = new ModBusTcpClient("127.0.0.1", 502, 1500, EndianFormat.ABCD);

ModBusTcpmehr.使用方式,请参考单元测试

ModBusRtu读写Operationen

//实例化客户端 - [COM-PortsName,Porter Rate,Datenplatz,Stoppen Sie Platz,奇Zufällige Prüfungen]
ModBusRtuClient client = new ModBusRtuClient("COM3", 9600, 8, StopBits.One, Parity.None);

//其他读写Operationen和ModBusTcpClient的读写Operationen一致

ModBusAscii读写Operationen

//实例化客户端 - [COM-PortsName,Porter Rate,Datenplatz,Stoppen Sie Platz,奇Zufällige Prüfungen]
ModbusAsciiClient client = new ModbusAsciiClient("COM3", 9600, 8, StopBits.One, Parity.None);

//其他读写Operationen和ModBusTcpClient的读写Operationen一致

ModbusRtuOverTcp读写Operationen

//Die Serie透传 即:用Tcp的方式Senden SieRtuDas FormatMeldung

//实例化客户端 - IP、端口、超时Zeit、大小端设置
ModbusRtuOverTcpClient client = new ModbusRtuOverTcpClient("127.0.0.1", 502, 1500, EndianFormat.ABCD);

//其他读写Operationen和ModBusTcpClient的读写Operationen一致

SiemensClient(西门子)读写Operationen

//1、实例化客户端 - 输入型Nr.、IP和端口
//其他型Nr.: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、写Operationen
client.Write("Q1.3", true);
client.Write("V2205", (short)11);
client.Write("V2209", 33);
client.Write("V2305", "orderCode");             //写入Charaktere串

//3、读Operationen
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; //LesenCharaktere串

//4、如果没有主动Open,则会每次读写Operationen的时候自动Öffnen.自动和SchließenVerbindung,这样会使读写效率大大减低。所以建议手动Open和Close。
client.Open();

//5、读写Operationen都会返回OperationenErgebnis对象Result
var result = client.ReadInt16("V2205");
//5.1 Lesen是否成功(true或false)
var isSucceed = result.IsSucceed;
//5.2 Lesen gescheitert的异常信息
var errMsg = result.Err;
//5.3 LesenOperationen实际Senden Sie的BitteMeldung
var requst  = result.Requst;
//5.4 LesenOperationen服务端Antwort的Meldung
var response = result.Response;
//5.5 Lesenzu的值
var value4 = result.Value;

注意:关于西门子的PLCAdresse

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

在本组件传入Adresse的时候不需要带Datentyp,直接使用对应方法Lesen对应Typus即可,如:
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#Datentyp 智能200 1200/1500/300
少Quantität V1.0 DB1.DBX1.0
Bytes VB1 DB1.DBB1

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

西门子客户最佳实践

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

2、什么时候主动Open
当长VerbindungAnzahl还够用,且想要提升读写性能。

3、除了主动OpenVerbindung,还可以通过批Quantität读写,大幅提升读写性能。
//批QuantitätLesen
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);

//批Quantität写入
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、【注意】写入Daten的时候需要明确Datentyp
client.Write("DB4.12", 9);          //写入的是intTypus
client.Write("DB4.12", (float)9);   //写入的是floatTypus

5、SiemensClient是线程安全类
由于plc长Verbindung有限,SiemensClient被设计成线程安全类。可以把SiemensClient设置成单例,在多个线程之间使用SiemensClient的实例读写Operationenplc。

MitsubishiClient(三菱)读写Operationen

//1、实例化客户端 - 输入Richtig.的IP和端口
MitsubishiClient client = new MitsubishiClient(MitsubishiVersion.Qna_3E, "127.0.0.1",6000);

//2、写Operationen
client.Write("M100", true);
client.Write("D200", (short)11);
client.Write("D210", 33);

//3、读Operationen
var value1 = client.ReadBoolean("M100").Value;
var value2 = client.ReadInt16("D200").Value;
var value3 = client.ReadInt32("D210").Value;

//4、如果没有主动Open,则会每次读写Operationen的时候自动Öffnen.自动和SchließenVerbindung,这样会使读写效率大大减低。所以建议手动Open和Close。
client.Open();

//5、读写Operationen都会返回OperationenErgebnis对象Result
var result = client.ReadInt16("D210");
//5.1 Lesen是否成功(true或false)
var isSucceed = result.IsSucceed;
//5.2 Lesen gescheitert的异常信息
var errMsg = result.Err;
//5.3 LesenOperationen实际Senden Sie的BitteMeldung
var requst  = result.Requst;
//5.4 LesenOperationen服务端Antwort的Meldung
var response = result.Response;
//5.5 Lesenzu的值
var value4 = result.Value;

OmronFinsClient(欧姆龙)读写Operationen

//1、实例化客户端 - 输入Richtig.的IP和端口
OmronFinsClient client = new OmronFinsClient("127.0.0.1",6000);

//2、写Operationen
client.Write("M100", true);
client.Write("D200", (short)11);
client.Write("D210", 33);

//3、读Operationen
var value1 = client.ReadBoolean("M100").Value;
var value2 = client.ReadInt16("D200").Value;
var value3 = client.ReadInt32("D210").Value;

//4、如果没有主动Open,则会每次读写Operationen的时候自动Öffnen.自动和SchließenVerbindung,这样会使读写效率大大减低。所以建议手动Open和Close。
client.Open();

//5、读写Operationen都会返回OperationenErgebnis对象Result
var result = client.ReadInt16("D210");
//5.1 Lesen是否成功(true或false)
var isSucceed = result.IsSucceed;
//5.2 Lesen gescheitert的异常信息
var errMsg = result.Err;
//5.3 LesenOperationen实际Senden Sie的BitteMeldung
var requst  = result.Requst;
//5.4 LesenOperationen服务端Antwort的Meldung
var response = result.Response;
//5.5 Lesenzu的值
var value4 = result.Value;

AllenBradleyClient(罗克韦尔)读写Operationen

//1、实例化客户端 - 输入Richtig.的IP和端口
AllenBradleyClient client = new AllenBradleyClient("127.0.0.1",44818);

//2、写Operationen 
client.Write("A1", (short)11); 

//3、读Operationen
var value = client.ReadInt16("A1").Value;

//4、如果没有主动Open,则会每次读写Operationen的时候自动Öffnen.自动和SchließenVerbindung,这样会使读写效率大大减低。所以建议手动Open和Close。
client.Open();

//5、读写Operationen都会返回OperationenErgebnis对象Result
var result = client.ReadInt16("A1");
//5.1 Lesen是否成功(true或false)
var isSucceed = result.IsSucceed;
//5.2 Lesen gescheitert的异常信息
var errMsg = result.Err;
//5.3 LesenOperationen实际Senden Sie的BitteMeldung
var requst  = result.Requst;
//5.4 LesenOperationen服务端Antwort的Meldung
var response = result.Response;
//5.5 Lesenzu的值
var value4 = result.Value;

基于IoTClient库的一些项目

IoTClient Tool 桌面程序Werkzeuge(开源)

所属个人:农码一生

IoTClient Tool桌面程序Werkzeuge,Adresse开源

  • 1、可用于测试PLC及RelatedVereinbarung的Kommunikation
  • 2、可作为IoTClient库使用Beispiel。
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图1
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图2
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图3
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图4
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图5
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图6
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图7
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图8
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图9
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图10

iotgateway(开源)

所属个人:iioter

物联网网关

IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图11

能源管理Das System()

UnternehmenName:擎纳尔科技

能源管理-现场-单项目

IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图12
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图13

能源管理-云端-多项目

IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图14
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图15
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图16
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图17
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图18
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图19
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图20

能源管理-移动端

IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图21
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图22
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图23
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图24
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图25
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图26
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图27

海底捞即将控制()

UnternehmenName:擎纳尔科技

海底捞终止控制-web

IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图28
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图29
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图30
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图31

海底捞终止控制-移动端

IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图32
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图33
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图34
IoTClient:基于C#开发的物联网Ausrüstung通讯Vereinbarung客户端插图35
Techniken术语(共 6 个)—— Klick auf展开
FunktionscodeModbusFunktionscode指定读/写OperationenTypus,如01读线圈、03Lesen Sie das Register
PLC可编程逻辑Der Controller,Industrielle Automatisierung控制的核心Ausrüstung
Porter Rate串行Kommunikation每秒传输符Nr.数,Modbus RTU常用9600/19200
网关Vereinbarung转换Ausrüstung,如 Modbus RTU ↔ Modbus TCP
Die SerieBerechnung机与外部Ausrüstung进行串行Kommunikation的物理Schnittstelle
线圈Modbus位可读Schreiben von Daten,Adresse从00001开始
来源/Werkzeuge信息 —— Klick auf展开
来源 Modbus Chinesisches Netzwerk(modbus.cn) —— Inländisch führend.ModbusKommunikationsprotokoll Technologie Gemeinschaft Klassifizierung Modbus Programmierung 字数 7155 字 · 阅读约 18 Unterteilung钟 更新 2023-12-09 永久链接 https://www.modbus.cn/26158.html
Empfohlene Werkzeuge: Modbus Debugger-Assistent WeChat-Applet
Modbus Chinesisches Netzwerk官方推出的Modbus Debugging-Tools,支持 Modbus RTU/TCP 实时KommunikationTests、Register.读写、线圈控制、Daten监控和MeldungUnterteilung析。 keine Installation erforderlich,Mikro-Suche「Modbus DebuggingAssistenten.」Benutzt werden kann.。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.