FX3U源代码,stm32f103芯片全套源码,可以直接用works2编程直接写入,经济实惠,非常适合参考学习。 原理图,pcb,请使用ad软件打开

最近在翻仓库的时候发现之前做的FX3U控制器方案还能用,配套的STM32F103源码也挺有意思。这套东西最大的优势就是便宜——开发板成本压到五十块钱以内,工厂里淘汰的触摸屏随便接个就能跑起来。

先看PLC部分的梯形图结构,这段电机正反转控制是经典配置了:

|--[X0]--[PLS M0]--(Y0)--|
|--[X1]--[PLS M1]--(Y1)--|
|--[M0]--[T0 K50]--------|
|--[M1]--[T1 K30]--------|

这里用脉冲指令配合定时器实现互锁,比单纯用常闭触点更省资源。注意T0/T1的定时参数要根据实际继电器响应时间调整,上次在现场调试发现电磁阀动作慢的得把K值放大1.5倍。

STM32端用寄存器映射的方式做协议解析挺有意思:

#define D8120 (*(__IO uint16_t*)(0x20001000)) // 通讯参数寄存器
void Modbus_Handler(uint8_t *data){
    if(data[1] == 0x03){ // 保持寄存器读取
        uint16_t addr = (data[2]<<8)|data[3];
        uint8_t len = data[5];
        if(addr >= 0x1000 && addr+len <=0x1100){ // 检查地址合法性
            // 直接操作内存映射区域...
        }
    }
}

这种内存直接操作的方式比用结构体封装快30%左右,代价是可读性差点。调试时候记得在map文件里确认变量地址分配,之前有次因为堆栈溢出导致寄存器区被覆盖,现场排查了整晚。

FX3U源代码,stm32f103芯片全套源码,可以直接用works2编程直接写入,经济实惠,非常适合参考学习。 原理图,pcb,请使用ad软件打开

硬件设计有几个坑要注意:

  1. RS485的120Ω终端电阻最好做成跳线可选,现场有些设备不带电阻会通信失败
  2. 数字量输入口并的TVS管别省,车间里的浪涌比想象中猛
  3. 电源部分用MP2451做24V转5V时,FB脚分压电阻精度要1%,否则带载后电压掉得亲妈都不认识

用Altium Designer打开PCB会发现模拟地和数字地之间用了磁珠隔离,这个设计现在看有点过时了。最近改版换成0Ω电阻配合单点接地,EMC测试反而更好过。走线要注意PLC的输出继电器线路要足够粗,之前有个版本线宽只有10mil,结果连续工作后铜箔直接烧断了。

源码包里有个隐藏功能:长按配置键五秒会进入波特率自适应模式,这个其实是通过STM32的定时器捕捉串口数据边沿实现的。代码里用了两个定时器接力捕获,实测能识别从1200到115200的所有常用速率。

最近在闲鱼上看到有人把这套方案改成咖啡机控制器,还加了PID温度控制。移植的时候注意FX3U的PID指令是自带整定功能的,但需要把采样周期参数改成实际值的1/3左右才能稳定。有想自己魔改的朋友,记得在Works2里先把内存分配表导出来,不然在线修改容易炸寄存器。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐