msOS设计的本意是为电子类设备及PLC设计的,一开始想着仿造西门子的S7-300来设计一套基于CAN通讯的分布式PLC,然而当设计了几个硬件模块之后就发现,这个需求定义超出了我的个人能力,自己的综合知识还没有上到这个层面,所以开始退而求其次,仿照普通的PLC,结合华禹工控及俊知机械的需求设计了一款简单的嵌入式PLC,取名为msPLC-Demo。
msOS开发过程中的调试都是用msPLC-Demo的,msPLC-Demo也经历了3个版本,逐渐完善成熟,通过对msPLC-Demo的完善,让我更清楚工业设计的需求,对PLC更加理解,比如我们自己建立系统,可以不需要标准PLC那么复杂,接口部分最后演化为共阳输入光耦隔离,中功率共阴输出直接驱动,可以直驱继电器类驱动器,简单、易用。
基于msPLC Demo,做了不少项目,比如400~1200度的红外激光测温仪的校准台,测温仪与高频感应加热设备的控制器,这两个都需要一套PID算法,于是就开发了一套面向对象的PID库,简单设置一下温度值就搞定了温度控制。机械自动化里面,经常需要控制步进电机,于是基于德国公司高性能的TMC262步进控制器,编写了步进电机驱动库。
msOS开发过程中,我就建了一个QQ群:291235815,并且在博客上发表了要做msOS的信息,把需求描述了一下,感兴趣的网友加入了进来,其中最主要的群体是原基于Mcu51的“实用单片机系统”MS3的客户群体,他们就是从MS3入门嵌入式的,所以他们一开始就对msOS产生了很强烈的兴趣,在他们的热情下,加速了msOS的推动。在开发完成msOS之后,庞大的MS3用户群体让我认识到需要把这个群体引导到msOS中,于是把MS3按msOS风格改写,为了区分两个系统,改写后的MS3,命名为msOS-Mcu51,而原来的msOS,命名为msOS-Stm32,加上之后的无OS精简版本msOS-Lite,形成了一个完整的系列。
群内网友积极参与,有些看了msOS代码之后,写了一些读后感,比如“独钓千古愁”写了不少关于“设备”、“抽象”、“面向对象”方面的文章。有些基于msOS系列开发产品后,共享了代码,也有些把msOS移植到msp430、AVR中,也共享了代码。我公司基于msOS开发的产品,部分的共享了代码,比如PID库,步进驱动库等。
为了进一步普及,想做一个低成本的msPLC,但最后发现黑白字库屏的成本下不来,考虑到很多网友都有通用的评估板,于是想着做一个PC机端的界面,虚拟LCD屏,代替真实的LCD屏,并且采用C#来开发,这样形成一套PC上位机的C#开发模版,支持串口等常用功能。因为我没有太多的精力,群内“Claude”恰好会一些C#,于是他负责了这个项目,通过短短几个星期,给出了一个模版,我做了优化,“南方的风”增加了ISP功能后,形成了一个比较不错的上位机C#模版,取名为msMenu,真正实现嵌入式与PC端统一开发的风格,感谢“途客”推荐C#开发环境“SharpDevelop”,非常好用。
msOS的开发成功,统一了我公司嵌入式设备的开发,主要的几个负责人,包括硬件负责人都在第一时间都掌握了编程技巧,通过代码相互检查,编码质量显著提高,有效的降低了公司的软件成本。并且硬件人员也可以轻松修改软件,对于相对不是很复杂的软件,硬件人员也可以参考模版完成。
我公司现在的人才招聘,现在都在群内招聘,而通过这样知根知底的招聘方式,有效的降低了公司经营的成本,人员稳定性也大。有一位在华为工作多年的软件高手“蓝色雪狐”看中msOS的价值,加盟我公司,今后由他来负责msOS的后续应用及推广,开发更多的电子设备和自动化设备,比如火花放电加工设备和俊知的机械自动化控制设备,目前都在开发之中,之后把这些应用中的经验融合到msOS中,写成书让更多的人受益。
msOS到今天算是告一段落,因为二代高频机的深入研究需要FPGA技术,自己设计精准控制芯片,所以最近我都在学习FPGA。幸运的是,刚开始学习,就获得我本科大学同学的支持,他是清华研究生,一直在某著名芯片设计公司工作,当我把我的这套思路跟他讲了之后,他非常认同,希望能在FPGA上建立一套通用的编程模版,暂时取名叫msFPGA吧,若开发完成后,争取实现开源共享。
msOS从一开始,就获得我公司众多高手的支持,后来广大网友参与进来,让msOS快速成长,目前QQ群已经接近1000人满员,这个速度还是基本上没有做规模推广下获得的,因为我想着主要靠口碑来传递。
最后感谢对msOS做出重要贡献的几位网友,他们分别是Tomsu、剑客、侯德平、独钓千里行、传说中的火枪手、Claude、彭娟及南方的风,更感谢与非网在msOS开发过程中的长期支持。