当前位置: 首页 > news >正文

FX3U-IE-V12.2 PLC源代码解析及网口实现本地或远程穿透编程、监控

FX3U-IE-V12.2 PLC源代码,网口实现本地或远程穿透编程、监控。 网口支持FXTCP mc协议的触摸屏、上位机组态连接。 硬件STM32F103VET6和RET6,兼容三菱FX3U源码,带modbusTCP服务和双串口ModbusRTU主从站功能(可通过plc程序切换),实时时钟,深度测试后,修改一些主要bug后,稳定运行。 程序配套测试用板卡pcb,原理图,bom表等资料。

一、模块定位

在 FX3U-IE-V12.2 整套源码中,CAN 网络通信(can_network.c/h)承担“现场级高速数据共享”职责:

  • 把 PLC 的 D 寄存器区间映射为“共享寄存器”,实现主-从站间毫秒级同步;
  • 兼容 FX3U 原生命令集(0x03 读、0x10 写),上位机/触摸屏无需修改协议即可接入;
  • 支持 0~8 号站(主机地址=0,从机 1~8),单站最多 32 字共享区,整网 256 字;
  • 异常自恢复:CRC 校验、长度保护、超时重发、总线-off 自动复位;
  • 纯软件实现,不依赖专用 CAN-ASIC,成本敏感型 OEM 可直接复用。

二、硬件与底层约束

  • 物理层:STM32F103 内置 bxCAN,外接 TJA1050 或 SN65HVD230,波特率 500 k(可改);
  • 引脚重映射:PB8-RX、PB9-TX,启用 GPIORemap1CAN1;
  • 时钟:APB1=36 MHz,位定时 6×(1+6+5)=500 k;
  • 滤波器:32 bit 掩码模式,全 0 接收——由软件完成地址过滤,降低中断抖动;
  • 中断:FIFO0 中断优先级 0,与 USB 共享向量 USBLPCAN1RX0IRQn。

三、协议帧格式(应用层)

字节偏移长度含义
01功能码:0x03 读寄存器,0x10 写寄存器
1~22寄存器起始地址(大端)
31后续数据字节数 N
4~4+N-1N数据载荷
4+N~5+N2CRC16-Modbus(低前高后)

标准帧 ID = 目标站地址,数据域≤8 字节,长包由发送端自动拆包、接收端按字节流重组。

四、共享寄存器地址空间

D4096 ~ D5095 → 主机共享区(32 字) D5096 ~ D6095 → 1# 从机共享区 …… D8096 ~ D9095 → 8# 从机共享区

PLC 侧用普通 D 寄存器指令即可读写;CAN 主站周期把“非本机”区下发到对应从站,保持全网一致。

五、主机业务流程(地址=0)

  1. 初始化:检测 D8151(从站数)、D8152(每站寄存器数)、D8149(超时 ms),异常置位 D8063 错误码;
  2. 周期扫描:
    a. slaveCnt 递增,向当前从站发 0x03+起始 0xFFFF 读取“共享寄存器个数”;
    b. 收到应答后,发 0x03+真实起始地址,读取该站完整数据块;
    c. 把数据块拷入 PLC 的 Dxxxx 区,随后发 0x10 把“非本机”区写入从站;
    d. 收到写应答后置 rxFlg=5,loop 指针下移,继续下一从站;
  3. 任何一步超时/CRC 错,重试 6 次,仍失败则置 D8063 相应错误码并跳过该站。

六、从机业务流程(地址 1~8)

  1. 上电等待主机“读 0xFFFF”命令,回复本机共享寄存器个数;
  2. 收到“读寄存器”命令,打包本地 D 区数据,拆帧发送;
  3. 收到“写寄存器”命令,把数据写入本地 D 区,回送 0x10+起始地址+0x0000(成功);
  4. 若 CRC/长度/地址非法,回送 0x10+起始地址+非 0 错误码,主机记录并告警。

七、拆包与组包策略

  • 发送端:按 8 字节切片,末包不足 8 字节直接发;帧间插入 2 ms 延时,防止 bxCAN 发送缓冲区拥塞;
  • 接收端:字节流状态机,rxFlg=1 表示“正在收”,超时 10 ms 判帧结束;重组后统一 CRC 校验;
  • 双缓冲:TxBuf/RxBuf 各 128 B,支持单包最大 64 字节数据(32 字寄存器×2)。

八、异常与诊断

D8063 值含义自动恢复策略
6367CRC 错重发 6 次
6371发送超时重发 6 次
6377寄存器地址越界跳过本帧,不再重试
6378从站数设置超范围初始化阶段直接返回,不进入循环
6379共享寄存器数>32同上

所有错误码在成功完成一次周期后自动清零,方便上位机“读-清除”机制。

九、与 PLC 扫描周期的关系

CANPoll() 由 PLC 主循环调用,约每 1 ms 一次;内部状态机无阻塞,最长处理时间 < 200 µs(72 MHz),对梯形图扫描影响可忽略。若用户关闭 M8150(CANEN_FLG),模块立即释放 FIFO 中断并清空发送队列,实现热插拔安全。

十、裁剪与移植指南

  1. 非 FX3U 平台:把 plc16BitBuf[] 替换成任意 16-bit RAM 区;CRC16Modbus 已有开源实现;
  2. 减少 RAM:把 CANBUFLEN 改成 64,单站寄存器≤16 字即可;
  3. 提高速率:把 SimpleDelay(2) 改为 1 ms 或完全删除,若 CAN 收发器支持 1 M 波特率;
  4. 多主机场景:当前协议无总线仲裁,建议单主机;若需多主机,请在应用层加令牌帧。

十一、典型应用接线

主机 STM32F103VET6 ├─PB8 ‑- CAN_RX ├─PB9 ‑- CAN_TX └─TJA1050 ‑- 120 Ω 终端电阻 ‑- 从机 1~8

屏蔽双绞线长度 ≤ 40 m(500 k),分支 < 0.3 m,保证通讯余量。

十二、版本记录

V1.0.1 – 2020-11-02

  • 首版,兼容 FX3U 原生命令集
  • 支持 8 站、32 字共享、CRC 校验、自动重发

FX3U-IE-V12.2 PLC源代码,网口实现本地或远程穿透编程、监控。 网口支持FXTCP mc协议的触摸屏、上位机组态连接。 硬件STM32F103VET6和RET6,兼容三菱FX3U源码,带modbusTCP服务和双串口ModbusRTU主从站功能(可通过plc程序切换),实时时钟,深度测试后,修改一些主要bug后,稳定运行。 程序配套测试用板卡pcb,原理图,bom表等资料。

http://www.cnnetsun.cn/news/1359932.html

相关文章:

  • 工商业储能项目验收被拒?这些仪表选型“硬指标”提前对好
  • 西门子S7系列PLC C#上位机通信系统功能说明文档
  • 如何看待AI Agent(智能体)的伪效率问题
  • 常用的office word vba宏
  • Ubuntu 服务器之间互传文件夹
  • 人力资源战略与业务战略对齐的重要性及正确实施方法
  • 影视仓2026最新接口配置合集,tvbox4K高清源,值得收藏!
  • ArkClaw vs KimiClaw vs MaxClaw:个人用户实际体验对比
  • Setapp 3.44.1:macOS第三方应用商店功能介绍与使用体验
  • 基于定时器的按键计时操作
  • 科研党收藏!更贴合论文写作全流程的降AIGC网站,千笔·专业降AI率智能体 VS WPS AI
  • 动态住宅IP在跨境业务中的技术价值与实践指南
  • AF555 α-银环蛇D素,AF555-α-BTX荧光标记的光谱特性
  • Git误操作急救手册大纲,一招在手走遍天下
  • 被查出AI率不要慌!2026免费毕业论文去痕神器盘点
  • 【JAVA 运算】
  • 消息中间件RabbitMQ04:路由模式+死信队列的应用实践模板
  • 腾讯面完了,AI Agent真的好颠
  • RK3588 OpenClaw 定时任务踩坑与守护进程方案
  • 金仓数据库 SQL 防火墙实战:内核层防注入,配置 / 调优 / 审计全代码解析
  • 5 万行 Rust 代码重塑 AI Agent:SkillLite 从 Python 到 Rust 的架构演进与选型复盘
  • 第4篇:中文语言 华夏本源语言——极简语法大全
  • 什么是偶极矩?
  • java基础学习3(数据类型转换、运算符)
  • CentOS Stream 8配置DNS
  • PrivescCheck与渗透测试:如何集成到红队工作流程中
  • JAVA SE1(第四章:循环)
  • gtsummary进阶技巧:自定义表格样式与统计方法全攻略
  • Apache NuttX文件系统实战:FAT、ROMFS、NFS等12种文件系统详解
  • 小米Yi摄像头变废为宝:yi-hack-v3固件高级功能实战教程 [特殊字符]