10台设备协同别让每台PLC各自为政。离散联锁为主用“1台主站+S7-1500/1516做IO控制器,其余9台组态I-Device”,主站统一收状态、发同步令、做互锁;有伺服/多轴等高精度需求再开IRT同步域,用直接数据交换或智能设备等时模式。
16台嵌入式设备同时出日志,最忌主线程轮询16个口:任一口阻塞、波特率不匹配、485竞争都会拖垮整体。工程做法是用PySerial给每个口起独立读线程,原始字节进队列,聚合进程打统一时间戳、按设备名分文件落盘,异常断线自动重连,必要时再转MQTT/InfluxDB。
HIL台架的核心是“用上位机替代真实传感器环境”:Python通过DAQ输出模拟量、串口/CAN发数字量,把温度/电流/转速等信号注入被测控制器(DUT),再读DUT的串口日志、CAN报文、GPIO/PWM反馈做断言。纯Python适合毫秒级功能回归,微秒硬实时再叠加NI/实时机或FPGA板卡。
工业上位机读PLC,别按寄存器逐个发请求。正确思路是“按点表合并相邻地址→单次批读保持/输入寄存器→用BinaryPayloadDecoder拆浮点/有符号/缩放→多PLC用线程池或asyncio并发→超时重试+异常码归类”。pymodbus 3.x用ModbusTcpClient,保持寄存器0x03、输入寄存器0x04,地址按0基填写,文档里的40001对应address=0。
嵌入式OTA做差分,核心不是“算出差异”而是“可验证、可续传、可回退”。Python在PC/CI侧把old.bin、new.bin转成带元信息的补丁包,设备端只负责按基线版本解补丁、整包校验、写备份区,启动由Bootloader确认。小改动固件用bsdiff通常比整包小很多,弱网卡、NB-IoT、LoRa场景最划算。
工业触摸屏用Java ME做HMI,适合RAM几十MB、只跑数据监视、参数录入、报警列表的嵌入式面板。路线是CLDC+MIDP:MIDlet管生命周期,LCDUI高级组件做表单、低级Canvas做工艺图,CommConnection/本地桥接读PLC,RMS存配方,后台单线程轮询,避免多线程和频繁建对象。
边缘网关接Modbus、OPC UA、MQTT、S7等异构源,核心不是“能连上”,而是把寄存器号、节点路径、Topic字段统一成一套点模型,再做量程、质量、时间、去重清洗,最后按标准JSON上送平台。协议解析与业务语义解耦,新增设备只注册适配器,上层不用改。
边缘网关跑弱网MQTT,不能只靠setAutomaticReconnect(true)。真正稳的链路是“TCP参数保活+MQTT心跳探活+指数退避重连+持久会话保订阅+断网本地缓冲+QoS按业务分级”,把“连不上、连上假死、重连丢消息”三件事同时堵住。
S7-1200做多轴插补要先看硬件固件:普通1200建多个定位轴工艺对象,可分别用MC_MoveAbsolute/Relative做单轴定位,复杂直线/圆弧多轴协同优先用S7-1200 G2“运动机构”工艺对象;非G2老CPU可用ST自写微线段插补,把圆弧离散成小直线再逐轴下目标。
工业网关若只做串口/Modbus采集、以太网桥接、MQTT上云,根文件系统没必要带systemd、Python、全量man。Buildroot用menuconfig做交叉编译和根文件系统生成,按“C库—BusyBox—init—软件包—post-build清理—镜像压缩”六层收口,12MB可落地,且启动更快、OTA更小。
自定义传感器接在板端寄存器或I2C/SPI上,最简洁的给用户层“直接访问”方式就是写成字符设备:/dev下出节点,app用open/read拿数据,用ioctl切通道、设采样率。相比sysfs只适合小参数,字符设备可带内核缓冲、阻塞等待、批量帧和高频mmap,更适合工业采样。
NAND跑UBIFS,样机很快、出厂几个月变慢,常见不是硬件老化,而是“空间吃满+GC被动+磨损均衡跟不上”。UBIFS建立在UBI之上,调优要同时看MTD参数、UBI卷预算、mkfs镜像、挂载选项和运行监控四层。
工业控制把标准以太网当骨干,常因拥塞、排队、软件协议栈抖动出现毫秒级波动。TSN在Linux上用“统一时钟+时间门控+优先级整形+帧抢占”把控制报文放进确定时隙,配合支持硬件时间戳的网卡/交换芯片,端到端可做到亚毫秒甚至百微秒级。
ARM板走OTG/Device口对接PC,最实用是ConfigFS搭复合Gadget:同一个USB枚举出CDC-ACM串口和Mass Storage U盘。相比老式g_serial/g_mass_storage独立加载,ConfigFS可在运行期自由组合功能、改VID/PID、加热插拔逻辑,工业调试“一根线同时看日志+拷配置”很省事。
嵌入式板子“偶尔一卡”最忌盲改:先用数据分CPU热点、内核路径、调度阻塞、IO等待四层,再动手。perf做采样画像,Ftrace做内核函数级时间线,二者配合可从用户态一路追到驱动和调度器。