- 博客(38)
- 收藏
- 关注
原创 GKTGD 工业监控系统-00设计文档
项目名称: GKTGD 工业监控系统架构模式: MVVM + 模块化架构技术栈: WPF + .NET 8.0创建日期: 2026-05-06版本: 1.0开发一个基于WPF MVVM架构的工业自动化监控系统,支持设备控制、机器视觉、数据监测、实时曲线、工艺配方、数据报表、用户管理、系统设置等核心功能模块。本项目采用LiveCharts.Wpf和ScottPlot双图表库策略,充分发挥各自优势:优势: 实时数据绑定友好,动画流畅,仪表盘风格适用模块:技术特点:1.4.2 ScottPlot 应用
2026-05-06 12:38:42
342
原创 GKMLT通讯工具箱(WPF MVVM) - 07-倍福ADS通讯
ADS(Automation Device Specification)是德国倍福(Beckhoff)公司开发的专用通讯协议,用于基于PC的控制系统通讯。ADS基于TCP/IP协议,提供了高效、实时的数据交换机制,主要用于与倍福TwinCAT PLC系统进行通讯。索引组说明访问方式0x0000存储器访问直接访问0x4020符号/变量名访问符号名0x4021符号/变量名释放符号名0x4025读写符号值符号名0xF000PLC任务控制任务控制0xF003系统服务系统信息。
2026-04-30 14:16:59
395
原创 GKMLT通讯工具箱(WPF MVVM) - 06-OPCUA通讯
OPC UA (Open Platform Communications Unified Architecture) 是工业自动化领域的设备通讯标准,提供安全、可靠、平台无关的数据交换机制。本模块实现了OPC UA客户端功能,支持连接、浏览、读取、写入、订阅等核心操作。安全性:支持加密、签名、证书验证可靠性:会话管理、重连机制、错误恢复高效性:批量操作、订阅机制、连接复用易用性:简洁的API接口、完善的事件机制标准化:符合OPC UA国际标准。
2026-04-30 11:18:13
429
原创 GKMLT通讯工具箱(WPF MVVM) - 05-WebAPI通讯
WebAPI通讯模块实现了基于HTTP/HTTPS协议的RESTful API客户端功能,支持GET、POST等多种HTTP方法,提供JSON数据序列化/反序列化、Bearer Token认证、表单提交等功能。多种HTTP方法:支持GET、POST等常用方法认证支持:Bearer Token、OAuth2表单认证JSON处理:自动序列化/反序列化事件机制:请求/响应数据实时通知错误处理:完善的异常捕获和状态码处理。
2026-04-30 11:13:43
471
原创 GKMLT通讯工具箱(WPF MVVM) - 04-三菱MC通讯
三菱MC通讯协议是用于与三菱Q系列PLC进行数据交换的二进制通讯协议。该协议基于TCP/IP网络,采用Qna-3E帧格式,实现了高效的PLC数据访问。相比ASCII通讯方式,二进制通讯具有更高的数据传输效率和更好的实时性。三菱MC通讯协议是一个高效、可靠的工业通讯协议,特别适合与三菱Q系列PLC进行数据交换。通过理解其Qna-3E帧格式和报文结构,开发者可以实现稳定的PLC数据访问。
2026-04-30 09:24:01
235
原创 GKMLT通讯工具箱(WPF MVVM) - 03-西门子S7通讯
西门子S7通讯协议是用于与西门子S7系列PLC(包括S7-200/300/400/1200/1500)进行数据交换的专有通讯协议。该协议基于TCP/IP网络,实现了可靠的数据传输和高效的PLC数据访问。西门子S7通讯协议是一个结构完整、功能强大的工业通讯协议。通过理解其分层协议栈和报文格式,开发者可以实现稳定可靠的PLC数据交换。
2026-04-30 09:22:22
334
原创 GKMLT通讯工具箱(WPF MVVM) - 02-Modbus RTU 与 TCP 报文格式、原理与CRC校验
循环冗余校验定义: 根据数据块产生简短固定位数校验码的散列函数主要用于检测或验证数据传输/存储后可能出现的错误│ 原始数据 ││ ↓ ││ 生成CRC校验码 ││ ↓ ││ 数据 + CRC ──→ 传输/存储 ──→ 接收端验证 │CRC16 特点校验码: 2字节 (16位)多项式: x¹⁶ + x¹⁵ + 1 (Modbus)初始值: 0xFFFF反转输入/输出: 是✅ 串口通讯,紧凑高效✅ CRC16校验,可靠性强✅ 适合工业现场短距离。
2026-04-29 10:53:03
395
原创 GKMLT通讯工具箱(WPF MVVM) - 01-网口/串口通讯与 ModBus RTU/TCP
本项目实现了完整的串口通讯、网口通讯以及 Modbus RTU 和 Modbus TCP 协议调试工具。Modbus是一种工业通讯协议,由 Modicon 公司(现 Schneider Electric)于 1979 年发布,是工业领域中最流行的通讯协议之一。开放、免费、无版权限制简单、易于实现支持多种物理层(RS-232、RS-485、TCP/IP)主从架构(Master-Slave)支持多种数据类型。
2026-04-29 10:35:35
389
原创 GKMLT通讯工具箱(WPF MVVM) - 00-页面切换与主框架
项目名称: GKMLT通讯工具箱(工控麻辣烫通讯工具箱)开发框架架构模式依赖注入MVVM工具包框架UI框架架构模式MVVM工具依赖注入依赖注入宿主本项目采用了现代化的WPF MVVM架构,通过ContentControl + DataTemplate实现了灵活的页面切换机制。架构清晰: MVVM分离关注点易于扩展: 标准化的新增页面流程主题灵活: DynamicResource支持运行时切换性能优化: 单例ViewModel和图片冻结可维护性: 统一的代码风格和命名约定添加新的通讯协议页面。
2026-04-28 10:17:33
462
原创 WPF MVVM 模式(调Prism库)项目创建笔记 —— 包含C++/CLI OpenCV互操作
Prism框架详解什么是Prism?Prism是一个用于构建松耦合、可维护、可测试的WPF/Xamarin应用程序的框架,提供了以下核心功能:Prism应用生命周期App.xaml.csPrism应用启动流程模块化设计模式什么是模块化?模块化将大型应用程序拆分成多个独立的功能单元:如何创建Prism模块步骤1: 创建类库项目步骤2: 创建模块类ApplicationModule.cs步骤3: 在Shell中注册模块App.xaml.cs模块加载模式模式说明使
2026-04-15 10:40:45
478
原创 WPF MVVM 模式(无调库)项目创建笔记
这是一个基于WPF MVVM架构MVVM│ (XAML UI) │ 绑定 │ (逻辑层) │ 数据 │ (数据模型) │用户点击导航按钮↓触发NavgiateCommand,传递参数"DashBoard"↓Navgiate方法执行↓从DI容器获取DashBoardViewModel↓赋值给MainContent属性↓[ObservableProperty]自动触发PropertyChanged事件↓ContentControl接收到通知,内容更新↓。
2026-04-15 10:08:25
476
原创 OPC UA 通讯开发笔记 - 基于Opc.Ua.Client
本项目是一个基于 C# WinForms 的 OPC UA(OPC Unified Architecture)客户端应用程序,用于连接和与 OPC UA 服务器进行通讯。OPC UA(OPC Unified Architecture)是一种跨平台、面向服务的工业自动化通讯协议。它是 OPC(OLE for Process Control)的下一代标准,解决了传统 OPC 的安全性和跨平台问题。
2026-04-07 16:54:44
432
原创 WebApi 通讯-自写Demo技术文档
│ WinForms 上位机应用程序 ││ │ FrmMain (主窗体) │ ││ │ │ 登录按钮 │ │ 项目选择 │ │ 变量选择 │ │读写按钮│ │ ││ │ │ │▼ ▼ ▼ ▼│ DeviceApi.cs (设备API类) ││ │ │ │▼ ▼ ▼ ▼│ WebApiHelper.cs (HTTP封装) ││ │ RestSharp (第三方HTTP库) │ ││ │ • HttpGet • 表单提交 │ ││▼│ 服务器 (API端点) │。
2026-04-06 18:25:33
405
原创 OPC UA 通讯开发笔记 - 基于本地dll文件
项目名称命名空间主类: OPCUALibOPC UA版本框架✅ 功能完整,涵盖OPC UA主要功能✅ 支持同步/异步操作✅ 内置保活和重连机制✅ 支持批量操作,提高效率✅ 订阅机制设计合理。
2026-04-03 09:47:00
386
原创 OPC DA 通讯开发笔记
├── OPC_Test_Pro/ # 主程序(WinForm界面)│ ├── FrmOPCDA.cs # 主窗体(界面交互)│ └── FrmOPCItemSelect.cs # 变量选择窗体├── Related_OPCLib/ # OPC通讯核心库│ ├── OPCDALib.cs # OPC DA核心类│ ├── OPCDAGroup.cs # OPC组定义│ ├── OPCDAItem.cs # OPC项定义│ └── OPCDAAsyncEventArgs.cs # 异步事件参数。
2026-04-03 09:33:33
387
原创 ACS运动控制:ACS SPiiPlus .NET库 - C#上位机开发04-.NET Library (Advanced) Demo高级功能
直接发送ACSPL+命令查看命令返回结果调试和测试章节关键知识点掌握程度项目架构Api类、Axis枚举、MotorStates位运算⭐⭐⭐⭐⭐通信连接TCP/IP连接、Transaction命令⭐⭐⭐⭐轴控制⭐⭐⭐⭐⭐运动控制ToPoint(绝对/相对)、Jog、Halt⭐⭐⭐⭐⭐状态监控定时器刷新、位掩码解析⭐⭐⭐⭐I/O控制位操作、端口读写⭐⭐⭐事件处理回调函数、Invoke跨线程⭐⭐⭐⭐缓冲区程序RunBuffer、程序状态⭐⭐⭐通信终端。
2026-03-25 08:47:41
394
原创 ACS运动控制:ACS SPiiPlus .NET库 - C#上位机开发03-.NET Library (Advanced) Demo项目基础
项目名称:.NET Library (Advanced) Demo开发语言:C#目标框架:.NET Framework 4.8平台:x86核心库:ACS.SPiiPlusNET.dll (v2.50.0.26599)ACSC_AXIS_0 = 0, // 或 ACSC_AXIS_XACSC_AXIS_1 = 1, // 或 ACSC_AXIS_YACSC_AXIS_2 = 2, // 或 ACSC_AXIS_ZACSC_AXIS_3 = 3, // 或 ACSC_AXIS_T// ...
2026-03-25 08:45:20
463
原创 ACS运动控制:ACS SPiiPlus .NET库 - C#上位机开发02-Buffer缓冲区管理
│ ACS运动控制器 ││ │ 缓冲区0 (Buffer 0) │ ││ │ │ 程序代码1 │ │ ││ │ │ - 运动控制 │ │ ││ │ │ - 逻辑判断 │ │ ││ │ │ - I/O控制 │ │ ││ │ 缓冲区1 (Buffer 1) │ ││ │ │ 程序代码2 │ │ ││ ... ││ │ 缓冲区63 (Buffer 63) │ │# 标签命名规则:# 1. 必须以_或A-Z开头# 2. 后续可以是字母、数字、下划线# 3. 不区分大小写(内部转换为大写)
2026-03-24 19:17:15
423
原创 ACS运动控制:ACS SPiiPlus .NET库 - C#上位机开发01-绪论
ACS SPiiPlus .NET库是一个功能强大的软件开发工具包(SDK),用于在Windows平台上通过.NET Framework与ACS运动控制器进行通信。本指南基于官方Demo源代码,为C#上位机开发者提供详细的使用说明和代码示例。
2026-03-24 16:58:16
442
原创 .NET Framework与倍福ADS通讯笔记:Beckhoff官方示例 - Sample16:PLC 方法调用
本示例演示如何通过 ADS 从 .NET 程序调用 PLC 方法。方法参数(“params”)可以直接通过 ADS 传输,执行后返回结果(“result”)。在 PLC 中定义方法并启用 ADS 访问为方法创建句柄通过 ADS Read/Write 命令调用 PLC 方法传输参数并接收返回值TcRpcEnable 属性:启用 PLC 方法的 ADS 访问方法句柄:通过语法创建:用于调用方法IndexGroup参数传递:WriteData 包含输入参数返回值。
2026-03-11 15:40:12
424
原创 .NET Framework与倍福ADS通讯笔记:Beckhoff官方示例 - Sample15:变量名访问
本示例演示如何通过变量名访问没有固定地址的 PLC 变量。当 PLC 变量值超过 10 时,将其重置为 0。连接到 PLC(TwinCAT 3)通过变量名获取变量句柄使用句柄读取变量值显示当前值当值超过 10 时重置为 0按回车键继续,其他键退出变量名访问:通过变量名访问没有固定地址的 PLC 变量:通过变量名获取句柄Read 方法:通过句柄读取数据到 AdsStreamWriteAny:通过句柄写入数据:删除句柄释放资源句柄生命周期:创建 → 使用 → 删除。
2026-03-11 15:39:15
421
原创 .NET Framework与倍福ADS通讯笔记:Beckhoff官方示例 - Sample14:PLC 启停控制
本示例演示如何启动或停止 PLC Runtime 1。连接到 PLC(TwinCAT 3)显示用户菜单(启动/停止选项)读取用户输入(R 或 S)根据用户输入启动或停止 PLC读取并保持当前设备状态ReadState 方法:读取 PLC 当前状态WriteControl 方法:写入控制命令改变 PLC 状态AdsState 枚举:PLC 状态(Run, Stop, Config, Reset 等):设备状态(保持当前状态)StateInfo 类:状态信息容器。
2026-03-10 10:42:03
400
原创 .NET Framework与倍福ADS通讯笔记:Beckhoff官方示例 - Sample13:双字标志位同步写入
本示例演示如何将用户输入的值同步写入到 PLC 的双字标志位(flag double word 0)。连接到 PLC(TwinCAT 3)获取用户输入的值将值写入 PLC 的双字标志位 0处理异常和资源释放WriteAny 方法:通用变量写入方法,支持所有数据类型双字标志位写入:使用 WriteAny 一次性写入整个 WORD(32 位)用户输入:通过控制台获取用户输入的值类型安全:WriteAny 自动处理类型转换。
2026-03-10 10:40:38
373
原创 .NET Framework与倍福ADS通讯笔记:Beckhoff官方示例 - Sample12:双字标志位同步读取
本示例演示如何从 PLC 同步读取双字标志位(double word)并显示在界面上。连接到 PLC(TwinCAT 2)读取 PLC 中的双字标志位变量将读取的值显示在界面上控制台输出读取结果。
2026-03-09 09:21:29
352
原创 .NET Framework与倍福ADS通讯笔记:Beckhoff官方示例 - Sample11:删除句柄
句柄(Handle):PLC 变量的唯一标识符创建句柄释放句柄句柄生命周期:创建 → 使用 → 释放句柄特性:不持久,PLC 重启后失效。
2026-03-09 09:19:41
365
原创 .NET Framework与倍福ADS通讯笔记:Beckhoff官方示例 - Sample09:ADS-Sum命令批量读写
本示例演示如何使用ADS-Sum命令一次性读取或写入多个 PLC 变量。使用单个命令读取多个变量使用单个命令写入多个变量通过句柄数组批量操作变量处理返回的错误代码// 用于存储变量值的结构体// 无符号 16 位整数// 有符号 32 位整数// 布尔值// 用于存储变量句柄信息的结构体// 索引组// 索引偏移// 数据长度(字节数)ADS-Sum 命令:一次性读写多个变量的专用命令ReadWrite 方法:执行 ADS-Sum 命令的核心方法。
2026-03-06 10:31:46
396
原创 .NET Framework与倍福ADS通讯笔记:Beckhoff官方示例 - Sample08:TwinCAT路由器状态检测
本示例演示如何检测 TwinCAT 路由器和 PLC 的状态变化。检测 TwinCAT 路由器的状态变化检测 PLC 的 ADS 状态字变化通过回调函数实时响应状态变化显示路由器和 PLC 的连接状态// 路由器状态变化事件// 事件参数TwinCAT 路由器状态:通过 AmsRouterNotification 检测PLC ADS 状态字:通过 AddDeviceNotification 读取双重通知机制:同时监听路由器和 PLC 状态状态监控:实时显示系统连接和运行状态。
2026-03-06 10:29:25
398
原创 .NET Framework与倍福ADS通讯笔记:Beckhoff官方示例 - Sample07:任意类型变量读写
本示例演示如何使用ReadAny和WriteAny方法读写任意类型的 PLC 变量。读取任意数据类型的变量(基本类型、数组、结构体、字符串)写入任意数据类型的变量读写包含数组和字符串的结构体注册事件通知监控变量变化STRUCTEND_STRUCTEND_TYPESTRUCTEND_STRUCTEND_TYPEVAR(* 基本类型 *)(* 字符串类型 *)(* 结构体类型 *)END_VAR// 因此需要设置 Pack = 1。
2026-03-05 09:22:19
359
原创 .NET Framework与倍福ADS通讯笔记:Beckhoff官方示例 - Sample06:变量声明读取
本示例演示如何从 PLC 读取所有变量声明,并以树形视图显示。从 PLC 加载所有变量符号信息在树形视图中显示变量层次结构显示每个变量的详细信息读取和写入变量值类型数量字节数变量名示例5458545452525151BOOL51ARRAY511-81STRING121STRING_1符号信息加载器:用于从 PLC 读取所有变量声明ITcAdsSymbol 接口:表示 PLC 变量符号符号信息:包含名称、类型、索引、大小等信息。
2026-03-05 09:20:57
353
原创 .NET Framework与倍福ADS通讯笔记:Beckhoff官方示例 - Sample05:时间日期读写
本示例演示如何从 PLC 读取时间和日期,并将时间和日期写入 PLC。从 PLC 读取 TIME 类型变量从 PLC 读取 DATE (DT) 类型变量向 PLC 写入 TIME 类型变量向 PLC 写入 DATE (DT) 类型变量VAREND_VAR// 低 32 位// 高 32 位64 位整数(8 字节)单位:100 纳秒(0.1 微秒)起始时间:1601-01-01 00:00:00 UTCTIME 类型:PLC 时间类型,转换为 .NET TimeSpan。
2026-03-04 13:25:17
339
原创 .NET Framework与倍福ADS通讯笔记:Beckhoff官方示例 - Sample04:字符串读写
本示例演示如何从 PLC 读取字符串并将字符串写入 PLC。从 PLC 读取字符串变量向 PLC 写入字符串变量在界面上显示字符串内容VAREND_VARPLC STRING 类型:包含最大长度字节 + 字符数据ASCII 编码:PLC STRING 使用 ASCII 编码终止符:字符串以 ‘\0’ 结束AdsStream 大小:必须与字符串大小匹配新版本支持:AdsBinaryReader/Writer 简化操作。
2026-03-04 13:22:19
328
原创 .NET Framework与倍福ADS通讯笔记:Beckhoff官方示例 - Sample03:事件驱动读取技术文档
本示例演示如何以最高效的方式读取 PLC 中的多个变量,每个变量具有不同的数据类型,并显示值及其时间戳。读取 7 个不同类型的全局变量使用事件驱动方式接收数据变化显示变量值和时间戳提高读取效率,避免轮询VAR// 7 个不同类型的全局变量// 布尔值// 整数 (16位)// 双整数 (32位)// 有符号字节// 长实数 (64位浮点)// 实数 (32位浮点)// 字符串 (10字符)END_VAR事件驱动读取。
2026-03-03 09:02:28
556
原创 .NET Framework与倍福ADS通讯笔记:Beckhoff官方示例 - Sample02(写入PLC结构体)
Sample02 - Transmitting structures to PLC(将结构体传输到PLC)演示如何从 .NET 应用程序向 PLC 写入结构体数据,结构体中包含不同数据类型的元素。使用AdsStream和按顺序写入结构体字段结构体字节对齐和偏移计算使用将整个流写入 PLC正确处理不同数据类型(INT, DINT, SINT, LREAL, REAL)对比项Sample01(读取数组)Sample02(写入结构体)操作方向从 PLC 读取写入到 PLC数据类型。
2026-03-03 08:59:55
672
原创 .NET Framework与倍福ADS通讯笔记:Beckhoff官方示例 - Sample01(读取PLC数组)
Sample01 - Accessing an array in PLC(访问PLC中的数组) https://infosys.beckhoff.com/english.php?演示如何从 PLC 读取一个包含 100 个 INT 元素的数组,并将内容显示在 ListBox 控件中。使用连接到本地 PLC(端口 851)使用创建变量句柄使用AdsStream和读取和解析数组数据正确的资源清理(和Dispose。
2026-03-02 09:23:25
670
原创 .NET Framework与倍福ADS通讯笔记:通讯读写
是Beckhoff TwinCAT ADS .NET库的核心类,用于在C#应用程序与TwinCAT PLC之间建立通讯连接并执行数据读写操作。建立和管理ADS连接创建和删除变量句柄读写PLC变量订阅变量变化通知异步操作支持。
2026-03-02 09:12:27
754
原创 .NET Framework与倍福ADS通讯笔记:总论
使用属性确保字节对齐每个字段必须使用指定正确的类型字段顺序必须与PLC结构体完全一致Pack=1表示紧凑对齐,避免填充字节示例:配方结构体// 4个布尔值 = 4字节 [ MarshalAs(UnmanagedType . I1) ] public bool bool1;// 4个INT(16位有符号整数)= 8字节 [ MarshalAs(UnmanagedType . I2) ] public short int1;
2026-02-28 16:45:28
842
原创 Markdown编辑器使用方法
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + S
2026-02-28 16:36:38
939
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅