news 2026/5/14 5:17:16

最近在整理硬盘翻出个老项目——C#写的3C运动控制框架。这玩意儿当年在半导体车间扛过五年大旗,新能源产线也用过几回,今天给大伙儿拆解下里面的门道

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
最近在整理硬盘翻出个老项目——C#写的3C运动控制框架。这玩意儿当年在半导体车间扛过五年大旗,新能源产线也用过几回,今天给大伙儿拆解下里面的门道

C#3C运动控制软件框架,A项目标准界面,用于半导体,新能源等项目,用了5年项目框架。 包含三级权限,SQL数据操作.集成MES WebService服务调用方法。 选择轴的个数可以自定义,某个就成用到的轴也可以自定义,窗体使用模块化调用方式,集成EtherCAT adlik 833X 204 208C控制卡,研华Advtech控制卡,基恩士点 线laser调用库。 轴控制使用快捷键 Ctrl+A D W S来控制轴运动方向,流水线软件写法,等等功能,可直接打开运行,数据库文件也在目录下,还原即可登录,密码为111,软件全程无管控。

权限系统整得挺实在,三级权限直接怼进SQLServer。用户表里RoleID字段是关键,0是操作工(只能按按钮),1是工程师(能改参数),2是管理员(随便浪)。登录时搞了个骚操作:

string decryptPass = TripleDESHelper.Decrypt(loginPass); //数据库存的加密密码 var user = db.ExecuteQuery<User>($"SELECT * FROM Users WHERE UserName='{userName}' AND Password='{decryptPass}'"); CurrentUser.Level = (UserLevel)user.RoleID;

密码用3DES加密存着,默认密码111记得改。数据库备份文件扔在/DB文件夹,用SSMS还原就能直接用。

硬件兼容这块下了血本,工厂模式玩得飞起。控制卡驱动抽象成个接口:

public interface IMotionController { bool InitCard(uint cardNum); void SetAxisParam(int axis, MotionParam param); //...20+个方法 } //EtherCAT实现 public class EtherCATDriver : IMotionController { //调用dllimport的底层库 [DllImport("ECATMaster.dll")] private static extern int ECAT_Init(); } //研华控制卡 public class AdvantechDriver : IMotionController { ... }

配置文件里写个DriverType,启动时自动加载对应驱动。实测过Adlink 833X的200系列卡,基恩士激光器要特别注意触发时序。

C#3C运动控制软件框架,A项目标准界面,用于半导体,新能源等项目,用了5年项目框架。 包含三级权限,SQL数据操作.集成MES WebService服务调用方法。 选择轴的个数可以自定义,某个就成用到的轴也可以自定义,窗体使用模块化调用方式,集成EtherCAT adlik 833X 204 208C控制卡,研华Advtech控制卡,基恩士点 线laser调用库。 轴控制使用快捷键 Ctrl+A D W S来控制轴运动方向,流水线软件写法,等等功能,可直接打开运行,数据库文件也在目录下,还原即可登录,密码为111,软件全程无管控。

轴控制快捷键有点反人类,但用熟了是真香:

protected override void OnKeyDown(KeyEventArgs e) { if (e.Control && SelectedAxis != null) { switch (e.KeyCode) { case Keys.A: MoveAxis(-0.1); break; //左移 case Keys.D: MoveAxis(0.1); break; //右移 case Keys.W: JogForward(); break; //点动正转 case Keys.S: JogBackward(); break; //点动反转 } } }

注意这里用了死区处理,小于0.05mm/s的速度直接过滤防手抖。流水线逻辑用状态模式实现,二十几个状态自动切换,当年调这个没少掉头发。

模块化窗体是亮点,每个功能模块都是独立UserControl。主界面动态加载:

public void LoadModule(string moduleName) { var module = Assembly.GetExecutingAssembly() .GetTypes() .First(t => t.Name == moduleName + "Module"); var control = (UserControl)Activator.CreateInstance(module); panelMain.Controls.Clear(); panelMain.Controls.Add(control); }

数据库设计也讲究,举个轴配置表的例子:

CREATE TABLE AxisConfig ( AxisIndex INT PRIMARY KEY, MaxSpeed DECIMAL(18,2), Acceleration DECIMAL(18,2), HomeOffset DECIMAL(18,3), IsRotary BIT DEFAULT 0, ScaleFactor DECIMAL(18,5) --脉冲当量 )

参数改完自动同步到内存对象,改完不用重启立即生效。MES对接用了个沙雕方法——直接把WebService调用封装成脚本引擎,产线小哥都能写对接代码:

var mes = new MESProxy("http://10.1.1.100/MESService"); mes.Invoke("UploadYieldData", new { DeviceID = Config.DeviceNo, Qty = currentYield, Time = DateTime.Now.ToString("yyyyMMddHHmmss") });

这框架现在看可能有点过时,但胜在开箱即用。所有dll都扔在/Lib下,VS2019打开直接F5运行。注意Windows功能里要开.NET 3.5支持,实测Win10 LTSC跑得稳稳的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 23:00:25

OpenDataLab MinerU功能实测:多语言OCR与表格提取表现惊艳

OpenDataLab MinerU功能实测&#xff1a;多语言OCR与表格提取表现惊艳 1. 为什么需要一款文档理解专用模型&#xff1f; 你有没有遇到过这样的场景&#xff1a;手头有一份扫描版PDF论文&#xff0c;里面嵌着三张复杂表格和两幅带公式的图表&#xff0c;想把数据导出来做分析&…

作者头像 李华
网站建设 2026/5/9 17:44:09

3个步骤打造企业级数据资产:智能采集技术实现电商全平台洞察

3个步骤打造企业级数据资产&#xff1a;智能采集技术实现电商全平台洞察 【免费下载链接】xianyu_spider 闲鱼APP数据爬虫 项目地址: https://gitcode.com/gh_mirrors/xia/xianyu_spider 在数字化商业竞争中&#xff0c;电商平台数据智能采集已成为企业制定竞争策略的核…

作者头像 李华
网站建设 2026/5/6 5:49:06

一句话生成高清大图,麦橘超然真的太强了

一句话生成高清大图&#xff0c;麦橘超然真的太强了 1. 这不是概念演示&#xff0c;是真能用的高清图像生成器 你有没有过这样的时刻&#xff1a;脑子里已经浮现出一张画面——比如“敦煌飞天在赛博空间起舞&#xff0c;金箔纹样与全息数据流交织&#xff0c;背景是旋转的星轨…

作者头像 李华
网站建设 2026/5/12 16:02:43

GLM-4V-9B量化版实测:普通显卡流畅运行多模态AI

GLM-4V-9B量化版实测&#xff1a;普通显卡流畅运行多模态AI 你是否也遇到过这样的困扰&#xff1a;想本地跑一个真正能“看图说话”的多模态大模型&#xff0c;结果刚下载完权重&#xff0c;显存就爆了&#xff1f;官方文档里写着“A1008”&#xff0c;而你的台式机只有一张RT…

作者头像 李华
网站建设 2026/5/12 16:02:37

OFA图文匹配模型部署教程:修改server_port解决7860端口占用问题

OFA图文匹配模型部署教程&#xff1a;修改server_port解决7860端口占用问题 1. 这不是普通图片识别&#xff0c;而是“看图说话”的逻辑判断 你有没有遇到过这样的场景&#xff1a;一张商品图配着“高端真皮沙发”&#xff0c;结果点开发现是布艺的&#xff1b;或者短视频封面…

作者头像 李华
网站建设 2026/5/12 16:02:38

Z-Image-ComfyUI法律风险规避:版权内容生成限制解析

Z-Image-ComfyUI法律风险规避&#xff1a;版权内容生成限制解析 1. 为什么Z-Image-ComfyUI需要关注法律边界&#xff1f; 很多人第一次用Z-Image-ComfyUI时&#xff0c;会被它生成的高清图像惊艳到——中文提示词直接出图、双语渲染自然、人物细节丰富、风格切换流畅。但很快…

作者头像 李华