.NET 工业互联网通讯库:实现主流PLC协议(ModBus、CIP、MC、FINS等)

50 阅读4分钟

前言

数字化转型加速的时代,工业互联网(IIoT)作为连接物理世界与数字世界的桥梁,正变得越来越重要。它不仅促进了设备间的高效通信,还为智能制造、自动化控制等领域带来了前所未有的变革。

然而,面对市场上众多的通信协议和复杂的设备接口,如何快速、稳定地实现设备间的数据交换成为了一个亟待解决的问题。

本文将介绍一款名为 Ping9719.IoT 的工业互联网通讯库,它支持多种主流PLC及其它常用协议,帮助大家简化开发过程,提升工作效率。

项目介绍

Ping9719.IoT 是一个开源的工业互联网通讯库,它实现了包括 ModBus、CIP、MC、FINS 在内的多种常用协议。

该库不仅提供了对主流PLC的支持,还涵盖了从 TCP、串口到 USB 等多种通信方式的切换功能。不管是新手开发还是有技术大神,都能通过 Ping9719.IoT 快速搭建起高效稳定的工业物联网系统。

项目特性

1、统一的设备访问接口

Ping9719.IoT 定义了 IIoT 接口,允许用户通过简单的 API 调用即可实现数据的读写操作。例如:

client.Read<bool>("abc"); // 读取单个值
client.Write<int>("abc", 10, 20, 30); // 写入多个值

2、灵活的客户端配置

基于 ClientBase 类,Ping9719.IoT 支持轻松切换不同的通信方式,如 TCP、串口等。

var tcpClient = new TcpClient(ip, port);
var omronClient = new OmronCipClient(tcpClient);
omronClient.Client.Open(); // 打开连接

3、事件驱动机制

Ping9719.IoT 提供了丰富的事件处理机制,使开发者能够根据实际需求定制连接状态变化、数据接收等行为。

client1.Opened += (sender) => Log.AddLog("连接成功");
client1.Received += (sender, data) => Log.AddLog($"收到消息: {data}");

支持的协议与设备

1、Modbus 协议支持

ModbusRtuClient

功能:支持串口 Modbus RTU 协议通信

状态:已实现,可稳定使用

ModbusTcpClient

功能:支持基于 TCP 的 Modbus TCP 协议通信

状态:已实现,可稳定使用

ModbusAsciiClient

功能:支持 ASCII 模式的 Modbus 协议通信

状态:已实现,功能完整

2、PLC 设备支持

品牌客户端类名说明状态
罗克韦尔AllenBradleyCipClientCIP 协议❗未通过测试
汇川InovanceModbusTcpClientModbus TCP 协议✅已实现,可用
三菱MitsubishiMcClientMC 协议✅已实现,可用
欧姆龙OmronFinsClient, OmronCipClientFINS / CIP 协议✅已实现,可用
西门子SiemensS7ClientS7 协议(适配S7系列PLC)✅已实现,可用

3、机器人设备支持

品牌设备类名协议/接口状态
爱普生EpsonRobot自定义协议⏳进行中

4、通讯模块

模块名类名协议/技术栈状态
TcpClientTcpClientTCP 协议✅已实现,可用
TcpServerTcpServerTCP 协议⏳待开发
SerialPortClientSerialPortClient串口通信✅已实现,可用
UdpClientUdpClientUDP 协议⏳待开发
UdpServerUdpServerUDP 协议⏳待开发
HttpServerHttpServerHTTP / REST API⏳待开发
MqttClientMqttClientMQTT 协议⏳待开发
MqttServerMqttServerMQTT 协议⏳待开发

5、算法模块

算法名称类名状态
CRC 校验CRC✅已实现
傅立叶变换 (Fourier)FourierAlgorithm⏳待开发
PID 控制PIDController⏳待开发
RSA 加密RSAEncryptor⏳待开发

6、设备和仪器支持(Device)

FCT 测试设备

品牌类名接口类型状态
盟讯电子MengXunFct自定义✅可用

激光刻印机(Marking Devices)

品牌类名协议状态
大族激光DaZhuMark自定义✅可用
华普激光HuaPuMark自定义✅可用

无线射频识别(RFID)

品牌类名协议状态
倍加福BeiJiaFuRfid自定义✅可用
泰和森TaiHeSenRfid自定义✅可用
万全WanQuanRfid自定义✅可用

扫码枪(Scanner)

品牌类名协议状态
霍尼韦尔HoneywellScanner串口/USB✅可用
民德MindeoScanner串口/USB✅可用

螺丝机(Screw Machine)

品牌类名协议状态
快克螺丝机KuaiKeDeskScrew, KuaiKeScrew, KuaiKeTcpScrew自定义协议❌不推荐使用
米勒螺丝机MiLeScrew自定义协议✅可用(推荐)

温控设备(Temperature Control)

品牌类名协议状态
快克温控KuaiKeTemperatureControl自定义协议❌不推荐使用

焊接机(Welding Machine)

品牌类名协议状态
快克焊接机KuaiKeWeld自定义协议❌不推荐使用

项目文档

IoT 文档

IoT.WPF 文档

IoT.Avalonia 文档

项目源码

Gitee:gitee.com/ping9719/Io…

GitHub:github.com/ping9719/Io…

总结

Ping9719.IoT 是一个面向工业自动化领域的通用通信库,旨在提供包括 PLC、ModBus、机器人、RFID、扫码枪等多种设备的接入能力。目前项目已完成基础通信框架与多种主流设备的支持,部分高级功能(如 MQTT、HTTP Server、PID 等)正在规划或开发中。

以上仅展示了物联网设备通讯协议的部分功能。更多实用特性和详细信息,请大家访问项目源码。

希望通过本文能为.NET在物联网设备通讯协议开发方面提供有价值的参考。欢迎在评论区留言交流,分享您的宝贵经验和建议。

最后

如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。

也可以加入微信公众号 [DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!

优秀是一种习惯,欢迎大家留言学习!