作者虽然工作经历不长,但是在.NET工控应用方面还是有其独特的地方。很多人都认为.NET工控应用方面效率不高,但是作者并不认同。
说老实话,自己也才毕业两年,也谈不上有什么厉害的地方。就职的是一家典型的国企,在内部从事软件开发,主要是做工控软件的上位机,一直以来都感觉做的满山寨的,为什么呢?因为,从产品的需求、设计、开发、测试以及现场调试都是一人包办的。真的很厉害吗?一点也不,本身程序就不是特别大,特别复杂。不过,再怎么山寨,做了两年了还是有点经验的。
从刚进公司的第一个项目,一台小型分拣机到现在手头的2台设备,期间也受领导器重吧,断断续续的将从服务器搭建以及版本控制等非编程工作也坐了起来。两年来到底我学了什么呢?从第一设备的VC版本到通过我和我带领的新同事努力下改进出来的WPF版。我到底做了什么?我想我还是主要在工控领域内学的比较多吧,虽然没做过下位PLC的程序设计,但那方面也略微知道点皮毛了。下面我谈谈主要用到的技术:
首先是VC,老资格的上位机编程利器了,实时性好,运行快。但也有它的问题,也许只是我水平不到家。想让它跟着设备状态而改变界面真的好麻烦的,特别是我还碰到过虽然释放 了资源还是莫名内泄露的问题,虽然最后通过自己动手画刷画而非加载位图来实现,但开发周期会比较长。
然后我接触了.NET,由于是托管代码,所以内存释放等方面省事了,而且只要控件的颜色或或size大小,位置等属性的随着工控对象的改变而改变,真的带来了很多的改变啊,开发效率提高了是事实。我在前文中也谈及过C#在工控中的优点,有人反对,说速度慢,拜托你以为是飞机导弹啊,上位机的只要将数据采集来显示下或者给下位机下达控制命令就可以了,顶多查个数据库,以我遇到的情况为例,虽然很多数据要通信,但真正要反应快的不多,而且有500ms的时间来反映,就算是.Net也够了。下位机才是需要实时性与效率的,像我们单位采用西门子的PLC,当然别人也能用单片机,c/c++在这里才是英雄用武之地。特别是我们公司的项目一般大部门时间都在机械设计制造,然后是下位机PLC与电气方面的设计,直到PLC设计完有了接口了才能做上位机,提前做协议?不可能的,硬件不同IO点不同,接口是不同的,至少要机器定型才能做上位机,因此我这里的时间并不多,采用开发周期最短的软件才是王道!
随后我接触了WPF以及WCF,真的不错。WPF令上位机的界面偶了耳目一新的感觉,连各种古怪的图形也能通过基本图形的组合成为“路径”对象而整体处理。
下面我给几幅图看看吧:
由于没有旧的数据库,源代码也不在身边,就上传用户手册个VC的界面吧,这是VC开发的3个程序的部分界面
下面再看看我用C# 的winform开发的程序(没法子,要用到视频板卡,涉及到窗体指针,用WPF不方便,而且我学习的对象,那位大哥也是winform的,采用同样的环境避免无谓的错误嘛),对了由于截图时电脑上没板卡,所以当中框了个框,其实应该是个视频监控的画面(类似QQ聊天):
最后是我目前正在做的WPF程序,我看着觉得还行,不过还有很多地方需要完善,WPF路径对象,动画功能真赞啊:
在.NET工控应用开发的工程中,OPC是相当简单常用而且好用的手段哦,从一开始使用自己写的函数,到全面使用封装好的dll,真是省时省力。当然后来的prodave也不错,不过只是做个试验没有真正应用,不过貌似没有异步通知,得自己定时去刷OPC了。
对了,其实,在最后的程序的过程中,因为要通知另一系统采集数据库数据并发送它第二个数据库中,这个功能很想尝试下WCF啊,就看时间允不允许了
反正啊,这些就是我目前2年来对于自己使用.Net在工控中的应用了。真的,实时性上VC更棒,但是就开发效率以及监控功能而言,.Net要强大的太多了,而且程序编写也简单!
原文标题:自己使用.Net在工控方面的应用
链接:http://www.cnblogs.com/zjjking/archive/2009/09/12/1565310.html
【编辑推荐】