在C#开发工业控制、设备数据采集类应用时,HslCommunication库是非常实用的工具,它封装了多种工业通信协议,降低了和PLC、仪表等设备交互的开发难度。下面介绍它的具体使用方法。

环境准备
首先需要在项目中引入HslCommunication库,最便捷的方式是通过NuGet包管理器安装。在Visual Studio中右键点击项目,选择管理NuGet程序包,搜索HslCommunication,选择最新稳定版本安装即可。安装完成后,在代码文件顶部添加对应的命名空间引用。
using HslCommunication; using HslCommunication.ModBus;
Modbus TCP通信实战
Modbus是工业领域最常用的通信协议之一,HslCommunication对Modbus协议的支持非常完善,下面以Modbus TCP为例,实现读取和写入寄存器的操作。
创建Modbus TCP客户端
首先需要初始化Modbus TCP客户端对象,设置目标设备的IP地址和端口号,默认端口是502。
// 创建Modbus TCP客户端,指定从站地址为1
private ModbusTcpNet modbusTcpClient = new ModbusTcpNet("192.168.0.100", 502, 1);
// 连接设备
OperateResult connectResult = modbusTcpClient.ConnectServer();
if (connectResult.IsSuccess)
{
Console.WriteLine("设备连接成功");
}
else
{
Console.WriteLine("设备连接失败,错误信息:" + connectResult.Message);
}
读取保持寄存器数据
保持寄存器是Modbus协议中常用的数据存储区域,下面的代码实现读取从地址0开始的10个保持寄存器的数据。
// 读取保持寄存器,起始地址0,读取10个寄存器
OperateResult<short[]> readResult = modbusTcpClient.ReadInt16("0", 10);
if (readResult.IsSuccess)
{
short[] registerValues = readResult.Content;
for (int i = 0; i < registerValues.Length; i++)
{
Console.WriteLine($"寄存器{i}的值:{registerValues[i]}");
}
}
else
{
Console.WriteLine("读取失败,错误信息:" + readResult.Message);
}
写入保持寄存器数据
写入操作同样简单,下面的代码实现向地址0的寄存器写入一个数值。
// 向地址0的寄存器写入数值100
OperateResult writeResult = modbusTcpClient.Write("0", (short)100);
if (writeResult.IsSuccess)
{
Console.WriteLine("写入成功");
}
else
{
Console.WriteLine("写入失败,错误信息:" + writeResult.Message);
}
其他常用功能
HslCommunication还支持很多其他实用功能,比如:
- 支持Modbus RTU、Modbus ASCII等其他Modbus变种协议
- 支持西门子、三菱、欧姆龙等主流品牌PLC的专属通信协议
- 提供数据订阅功能,可以监听寄存器值的变化
- 支持异步通信方法,避免阻塞主线程
注意事项
使用过程中需要注意几个问题:首先确保目标设备的IP地址、端口、从站地址配置正确;其次读写地址需要和设备的实际地址映射对应,不同设备的地址定义可能存在差异;最后操作完成后要记得调用modbusTcpClient.ConnectClose()方法关闭连接,释放资源。
C#HslCommunication工业通信ModbusPLC修改时间:2026-06-17 07:36:13