做信息化项目开发,不一定非得朝着大型高端的方向发展,什么小型机、服务器集群、分布式系统,全世界也就那么几家大公司有机会接触到。如果能够低下头,向低端看看,也是有很大发展前景的,比如物联网行业、自动化行业。我们看看C#工程师可以怎么做!

一、点胶机引发的思考
    2008年有朋友要做点胶机,原理很简单:两种液料A和B,分别有一个活塞泵,从液料桶里面抽取一次液料,然后分多次打出,在最前端有个针头(枪头),两种液料在这里混合后打出去。根据分而治之的原则,我们可以分开单独处理AB两个通道,这样不管多少种液料也可以实现。
    作为一名软件开发人员,我们可以想到两种解决方案:

  • 单片机控制。不断测量活塞泵的位移,然后前进、后退、停止三种动作。抽料量和每次打出量由参数设置。这样子还得加个触摸屏设置参数,最差也要弄两个旋钮吧。这样做硬件成本很低,但是难度大,单片机做触摸屏参数设置比控制系统自身还要复杂得多,开发成本太高。对于很少接触单片机的我们来说,需要学习许多东西。控制系统成本:2*800(电子尺)+200(单片机板)+100(触摸屏)=1900
  • 工控机控制。控制原理跟单片机差不多,只不过我们可以用Windows系统和C#等高级语言开发,开发成本几乎是零。但是工控机打着稳定可靠的名义,那是非常的贵!控制系统成本:2*800(电子尺)+8000(工控机)=9600

    实地走访一些工厂后,发现还有两种方案:

  • PLC控制。控制原理跟单片机一样,封装了梯形图编程,方便开发。但是价格要比单片机要高。控制系统成本:2*800(电子尺)+1000(PLC)+1000(人机交互界面HMI)=3600
  • 纯电子控制。有一种电子设备,接受位移传感器(电子尺、光栅尺)的电压/电流,达到预设值(旋钮控制)后就会释放一个动作信号,可以控制点胶机打出去一枪。这种控制方式根本就没有程序开发可言,算是最容易实现的方案了,但是这也注定了它只能做很简单的控制逻辑。控制系统成本:2*800(电子尺)+100(控制设备)+50(旋钮)=1750

    这些点胶机整体价格一般在2w到4w之间,利润在5k~1w附近。(以上数字是大概范围,误差可能较大)
    总的来说:最简单直接的是纯电子控制,但适用范围太窄;最高级最适合C#工程师的是工控机控制,根据客户需求变更而修改程序变得非常非常简单,但控制系统成本对最终利润来说很敏感;单片机控制可以说是标准方案,成本适中,在外部设备(如电子尺)价格较高时,纯电子控制在成本上几乎没有什么优势;PLC是近些年比较流行的做法。
    我们作为C#码农,很眼红单片机方案的成本,为工控机的成本感到郁闷,又觉得为PLC而放弃C#不值得。难道就真的无解了吗?

二、工控机革命
    沉下心来想想,我们做的那么多的软件系统,很少见到为了稳定而采用几十万上百万的高端服务器甚至小型机吧!绝大多数企业都还在用着几万块钱一台的主流服务器,甚至有很多还用着几千块的呢!一般都是采用一两台高端的做数据库服务器,然后上大量中低端的做集群、负载均衡。是的,我们只需要在少数场合采用高标准,而多数场合根据实际需要来选型,甚至可以以量来弥补稳定性不足的问题。

    那么,我们再来看看前面一直牙痒痒的工控机。8000的工控机,有人说是标配,有人说是高端,这些我们不去纠结。关键是,有朋友告诉说,有一种3.5寸工控板,板载CPU和内存,非常便宜,加上8G小硬盘和电源就可以工作。很多人不信,有人说是二手翻新的,不稳定。我们做技术的就一个好处,是骡子是马拉出来溜溜!订购了两台不同型号的,一台470,一台700,分别WinXP和Win2003系统,跑了半年至今尚且健在。又有人要说Windows不稳定,怎么怎么的,做不到365*24小时不停机!我只能说,不懂得变通的人,永远没有发展的机会。各种机器,总需要添加原料的吧?在加料的时候让工控机重启一下,几乎可以避免不稳定因素。就算需要不停机换料,难道我们就不可以放两台一起工作,轮流休息吗?怎么配合分工,只是我们写程序的问题而已。再有,我们也不必强求它跑个十年八年的,一年两年就足够了啦,因为它很便宜呀,我们完全可以在它还没坏的时候就更换掉。这些,不就都是我们多年来做软件的思维方式吗?
    这种小工控板,配上硬盘、电源、机箱,有时候还需要显示器和键盘,整套加起来,还不到1500呢!是的,到这里,我们这个工控机方案,已经胜过PLC了!除非你愿意抛弃C#去学习PLC。

    或者,我们还忘记了一样东西,那就是WinCE平板电脑。这家伙,定价一般在500到1000之间,小巧,还带有触摸屏,还可以用C#开发,虽然是.Net CF。假如我们用它来替代工控机,会怎么样?对于上面这种简单的点胶机控制,倒是完全没有问题的。因为两条电子尺的高成本在那里,这控制系统的几百块差别,对于最终利润来说,应该很不敏感了。大家可以根据自己的实际情况来进行选择。

三、C#与单片机
    对于更小的电子产品来说,也许几百块就是利润的全部,难道就没法用C#了???!在这里,我们还有一件神器,.Net Micro Framework
    对很多人来说,MF其实是个很纠结的东西!它是一个.Net框架(微型框架),也是一个嵌入式系统OS,可以裸奔在ARM单片机上,也可以运行在别的嵌入式系统上。我们可以用C#开发代码,调用对应各种硬件的类库方法,实现对硬件的控制

  • 据说MF比C写的单片机程序要慢,但是从来没有人给出对比数据
  • MF固件比其它嵌入式系统要占用更多的存储空间和内存,这倒是真的,毕竟MF系统要包括所有可能根本用不到的类库代码
  • 因为要求的存储空间和内存较大,经测试最小能运行的环境是300k Flash和64k RAM,有一部分低端单片机无法运行,能运行的单片机单价基本在25元以上
  • 64k RAM不足以运行MF的WPF,那得至少1M以上RAM,单片机上的SRAM很贵,1M就需要几十块钱,而3.2寸屏幕才五十多块钱!而别的嵌入式系统在GUI上要求很低
  • 64k RAM也可以自己绘制GUI,点、线、图、文字
  • 淘宝上可以找到的能运行MF的板子最便宜的有46元和55元,它们都没有图形接口;而能流畅运行WPF的板子,估计得需要两三百块钱的成本
  • MF也支持以太网,一个以太网模块大概19元到25元;一个WiFi模块大概90元
  • 很多人觉得MF跟.Net Framework一样,最后发现,在精简版的MF上,为了节省空间,可能连文件系统都没有实现,甚至连String.Format都没有。所以,MF只是微型.Net框架,只能使用.Net Framework的一部分功能,并根据自己实际情况裁剪掉不需要的功能。
  • MF可以支持网络,可以做Web服务器,但是别指望拿来做网站,因为512k的空间,你放一张图片都会舍不得!


    从上面可以看出,MF适合做50元到300元之间的控制系统

三、总结

平台 软件 成本 备注
工控机 WinXP、WinXPE C#、.Net Framework
700~1500元 WinXPE需要自己裁剪,麻烦
工业平板电脑 WinCE C#、.Net Compact Framework
500~1000元 WinCE裁剪麻烦
单片机 .Net Micro Framework
C#、.Net Micro Framework
50~300元 做图形界面等高端功能有些吃力;
移植是大问题,可以由专门团队
或者公司出成品,项目公司采购

End.