
设备制造
文章平均质量分 76
CoderIsArt
内视、慎独、无悔代码人生;数字化、人性化、科学化;自省的底层程序员,努力与世界同步。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
一种基于Aerotech控制器作业任务流的实现
该控制系统提供了完整的任务执行与管理功能,包含主界面的任务控制流程和底层Aerotech控制器的实现。主界面支持执行单个/多个任务、继续、取消和暂停操作,采用双模式设计(模拟/实际执行),通过状态标志和异步处理实现非阻塞操作。底层Aerotech控制器实现核心缓冲执行机制,通过文件缓冲管理大命令集,支持暂停/继续时的激光状态保存恢复,并处理缓冲区满异常。系统采用分层架构,上层界面通过标志位控制底层执行流程,确保执行效率和稳定性,同时提供完善的异常处理和流程控制。原创 2025-07-08 12:03:01 · 26 阅读 · 0 评论 -
用回调函数显示控制器程序执行进度
OnFeedbackProgramLine是C#中用于实现回调机制的委托属性,允许外部订阅程序执行进度反馈(如行号/总行数)。该设计解耦了控制器与UI,提供灵活的回调注入能力。使用时需注意空值检查、线程安全及生命周期管理,典型应用于工业控制软件的实时进度显示和日志记录。相比事件更轻量,适合单播场景,也可扩展为响应式编程模式。原创 2025-06-30 16:58:21 · 279 阅读 · 0 评论 -
MVVM 模式激光直写控制软件完整实现
本文介绍了基于Prism框架的MVVM模式重构激光直写控制软件的完整方案。项目采用清晰的分层结构,包含Models(数据模型)、ViewModels(视图模型)、Views(视图)、Services(服务层)等模块,实现了UI与业务逻辑的彻底分离。核心实现包括:1) 通过PrismApplication配置依赖注入;2) 主窗口ViewModel管理设备连接状态;3) 激光控制模块实现功率/频率等参数调节;4) 运动控制模块处理三轴移动指令。该架构具有可测试性强、维护性高、服务可替换等优势。原创 2025-06-25 11:42:13 · 714 阅读 · 0 评论 -
Aerotech系列(6)Aerotech运动控制器回调机制的管理器
该文详细分析了Aerotech A3200运动控制系统中CallbackRegistrar类的实现机制。作为硬件事件回调的管理核心,该组件采用多任务线程模型,通过PerTaskCallbackHandler内部类实现各任务的独立回调管理,支持Int32/Double/String三种参数类型的安全传递。设计上融合了观察者模式和桥接模式,通过SystemDLLWrapper对接非托管代码,并采用双重锁定和volatile变量确保线程安全。异常处理方面统一转换硬件错误码,并通过事件机制传递异常信息。原创 2025-06-24 16:36:48 · 358 阅读 · 0 评论 -
Aerotech系列(5)Aerotech.A3200控制器实现
该代码展示了Aerotech A3200运动控制器的核心控制器类实现,主要包括以下功能: 控制器连接管理(Connect/Disconnect) 系统初始化和重置(Initialize/Reset) 提供对数据收集、参数、任务、变量等核心功能的访问 实现IDisposable接口进行资源清理 包含密码修改等安全功能 使用内部回调机制和线程管理 控制器类通过静态方法管理全局连接状态,并封装了底层A3200系统API的交互逻辑。原创 2025-06-24 15:45:06 · 123 阅读 · 0 评论 -
Aerotech系列(4)Aerotech.A3200名空间
该文档详细介绍了A3200控制系统的编程接口,包含控制器类(Controller)及相关枚举类型的功能说明。核心内容包括:1)控制器连接/断开方法(Connect/Disconnect);2)数据采集配置(DataCollection);3)任务管理(TasksCollection);4)变量操作(Variables);5)常用枚举如AxisMask(轴选择)、TaskMask(任务选择)等标记位枚举。文档通过代码示例展示了如何连接控制器、配置数据采集、管理任务程序以及操作全局变量。原创 2025-06-24 15:25:55 · 56 阅读 · 0 评论 -
Aerotech系列(3)开发库介绍
Aerotech A3200.NET库提供了多个命名空间来管理运动控制功能,包括控制器连接(Aerotech.A3200)、命令执行(Aerotech.A3200.Commands)、参数配置(Aerotech.A3200.Parameters)和状态监控(Aerotech.A3200.Status)等核心功能。使用时需引用Aerotech.A3200.dll和Aerotech.Common.dll库文件,并确保C/C++依赖库被正确部署。该库基于.NET 2.0框架,支持多语言资源本地化。原创 2025-06-24 10:26:35 · 959 阅读 · 0 评论 -
Aerotech系列(2)Aerotech.A3200.Tasks
本文档详细介绍了A3200控制器编程接口Task类和方法结构,主要包括LoadedProgram(内存中加载的程序)、Program(执行中的程序)、Task(任务控制)三大核心类及其相关组件。LoadedProgram提供程序加载/卸载功能,Program控制程序执行(运行/停止/调试),Task管理任务状态和执行模式。文档包含C++和C#示例代码,展示了程序控制、队列模式操作和错误处理等典型用法。支持的功能包括:程序关联任务、缓冲执行、调试控制、任务状态监控(空闲/错误等)、队列状态管理以及变量容器访问原创 2025-06-09 21:03:26 · 804 阅读 · 0 评论 -
ACS SPiiPlus 运动控制器的核心托管接口
ACS的核心API 类分析与应用原创 2025-05-30 10:42:56 · 587 阅读 · 0 评论 -
现场总线(Fieldbus)的配置映射FieldbusMappings 类
FieldbusMappings类管理现场总线通信配置,支持Hilscher卡、Modbus主/从站等多种连接方式。核心功能包括XML配置的序列化/反序列化、名称唯一性验证和变更事件通知。类结构包含多个映射集合,通过泛型接口INamedCollection统一管理。初始化时从XML文件加载配置,变更时通过configurationChangedHandler持久化到XML。名称验证CheckNameExists方法确保变量名合法且不重复,支持多种现场总线变量类型。原创 2025-05-29 17:24:02 · 802 阅读 · 0 评论 -
Aerotech系列(1)系统架构
Aerotech架构原创 2025-05-28 20:33:40 · 1223 阅读 · 0 评论 -
高精度模拟量控制命令集
高精度模拟量控制命令集类的设计原创 2025-05-28 11:58:51 · 412 阅读 · 0 评论 -
多任务控制系统的中央管理器
TasksCollection类是工业控制系统中任务管理的核心组件,实现了多任务状态监控、批量操作和资源调度。其架构采用装饰器模式封装数据,支持TaskMask位运算进行任务组操作。优化建议包括:增强线程安全(添加锁机制)、性能优化(状态缓存)、错误恢复(重试机制)及关键问题修复(掩码运算溢出防护)。扩展功能建议添加任务优先级调度和实时监控事件。典型应用场景包括紧急停止、状态监控和负载均衡。性能优化方案含批量读取加速和结构体布局优化,满足工业控制系统对实时性(延迟<10ms)、可靠性和可扩展性的严苛要求。原创 2025-05-28 11:19:41 · 324 阅读 · 0 评论 -
自动加工脚本程序变量管理器
数控系统程序变量管理器ProgramVariableCollection的核心功能与优化建议。该组件负责动态管理任务程序变量和系统堆栈变量,通过与编译器集成实现变量解析。文章从架构设计、工业场景优化、问题修复、性能优化等维度进行深入分析,提出线程安全增强、缓存策略、批量操作等改进方案。特别针对资源泄漏、数组越界等隐患提供修复方案,并给出G代码监控、刀具补偿等典型应用场景。优化后的设计可满足工业环境对实时性(访问延迟<10μs)、可靠性和可维护性的严苛要求,适用于数控系统和机器人控制器等实时控制场景。原创 2025-05-28 11:01:04 · 623 阅读 · 0 评论 -
工业变量集合模板类VariableCollection<TType>实现
VariableCollection<TType>是一个工业控制系统中的强类型变量集合类,主要用于管理硬件信号变量。它支持通过名称和索引两种方式访问变量,并提供高性能的批量读写操作。类内部通过委托模式实现多协议适配,可兼容Modbus、Profinet等工业协议。关键特性包括类型安全、双重索引访问(名称/地址)、批量操作优化通信效率、动态容量管理和上下文隔离。典型应用场景包括模拟量采集和数字量输出控制,能显著提升工业自动化软件的确定性和性能。该类还预留了缓冲池技术、SIMD加速等优化空间。原创 2025-05-27 11:26:44 · 971 阅读 · 0 评论 -
工业控制系统中输入/输出信号的类型化容器类实现
本文解析了工业控制系统中InputOutputContainer<TType>类的设计与实现,重点阐述了其在IO信号管理中的核心作用。该类采用输入/输出通道严格隔离的设计,通过泛型确保类型安全,支持批量读写操作提升性能(吞吐量可提升10-100倍)。其特点包括:标准化信号命名(符合IEC61131-3)、委托机制实现硬件解耦、线程安全保证等,适用于模拟量监控(如温度传感器)和数字量控制(如急停按钮)等工业场景。文中还提出了预分配缓冲区、信号别名服务等优化建议,体现了工业自动化软件对确定性、可靠性和高性能原创 2025-05-27 11:01:52 · 298 阅读 · 0 评论 -
工业控制变量系统的神经中枢CoreVariableHelper类
CoreVariableHelper类在工业控制系统中的核心作用,它作为变量管理的中枢模块,实现了三大关键功能:1)变量元数据解析,连接变量名与硬件地址;2)类型系统转换,桥接PLC与C#数据类型;3)上下文路由,按变量类型分配控制环境。类中设计了复合键映射机制和静态构造函数,支持200+种工业协议数据类型的转换,包括Modbus和现场总线信号处理。该实现采用工厂模式、委托注入等设计模式,通过批量处理、零分配设计和编译器句柄池优化性能,确保实时性要求(响应时间<50μs)。原创 2025-05-26 16:36:44 · 561 阅读 · 0 评论 -
工业控制系统中变量的抽象基类Variable抽象类
本文解析了工业控制系统中Variable抽象类的设计架构。该基类通过委托模式实现硬件访问抽象化,支持多上下文变量管理(全局/任务/IO等),包含核心字段如硬件标识结构体、读写委托等。其特性包括类型安全机制(模拟量/数字量等)、运行时行为优化(减少装箱开销)和工业协议兼容性。典型应用场景展示了对现场总线信号的监控实现,并提出了线程安全锁、事件通知等改进建议。该设计体现了工业控制系统对实时性、可靠性和扩展性的核心要求,是变量抽象层的经典范式。原创 2025-05-26 15:47:15 · 406 阅读 · 0 评论 -
工业现场总线Fieldbus变量的统一管理容器设计
FieldbusVariableContainer类是一个工业现场总线变量管理容器,支持Modbus TCP(主/从)、驱动器Modbus和Hilscher协议。采用延迟加载和缓存机制优化性能,通过分层架构实现对不同协议变量的统一访问。核心功能包括变量解析、连接信息管理及数组变量处理,严格遵循工业协议规范。设计亮点包括协议抽象、动态扩展和资源安全管理,适用于工业控制场景,建议后续增加异步支持和协议扩展能力。原创 2025-05-26 15:02:34 · 690 阅读 · 0 评论 -
虚拟输入输出VirtualIO 类的实现
VirtualIO类是工业控制系统中虚拟IO信号的管理核心,提供二进制(bool)和寄存器(double)两类信号处理。二进制信号支持2048点分块读写,通过ChunkBinaryRead/Write优化性能;寄存器信号支持896个数组批量操作。类设计采用硬件抽象模式,通过委托将原生API与业务逻辑解耦,包含索引器快速定位、异常统一处理等工业级特性。典型应用包括PLC信号交互、模拟量处理等场景,其固定内存分配和批量操作策略有效保障了实时性要求。原创 2025-05-26 14:30:24 · 847 阅读 · 0 评论 -
功能“递归模式”在 C# 7.3 中不可用,请使用 8.0 或更高的语言版本的一种兼容处理方案
摘要:本文展示了C#中控制参数创建器的两种实现方式,分别针对C# 8.0+和早期版本。通过条件编译符号(CSHARP_8_OR_NEWER)隔离不同语法:C# 8.0+使用简洁的switch表达式,而C# 7.3采用传统switch-case语句。项目配置建议在.csproj文件中自动或手动设置语言版本,确保语法兼容性。这种实现方式既保持了功能一致性,又提供了版本适配灵活性,使代码能平滑过渡到新版本语法。原创 2025-05-26 11:27:44 · 715 阅读 · 0 评论 -
控制器参数模板类ControllerParameter<T>的C#实现
本文解析了ControllerParameter<T>类的设计与实现。这是一个内部泛型类,继承自TypedParameter<T>并约束T必须实现IComparable接口,主要用于封装与底层控制器的参数交互。类中包含两个构造函数和核心方法getValue()与setValue(),实现了类型安全的参数读写功能,支持字符串、整数、浮点数等多种数据类型。设计上注重性能优化(如预分配字符串缓冲区)和异常处理,通过抽象底层细节为上层提供简洁的接口。典型应用场景如温度控制器参数的读写操作,体原创 2025-05-26 10:23:58 · 439 阅读 · 0 评论 -
用于控制器数据采集和管理的核心类Data
Data 类是一个用于数据采集和管理的核心类,主要用于控制器的诊断数据收集、配置和检索。其主要功能包括数据采集配置、采集控制(立即采集、连续采集、停止采集)、数据检索(同步和带进度回调)以及诊断数据获取。关键组件包括 ContinuousDataCollectionPoller(处理连续数据采集)、AxesDiagPacketRetriever(获取轴诊断数据)和 DataCollectionStatus(封装采集状态)。代码依赖 Wrapper 类与底层硬件交互,并通过 ExceptionResolver原创 2025-05-23 11:44:35 · 298 阅读 · 0 评论 -
A3200 运动控制系统的核心参数管理类BaseParameters
基本参数管理类原创 2025-05-21 14:27:50 · 551 阅读 · 0 评论 -
A3200 运动控制系统的全局静态Global类
A3200全局配置静态类原创 2025-05-20 16:06:59 · 353 阅读 · 0 评论 -
命名常量集合接口INamedConstantCollection<T>实现
INamedConstantCollection<TObject, TName> 是一个泛型接口,旨在定义命名常量集合的基本契约,结合了索引访问和枚举能力。该接口允许通过名称或位置索引访问集合中的元素,并提供了获取元素数量和集合容量的属性。泛型参数 TObject 表示集合中存储的元素类型,而 TName 表示元素名称的类型,且必须实现 IComparable 接口以确保名称可比较。原创 2025-05-20 15:34:44 · 355 阅读 · 0 评论 -
一个轴信息类AxisInfo实现
AxisInfo 类是一个用于封装和管理运动控制系统中轴信息的类,实现了 INamed<string> 接口。该类通过延迟加载模式优化性能,仅在首次访问时从控制器获取数据,并通过字段缓存已获取的信息。核心属性包括轴编号、名称、类型、伺服速率、最大电流、最大电压、固件版本、FPGA版本、闪存配置状态等。类中使用了异常处理机制和 invalidateData() 方法来清空缓存,强制重新获取数据。AxisInfo 类通过 Controller 对象执行命令和获取参数,适用于获取轴信息、监控轴状态和固件升级检查等原创 2025-05-20 15:08:22 · 721 阅读 · 0 评论 -
WPF Data Binding 及经典应用示例
DataBinding(数据绑定)是WPF中的核心机制,用于建立UI元素与数据对象之间的连接,实现数据的自动同步。其核心概念包括绑定源(Source)、绑定目标(Target)、绑定路径(Path)和绑定模式(BindingMode)。DataBinding支持多种绑定模式,如OneWay、TwoWay、OneWayToSource和OneTime,确保数据与UI的双向或单向同步。通过XAML语法,开发者可以轻松实现属性绑定、集合绑定、主从绑定、数据转换和命令绑定等操作。原创 2025-05-19 20:39:34 · 923 阅读 · 0 评论 -
异步委托执行管理器:更新
DelegateSpooler:异步委托执行管理器DelegateSpooler 是一个异步委托执行管理器,核心功能包括委托队列管理、异步任务调度、执行状态跟踪和线程安全控制。它通过管道ID(pipe)组织任务,使用 BeginInvoke/EndInvoke 实现异步执行,并通过锁机制保护共享资源。其设计采用双缓冲任务队列,确保线程安全,并通过后台工作循环持续监控任务状态。DelegateSpooler 适用于硬件控制系统的异步操作和事件聚合处理等场景,但存在内存泄漏和线程池压力等潜在问题。原创 2025-05-19 16:53:00 · 727 阅读 · 0 评论 -
C#中的ThreadStart委托
ThreadStart 是 .NET 中的一个内置委托类型,用于表示无参数且无返回值的方法,通常作为线程的入口方法。通过 List<ThreadStart> 可以创建一个线程任务队列,存储多个待执行的任务。典型使用场景包括多任务队列管理和延迟执行控制。技术细节中,ThreadStart 委托可以传递给 Thread 构造函数,启动线程执行任务。由于 List<T> 非线程安全,多线程操作时需加锁。现代 C# 推荐使用 Task 和 ConcurrentQueue 替代 ThreadStart 。原创 2025-05-19 15:50:48 · 532 阅读 · 0 评论 -
线程池模式与C#中用法
线程池是一种管理线程生命周期的技术,旨在减少线程创建和销毁的开销,控制并发度,并通过任务队列有序处理异步请求。在.NET中,线程池通过System.Threading.ThreadPool实现,核心方法包括QueueUserWorkItem用于提交任务。线程池由工作线程、I/O完成端口和任务队列组成。使用线程池时,可以通过QueueUserWorkItem提交任务,并通过GetAvailableThreads等方法获取线程池状态。高级配置包括设置线程数限制和使用Task封装任务。原创 2025-05-19 15:33:10 · 508 阅读 · 0 评论 -
轴诊断数据采集器AxesDiagPacketRetriever类的设计
AxesDiagPacketRetriever 类是一个用于多轴诊断数据采集的工具,主要功能包括实时采集32个轴的状态数据、将原始数据转换为工程单位,并将扁平数组重组为结构化对象。其设计采用了工厂方法、策略模式和缓存模式,以提高效率和灵活性。核心数据结构包括每个轴需要采集的27种数据项ID、特殊项配置以及硬件API所需的项ID数组。关键流程涉及数据采集和数据结构转换,性能优化点包括请求数据缓存和批量读取。典型使用场景包括实时监控和故障诊断。原创 2025-05-19 13:56:25 · 1261 阅读 · 0 评论 -
参数系统的基类Parameter抽象类
Parameter 是一个抽象类,作为参数系统的基类,负责管理类型安全的参数值,支持多种原始类型(如 int、double、float、long、string),并提供边界验证、缓存机制和上下文感知功能。其设计采用了模板方法模式、装饰器模式和策略模式,确保子类实现特定硬件访问逻辑,同时复用通用逻辑如边界检查和类型验证。核心组件包括 ParameterBounds、ParameterInfoProvider、PrimitiveType 和 ParameterContext,分别用于存储参数范围、提供元数据等。原创 2025-05-15 16:24:24 · 527 阅读 · 0 评论 -
控制器状态信息管理中心ControllerInformation类
ControllerInformation 类是一个用于管理控制器状态信息的核心类,主要负责硬件信息收集、重置事件管理、数据缓存与失效以及线程安全的事件通知。其设计模式包括观察者模式、延迟初始化和后台线程监控,确保在控制器重置前后能够精确处理状态变化。类中通过NamedMaskedConstantCollection管理轴信息,ControllerVersion封装控制器版本,InitializationInformation管理子系统初始化状态。原创 2025-05-15 14:55:25 · 527 阅读 · 0 评论 -
硬件控制系统的中枢管理类Controller实现
Controller 类是一个用于管理硬件控制系统的核心类,主要负责硬件连接的生命周期管理、子系统协调以及全局状态的维护。该类采用了多种设计模式,包括单例模式、组合模式和观察者模式,以确保系统的稳定性和可扩展性。单例模式通过静态字段和互斥锁(mutex)确保全局唯一连接实例的线程安全;组合模式通过独立类实现子系统的解耦,并通过统一接口暴露子组件;观察者模式则通过事件驱动机制实现硬件状态变化的通知。原创 2025-05-14 16:44:33 · 408 阅读 · 0 评论 -
可执行任务单元Task类的设计
Task 类是一个表示可执行任务单元的类,主要职责包括任务状态管理、程序关联、回调处理和硬件交互。该类实现了 INamed<TaskId> 接口,确保任务名称的类型安全,并通过 ControllerHandle 与底层硬件进行通信。关键设计包括强类型命名、硬件交互模式、状态封装和延迟初始化。Task 类通过 TaskCallbackContainer 管理异步事件,并通过 ControllerHandle 管理原生资源。典型使用场景包括任务控制、回调注册和状态监控。原创 2025-05-14 15:58:54 · 433 阅读 · 0 评论 -
泛型命名常量集合NamedConstantCollection<TObject, TName>类实现
NamedConstantCollection<TObject, TName> 是一个泛型命名常量集合类,支持通过名称或索引访问元素,并确保类型安全。其核心功能包括:通过 TName 类型名称或 int 索引双检索方式访问元素,要求 TObject 实现 INamed<TName> 接口,TName 实现 IComparable 接口,并支持轻量级迭代。设计上,索引器分为名称索引(线性搜索,O(n))和位置索引(直接数组访问,O(1)),底层使用 TObject[] 数组存储,支持外部注入数组。原创 2025-05-14 14:46:11 · 242 阅读 · 0 评论 -
错误码到异常类型的解析器ExceptionResolver类实现
异常处理原创 2025-05-14 11:47:12 · 297 阅读 · 0 评论 -
控制器回调注册管理器CallbackRegistrar类的实现
CallbackRegistrar 类是一个控制器回调注册管理器,负责统一管理多任务(Task)的回调注册、线程安全的回调监听、类型安全的参数传递以及错误处理机制。其核心设计模式包括分层架构和生产者-消费者模型。外层 CallbackRegistrar 提供面向用户的 API,按 TaskId 分发请求,内层 PerTaskCallbackHandler 处理单个任务的回调逻辑。原创 2025-05-14 11:05:57 · 421 阅读 · 0 评论 -
任务状态轮询器TaskStatesPoller 类实现
TaskStatesPoller 类是一个实现 IDataPoller 接口的任务状态轮询器,主要用于定期轮询控制器的任务状态,并通过线程安全的事件通知机制处理新状态数据和轮询异常。其核心功能包括动态启停控制、事件订阅管理以及异常处理。类设计采用了共享线程管理器 Threader<Controller> 来统一管理轮询线程,避免为每个实例创建独立线程,并通过 DelegateSpooler 确保事件在正确线程上下文执行。原创 2025-05-14 10:12:41 · 339 阅读 · 0 评论