ARMxy模块化工业控制器:替代PLC+网关+工控机的储能控制方案
发布时间:2026/10/1 16:09:52来源:尧图网络
1. 从一台设备替代三台设备说起ARMxy 模块化工业控制器的核心逻辑第一次接触 ARMxy 这类模块化工业控制器是在一个储能柜项目上。当时柜内塞了一台西门子 S7-200 SMART PLC、一个协议转换网关、一台低功耗工控机三台设备各司其职又互相扯皮PLC 管 IO 和逻辑网关负责把 Modbus RTU 转成 Modbus TCP 再往上抛工控机跑组态软件做本地 HMI 和数据缓存。柜内空间紧张、接线复杂、故障点分散最头疼的是三台设备各自有独立的电源模块和通信配置调试时改一个参数要来回切换三个软件。后来接触到 ARMxy 系列模块化工业控制器它的核心思路很直接用一块 ARM 架构的主控板卡通过模块化 IO 扩展把 PLC 的逻辑控制、网关的协议转换、工控机的边缘计算能力整合到一个硬件平台上。这不是简单的“三合一”概念包装而是从系统架构层面重新思考了工业现场控制层的部署方式。1.1 为什么是 ARM 架构而不是继续用 x86工控机领域长期被 x86 架构主导原因无非是生态成熟、软件兼容性好。但 x86 工控机的功耗通常在 15W 到 65W 之间加上风扇散热、固态硬盘、内存条整体功耗和故障率都不低。储能项目尤其敏感——柜内温度高、空间密闭、维护周期长每增加一个发热源和机械部件就多一个潜在故障点。ARM 架构的优势在这里非常明显。以典型的 ARM Cortex-A55 四核处理器为例整板功耗可以控制在 3W 到 8W 之间无风扇被动散热即可稳定运行在 -40°C 到 85°C 的工业温宽。没有旋转部件意味着没有机械磨损MTBF平均无故障时间可以做到 10 万小时以上。对于储能逆变器、光伏 BMU 控制器这类需要长期无人值守运行的场景这个差异是决定性的。另一个容易被忽略的点是实时性。很多人以为 ARM 做不了硬实时但实际上通过 PREEMPT_RT 补丁或者异构架构Cortex-A 跑 Linux 做应用Cortex-M 跑 RTOS 做实时 IOARM 平台完全可以满足大多数工业控制场景对实时性的要求。典型的循环周期可以做到 1ms 甚至更低对于 PLC 梯形图逻辑、PID 温度控制、电机顺启逆停定时器这些应用绰绰有余。1.2 模块化设计到底解决了什么问题传统 PLC 的模块化是背板总线式的CPU 模块插在导轨最左边右边依次挂 IO 模块、通信模块、特殊功能模块。这种方式的优点是稳定可靠缺点是扩展成本高、体积大、灵活性差。一个 8 入 8 出的数字量模块动辄几百上千元而且不同品牌的模块互不兼容。ARMxy 的模块化思路更接近嵌入式系统的板对板连接。主控板提供核心计算和通信能力IO 扩展通过标准化的接口通常是 SPI、I2C 或者并行总线连接各种功能板卡。这些板卡可以是数字量输入输出、模拟量采集、继电器输出、RS485/RS422 通信、CAN 总线等。用户根据项目实际需求选配不需要为用不到的通道买单。这种设计带来的直接好处是成本结构的优化。以一个典型的储能柜控制需求为例16 路数字量输入用于断路器状态、接触器反馈、急停信号等、8 路数字量输出用于接触器控制、指示灯、报警输出、4 路模拟量输入用于温度、电压、电流采集、2 路 RS485用于电表、BMS 通信。如果用传统 PLC 方案CPU 加这些模块的成本大约在 2000 到 4000 元再加上网关和工控机整体硬件成本轻松超过 6000 元。而 ARMxy 方案把所有这些功能集成在一块主控板加两三块扩展板上整体成本可以控制在 1500 到 2500 元区间。1.3 协议转换和边缘计算为什么重要工业现场最让人头疼的问题之一就是协议碎片化。储能项目里BMS 可能走 CAN 总线或者 RS485 Modbus RTU电表走 Modbus RTU逆变器走 Modbus TCP 或者 CANopen上位机监控系统可能要求 OPC UA 或者 MQTT。传统做法是加一个协议转换网关把各种协议统一转换成一种再送给工控机处理。ARMxy 把协议转换能力内置到控制器里直接在应用层做协议解析和映射。比如用 Python 写一个 Modbus RTU 采集程序读取电表的电压电流数据再通过 OPC UA 服务端把数据暴露给上位机。整个过程在一块板子上完成不需要额外的网关设备。边缘计算能力则体现在数据预处理上——比如对采集到的温度数据做滑动平均滤波、对电压电流做有效值计算、对异常状态做本地判断和报警只把关键数据上传到云端或上位机减少通信带宽和云端存储压力。2. 核心细节解析从硬件选型到软件架构的实操要点2.1 主控板选型的关键参数选 ARMxy 主控板的时候有几个参数必须仔细看。首先是 CPU 核心数和主频这直接决定了能跑多复杂的应用。如果只是做简单的 Modbus 采集和逻辑控制双核 A7 级别的处理器就够用如果要跑 Python 数据处理、SQLite 数据库、Web 服务建议至少四核 A55 起步。内存方面512MB 是底线1GB 或 2GB 会更从容尤其是跑 Docker 容器或者多个服务进程的时候。存储配置容易被忽视。eMMC 比 SD 卡可靠得多工业现场振动、温度变化大SD 卡触点氧化和松动是常见故障。建议选择板载 eMMC 至少 8GB 的型号如果数据记录需求大再通过 USB 或者 SATA 接口扩展存储。另外要注意看门狗电路硬件看门狗是工业控制器的标配软件跑飞的时候能自动复位这个功能在无人值守场景下是救命的。通信接口方面至少需要两路独立的以太网口。一路用于连接本地设备PLC、电表、BMS一路用于连接上位机或云端。如果项目涉及环网冗余还需要支持 RSTP 或者专用环网协议。串口方面RS485 是必须的RS232 和 RS422 根据设备情况选配。CAN 总线接口在储能和新能源汽车相关项目中越来越常见选型时最好预留。2.2 IO 扩展模块的选配逻辑IO 扩展模块的选配要遵循“够用就好、适度冗余”的原则。数字量输入模块先统计所有需要监测的开关量信号断路器辅助触点、接触器状态反馈、急停按钮、门禁开关、水浸传感器等。每个信号占用一个通道然后在此基础上增加 10% 到 20% 的冗余。数字量输出模块统计所有需要控制的负载接触器线圈、电磁阀、指示灯、报警蜂鸣器。注意输出模块的驱动能力继电器输出通常可以直接驱动小功率负载但大功率接触器线圈需要中间继电器过渡。模拟量采集模块的选型更讲究。首先要确定信号类型4-20mA 电流环、0-10V 电压、PT100/PT1000 热电阻、热电偶。不同的信号类型需要不同的采集模块。精度方面12 位分辨率对于大多数工业场景够用16 位适合需要高精度测量的场合。采样率方面温度采集 1Hz 足够电压电流采集可能需要 1kHz 甚至更高。通道隔离是另一个关键点储能项目里高压和低压信号混在一起不隔离的采集模块容易受干扰甚至损坏。注意模拟量采集模块的接线一定要用屏蔽双绞线屏蔽层单端接地。信号线和动力线分开走线槽间距至少 20cm。这些细节看起来简单但实际项目中至少一半的干扰问题都出在这里。2.3 软件架构的分层设计ARMxy 控制器的软件架构通常分三层底层是 Linux 系统加实时补丁中间层是协议栈和 IO 驱动上层是应用逻辑。底层系统建议用 Yocto 或者 Buildroot 定制裁剪掉不需要的组件减少攻击面和存储占用。实时补丁用 PREEMPT_RT可以把最坏情况下的调度延迟控制在 100 微秒以内。中间层的协议栈是核心。Modbus RTU/TCP 可以用 libmodbus 库OPC UA 可以用 open62541MQTT 可以用 Eclipse Paho。这些开源库成熟稳定社区活跃比自己从头写靠谱得多。IO 驱动方面如果是标准接口的扩展板厂商通常会提供驱动源码或者内核模块。如果是自己设计的板卡需要写字符设备驱动或者用 GPIO 子系统。上层应用逻辑用 Python 或者 C 都可以。Python 开发效率高适合快速原型和中小规模项目C 性能好适合对实时性要求高的场景。我个人的习惯是用 Python 做数据采集和业务逻辑用 C 写对时间敏感的控制循环两者通过共享内存或者消息队列通信。这种混合架构兼顾了开发效率和运行性能。3. 实操过程从零搭建一个储能柜控制器的完整记录3.1 硬件组装与接线拿到 ARMxy 主控板和扩展模块后第一步是确认板卡之间的连接方式。大多数模块化控制器采用板对板连接器或者排线连接。板对板连接器更可靠但拆装麻烦排线连接灵活但要注意排线方向和卡扣是否锁紧。我一般会在连接前用万用表确认电源引脚没有短路然后再上电。电源接线是另一个关键点。工业现场通常提供 24V 直流电源ARMxy 控制器一般支持 9V 到 36V 宽压输入。建议在电源输入端加一个自恢复保险丝和 TVS 管防止浪涌和反接损坏板卡。如果现场电磁环境恶劣还可以加共模扼流圈和滤波电容。IO 接线按照之前统计的信号表逐一连接。数字量输入通常采用干接点或者湿接点方式干接点需要控制器提供查询电压湿接点由外部提供电压。数字量输出如果是继电器型注意触点容量和负载类型感性负载要加续流二极管。模拟量输入按照信号类型接线4-20mA 电流环注意取样电阻的精度和温漂。3.2 系统烧录与基础配置ARMxy 控制器通常提供多种系统烧录方式SD 卡启动、USB 烧录、网络烧录。量产阶段用网络烧录效率最高可以批量部署。开发阶段用 SD 卡或者 USB 更方便随时可以更换系统镜像。系统启动后第一件事是配置网络。工业现场通常有独立的控制网络建议给控制器分配固定 IP避免 DHCP 租约到期后 IP 变化导致通信中断。配置方法根据系统不同有所差异Debian/Ubuntu 系统改 /etc/network/interfaces 或者用 netplanBuildroot 系统改 /etc/network/interfaces 或者用 connman。接下来是配置串口参数。RS485 通信需要设置波特率、数据位、停止位、校验位这些参数必须和从站设备完全一致。用 stty 命令可以查看和设置串口参数但更推荐在应用程序里用 termios 库来配置这样参数随程序走不会因为系统重启丢失。# 查看串口参数 stty -F /dev/ttyS1 -a # 设置串口参数9600波特率8数据位1停止位无校验 stty -F /dev/ttyS1 9600 cs8 -cstopb -parenb3.3 Modbus RTU 采集程序的编写与调试Modbus RTU 是工业现场最常见的协议之一。用 Python 写一个采集程序核心是 libmodbus 库的封装。下面是一个读取电表电压电流的示例import modbus_tk.modbus_rtu as modbus_rtu import serial # 打开串口 ser serial.Serial( port/dev/ttyS1, baudrate9600, bytesize8, parityN, stopbits1, timeout1 ) # 创建Modbus RTU主站 master modbus_rtu.RtuMaster(ser) master.set_timeout(1.0) master.set_verbose(True) # 读取电表数据从站地址1起始寄存器0读取4个寄存器 try: data master.execute(1, modbus_rtu.READ_HOLDING_REGISTERS, 0, 4) voltage data[0] / 10.0 # 假设电压寄存器缩放因子为10 current data[1] / 100.0 # 假设电流寄存器缩放因子为100 power data[2] # 功率 energy data[3] # 电能 print(f电压: {voltage}V, 电流: {current}A, 功率: {power}W, 电能: {energy}kWh) except Exception as e: print(fModbus读取失败: {e})调试 Modbus 通信的时候最常见的问题是超时和 CRC 校验错误。超时通常是波特率不匹配或者从站地址错误CRC 错误通常是数据位、停止位、校验位配置不对。用示波器或者串口调试助手抓一下波形很快就能定位问题。实操心得Modbus RTU 通信距离超过 50 米时建议降低波特率到 4800 甚至 2400。线缆用屏蔽双绞线A 接 A、B 接 B终端电阻 120 欧姆不能省。我遇到过好几次通信不稳定最后都是终端电阻没接或者接错位置导致的。3.4 OPC UA 服务端的搭建OPC UA 是上位机监控系统常用的协议。用 open62541 库可以在 ARMxy 上快速搭建一个 OPC UA 服务端把采集到的数据暴露出去。下面是核心代码框架#include open62541/server.h #include open62541/server_config_default.h UA_Server *server; UA_NodeId voltageNodeId; static void addVoltageVariable(UA_Server *server) { UA_VariableAttributes attr UA_VariableAttributes_default; UA_Double voltage 0.0; UA_Variant_setScalar(attr.value, voltage, UA_TYPES[UA_TYPES_DOUBLE]); attr.description UA_LOCALIZEDTEXT(zh-CN, 电压); attr.displayName UA_LOCALIZEDTEXT(zh-CN, 电压); attr.dataType UA_TYPES[UA_TYPES_DOUBLE].typeId; attr.accessLevel UA_ACCESSLEVELMASK_READ | UA_ACCESSLEVELMASK_WRITE; voltageNodeId UA_NODEID_STRING(1, voltage); UA_QualifiedName name UA_QUALIFIEDNAME(1, voltage); UA_NodeId parentNodeId UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER); UA_NodeId parentReferenceNodeId UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES); UA_Server_addVariableNode(server, voltageNodeId, parentNodeId, parentReferenceNodeId, name, UA_NODEID_NUMERIC(0, UA_NS0ID_BASEDATAVARIABLETYPE), attr, NULL, NULL); } int main(void) { server UA_Server_new(); UA_ServerConfig_setDefault(UA_Server_getConfig(server)); addVoltageVariable(server); UA_StatusCode retval UA_Server_runUntilInterrupt(server); UA_Server_delete(server); return retval UA_STATUSCODE_GOOD ? 0 : 1; }编译的时候需要链接 open62541 库交叉编译到 ARM 平台。运行起来后用 UaExpert 或者任何 OPC UA 客户端连接就能看到电压变量并订阅数据变化。3.5 数据记录与断线续传储能项目通常需要记录历史数据用于故障分析和性能评估。本地用 SQLite 数据库存储是最简单的方案轻量、无需额外服务、支持 SQL 查询。建表的时候注意时间戳用 Unix 时间戳或者 ISO8601 格式方便后续处理。CREATE TABLE IF NOT EXISTS power_data ( id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp INTEGER NOT NULL, voltage REAL, current REAL, power REAL, energy REAL, temperature REAL ); CREATE INDEX idx_timestamp ON power_data(timestamp);断线续传是另一个必须考虑的问题。网络中断时数据先存本地网络恢复后自动上传。实现方式可以用一个上传队列每条记录标记上传状态后台线程定期扫描未上传的记录并尝试发送。发送成功后更新状态失败则保留等待下次重试。4. 常见问题与排查技巧实录4.1 通信类问题速查表现象可能原因排查方法解决方案Modbus RTU 超时波特率不匹配确认主从站波特率一致统一设置为 9600 或 19200Modbus RTU CRC 错误数据位/校验位配置错误检查串口参数8N1 是最常见配置Modbus TCP 连接失败IP 地址或端口错误ping 测试网络连通性确认从站 IP 和端口 502OPC UA 客户端连不上防火墙拦截检查 iptables 规则开放 4840 端口模拟量采集跳变信号线受干扰示波器观察信号波形加屏蔽层、单端接地、远离动力线数字量输入误触发触点抖动观察输入信号波形软件消抖或加 RC 滤波系统频繁重启电源功率不足测量电源电压和电流更换更大功率电源看门狗误复位应用阻塞检查应用是否有死循环优化代码或调整看门狗超时4.2 我踩过的几个坑第一个坑是 RS485 终端电阻。有一次调试一个多机通信系统单台设备通信正常多台设备一起上就频繁丢包。查了半天才发现是终端电阻只在一端接了另一端没接。RS485 总线两端都需要 120 欧姆终端电阻中间设备不需要接。这个细节在实验室里不容易暴露现场长距离通信才会显现。第二个坑是模拟量采集模块的共地问题。储能柜里 BMS 和电表可能由不同的电源供电如果采集模块和信号源没有共地采集到的值会漂移甚至完全错误。解决方法是确保所有信号源和采集模块参考同一个地或者使用隔离型采集模块。隔离模块贵一些但省心得多。第三个坑是 Python 程序的 GIL 问题。用 Python 做多线程数据采集时GIL 会导致 CPU 密集型任务互相阻塞。后来改成多进程架构每个采集任务一个独立进程通过消息队列通信问题解决。如果项目对性能要求高建议直接用 C 写采集程序Python 只做上层业务逻辑。第四个坑是 eMMC 寿命。工业现场频繁写日志和数据eMMC 的擦写次数有限。后来把日志级别调高减少不必要的写入数据记录用环形缓冲区定期归档到外部存储。另外开启文件系统的 TRIM 支持可以延长 eMMC 寿命。4.3 调试工具推荐调试 ARMxy 控制器的时候几个工具能大幅提升效率。串口调试用 minicom 或者 picocom比 screen 更稳定。网络调试用 tcpdump 抓包配合 Wireshark 分析。Modbus 调试用 modbuspal 模拟从站或者用 modpoll 命令行工具快速测试。OPC UA 调试用 UaExpert功能全面免费版够用。远程调试方面SSH 是必须的建议配置密钥登录禁用密码登录。如果现场网络环境复杂可以用 frp 或者 ngrok 做内网穿透但要注意安全不要暴露敏感端口。代码版本管理用 Git每次现场调试前先提交一版出问题可以快速回滚。注意现场调试前一定要备份系统镜像。我遇到过好几次改配置改到系统起不来有备份的话几分钟就能恢复没备份就得重新烧录系统再从头配置半天时间就没了。5. 储能项目中的实际应用与降本分析5.1 储能逆变器控制场景储能逆变器是储能系统的核心设备负责直流电和交流电的双向转换。ARMxy 控制器在这个场景中主要做几件事通过 CAN 总线或者 RS485 与逆变器通信读取运行状态和故障码通过 Modbus RTU 采集电表数据计算充放电功率和电能通过数字量 IO 控制接触器和断路器实现并离网切换通过 OPC UA 或 MQTT 把数据上传到 EMS 或云平台。传统方案里这些功能分散在 PLC、网关和工控机上。PLC 负责 IO 控制和逻辑判断网关负责协议转换工控机负责数据处理和上传。ARMxy 把三者合一后硬件成本降低约 60%柜内空间节省约 50%接线工作量减少约 40%。更重要的是故障点从三个变成一个维护效率大幅提升。5.2 光伏 BMU 控制器场景光伏储能系统中的 BMU电池管理单元负责监测每个电池模组的电压、温度和 SOC。一个典型的储能集装箱可能有几十个 BMU每个 BMU 通过 CAN 总线或者 RS485 上报数据。ARMxy 控制器作为 BMU 汇聚节点需要同时处理多路 CAN 和 RS485 通信实时性要求较高。用 ARMxy 方案可以在 Cortex-A 核上跑 Linux 做数据汇聚和上传在 Cortex-M 核上跑 RTOS 做 CAN 总线实时采集。两个核通过共享内存通信互不干扰。这种异构架构比单纯用 x86 工控机加 CAN 卡更可靠功耗也更低。实测下来一个集装箱的 BMU 数据采集周期可以稳定在 100ms 以内满足 BMS 系统的要求。5.3 成本对比与投资回报以一个 100kWh 的工商业储能柜为例控制层硬件成本对比如下项目传统方案ARMxy 方案节省PLC CPU800 元集成-数字量 IO 模块600 元300 元300 元模拟量采集模块800 元400 元400 元协议转换网关500 元集成500 元工控机2500 元集成2500 元电源模块300 元150 元150 元柜内附件400 元200 元200 元合计5900 元1050 元4850 元单柜控制层硬件成本节省约 4850 元。如果算上接线工时、调试时间、后期维护成本综合节省更多。对于一个 10MWh 的储能电站按 100 个储能柜计算仅控制层硬件就能节省近 50 万元。这还没算上因为故障率降低带来的运维成本节省和因空间节省带来的柜体成本降低。5.4 量产一致性保障从样机到量产一致性是最大的挑战。ARMxy 模块化控制器的优势在于硬件标准化程度高主控板和扩展板都是批量生产的标准品一致性有保障。软件方面用 Docker 容器打包应用系统镜像统一制作烧录后自动配置参数可以大幅减少现场调试工作量。量产测试环节建议做以下几项电源老化测试满载运行 48 小时、通信压力测试满负载通信 24 小时、IO 全通道测试每个通道逐一验证、环境测试高低温循环。这些测试看起来费时间但能提前暴露 90% 以上的潜在问题避免现场返工。6. 从 PLC 工程师到 ARMxy 开发者的技能迁移6.1 思维方式的转变做惯了 PLC 梯形图编程的工程师第一次接触 ARMxy 这类 Linux 控制器会有些不适应。PLC 是循环扫描机制程序从上到下执行逻辑直观。Linux 应用是事件驱动或者多线程并发需要考虑资源竞争、异步回调、超时处理。这个转变需要时间但一旦适应了能做的事情比 PLC 多得多。我的建议是先不要急着写复杂应用从最简单的 Modbus 采集开始跑通一个完整的数据流采集、处理、存储、上传。然后再逐步增加功能比如报警判断、PID 控制、Web 界面。每增加一个功能就多学一个知识点循序渐进。6.2 复用已有的 PLC 知识PLC 工程师积累的很多知识在 ARMxy 上依然有用。比如 IO 信号的消抖处理、模拟量的滤波算法、PID 控制的参数整定、安全回路的设计原则这些和平台无关是工业控制的通用知识。区别只是实现方式从梯形图变成了代码。PID 控制是个典型例子。PLC 里用 PID 指令块ARMxy 上用 Python 或者 C 实现 PID 算法。核心公式是一样的只是代码实现需要注意积分饱和、微分噪声、采样周期一致性等问题。我一般会先用 Python 快速验证算法调好参数后再用 C 重写性能敏感的部分。6.3 学习路径建议如果你是从 PLC 转过来的建议按这个顺序学习Linux 基础命令和文件系统、Python 编程基础、串口和网络通信编程、Modbus 和 OPC UA 协议、数据库操作、Web 开发基础。每个环节不用学太深够用就行遇到问题再深入查资料。网上资源很多但质量参差不齐。我的经验是优先看官方文档和源码其次是英文技术博客最后才是中文教程。官方文档虽然枯燥但信息最准确。源码能让你理解底层实现遇到奇怪问题的时候能自己排查。英文博客通常比中文博客更新更快、更深。实操心得不要试图一次学会所有东西。我在第一个 ARMxy 项目上花了两个月才跑通完整流程第二个项目只用了两周第三个项目三天就搞定了。关键是把第一个项目做扎实后面就是复制和微调。7. 选型与部署的几点个人建议7.1 什么场景适合用 ARMxyARMxy 模块化控制器最适合中等复杂度的工业控制场景IO 点数在几十到几百点之间、需要多种协议转换、需要本地数据处理和存储、对功耗和体积有要求。储能、光伏、充电桩、智能配电、环境监测这些领域都很合适。但如果 IO 点数超过 500 点或者对实时性要求极高循环周期小于 100 微秒或者需要冗余 CPU 和热插拔传统大型 PLC 或者专用控制器可能更合适。ARMxy 的定位是替代中小型 PLC 加工控机加网关的组合不是替代所有 PLC。7.2 部署时的注意事项现场部署时接地是第一个要注意的。控制器的接地端子一定要可靠接地接地电阻小于 4 欧姆。信号地和电源地要分开走最后单点接地。这个做不好后面所有通信问题都可能和它有关。散热方面虽然 ARMxy 功耗低但柜内温度还是要控制。如果柜内温度超过 60°C建议加装风扇或者空调。控制器周围留出至少 5cm 的散热空间不要紧贴其他发热设备安装。防雷方面如果控制器安装在户外或者雷击多发区域电源线和通信线都要加防雷器。以太网口用网络防雷器RS485 用信号防雷器。这些配件不贵但能避免整块板卡被雷击损坏。7.3 后续扩展方向ARMxy 控制器跑 Linux 系统扩展性比传统 PLC 强很多。后续可以加的功能包括本地 Web 界面用 Flask 或者 Django 快速搭建、数据可视化用 Grafana 或者 ECharts、远程升级用 OTA 方案、AI 推理用 TensorFlow Lite 或者 ONNX Runtime 跑轻量模型。我最近在做一个项目在 ARMxy 上跑了一个简单的 LSTM 模型用历史数据预测储能柜的温度趋势。模型很小推理时间不到 10ms但能提前 15 分钟预警温度异常。这种边缘 AI 的应用在传统 PLC 上很难实现但在 ARMxy 上就是加一个 Python 库的事。最后分享一个小技巧ARMxy 的 GPIO 可以配置成中断模式用来捕捉快速变化的信号。比如电表的脉冲输出用轮询方式可能会漏掉脉冲用中断方式就能准确计数。配置方法是在设备树里把 GPIO 设成 interrupt-parent然后在驱动里注册中断处理函数。这个功能在流量计、电能表脉冲采集场景下特别有用。
网站建设高端定制企业官网