
一、快速入门1. 环境准备Visual Studio 2019 或更高版本即可社区版够用PLC 需预先配置好以太网参数建议设为静态地址如 192.168.0.10子网掩码 255.255.255.0。2. 安装与命名空间通过 NuGet 安装最便捷例如Install-Package HslCommunication -Version 11.0.0。按协议引入命名空间using HslCommunication;、using HslCommunication.Profinet;PLC 通信、using HslCommunication.ModBus;Modbus 协议。3. 最小可用流程以三菱 FX5U 为例注意 FX5U 使用 MelsecMcNet 类通讯与老款 FX3U 采用的协议不同不要混淆MelsecMcNetplcnewMelsecMcNet(192.168.0.10,5000);plc.ConnectTimeOut2000;OperateResultconnectResultplc.ConnectServer();if(connectResult.IsSuccess)Console.WriteLine(PLC连接成功);elseConsole.WriteLine($连接失败{connectResult.Message});端口方面三菱默认 5000网络环境复杂时可适当增大 ConnectTimeOut生产环境建议把 IP 配置在 appsettings.json 中便于不同环境切换。4. 西门子侧用SiemensS7Net构造时指定型号与 IP机架插槽有默认值可再设置连接超时ConnectServer()返回 OperateResult用 IsSuccess 判断。地址字符串与 S7netplus 基本一致读写方法按类型命名如s7.Write(DB50.DBD0, 1)、bool b s7.ReadBool(I0.0).Content另有 ReadInt16 / ReadFloat / ReadInt32 等强类型方法且读写默认内部会自动建立连接可以不显式调用 ConnectServer。二、PLC 通信实战要点寄存器与位元件// 读取 D100 开始的 2 个寄存器OperateResultshort[]readResultplc.ReadInt16(D100,2);// 批量写入short[]values{100,200,300,400,500};plc.Write(D300,values);// 位元件OperateResultbool[]bitReadplc.ReadBool(X0,10);plc.Write(Y0,true);地址前缀对照D 为数据寄存器16/32 位整数X 输入继电器、Y 输出继电器、M 内部继电器均为布尔值。健壮性方案带重试的读取封装比较实用循环调用plc.ReadT(address, length)失败时短暂延迟如 100ms后重试超过最大次数返回失败结果。排错思路上连接超时先查物理网络和 PLC IP 配置、必要时关防火墙测试读取失败要验证寄存器地址是否存在、PLC 是否在 RUN 模式、端口是否被其他程序占用通讯中断则需实现自动重连、加心跳检测并记录异常日志。性能批量读取代替单次读取每次建议 50–100 个寄存器实时性要求高的数据单独建快速通道异步读写可提升 UI 响应速度。这一点对你做 WinForm/WPF 尤其重要——回调和轮询别直接怼 UI 线程。选型参考只做西门子、追求轻量可选 S7netplus项目涉及多品牌 PLC 或需要日志、断线重连等丰富能力HslCommunication 更合适其返回值风格是统一的 OperateResult.IsSuccess/.Content而 S7netplus 是直接返回值、异常靠抛异常。三、高级特性自动重连与心跳有资料给出AutoReConnect、ReConnectInterval及重连成功事件以及EnableHeartBeat、HeartBeatInterval的配置方式长连接下心跳失败会自动断开并重连。不过要注意心跳的实际语义并非“显式回复确认”——在 HSL 这类成熟库中只要在预设的 ReceiveTimeout 时间内收到服务端任何数据业务消息或心跳响应都会被视作一次有效的心跳应答这种隐式响应机制降低了协议复杂度和通信开销但开发者需理解其行为模式否则容易困惑“都收到数据了怎么还触发断线”。状态流转上还有 SuspectedFailure 这类缓冲态系统不会立刻断开而是留出容错空间。参数要按网络环境调局域网可以激进些移动网络因高丢包率建议放宽间隔并启用指数退避否则稍有波动就误判断线可能造成重连风暴。线程安全有说法称其读写方法线程安全可在多线程中同时调用同一通信对象而无需额外加锁。不过这类结论建议以你所用版本的官方文档和实测为准涉及写控制点时仍建议做串行化保护。协议与扩展能力较新版本如 11.5.3在底层通信机制、异常容错、线程安全模型、异步支持、日志可追溯性等方面做了优化Modbus 侧支持功能码全集、寄存器地址自动偏移校正、字节序灵活配置、CRC/LRC 自动校验及超时重试与断线重连OPC UA 客户端基于开源 Stack 实现支持 X509 证书认证、用户名密码登录、会话保持、订阅发布、历史数据读取与节点浏览兼容 KEPServerEX、MatrikonOPC 等主流服务器。扩展性方面可通过 IProtocolAdapter 支持第三方协议插件化接入LogNet 抽象层可对接 NLog/Serilog 等日志框架并有 NetworkTrace 之类的诊断开关输出含时间戳、方向、原始字节流和耗时统计的完整通信过程便于定位 Modbus CRC 校验失败、S7 PDU 长度溢出、OPC UA 会话过期等疑难问题。其他工程能力内置 HTTP 服务器和 WebSocket一个 EXE 就能同时采集数据、提供 Web 服务并推送实时画面批量读写在高频采集场景下能显著减少通信次数。四、两点提醒授权商业使用需购买授权未经书面合同正式授权一律视为侵权企业版为终身授权不限制电脑数量、PLC 数量及读写点数。网上有“免费版本”的说法多见于早期版本描述正式项目前建议确认当前版本的授权条款。与你现有 OPC 方案的衔接既然已有 KEPServerEX 出口引入 HSL 直连时最好明确“谁为主、谁为备”避免同一控制点存在两条写入通路造成指令冲突。需要的话我可以帮你画一版点位归属与优先级划分的方案。