自制工业控制系统:机床界面实战——从启动LOGO到锁定解锁的七块屏

起因

基础篇收官时,图形系统那篇留下的东西是"零件":渲染原语、点阵字库、控件、事件分发。但操作工坐在机床前面对的不是零件,是一块块整屏:开机看到什么、程序在哪儿编、怎么在屏幕里先走一遍、切割时盯什么、参数谁改、维护看哪儿、锁住了怎么办。这篇把应用层的界面定下来——七块屏:启动 LOGO、编程、仿真、运行、设置、维护、锁定/解锁。

自制工业控制系统:实时性验证实战——TSC延迟测量、抖动直方图与烤机准则

起因

调度篇把话说出去了:硬实时层的确定性来自中断优先级和 ISR 的有界执行。话说出去要拿数据兑——客户验收、产线抽检、自己晚上睡得着,靠的都是一份测出来的延迟分布,不是"应该没问题"。测量这行的老家伙是示波器和逻辑分析仪——中断响应多少微秒,示波器一触发一目了然,就是费机器费人;软件自打点(TSC 加直方图)是嵌入式圈的长期实践,便宜、能长期挂着跑,代价是要自己证明打点本身不扰动系统。“平均值会说谎"这句话,服务器圈是 Google 2013 年那篇尾延迟论文点破的,工控圈不用论文点——废一个件就懂了。基础篇最后这篇就干这一件事:把"实时"两个字变成一页纸的数字。

自制工业控制系统:合规与安全控制实战——GPS地域锁、授权码体系与4G远程管控

起因

机床这个行业,全款现货是理想情况。现实里大量机器是分期付款卖出去的,还有整批打包给二级经销商、经销商再租给终端客户的。机器在别人手里、钱还没收完,厂里和经销商手里就得有控制手段:GPS 知道机器在哪,授权码决定机器能干什么、能干到哪天,4G 通道把这两样送回来。这套手段没有一样是机床行业发明的:GPS 是 1973 年美国国防部立的军用项目,1995 年全面运行之后民用一发不可收拾,模块便宜到几十块钱一颗;远程锁机则是在挖掘机按揭市场先成熟的——工程机械租赁干了十几年,GPS 锁机是标配,机床照搬的是一条被验证过的路。这也是当初坚持自研网络协议栈的原因之一——这些能力全踩在自己的 TCP/IP 上,不依赖任何第三方系统。

自制工业控制系统:开机自检与固件更新实战——POST报告、A/B双槽与版本回滚

起因

十五年生命周期的机器,出厂那天固件就是旧的——升级是必然,升级变砖是事故。这篇讲两件让机器活得久的事:开机自检(POST,排障第一屏)与 A/B 双槽固件更新(升级不停产)。升级入口两条:U 盘(现场,操作员插盘点确认)和网络 OTA(含 4G 远程推送,合规篇里 4G 通道复用这条路);外加恢复出厂固件的兜底。

自制工业控制系统:参数系统与断电恢复实战——双副本参数表与加工现场快照

起因

机床参数丢了意味着什么,干这行的都见过:丝筒参数不对飞车、坐标丢了对不了刀、一屋子机床挨个重新校。断电恢复是另一半:加工到一半停电,来电之后这台件是报废、续切还是回退,得是系统说了算,不是运气。日志系统解决"发生了什么",这篇解决"配置与现场丢没丢"。

自制工业控制系统:日志系统实战——无锁环形缓冲、分级输出与断电安全落盘

起因

到目前为止每篇文章的"跑通标志"都靠串口 printf 亲眼盯着——工程上这不可持续。工业系统要的是:出事后能还原现场。这篇把散落各篇的"记日志"统一成一个系统:分级、双通道(串口+盘)、ISR 可写、崩溃可救。这也是合规审计的地基——合规篇的授权解锁、所有权转移、参数修改,全都要在这里留痕。

自制工业控制系统:U盘驱动实战——USB大容量存储SCSI命令与块设备接入

起因

立项清单里"读取 U 盘"是明确需求:现场拷加工程序、导出加工报表、固件升级的入口都是它。U 盘的命令集是借来的:SCSI 的前身 SASI 是 1979 年 Shugart 给磁盘驱动器定的接口,1986 年标准化成 SCSI,在企业存储里摸爬了十几年;USB 大容量存储类没有另起炉灶,把 SCSI 命令装进 CBW/CSW 信封走批量传输——所以驱动一个 U 盘,实际写的是一套打了折的 SCSI 主机。USB 协议详解把 CBW/CSW 的理论讲完了,EHCI 篇有了批量传输的队列机制,NVMe 篇立了 BlockDevice 抽象——这篇把三样东西拧起来:一个真的能挂 exFAT 的 U 盘驱动。

自制工业控制系统:内存管理器实战——物理页帧分配器、内核堆与DMA内存池

起因

系列里"从内存映射里划一块"“DMA 池"“后备缓冲"这类说法出现过无数次,但那根负责"划"的手指——分配器本身——一直没有正面写过。这是基础篇里最大的一块地基:没有它,Vec/Box 用不了,网络包缓冲、字体资源、文件目录列表全都没有出处。这篇补上:从 UEFI 内存映射出发做一个物理页帧分配器,在其上搭内核堆,再划出 DMA 专用池,最后说清楚实时层为什么一分钱内存都不能现场要。这门手艺本身没有新东西可发明:位图、空闲链、伙伴系统全是六十年前就定型的方法,Knuth 的《计算机程序设计艺术》第一卷 1968 年就把这摊事讲透了;DMA 必须低地址连续内存的执念则来自 IBM PC 的 8237 控制器——24 位地址线顶到 16MB,“设备只认低地址"这个约束一路遗传到今天的 PCIe 设备。功夫全花在选哪门老手艺最配这台机器。

自制工业控制系统:CPU信息与多核实战——CPUID、INIT-SIPI-SIPI唤醒与双核分工

起因

工控主板上插的是多核 CPU,我们的系统到现在只用了一颗核——固件唤醒的 BSP,第二颗核从开机起就在那儿睡觉。这篇干两件事:一是把 CPUID 用起来,CPU 什么型号、几个核、缓存多大、支持哪些指令,一条指令全问出来——自检页要显示的 CPU 信息、页帧分配器要的物理地址宽度,数据源都是它;二是把第二颗核叫醒干活,INIT-SIPI-SIPI 唤醒、每核自己的自举,然后给两颗核分好工——Core0 跑实时、Core1 跑服务,物理上的隔离比任何软件优先级方案都硬。