经常看到21ic论坛还有这么多人支持,也经常有网友联系我要之前的一些版本,让我觉得应该进一步完善与发展“实用单片机系统”,把这几年自己的一些项目经验融合进这个系统里面来,给大家一个参考,以感谢大家的支持!
多次想引入RTOS的任务切换,但当对客户的需求层层精确分析后发现,实际上根本不需要,并且引入RTOS,引入自己不熟悉的东西,系统稳定性更难控制,公司做linux、wince经验的同事,都反对我引入,觉得99%的工业项目或者小项目根本不需要,不应该随大流,还是进一步深入发掘应用为好,所以最后也都没有往RTOS的思路走,而是朝清晰化、简洁化编程思路设计,并且打算引入FPGA,实现真正的纯并行。
MS系统发展到现在,本质可以归纳为是一个前后台结构,最急的用中断(如各种保护),次之用高速系统时钟(如AD采样等),再次之用分频后的系统时钟,如按键、数码管刷新、显示刷新等。它们都可以抛出消息,快的抛出来,让慢的来处理,慢的抛出来,让Main主循环处理。这些可以满足绝大多数项目需求。而对于更复杂的项目,我现在也不考虑RTOS,而是采用扩展CPLD、FPGA,或者多MCU,中间用CAN通讯。因为本质上CPU永远是单线程的,RTOS只是让一个系统模拟的像多个并行的系统,但永远只有一个在运行,当在一些高可靠项目中,比如伺服电机等,要求多个保护,又有主程序运行,他们都要求第一优先级的,会导致系统比较复杂,而这个时候用FPGA可以很好的解决这些问题,可以说是彻底的并行,彻底的RTOS,这是做高可靠大功率数字电源的基础。现在正在解决CAN通讯问题,希望在今后的设计中,把大项目分解为一个个的小项目多MCU设计思路。
现在正在学习STM32F103,打算把MS4(第一版基于NXP LPC1343,用于高频焊接机)开始移植到STM上,因为要基于MS4做一套网络化的PLC系统,也就是分布式PLC,这个是一个比较重要的项目,需要做1年多时间,今后将长期维护,做成一套通用性的平台市场化。网络基于CAN总线,可以是STM32F103内带的,也可以采用MCU模拟的,目前CAN模拟已经成功,但还需要进一步完善。
之前基于MS4做了超高频涡流焊接机,功率是6KW,频率在1MHz,大功率,干扰很大的,系统运行非常可靠,目前已经量产、规模使用,软硬件都没有问题,火花机也是采用MS4。这个里面,本人基于界面需要,设计了基于消息机制的界面开发体系,觉得非常不错,是把函数指针跟消息比较好的结合起来了,类似显卡,当数据有变化的时候,系统时钟扫描到,再定时刷新,这样系统编程清晰度非常高,今后将在MS4基于STM32版本上发布出来,到时候请各位指正。
今后MS系统的一个发展方向将是结合CPLD或者是FPGA,因为本人最近都在开发FPGA,觉得需要把他跟ARM整合起来,看成一体,而软件呢,也要基于CPLD做一些功能扩展,这个将会在网络化PLC中有体现。
MS5版本说明:
MS5基于STM32F103设计开发,可以在Keil下软件仿真调试,不需要实物硬件板子,UART1作为人机窗口。硬件测试是基于正点原子的miniSTM32F103RBT6板子测试,资料是开源的。MS5主要基于MS4(基于NXP Cortex M3)升级而来,因为在2011年基于MS4做了6KW高频焊接机,增加了界面部分,采用函数指针加消息机制,感觉比较简单而有效,性能比较不错,尤其是针对工业产品,系统节拍分时设计有进一步的体会,把这两点融入到MS5中,同时修改了串口UART发送系统等待问题,先把串口数据放到一个buff中,系统节拍去检测buff,当有数据时,每个节拍发送一个,这样就避免了以前发送的时候,需要很长的等待问题。
升级为MS5的根本目的作者是为了设计一款仿西门子S7系列的分布式PLC,应用在自己公司的自动化控制领域及工业电源设备上。同时考虑到今后这个PLC系统需要推向市场,所以选择了STM32这颗比较通用的芯片来设计。作者把这个PLC系统叫做msPLC,初级版本开源设计,包括软硬件。今后关于PLC的一些开发,都会在MS5中得以体现,也希望MS5发展成为针对工业控制领域的系统平台。
读者需要明确的是,MS5是一个系统平台,它不是一个RTOS,它是一个为了简单、可靠、看得懂代码,容易上手,缩短开发周期而构建的平台。MS5是一个前后台系统,作者也曾多次想上RTOS之类的,但对于工业产品深入分析后,发现绝大部分是没必要的,并且引入了自己不了解,代码把握不了的RTOS,一旦出现问题无法解决。所以就退回到了MS系统上来,尤其发现工业设备,采样速度是要求较高的,但执行可以慢一些,这样可以把中断作为紧急不可延时高速采样,系统节拍设定为万分之一秒用于AD,IO常规采样,节拍分频后获得百分之一秒用于按键、数码管,分频为十分之一秒用于数据显示刷新,分频为一秒用于RTC时钟。中断获取的数据,可以在万分之一的节拍中处理,也可以在更低速的地方处理,更可以在main主程序中处理。这就是所谓的,高速采样,低速处理,系统可以设计的非常有条理。
用户1321970 2013-8-6 15:55
用户1597425 2013-7-12 16:18
用户1371282 2013-6-5 20:39
感谢楼主的分享,仔细学习一下,O(∩_∩)O谢谢
用户1407355 2013-3-22 09:35
好好学习了.
用户1681532 2013-2-19 21:21
用户1681532 2013-2-19 21:20
用户1359763 2013-1-22 09:21
用户1193923 2013-1-18 15:36
用户1193923 2013-1-18 15:30
用户1323903 2013-1-14 13:14