设备制造
文章平均质量分 77
CoderIsArt
内视、慎独、无悔代码人生;数字化、人性化、科学化;自省的底层程序员,努力与世界同步。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
SAM-5 核心模型 C++ Demo 程序
本文实现了一个基于SCSI架构模型SAM-5标准的C++演示程序,包含五大核心模块:架构模型(SCSI设备、逻辑单元和端口关系)、命令模型(命令执行流程和状态管理)、事件通知模型、任务管理功能和任务集管理。程序通过面向对象设计封装了命令交互、任务管理和事件处理流程,支持ACA机制、命令状态流转和任务管理操作。演示程序模拟了SCSI设备间的命令交互场景,包括READ/WRITE命令执行、ACA建立与清除、逻辑单元重置等典型操作,并输出详细交互日志。该实现可作为SCSI协议栈开发的参考模型,未来可扩展传输协议支原创 2025-11-22 11:28:11 · 699 阅读 · 0 评论 -
SCSI Architecture Model - 5(SAM-5)
摘要:SAM-5是美国国家标准草案(T10/2104-D Rev05),由INCITS T10委员会制定,聚焦SCSI架构模型。文档定义了SCSI类体系(26类核心类)、Nexus关系(4类)、LUN标识规则(64/16位)及4种寻址方式,详细阐述了命令模型(含8种状态码)、任务管理功能(9类)及任务集管理机制。特别说明CLEARACA与ABORTTASKSET的区别:前者清除ACA条件,后者中止指定nexus所有命令。文档还包含事件通知模型、引用标准及资料性附录,强调仅限INCITS成员用于标准化活动。目原创 2025-11-22 10:03:07 · 443 阅读 · 0 评论 -
磁盘地址划分与寻址
摘要:本文系统阐述磁盘地址的层次化寻址机制。首先介绍物理层的CHS寻址(柱面/磁头/扇区),指出其与硬件强耦合的局限性;进而分析LBA(逻辑块地址)的抽象优势,实现物理扇区到线性地址的转换;最后说明操作系统如何通过文件系统将LBA空间组织为分区、块和文件路径的多层结构。现代存储技术(如SSD和4K扇区)在此架构基础上进行优化,但保持LBA接口的兼容性,完整展现了从物理设备到逻辑访问的逐层映射过程。原创 2025-11-17 10:46:29 · 841 阅读 · 0 评论 -
QT入门程序解析
本文分析了QT应用程序中窗口显示的关键机制:w.show()和a.exec()的协同工作原理。w.show()仅设置窗口可见标志并提交重绘请求到事件队列,实际绘制操作由a.exec()启动的事件循环处理。文章详细解析了w.show()内部执行流程:状态设置、创建平台窗口、布局计算和事件提交,强调其与事件循环的"请求-执行"关系。通过比喻说明w.show()相当于提交申请,而a.exec()才是执行申请的核心机制,二者缺一不可。最终指出窗口显示需要完整的事件循环支持,否则无法正常呈现。原创 2025-11-07 11:21:12 · 34 阅读 · 0 评论 -
《基本函数的统一算法》
本文提出了一种基于CORDIC技术的统一算法,用于高效计算三角函数、双曲函数、指数函数等基本函数及其反函数。该算法通过圆周、线性、双曲三种坐标系模式,仅需移位、加法、减法等基本操作,即可实现多样化的数学运算。其核心优势在于硬件实现的简洁性——无需乘法器,仅需三个寄存器、移位器和加法器即可构建计算引擎。该算法特别适合ROM或PLA实现,为嵌入式系统等场景提供了高效的计算方案。通过预定义的迭代序列和巧妙的收敛处理,该方案在保证精度的同时显著降低了硬件复杂度。原创 2025-10-23 20:03:14 · 777 阅读 · 0 评论 -
CORDIC三角计算技术
本文摘要: Jack E. Volder于1959年提出的CORDIC(坐标旋转数字计算机)技术是一种通过移位和加法实现三角计算的高效算法。该技术利用预先计算的角度序列,通过迭代方程xi+1=xi-yi·di·2^-i和yi+1=yi+xi·di·2^-i进行平面旋转,避免了复杂的乘法运算。算法支持圆周、线性和双曲坐标系计算,特别适合具有快速加法器但乘法器性能受限的计算机系统。CORDIC仅需约n次加法即可完成n位三角计算,硬件实现仅需三个寄存器、两个移位器和三个加法器。该技术后来被扩展用于计算双曲函数等,原创 2025-10-23 16:48:23 · 969 阅读 · 0 评论 -
几本Mes系统书籍推荐
本文精选了多本关于MES系统实施的权威书籍,涵盖智能制造、工业物联网、数字孪生等前沿技术。重点推荐《半导体制造执行系统(MES)实践指南》等专业书籍,针对半导体封装行业特有的高精度追溯、SECS/GEM设备接口、洁净车间管理等需求提供解决方案。内容涉及云计算、边缘计算、AI质量优化等现代技术应用,同时包含主流MES平台对比分析和开源工具集成案例。特别强调半导体封装行业需要关注SECS/GEM协议、实时质量分析及数字孪生技术,为制造企业数字化转型提供实用指导。原创 2025-08-14 08:14:12 · 857 阅读 · 1 评论 -
OPC UA通信与几个应用
OPC UA(统一架构)作为新一代工业通信标准,克服了传统OPC基于COM/DCOM的局限,采用跨平台TCP/HTTPS协议和面向对象数据建模,支持X.509证书加密,确保安全性和扩展性。其核心是通过树形地址空间组织节点(对象、变量、方法),实现设备抽象与功能调用,默认端口为4840(opc.tcp)或443(HTTPS)。应用场景包括智能工厂设备监控(如CNC机床主轴转速采集)和制药厂批次控制(配方下载、参数监控)。原创 2025-08-11 08:30:55 · 531 阅读 · 0 评论 -
一种基于Aerotech控制器作业任务流的实现
该控制系统提供了完整的任务执行与管理功能,包含主界面的任务控制流程和底层Aerotech控制器的实现。主界面支持执行单个/多个任务、继续、取消和暂停操作,采用双模式设计(模拟/实际执行),通过状态标志和异步处理实现非阻塞操作。底层Aerotech控制器实现核心缓冲执行机制,通过文件缓冲管理大命令集,支持暂停/继续时的激光状态保存恢复,并处理缓冲区满异常。系统采用分层架构,上层界面通过标志位控制底层执行流程,确保执行效率和稳定性,同时提供完善的异常处理和流程控制。原创 2025-07-08 12:03:01 · 82 阅读 · 0 评论 -
用回调函数显示控制器程序执行进度
OnFeedbackProgramLine是C#中用于实现回调机制的委托属性,允许外部订阅程序执行进度反馈(如行号/总行数)。该设计解耦了控制器与UI,提供灵活的回调注入能力。使用时需注意空值检查、线程安全及生命周期管理,典型应用于工业控制软件的实时进度显示和日志记录。相比事件更轻量,适合单播场景,也可扩展为响应式编程模式。原创 2025-06-30 16:58:21 · 347 阅读 · 0 评论 -
MVVM 模式激光直写控制软件完整实现
本文介绍了基于Prism框架的MVVM模式重构激光直写控制软件的完整方案。项目采用清晰的分层结构,包含Models(数据模型)、ViewModels(视图模型)、Views(视图)、Services(服务层)等模块,实现了UI与业务逻辑的彻底分离。核心实现包括:1) 通过PrismApplication配置依赖注入;2) 主窗口ViewModel管理设备连接状态;3) 激光控制模块实现功率/频率等参数调节;4) 运动控制模块处理三轴移动指令。该架构具有可测试性强、维护性高、服务可替换等优势。原创 2025-06-25 11:42:13 · 781 阅读 · 0 评论 -
Aerotech系列(6)Aerotech运动控制器回调机制的管理器
该文详细分析了Aerotech A3200运动控制系统中CallbackRegistrar类的实现机制。作为硬件事件回调的管理核心,该组件采用多任务线程模型,通过PerTaskCallbackHandler内部类实现各任务的独立回调管理,支持Int32/Double/String三种参数类型的安全传递。设计上融合了观察者模式和桥接模式,通过SystemDLLWrapper对接非托管代码,并采用双重锁定和volatile变量确保线程安全。异常处理方面统一转换硬件错误码,并通过事件机制传递异常信息。原创 2025-06-24 16:36:48 · 431 阅读 · 0 评论 -
Aerotech系列(5)Aerotech.A3200控制器实现
该代码展示了Aerotech A3200运动控制器的核心控制器类实现,主要包括以下功能: 控制器连接管理(Connect/Disconnect) 系统初始化和重置(Initialize/Reset) 提供对数据收集、参数、任务、变量等核心功能的访问 实现IDisposable接口进行资源清理 包含密码修改等安全功能 使用内部回调机制和线程管理 控制器类通过静态方法管理全局连接状态,并封装了底层A3200系统API的交互逻辑。原创 2025-06-24 15:45:06 · 229 阅读 · 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 · 119 阅读 · 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 · 1045 阅读 · 0 评论 -
Aerotech系列(2)Aerotech.A3200.Tasks
本文档详细介绍了A3200控制器编程接口Task类和方法结构,主要包括LoadedProgram(内存中加载的程序)、Program(执行中的程序)、Task(任务控制)三大核心类及其相关组件。LoadedProgram提供程序加载/卸载功能,Program控制程序执行(运行/停止/调试),Task管理任务状态和执行模式。文档包含C++和C#示例代码,展示了程序控制、队列模式操作和错误处理等典型用法。支持的功能包括:程序关联任务、缓冲执行、调试控制、任务状态监控(空闲/错误等)、队列状态管理以及变量容器访问原创 2025-06-09 21:03:26 · 892 阅读 · 0 评论 -
ACS SPiiPlus 运动控制器的核心托管接口
ACS的核心API 类分析与应用原创 2025-05-30 10:42:56 · 815 阅读 · 0 评论 -
现场总线(Fieldbus)的配置映射FieldbusMappings 类
FieldbusMappings类管理现场总线通信配置,支持Hilscher卡、Modbus主/从站等多种连接方式。核心功能包括XML配置的序列化/反序列化、名称唯一性验证和变更事件通知。类结构包含多个映射集合,通过泛型接口INamedCollection统一管理。初始化时从XML文件加载配置,变更时通过configurationChangedHandler持久化到XML。名称验证CheckNameExists方法确保变量名合法且不重复,支持多种现场总线变量类型。原创 2025-05-29 17:24:02 · 838 阅读 · 0 评论 -
Aerotech系列(1)系统架构
Aerotech架构原创 2025-05-28 20:33:40 · 1290 阅读 · 0 评论 -
高精度模拟量控制命令集
高精度模拟量控制命令集类的设计原创 2025-05-28 11:58:51 · 450 阅读 · 0 评论 -
多任务控制系统的中央管理器
TasksCollection类是工业控制系统中任务管理的核心组件,实现了多任务状态监控、批量操作和资源调度。其架构采用装饰器模式封装数据,支持TaskMask位运算进行任务组操作。优化建议包括:增强线程安全(添加锁机制)、性能优化(状态缓存)、错误恢复(重试机制)及关键问题修复(掩码运算溢出防护)。扩展功能建议添加任务优先级调度和实时监控事件。典型应用场景包括紧急停止、状态监控和负载均衡。性能优化方案含批量读取加速和结构体布局优化,满足工业控制系统对实时性(延迟<10ms)、可靠性和可扩展性的严苛要求。原创 2025-05-28 11:19:41 · 352 阅读 · 0 评论 -
自动加工脚本程序变量管理器
数控系统程序变量管理器ProgramVariableCollection的核心功能与优化建议。该组件负责动态管理任务程序变量和系统堆栈变量,通过与编译器集成实现变量解析。文章从架构设计、工业场景优化、问题修复、性能优化等维度进行深入分析,提出线程安全增强、缓存策略、批量操作等改进方案。特别针对资源泄漏、数组越界等隐患提供修复方案,并给出G代码监控、刀具补偿等典型应用场景。优化后的设计可满足工业环境对实时性(访问延迟<10μs)、可靠性和可维护性的严苛要求,适用于数控系统和机器人控制器等实时控制场景。原创 2025-05-28 11:01:04 · 675 阅读 · 0 评论 -
工业变量集合模板类VariableCollection<TType>实现
VariableCollection<TType>是一个工业控制系统中的强类型变量集合类,主要用于管理硬件信号变量。它支持通过名称和索引两种方式访问变量,并提供高性能的批量读写操作。类内部通过委托模式实现多协议适配,可兼容Modbus、Profinet等工业协议。关键特性包括类型安全、双重索引访问(名称/地址)、批量操作优化通信效率、动态容量管理和上下文隔离。典型应用场景包括模拟量采集和数字量输出控制,能显著提升工业自动化软件的确定性和性能。该类还预留了缓冲池技术、SIMD加速等优化空间。原创 2025-05-27 11:26:44 · 995 阅读 · 0 评论 -
工业控制系统中输入/输出信号的类型化容器类实现
本文解析了工业控制系统中InputOutputContainer<TType>类的设计与实现,重点阐述了其在IO信号管理中的核心作用。该类采用输入/输出通道严格隔离的设计,通过泛型确保类型安全,支持批量读写操作提升性能(吞吐量可提升10-100倍)。其特点包括:标准化信号命名(符合IEC61131-3)、委托机制实现硬件解耦、线程安全保证等,适用于模拟量监控(如温度传感器)和数字量控制(如急停按钮)等工业场景。文中还提出了预分配缓冲区、信号别名服务等优化建议,体现了工业自动化软件对确定性、可靠性和高性能原创 2025-05-27 11:01:52 · 347 阅读 · 0 评论 -
工业控制变量系统的神经中枢CoreVariableHelper类
CoreVariableHelper类在工业控制系统中的核心作用,它作为变量管理的中枢模块,实现了三大关键功能:1)变量元数据解析,连接变量名与硬件地址;2)类型系统转换,桥接PLC与C#数据类型;3)上下文路由,按变量类型分配控制环境。类中设计了复合键映射机制和静态构造函数,支持200+种工业协议数据类型的转换,包括Modbus和现场总线信号处理。该实现采用工厂模式、委托注入等设计模式,通过批量处理、零分配设计和编译器句柄池优化性能,确保实时性要求(响应时间<50μs)。原创 2025-05-26 16:36:44 · 594 阅读 · 0 评论 -
工业控制系统中变量的抽象基类Variable抽象类
本文解析了工业控制系统中Variable抽象类的设计架构。该基类通过委托模式实现硬件访问抽象化,支持多上下文变量管理(全局/任务/IO等),包含核心字段如硬件标识结构体、读写委托等。其特性包括类型安全机制(模拟量/数字量等)、运行时行为优化(减少装箱开销)和工业协议兼容性。典型应用场景展示了对现场总线信号的监控实现,并提出了线程安全锁、事件通知等改进建议。该设计体现了工业控制系统对实时性、可靠性和扩展性的核心要求,是变量抽象层的经典范式。原创 2025-05-26 15:47:15 · 437 阅读 · 0 评论 -
工业现场总线Fieldbus变量的统一管理容器设计
FieldbusVariableContainer类是一个工业现场总线变量管理容器,支持Modbus TCP(主/从)、驱动器Modbus和Hilscher协议。采用延迟加载和缓存机制优化性能,通过分层架构实现对不同协议变量的统一访问。核心功能包括变量解析、连接信息管理及数组变量处理,严格遵循工业协议规范。设计亮点包括协议抽象、动态扩展和资源安全管理,适用于工业控制场景,建议后续增加异步支持和协议扩展能力。原创 2025-05-26 15:02:34 · 717 阅读 · 0 评论 -
虚拟输入输出VirtualIO 类的实现
VirtualIO类是工业控制系统中虚拟IO信号的管理核心,提供二进制(bool)和寄存器(double)两类信号处理。二进制信号支持2048点分块读写,通过ChunkBinaryRead/Write优化性能;寄存器信号支持896个数组批量操作。类设计采用硬件抽象模式,通过委托将原生API与业务逻辑解耦,包含索引器快速定位、异常统一处理等工业级特性。典型应用包括PLC信号交互、模拟量处理等场景,其固定内存分配和批量操作策略有效保障了实时性要求。原创 2025-05-26 14:30:24 · 882 阅读 · 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 · 1036 阅读 · 0 评论 -
控制器参数模板类ControllerParameter<T>的C#实现
本文解析了ControllerParameter<T>类的设计与实现。这是一个内部泛型类,继承自TypedParameter<T>并约束T必须实现IComparable接口,主要用于封装与底层控制器的参数交互。类中包含两个构造函数和核心方法getValue()与setValue(),实现了类型安全的参数读写功能,支持字符串、整数、浮点数等多种数据类型。设计上注重性能优化(如预分配字符串缓冲区)和异常处理,通过抽象底层细节为上层提供简洁的接口。典型应用场景如温度控制器参数的读写操作,体原创 2025-05-26 10:23:58 · 465 阅读 · 0 评论 -
用于控制器数据采集和管理的核心类Data
Data 类是一个用于数据采集和管理的核心类,主要用于控制器的诊断数据收集、配置和检索。其主要功能包括数据采集配置、采集控制(立即采集、连续采集、停止采集)、数据检索(同步和带进度回调)以及诊断数据获取。关键组件包括 ContinuousDataCollectionPoller(处理连续数据采集)、AxesDiagPacketRetriever(获取轴诊断数据)和 DataCollectionStatus(封装采集状态)。代码依赖 Wrapper 类与底层硬件交互,并通过 ExceptionResolver原创 2025-05-23 11:44:35 · 323 阅读 · 0 评论 -
A3200 运动控制系统的核心参数管理类BaseParameters
基本参数管理类原创 2025-05-21 14:27:50 · 591 阅读 · 0 评论 -
A3200 运动控制系统的全局静态Global类
A3200全局配置静态类原创 2025-05-20 16:06:59 · 400 阅读 · 0 评论 -
命名常量集合接口INamedConstantCollection<T>实现
INamedConstantCollection<TObject, TName> 是一个泛型接口,旨在定义命名常量集合的基本契约,结合了索引访问和枚举能力。该接口允许通过名称或位置索引访问集合中的元素,并提供了获取元素数量和集合容量的属性。泛型参数 TObject 表示集合中存储的元素类型,而 TName 表示元素名称的类型,且必须实现 IComparable 接口以确保名称可比较。原创 2025-05-20 15:34:44 · 375 阅读 · 0 评论 -
一个轴信息类AxisInfo实现
AxisInfo 类是一个用于封装和管理运动控制系统中轴信息的类,实现了 INamed<string> 接口。该类通过延迟加载模式优化性能,仅在首次访问时从控制器获取数据,并通过字段缓存已获取的信息。核心属性包括轴编号、名称、类型、伺服速率、最大电流、最大电压、固件版本、FPGA版本、闪存配置状态等。类中使用了异常处理机制和 invalidateData() 方法来清空缓存,强制重新获取数据。AxisInfo 类通过 Controller 对象执行命令和获取参数,适用于获取轴信息、监控轴状态和固件升级检查等原创 2025-05-20 15:08:22 · 764 阅读 · 0 评论 -
WPF Data Binding 及经典应用示例
DataBinding(数据绑定)是WPF中的核心机制,用于建立UI元素与数据对象之间的连接,实现数据的自动同步。其核心概念包括绑定源(Source)、绑定目标(Target)、绑定路径(Path)和绑定模式(BindingMode)。DataBinding支持多种绑定模式,如OneWay、TwoWay、OneWayToSource和OneTime,确保数据与UI的双向或单向同步。通过XAML语法,开发者可以轻松实现属性绑定、集合绑定、主从绑定、数据转换和命令绑定等操作。原创 2025-05-19 20:39:34 · 990 阅读 · 0 评论 -
异步委托执行管理器:更新
DelegateSpooler:异步委托执行管理器DelegateSpooler 是一个异步委托执行管理器,核心功能包括委托队列管理、异步任务调度、执行状态跟踪和线程安全控制。它通过管道ID(pipe)组织任务,使用 BeginInvoke/EndInvoke 实现异步执行,并通过锁机制保护共享资源。其设计采用双缓冲任务队列,确保线程安全,并通过后台工作循环持续监控任务状态。DelegateSpooler 适用于硬件控制系统的异步操作和事件聚合处理等场景,但存在内存泄漏和线程池压力等潜在问题。原创 2025-05-19 16:53:00 · 759 阅读 · 0 评论 -
C#中的ThreadStart委托
ThreadStart 是 .NET 中的一个内置委托类型,用于表示无参数且无返回值的方法,通常作为线程的入口方法。通过 List<ThreadStart> 可以创建一个线程任务队列,存储多个待执行的任务。典型使用场景包括多任务队列管理和延迟执行控制。技术细节中,ThreadStart 委托可以传递给 Thread 构造函数,启动线程执行任务。由于 List<T> 非线程安全,多线程操作时需加锁。现代 C# 推荐使用 Task 和 ConcurrentQueue 替代 ThreadStart 。原创 2025-05-19 15:50:48 · 635 阅读 · 0 评论 -
线程池模式与C#中用法
线程池是一种管理线程生命周期的技术,旨在减少线程创建和销毁的开销,控制并发度,并通过任务队列有序处理异步请求。在.NET中,线程池通过System.Threading.ThreadPool实现,核心方法包括QueueUserWorkItem用于提交任务。线程池由工作线程、I/O完成端口和任务队列组成。使用线程池时,可以通过QueueUserWorkItem提交任务,并通过GetAvailableThreads等方法获取线程池状态。高级配置包括设置线程数限制和使用Task封装任务。原创 2025-05-19 15:33:10 · 598 阅读 · 0 评论 -
轴诊断数据采集器AxesDiagPacketRetriever类的设计
AxesDiagPacketRetriever 类是一个用于多轴诊断数据采集的工具,主要功能包括实时采集32个轴的状态数据、将原始数据转换为工程单位,并将扁平数组重组为结构化对象。其设计采用了工厂方法、策略模式和缓存模式,以提高效率和灵活性。核心数据结构包括每个轴需要采集的27种数据项ID、特殊项配置以及硬件API所需的项ID数组。关键流程涉及数据采集和数据结构转换,性能优化点包括请求数据缓存和批量读取。典型使用场景包括实时监控和故障诊断。原创 2025-05-19 13:56:25 · 1327 阅读 · 0 评论
分享