跳到主要内容
版本:4.1

历史更新

定义

命名空间:
TouchSocketPro.PlcBridges
安装:
dotnet add package TouchSocketPro.PlcBridges

一、说明

TouchSocketPro.PlcBridges 是一个高效、灵活的PLC数据桥接库,专为.NET开发者设计,用于简化与可编程逻辑控制器(PLC)的数据交互流程。该库提供了强大的数据读写管理能力,支持多种PLC协议和数据类型,使工业自动化开发更加便捷高效。

二、支持的目标框架

  • .NET Framework 4.5+
  • .NET Standard 2.0+
  • .NET Core 3.1+
  • .NET 5/6/8/9

三、快速开始

3.1 安装NuGet包

Install-Package TouchSocketPro.PlcBridges

3.2 基本使用示例

🔄 正在加载代码...

四、配置详解

4.1 PlcDriveOption 配置属性

属性类型说明默认值
Namestring驱动器名称标识符,用于唯一标识当前驱动实例null
Startint映射到PLC桥接服务的起始地址偏移量必须自定义赋值
Countint映射到PLC桥接服务的数据单元数量必须自定义赋值
EndianTypeEndianTypePLC数据的字节序类型(Big-Endian)EndianType.Big
MaxReadGapint读取地址范围间的最大间隙阈值(单位:地址偏移量):
- 当连续地址块之间的间隙 ≤ 该值时,会被合并为一次性读取操作
- 示例:地址块 0-1, 2-3, 4-7 (间隙≤10) → 合并读取 0-7
10
MaxWriteGapint写入地址范围间的最大间隙阈值(默认值):
- 0 表示每次写入操作单独处理(不合并)
- 若设置为有效值需配合 WriteGapValidityWindow
0
WriteGapValidityWindowTimeSpan写入间隙有效时间窗口(需与 MaxWriteGap 配合使用):
- 当写入操作存在间隙(≤MaxWriteGap)时,若该间隙值在窗口时间内被读取过
- 系统会将读取值作为补丁数据,与写入操作合并批量提交
- 作用:避免间隙地址被意外覆盖(如默认0值填充)
TimeSpan.Zero
Groupstring驱动器分组名称:
- 相同分组名称的驱动器使用同一个Task执行队列(串行化执行)
null
DelayTimeTimeSpan驱动器轮询延迟时间:
- 值越大,批量处理合并的可能性越高(提升吞吐量)
- 值过大会降低实时性,需根据业务场景权衡
TimeSpan.Zero

4.2 示例配置

🔄 正在加载代码...

五、核心类与方法

5.1 PlcBridgeService 类

PLC桥接服务的主入口点,负责管理驱动器和操作请求。

5.1.1 主要方法

方法说明
SetupAsync(TouchSocketConfig)配置服务
AddDriveAsync(IPlcDrive)添加PLC驱动器
StartAsync()启动服务
StopAsync()停止服务
CreateOperator<T>()创建数据操作器

5.2 IPlcOperator 接口

提供读写PLC数据的操作接口。

5.2.1 主要方法

方法说明
ReadAsync(ReadableValueCollection<T>)读取数据
WriteAsync(WritableValueCollection<T>)写入数据

5.3 数据集合类

说明
ReadableValue<T>定义可读值(起始地址+长度)
ReadableValueCollection<T>可读值集合
WritableValue<T>定义可写值(起始地址+数据)
WritableValueCollection<T>可写值集合

六、高级特性

6.1 请求合并优化

通过配置MaxWriteGapWriteGapValidityWindow实现相邻请求的智能合并:

🔄 正在加载代码...

6.2 使用PlcObject简化访问

通过定义PLC对象映射简化数据访问:

🔄 正在加载代码...
🔄 正在加载代码...

6.3 多驱动器协同工作

支持多个驱动器协同工作,自动处理地址映射:

🔄 正在加载代码...

七、性能优化建议

🔄 正在加载代码...

八、本文示例