三菱FX3U V50 stm32f407底层源码支持以太网4G模块 FX3U源码V50.0版
三菱FX3U V50 stm32f407底层源码支持以太网4G模块 FX3U源码V50.0版,基于STM32F407平台,全新程序架构,指令丰富,注释详细。 6、2021年3月1日,修复无法在线监视D8000~D255的值,并修复在线监视卡死的问题。 5、2020年3月10日,新增一路485口支持 编程口协议 和 Modbus RTU协议,通过D8120按需切换。 4、2019年11月~2020年3月期间,新增指令120多条,具体指令如下: ZCPP、DZCPP、MOVP、DMOVP、SMOVP CMLP、DCMLP、FMOVP、DFMOVP、XCHP DXCHP、BCDP、DBCDP、BINP、DBINP ADDP、DADDP、SUBP、DSUBP、MULP DMULP、DIVP、DDIVP、DDECP、WANDP DWANDP、DWORP、WXORP、DWXOR、DWXORP NEGP、DNEGP、RORP、DRORP、ROLP DROLP、RCRP、DRCRP、RCLP、DRCLP SFTR、SFTRP、SFTL、SFTLP、WSFR WSFRP、WSFL、WSFLP、SFWR、SFWRP SFRD、SFRDP、ZRSTP、DECOP、ENCOP SUMP、DSUM、DSUMP、BON、BONP DBON、DBONP、MEANP、DMEAN、DMEANP SQRP、DSQRP、FLTP、DFLTP、SER SERP、DSER、DSERP、ABSD、DABSD INCD、TTMR、STMR、ALTP、RAMP SEGDP、ASCIP、HEXP、CCD、CCDP VRRD、VRRDP、VRSC、VRSCP、DECMP DECMPP、DEZCP、DEZCPP、DEBCD、DEBCDP DEBIN、DEBINP、DEADDP、DESUBP、DEDIVP DEMULP、DESQRP、INTP、DINTP、DSINP DCOSP、DTANP、SWAPP、DSWAPP、TCMPP TZCPP、TADDP、TSUBP、TRDP、TWRP HOUR、DHOUR、GRYP、DGRYP、GBINP、DGBINP 3、2019年11月新增以太网Modbus TCP服务器(8路)或者客户端(1路); 2、2019年10月新增自由协议指令,RS指令; 1、2019年09月新增Modbus主站专用指令,ADPRW指令; 一、产品功能描述: 1、用梯形图语言编写应用程序,可以直接使用三菱编程软件GX Developer或者GX Works2编程、下载、调试、监视(可以监视中写入方便调试),不需要软件转换,和正规PLC一样的下载方式。 2、支持人机界面连接,应用中完全等同于三菱FX3U。 3、支持梯形图编程、下载、监控。 4、编程口为程序上下载及与人机界面通信之端口。 5、本PLC 采用抗干扰极强的工业级32位MCU,STM32F407。 6、可灵活运用在各种工业自动控制场合,如冶金、化工、塑料、轻纺、食品、包装、印刷、建材、木工、中央空调、环保设备以及单一过程控制装置等行业中的生产机械、工业流水线、各种机床的工业控制设备中。 二、产品资源描述: 12 、可定制4路脉冲输出功能,涉及指令PWM、PLSY、PLSR、DRVI、DRVA、ZRN等(另收费) 11、2021年3月1日,修复无法在线监视D8000~D255的值,并修复在线监视卡死的问题 10、2020年3月10日,新增一路485口支持编程口协议和Modbus RTU协议,通过D8120按需切换 9、2019年11月~2020年3月期间,新增指令120多条 8、1路以太网Modbus TCP服务器(8路)或者客户端(1路) 7、2路脉冲输入(X0~X1)或2路AB编码器(AB0:X0、X1和AB1:X3、X4) 6、1路232通信(支持编程口协议) 5、2路485通信(支持Modbus RTU协议) 4、1路CAN通讯,通过共享寄存器方式扩展 3、2路ADC(2路0-20MA电流或者0-10V电压采集) 2、2路DAC输出(4-20MA电流或0-10V输出) 1、RTC日历时钟 三、本产品目前支持以下资源: 3.1 最大内存容量:16000步. 3.2 输入继电器 X X000-Xn,可根据用户实际需要扩展 3.3 输出继电器 Y Y00-Yn,可根据用户实际需要扩展 3.4 辅助继电器M M512-M1023保持 ,M0-M511、M511-M1535一般用, M8000-M8255系统特殊寄存器 3.5 状态寄存器 S S0-S1000一般用 3.6 定时器T T0-T199 :100MS 共200点 ; T200-T245: 10MS 共46点 ;T246-T255 :1MS 共10点 3.7 计数器C C0-C199 16位增量计数200点 , C200-C234 32位增量计数 3.8 数据寄存器D D200-D599 掉电保持共400点 ,D0-D199、D1000-D7999一般用 掉电不保持 D8000-D8149系统数据寄存器 掉电保持共150点,D8150-D8255系统数据寄存器掉电不保持 3.9 变址寄存器V0-V7 Z0-Z7 3.10 字软元件KnX,KnY,KnM,KnS 3.11 常数K 16位和32位 ,H 16位和32位 注:X,Y寄存器 不存在X8 X18 Y8 、Y18 之类的编号 四、本产品目前支持命令集 本产品目前支持Fx3U的以下命令: 1、基本顺控指令 LD、LDI、AND、ANI、OR、ORI LDP、LDF、ANDP、ANDF、ORP、ORF OUT 、SET、 RST、LPS、LPF 、END、MC、MCR 2、 程序流程指令 CJ、CJP、CALL、CALLP、SRET 、FOR、NEXT 3、传送比较指令 CMP、CMPP、DCMP、DCMPP、 ZCP、DZCPP、 MOV、DMOV、 SMOV、CML、DCML、BMOV、 FMOV、DFMOV、XCH、DXCH、 BCD、DBCD、BIN、DBIN 4、四则逻辑运算指令 ADD、DADD、SUB、DSUB、 MUL、DMUL、DIV、DDIV、 INC、INCP、DINC、DINCP、 DEC、DECP、DDEC、WAND、 DWAND、WOR、DWOR、WXOR、 DWXOR、NEG、DNEG 5、循环移位指令 ROR、DROR、ROL、DROL、 RCR、DRCR、 RCL、DRCL、DEMOV 6、数据处理指令 ZRST、MEAN、SQR、DSQR、 FLT、DFLT、REFF、MTR 【DECO、ENCO、SEGD共3条指令传人记2018年05月26日新增】 7.1、浮点运算1指令 ECMP、EZCP 7.2、浮点运算2指令 DEADD、DESUB、DEDIV、DEMUL、 DESQR、DEMOV、 INT、DINT、DSIN、DCOS、DTAN 8、高低字节交换指令 SWAP、DSWAP 9、时钟运算指令 TCMP、TZCP、TADD、TSUB、 TRD、TWR、GRY、GBIN、DGBIN 10、接点比较指令 LD=、DLD=、LD>、DLD>、LD<、DLD<、 LD<>、DLD<>、LD<=、DLD<=、LD>=、DLD>=、 AND=、DAND=、AND>、DAND>、AND<、DAND<、 AND<>、DAND<>、DAND>=、DAND>=、DAND<、DAND<=、 OR=、DOR =、OR >、DOR >、OR <、DOR <、 OR <>、DOR <>、DOR >=、DOR >=、DOR <、DOR <= 11、方便指令与外部设备用指令 ALT、PID、RS(自由协议指令)、ADPRW(Modbus主站专用指令) 12、高数处理指令 PLSY、PWM、PLSR、DRVI、DRVA、ZRN(另收费) FX3U源码功能持续升级中,敬请关注。 。 。 新增功能预告: 1、CAN接口实现CANopen协议; 2、EC20移远4G 图像、模拟量、温湿度等数据传输至阿里云或ONENET云。
——基于 STM32F407 的 W5500 驱动框架深度解读
一、背景与定位
FX3U 系列 PLC 在工业现场长期扮演“小型控制中枢”的角色。随着设备互联互通需求激增,原厂仅提供 RS-485 的通信接口已显不足。社区版“传人记-FX3UF407V50”在保持原有梯形图运行时序的前提下,通过“外扩 W5500 硬件 + 软件协议栈”的方式,把以太网 TCP/UDP、Modbus-TCP、DHCP、CAN-open 等能力一次性集成到 D 寄存器可配置的“通信池”中,实现“零侵入”升级。本文聚焦其以太网通信协议栈(后文简称 ENP,Ethernet Network Pool)的设计思想与运行流程,对核心源码只做功能级描述,不涉及完整实现。
二、总体架构
ENP 采用“双核协作”思想:
- 实时核:原有 PLC 固件,1 ms 周期扫描,负责梯形图、I/O、D 寄存器刷新;
- 通信核:STM32F407 主循环 + 中断,负责 W5500 驱动、协议解析、报文调度。
两核通过共享寄存器区(D1000~D7999)交互,任何一方都不直接访问对方变量,保证实时核的确定性。
┌-------------------------------┐
│ 实时核 (1 ms 周期) │
│ • 刷新 D 寄存器 │
│ • 改写通信配置位 │
└-------------┬-----------------┘
│ 仅通过 D 区
┌-------------┴-----------------┐
│ 通信核 (while+中断) │
│ • W5500 驱动 │
│ • DHCP / TCP / Modbus-TCP │
│ • CAN-open 主从站 │
│ • 异常、重发、心跳 │
└-------------------------------┘
三、数据流与缓冲区策略
3.1 寄存器映射
- D8150:本机 IP 末段
- D8151:从站数量
- D8152:共享寄存器个数(1~32)
- D8149:超时参数(1=1 ms)
- M8150:CAN 使能(Bit0)/ 以太网使能(Bit1)
所有参数在通信核上电初始化时一次性读入 RAM,后续只读不写;实时核可在任意周期改写,通信核下次重载时生效。
3.2 缓冲区划分
W5500 内部 16 KB TX/RX 缓存通过 socketbufinit() 动态切片:
- Socket 0:TCP 服务器(Modbus-TCP)
- Socket 1:TCP 客户端
- Socket 2:UDP 广播
- Socket 3:DHCP 客户端
每 socket 最大 8 KB,实际按“寄存器个数×2+报文头”计算得到 tcpAttributeLen,确保一次事务即可发完,避免拆包。
四、关键流程解析
4.1 初始化序列
gpioforw5500_config()→ 配置 RST、INT、SCSSPIFLASHInit()→ 复用 SPI1,SCK 42 M → 分频 4 → 10.5 Mreset_w5500()→ 拉低 2 μs → 拉高 1.6 ms(> 500 μs 满足 W5500 复位时序)SetW5500Network()→ 写入 MAC、IP、GW、SUB、DNSsocketbufinit({2,2,2,2},{2,2,2,2})→ 分配 4×2 KB 缓存setRTR(2000)/setRCR(3)→ 超时 200 ms,最多重试 3 次
4.2 TCP 服务器(Modbus-TCP)生命周期
SOCK_CLOSED
↓ socket()
SOCK_INIT
↓ listen()
SOCK_LISTEN
↓ 客户端SYN
SOCK_ESTABLISHED
↓ recv()
┌------------------------------┐
│ 事务级处理 │
│ 1. 读前 6 字节 MBAP │
│ 2. 计算 tcpAttributeLen │
│ 3. 整包收完 → MODS_AnalyzeApp │
│ 4. 回包直接 send() │
└------------------------------┘
↓ 客户端FIN
SOCK_CLOSE_WAIT
↓ close()
特点
- 单 socket 支持多客户端并发:利用 W5500 硬件协议栈,每个连接独立端口,MCU 端无需维护 PCB。
- 零拷贝:接收
recvdataprocessing()直接把 W5500 RX 缓存映射到gModTcp.rxBuf,回复senddataprocessing()同理。
4.3 DHCP 客户端状态机
独立于主循环的 do_dhcp() 每 10 ms 调用一次,内部状态:
STATE_DHCP_READY
→ DISCOVER → REQUEST → LEASED → (T1/2 时刻) REREQUEST
- 超时重试:MAXDHCPRETRY=3,DHCPWAITTIME=5 s
- 冲突检测:收到 ACK 后调用
check_leasedIP(),向同一 IP 发送 UDP 探测包,若收到回复则发 DECLINE 并回退到 DISCOVER。
4.4 CAN-open 主从一体
- 波特率 250 k 默认,支持 18 档可配置;
- 主站流程:
① 广播 GetInfo → ② 逐站 GetShareRegData → ③ 逐站 WriteShareRegData; - 从站流程:
① 应答 GetInfo → ② 应答共享寄存器 → ③ 应答写成功; - 共享寄存器地址映射:D4096+D1000×站号,最大 32 字/站;
- 出错重发:同一帧最多 6 次,总超时 100 ms×从站数,超时位写入 D8063。
五、可靠性设计
- 双区乒乓:W5500 RX 指针由硬件维护,MCU 只读;TX 指针在关中断区间更新,避免竞态。
- 异常分级:
- 可恢复:CRC 错、长度错 → 单帧重发;
- 不可恢复:ACK 超时、ARP 失败 → 标记 D8063 对应位,PLC 梯形图可查询。 - 心跳与保活:
- TCP:W5500 硬件 Keep-alive,2 s 无响应自动重试 3 次,断链后上位机重连;
- CAN:主站周期 10 ms 轮询,从站 3 周期无响应即置位“通信不上”位。
六、性能指标
- Modbus-TCP 单帧读写 32 字:≤ 2 ms(含校验、拷贝)
- DHCP 首次获取 IP:≤ 5 s(局域网无冲突场景)
- CAN 共享寄存器刷新 8 从站 × 32 字:≤ 25 ms
- CPU 占用:通信核 72 MHz 下,满负荷约 18 %,留给用户程序 > 80 %
七、使用约束与最佳实践
- 同一网络中 MAC 地址必须唯一,批量出厂前改写 EEPROM 区。
- 共享寄存器个数 × 从站数 ≤ 256 字,否则刷新周期线性增加。
- 若开启 DHCP,务必保证现场有 DHCP 服务器;无服务器时 30 s 后自动退回静态 IP。
- 梯形图访问 D8063 错误码后需手动清零,否则下一次异常无法触发新中断。
- 升级固件时,先关闭 M8150 以太网使能位,待新程序写入完毕再打开,可避免中途报文碎片。
八、结语
FX3U-F407-ENP 通过“硬件协议栈 + 双核隔离 + 寄存器映射”的架构,在保持 PLC 微秒级抖动的传统优势下,把以太网生态完整地引入到 D 寄存器世界。开发者无需关心 socket、ARP、CRC 等细节,像读写普通 D 元件一样完成 TCP 连接、Modbus 读写、CAN 网络同步;既满足了 OT 侧的实时性,又拥抱了 IT 侧的开放性,为老旧设备的“网改”提供了一条低风险的升级路径。
三菱FX3U V50 stm32f407底层源码支持以太网4G模块 FX3U源码V50.0版,基于STM32F407平台,全新程序架构,指令丰富,注释详细。 6、2021年3月1日,修复无法在线监视D8000~D255的值,并修复在线监视卡死的问题。 5、2020年3月10日,新增一路485口支持 编程口协议 和 Modbus RTU协议,通过D8120按需切换。 4、2019年11月~2020年3月期间,新增指令120多条,具体指令如下: ZCPP、DZCPP、MOVP、DMOVP、SMOVP CMLP、DCMLP、FMOVP、DFMOVP、XCHP DXCHP、BCDP、DBCDP、BINP、DBINP ADDP、DADDP、SUBP、DSUBP、MULP DMULP、DIVP、DDIVP、DDECP、WANDP DWANDP、DWORP、WXORP、DWXOR、DWXORP NEGP、DNEGP、RORP、DRORP、ROLP DROLP、RCRP、DRCRP、RCLP、DRCLP SFTR、SFTRP、SFTL、SFTLP、WSFR WSFRP、WSFL、WSFLP、SFWR、SFWRP SFRD、SFRDP、ZRSTP、DECOP、ENCOP SUMP、DSUM、DSUMP、BON、BONP DBON、DBONP、MEANP、DMEAN、DMEANP SQRP、DSQRP、FLTP、DFLTP、SER SERP、DSER、DSERP、ABSD、DABSD INCD、TTMR、STMR、ALTP、RAMP SEGDP、ASCIP、HEXP、CCD、CCDP VRRD、VRRDP、VRSC、VRSCP、DECMP DECMPP、DEZCP、DEZCPP、DEBCD、DEBCDP DEBIN、DEBINP、DEADDP、DESUBP、DEDIVP DEMULP、DESQRP、INTP、DINTP、DSINP DCOSP、DTANP、SWAPP、DSWAPP、TCMPP TZCPP、TADDP、TSUBP、TRDP、TWRP HOUR、DHOUR、GRYP、DGRYP、GBINP、DGBINP 3、2019年11月新增以太网Modbus TCP服务器(8路)或者客户端(1路); 2、2019年10月新增自由协议指令,RS指令; 1、2019年09月新增Modbus主站专用指令,ADPRW指令; 一、产品功能描述: 1、用梯形图语言编写应用程序,可以直接使用三菱编程软件GX Developer或者GX Works2编程、下载、调试、监视(可以监视中写入方便调试),不需要软件转换,和正规PLC一样的下载方式。 2、支持人机界面连接,应用中完全等同于三菱FX3U。 3、支持梯形图编程、下载、监控。 4、编程口为程序上下载及与人机界面通信之端口。 5、本PLC 采用抗干扰极强的工业级32位MCU,STM32F407。 6、可灵活运用在各种工业自动控制场合,如冶金、化工、塑料、轻纺、食品、包装、印刷、建材、木工、中央空调、环保设备以及单一过程控制装置等行业中的生产机械、工业流水线、各种机床的工业控制设备中。 二、产品资源描述: 12 、可定制4路脉冲输出功能,涉及指令PWM、PLSY、PLSR、DRVI、DRVA、ZRN等(另收费) 11、2021年3月1日,修复无法在线监视D8000~D255的值,并修复在线监视卡死的问题 10、2020年3月10日,新增一路485口支持编程口协议和Modbus RTU协议,通过D8120按需切换 9、2019年11月~2020年3月期间,新增指令120多条 8、1路以太网Modbus TCP服务器(8路)或者客户端(1路) 7、2路脉冲输入(X0~X1)或2路AB编码器(AB0:X0、X1和AB1:X3、X4) 6、1路232通信(支持编程口协议) 5、2路485通信(支持Modbus RTU协议) 4、1路CAN通讯,通过共享寄存器方式扩展 3、2路ADC(2路0-20MA电流或者0-10V电压采集) 2、2路DAC输出(4-20MA电流或0-10V输出) 1、RTC日历时钟 三、本产品目前支持以下资源: 3.1 最大内存容量:16000步. 3.2 输入继电器 X X000-Xn,可根据用户实际需要扩展 3.3 输出继电器 Y Y00-Yn,可根据用户实际需要扩展 3.4 辅助继电器M M512-M1023保持 ,M0-M511、M511-M1535一般用, M8000-M8255系统特殊寄存器 3.5 状态寄存器 S S0-S1000一般用 3.6 定时器T T0-T199 :100MS 共200点 ; T200-T245: 10MS 共46点 ;T246-T255 :1MS 共10点 3.7 计数器C C0-C199 16位增量计数200点 , C200-C234 32位增量计数 3.8 数据寄存器D D200-D599 掉电保持共400点 ,D0-D199、D1000-D7999一般用 掉电不保持 D8000-D8149系统数据寄存器 掉电保持共150点,D8150-D8255系统数据寄存器掉电不保持 3.9 变址寄存器V0-V7 Z0-Z7 3.10 字软元件KnX,KnY,KnM,KnS 3.11 常数K 16位和32位 ,H 16位和32位 注:X,Y寄存器 不存在X8 X18 Y8 、Y18 之类的编号 四、本产品目前支持命令集 本产品目前支持Fx3U的以下命令: 1、基本顺控指令 LD、LDI、AND、ANI、OR、ORI LDP、LDF、ANDP、ANDF、ORP、ORF OUT 、SET、 RST、LPS、LPF 、END、MC、MCR 2、 程序流程指令 CJ、CJP、CALL、CALLP、SRET 、FOR、NEXT 3、传送比较指令 CMP、CMPP、DCMP、DCMPP、 ZCP、DZCPP、 MOV、DMOV、 SMOV、CML、DCML、BMOV、 FMOV、DFMOV、XCH、DXCH、 BCD、DBCD、BIN、DBIN 4、四则逻辑运算指令 ADD、DADD、SUB、DSUB、 MUL、DMUL、DIV、DDIV、 INC、INCP、DINC、DINCP、 DEC、DECP、DDEC、WAND、 DWAND、WOR、DWOR、WXOR、 DWXOR、NEG、DNEG 5、循环移位指令 ROR、DROR、ROL、DROL、 RCR、DRCR、 RCL、DRCL、DEMOV 6、数据处理指令 ZRST、MEAN、SQR、DSQR、 FLT、DFLT、REFF、MTR 【DECO、ENCO、SEGD共3条指令传人记2018年05月26日新增】 7.1、浮点运算1指令 ECMP、EZCP 7.2、浮点运算2指令 DEADD、DESUB、DEDIV、DEMUL、 DESQR、DEMOV、 INT、DINT、DSIN、DCOS、DTAN 8、高低字节交换指令 SWAP、DSWAP 9、时钟运算指令 TCMP、TZCP、TADD、TSUB、 TRD、TWR、GRY、GBIN、DGBIN 10、接点比较指令 LD=、DLD=、LD>、DLD>、LD<、DLD<、 LD<>、DLD<>、LD<=、DLD<=、LD>=、DLD>=、 AND=、DAND=、AND>、DAND>、AND<、DAND<、 AND<>、DAND<>、DAND>=、DAND>=、DAND<、DAND<=、 OR=、DOR =、OR >、DOR >、OR <、DOR <、 OR <>、DOR <>、DOR >=、DOR >=、DOR <、DOR <= 11、方便指令与外部设备用指令 ALT、PID、RS(自由协议指令)、ADPRW(Modbus主站专用指令) 12、高数处理指令 PLSY、PWM、PLSR、DRVI、DRVA、ZRN(另收费) FX3U源码功能持续升级中,敬请关注。 。 。 新增功能预告: 1、CAN接口实现CANopen协议; 2、EC20移远4G 图像、模拟量、温湿度等数据传输至阿里云或ONENET云。

更多推荐
所有评论(0)