构建前修改 BMU 连接参数

构建前修改 BMU 连接参数
打开examples/server_example_basic_io/server_example_basic_io.c根据实际 BMU 控制器或 Modbus TCP 模拟器修改#define MB_TCP_IP “192.168.1.168”#define MB_TCP_PORT 1502#define MB_SLAVE_ID 1#define MB_TIMEOUT_MS 1000#define MB_INPUT_START_ADDR 30#define MB_INPUT_REG_COUNT 4#define MB_RUN_CTRL_REG_ADDR 42#define MB_RESET_REG_ADDR 44如果只是复现 Demo可以使用 Modbus TCP Slave 模拟器建立以下点位Unit ID1TCP 端口1502输入寄存器协议地址 3033可读保持寄存器协议地址 42 和 44可写。注意 Modbus 地址基准代码中的地址均为 Modbus PDU 中使用的 0 基协议地址。例如协议地址 42在部分工具中可能显示为 40043协议地址 30在部分工具中可能显示为 30031。联调时应确认 BMU 通信手册和调试工具使用的是 0 基地址还是 1 基显示地址不要直接把带有 3xxxx/4xxxx 前缀的编号填入代码。十、在 ARM64 Ubuntu 上构建确认设备架构uname -m预期输出aarch642. 执行一键构建chmod x build_on_arm64.sh./build_on_arm64.sh如果设备缺少编译依赖脚本会调用 sudo apt 安装。离线环境需要提前准备相关软件包。构建成功后的程序位于dist/iec61850_arm643. 检查构建结果file dist/iec61850_arm64ls -l dist/iec61850_arm64file 输出中应包含 ARM aarch64 相关信息。十一、运行 DemoIEC 61850 MMS 默认使用 TCP 102 端口。Linux 普通用户绑定低端口可能受到权限限制因此复现时可以先使用 8102cd dist./iec61850_arm64 8102程序的第一个参数是 MMS 监听端口。不传参数时默认使用 102。启动后可以看到类似日志Using libIEC61850 version …[MODBUS] config: ip192.168.1.168, port1502, slave_id1, …[MODBUS] control map: SPCSO1 - HR420xFF00, …[MODBUS] read OK: 04 addr30…33 AnIn1…, AnIn2…按 CtrlC 可以停止程序。程序会依次停止 MMS Server释放 Modbus Socket、锁和相关上下文。十二、验证 Modbus 到 IEC 61850 的遥测方向步骤 1准备 Modbus 数据在 BMU 控制器或 Modbus 模拟器中设置输入寄存器协议地址 3033例如30 10131 20232 30333 404步骤 2启动 ARM64 程序确认终端出现[MODBUS] read OK步骤 3连接 MMS Server使用 IEC 61850 MMS 客户端连接ARM64设备IP:8102浏览 GenericIO/GGIO1读取AnIn1.mag.fAnIn2.mag.fAnIn3.mag.fAnIn4.mag.f步骤 4修改寄存器并观察变化修改 Modbus 输入寄存器值等待约 1 秒确认 MMS 客户端中的数值和时间戳同步更新。十三、验证 IEC 61850 到 Modbus 的遥控方向在 IEC 61850 客户端中分别执行对 GGIO1.SPCSO1 下发 true确认 HR42 变为 0xFF00对 GGIO1.SPCSO2 下发 true确认 HR42 变为 0x00FF对 GGIO1.SPCSO3 下发 true确认 HR44 变为 0xFF00。同时观察 ARM64 设备日志[CONTROL] … command accepted[MODBUS] process … command[MODBUS] write OK这三类日志分别对应MMS 控制命令已经通过回调检查主循环开始处理 pending 命令BMU 寄存器实际写入成功。十四、验证断线重连为了验证嵌入式控制器长期运行时的恢复能力可以进行以下测试正常运行 Demo临时停止 Modbus 模拟器或者断开 BMU 网络确认程序报告读取失败并保留最近一次成功遥测值恢复网络或重新启动从站观察 Modbus Master 按退避策略重新连接确认重新出现 read OKMMS 遥测继续更新。十五、常见问题现象 优先检查MMS Server 启动失败 端口是否被占用使用 102 时是否有低端口权限可先使用 8102Modbus 一直连接失败 BMU IP、端口、路由、防火墙和从站服务状态返回 Modbus exception Unit ID、功能码、地址范围和寄存器权限数据整体错一个地址 BMU 手册或调试工具使用的是 0 基还是 1 基地址数值数量级不正确 比例系数、符号数、32 位组合、大小端和寄存器字序遥控没有写入 BMU 是否下发 true对象是否为 SPCSO13检查 pending 和 write 日志十六、从通信 Demo 到一体化 BAU 控制器当前 Demo 已经验证了两个关键方向BMU Modbus 遥测→ ARM64 本地采集与转换→ IEC 61850 数据模型→ MMS 提供给 EMS 或站控系统EMS / 站控系统遥控→ IEC 61850 控制对象→ ARM64 本地控制逻辑→ Modbus 写 BMU 寄存器这为一体化 BAU 控制器建立了通信基础。下一步不是继续增加一个外部 PLC而是结合 ARM64 BAU 硬件把原 PLC 的模拟量采集、数字量 IO、联锁和本地控制逻辑逐步移植到同一设备中。目标系统还需要形成第三条本地采集控制链路模拟量输入 / DI / 设备反馈→ ARM64 硬件驱动与采集任务→ 滤波、标定、联锁和 BAU 状态机→ IEC 61850 数据模型与告警EMS 遥控 / BAU 本地控制策略→ 权限与联锁判断→ DO / 继电器 / 执行器输出→ 输出反馈与状态确认这条链路属于一体化 BAU 的目标设计当前开源 Demo 尚未包含具体 ADC、GPIO、DI、DO 板卡驱动。配置化点表将 BMU IP、端口、Unit ID、寄存器地址、数据类型、缩放系数和 IEC 61850 对象映射移到配置文件避免每次修改点表都重新编译。完整数据类型转换增加以下数据处理能力有符号 16 位和 32 位整数IEEE 754 浮点数双寄存器和多寄存器组合大小端和不同字序状态位拆分与组合工程量单位和量程转换。3. 数据品质和通信状态BAU 不应只提供最近一次数值还应维护数据时间戳IEC 61850 Quality数据陈旧时间BMU 在线状态连续失败次数最后一次成功通信时间。4. 移植原 PLC 的模拟量和 IO 能力不同 ARM64 BAU 硬件的 ADC、GPIO、隔离输入输出和继电器驱动并不相同建议先建立统一的硬件抽象接口再由上层 BAU 逻辑调用。需要重点实现模拟量采样、量程转换、零点与增益标定采样滤波、越限判断和断线检测DI 输入消抖、状态保持和变化事件记录DO/继电器输出、输出反馈和故障检测上电默认状态、通信中断状态和安全失效状态采集周期、控制周期和任务优先级设计硬件看门狗和输出安全回落机制。上层数据模型不应直接依赖某一块硬件板卡。可以把模拟量、DI 和 DO 统一抽象为 BAU 内部点表再分别映射到 IEC 61850 数据对象、控制对象和本地状态机。这样更换 ARM64 主板或 IO 扩展板时上层业务逻辑不需要整体重写。BAU 控制逻辑在通信基础上增加启停状态机运行条件判断告警和保护逻辑远方/就地模式控制互锁命令超时和反馈确认异常降级与安全停机策略。6. 更符合业务语义的 IEC 61850 模型GGIO 适合快速验证通用数据但实际产品应根据设备业务建立更合适的逻辑节点、数据对象、数据集和报告控制块。嵌入式运行保障还需要补充systemd 服务和开机启动进程看门狗日志轮转配置校验和版本管理在线升级和回滚长期稳定性及压力测试TLS、访问控制和网络隔离。完成这些工作后ARM64 设备才会从“协议转换 Demo”逐步演进为同时具备采集、控制、保护、通信和运维能力的一体化 BAU 控制器。十七、开源说明本文项目基于 MZ Automation 开源的 libIEC61850。再次感谢上游项目维护者和所有贡献者提供的协议实现、示例代码与跨平台基础。上游项目 mz-automation/libiec61850本文项目仓库中保留了 COPYING 许可证文件。下载、修改和再次发布代码时应阅读并遵守上游项目的许可证要求保留必要的版权和许可证信息并清楚标注上游代码与新增修改内容。用于闭源商业产品之前应单独评估相关授权义务。开源仓库后续建议持续补充上游 libIEC61850 版本或提交号ARM64 系统版本和编译环境脱敏后的示例点表完整测试拓扑和联调日志配置文件示例已知限制和安全说明。结语libIEC61850 的 ARM64 移植解决了 IEC 61850 通信能力在嵌入式 Linux 设备上的运行问题Modbus TCP Master 负责连接 BMU 控制器设备。在此基础上继续移植 PLC 原有的模拟量采集、数字量 IO、联锁和本地控制能力ARM64 设备就可以同时完成南向 BMU 通信与现场控制、北向 MMS 数据服务和遥控接收。这项实现的核心意义是为一体化 BAU 控制器提供一条可复现的技术路径底层继续兼容 BMU 的 Modbus 接口同时由 ARM64 硬件承接原 PLC 的模拟量和 IO上层通过 IEC 61850 接入 EMS 或站控系统中间的数据映射、状态处理、联锁和控制逻辑则统一沉淀到嵌入式控制器内部。当前 Demo 已经打通了从源码下载、ARM64 构建、BMU Modbus 遥测采集、IEC 61850 数据更新到 MMS 遥控转换为 BMU 寄存器写入的通信链路。模拟量、数字量 IO 和完整控制逻辑可在这一通信主干上继续实现从而逐步形成一体化 BAU 控制器。项目地址 https://gitee.com/wangchaogitee/LIBIEC61850_ARM64

最新新闻

日新闻

周新闻

月新闻