第一讲:课程导论与目标
各位同学好,我是你们这门课的老张。在工业自动化这行摸爬滚打了十几年,从最早的8位单片机做到现在的多核MCU,踩过的坑比走过的路还多。今天咱们开始第一讲,先把底层的概念理清楚。
说实话,很多工程师做了好几年PLC编程,一转到MCU开发就懵了。为什么?因为思维模式完全不一样。我刚开始带团队时,有个小伙子用PLC的思路写MCU程序,结果项目延期了两个月。嗯,这节课就是帮大家把这道坎迈过去。
一、工业MCU与PLC的区别
先问大家一个问题:PLC和工业MCU,到底是不是一回事?
很多人觉得PLC就是个「高级单片机」,其实不然。我打个比方:PLC就像一辆自动挡的轿车,你踩油门就走,踩刹车就停,变速箱、离合器这些细节你不用管。而工业MCU呢?它更像一辆手动挡的赛车——性能上限高,但每个换挡时机都得你自己把握。
具体区别,我列个表大家看得更清楚:
| 对比项 | PLC | 工业MCU |
|---|---|---|
| 编程语言 | IEC 61131-3(梯形图、ST、FBD等) | C/C++、汇编、或IEC 61131-3(需移植) |
| 实时性 | 硬件级确定性,抖动<1ms | 依赖RTOS和硬件设计,抖动可<10μs |
| 开发成本 | 高(硬件+软件授权) | 低(芯片几元到几十元) |
| 灵活性 | 低(功能固定) | 高(可定制任何外设) |
| 典型应用 | 产线控制、大型设备 | 传感器、电机驱动、边缘计算 |
这里有个关键点:PLC的扫描周期是固定的,你写梯形图时不用操心时序。但MCU不一样,你写个延时函数,CPU就卡在那了。我在一个项目中遇到过,用MCU做高速脉冲计数,结果因为中断优先级没配好,丢了好几个脉冲。这种问题在PLC上根本不会出现。
二、IEC 61131-3标准概览
这个标准,说白了就是PLC编程的「普通话」。它定义了五种编程语言:
- 梯形图(LD):电工最熟悉,像画电路图一样
- 结构化文本(ST):类似Pascal,适合复杂算法
- 功能块图(FBD):图形化连线,适合信号处理
- 指令表(IL):类似汇编,现在用得少了
- 顺序功能图(SFC):适合步进控制
你想想看,为什么我们要在MCU上搞这套标准?直接写C语言不香吗?
原因很简单:可移植性和维护性。我见过太多项目,工程师用C语言写了个控制算法,结果换了个芯片平台,代码全得重写。但如果你用IEC 61131-3的ST语言写,换个支持该标准的运行时环境,代码基本不用动。
我个人习惯是:算法逻辑用ST写,底层驱动用C写。这样既保证了上层逻辑的标准化,又保留了MCU的硬件控制能力。
三、课程目标与学习路径
这门课的目标很明确:让你能在任何一款工业MCU上,搭建出符合IEC 61131-3标准的编程环境。
具体来说,学完这门课你能做到:
- 理解IEC 61131-3的运行时模型(任务调度、变量映射)
- 在STM32/GD32等主流MCU上移植开源运行时(如Beremiz、OpenPLC)
- 用ST语言编写控制逻辑,并编译成MCU可执行的代码
- 实现PLC经典功能:定时器、计数器、PID调节
- 掌握调试技巧:在线监控、断点调试、波形抓取
学习路径我建议这样走:
- 第一阶段(第1-3章):打好基础,搞懂IEC 61131-3的语法和运行时原理
- 第二阶段(第4-6章):动手移植,在开发板上跑通第一个ST程序
- 第三阶段(第7-9章):实战项目,做一个完整的运动控制系统
- 第四阶段(第10章):性能优化和可靠性设计
这里我要强调一点:别急着上板子。我见过太多人,拿到开发板就急着点灯,结果连变量作用域都没搞懂。先花时间把软件仿真跑通,再上硬件,效率反而更高。
好了,第一讲就到这里。下一章我们直接上手,搭建开发环境。我会带大家从零开始,把Beremiz运行时移植到一块国产MCU上。到时候你们会发现,其实没那么神秘——说白了,就是给MCU装个「PLC操作系统」。
记住:工业控制没有银弹。PLC有PLC的省心,MCU有MCU的灵活。这门课教你的,就是怎么在两者之间找到最佳平衡点。