[原创]谈谈VC在工程机械及自动化行业中的应用
几天来和一些朋友谈了谈VC在仪器,仪表,工程,机械,自动化等方面的应用。这里说一下我的一点认识。国内在这些行业的发展还不够。很多重要的产品都还需要从国外引进。自制的东西在总体技术,可靠性,安全性等方面还都有很多提升的空间。但这些行业的逐步国产化在将来几乎是必然的。这是向强国迈进必须走出的一步。
对于不同种类的机器的控制要求不同,最基本的一个考量是反应时间。像半导体材料,半导体设备之类的生产时间上的精确度至少需要达到几十毫秒的量级。这是Windows根本不可能实现的,当然VC也是完全不可能直接应用在这一层。就算一些实时操作系统也不一定直接能够满足这种要求,很多时候需要一些智能硬件在最底端进行与硬件的通信。在此以上的一层,如果选用Windows机器的话VC将是很好的选择。
在写总体控制设计这一层可以选用的语言很多。由于不同公司最终选择的语言可能相差很多,工业生产都都有一定的通信标准。例如生物医药界主要的通信标准方式是通过COM interface。这是几乎所有语言都支持的。与另一种常用的标准界面.NET相比COM繁琐了很多,但其效率相对很快。时间要求比较严格的工业还是会选用COM interface。半导体业也有标准,即SEMI standard。这不是局限于一个什么计算机语言的标准。因为写这个Standard的时候大部分人们知道的语言还没有诞生,同时其用户也不是程序员。不过无论用什么语言实现的系统都得写符合SEMI standard的界面,否则绝对卖不出去。
用VC的好处主要还是效率。可以说VC的效率几乎就是C的效率。VC也是支持COM interface最适合的语言。作机器核心的一层选用VC是最好的。对于作界面VC确实比C#或JAVA差一些。特别是网络功能。但是对于大部分设备的生产与应用,作出来的东西只要能干活用户就已经很知足了,没人会因为你作的按钮不漂亮而换别家的仪器买。所以这不是什么太大的疑虑。实在担心这一点也可以用VC作内核,上边用户界面一层用C#。
先说说对单独仪器的控制,假设你要控制的是一个功能简单得不能再简单的机器。例如:一个读条型码的机器。基本上就是命令它作几个有限的命令,通过串口和Ethernet口或者读IO等等方式实现。不要因为太简单而直接写一个函数加一堆if/else,一堆延时来搞定。还是应该老老实实的建一个类。例如叫CBarcodeReader(读条码器)。这个类可以初始话,可以设置仪器的基本参数,可以通过对其公有函数的调用控制仪器的工作。当然对于没一个动作,如果失败的话应该给用户提示,是要Abort,还是Retry,还是Ignore等等。加上一个界面。用户打开界面后可以设置基本参数,然后初始化这个读条码器,然后矫正仪器。然后开始用它读码,如果成功了返回结果,否则提示用户Abort/Retry/Ignore。说来一个最简单的仪器控制已经不简单了。把这些最基本的功能写在一个class里面,修改好了。你会对如何控制仪器的理解加深很多。
下面假设这个仪器稍微复杂一点。虽然也是执行几个命令,但这些命令必须俺顺序执行。例如一个带机器手的小读码器。首先需要把手伸出去抓到想读的东西,然后把东西放到可读的位置,然后读它的条码,输出结果,最后把东西放回去。在实现这个过程的时候应该把任务分成独立的几部份。其中任何一部份失败的话佑护都可以从这步起Abort/Retry/Ignore。如果Abort就结束,如果Retry就重作当前步骤,然后继续。如果Ignor就跳过现在这一步继续。这个控制过程应该用一个State Machine控制。这里主要应用的技术是C++的成员函数指针。我在C++区的讲函数指针的贴子中比较详细的介绍了这个State Machine的实现方法。当然如果写一些if/else也能实现。if (用户要Ignor) { if 上次运行到State 3 {直接从State 4开始运行}}。这样写程序会随着所要管理的命令数目的增加指数增长。多花的力气就数不过来了。
(未完待续)
[此贴子已经被作者于2006-10-28 15:15:58编辑过]