事情的起因是这样的:
老板在长沙有一家做三菱代理的公司,那边只有两个人(听说),没有技术支持!
于是那边的人总是给我打电话,叫我给某某客户回个电话。
某天那边有个客户问labview能不能和L系列的PLC通信,我帮他百度了一下。肯定能啊!
这边有个销售也管管那边的客户,于是他让我给客户做个例子,我草,我在公司又不做软件的。
他又让公司一个软件工程师的给做,别人就说要很长时间先学习一下labview。
气氛一下子尴尬了。
我想想以前找工作的时候也了解过labview,于是答应他明天给他做一个demo。都以为我忽悠他的,不过气氛也缓和了。
于是就开始下载软件了。。。。那个销售就是个傻叉,客户也是傻叉+无赖(后面会说到)
当天晚上还吃了年夜饭,被迫喝了酒。下次再要喝酒就不去了
年夜活动完回去就1点多了,喝多了头疼也不想睡,就开始装labview。装了一个多小时,N多个模块。
边装边下载手册看,百度问问也看。好像很简单
装完第一个就是找找能不能用ActiveX咯,控件菜单里翻了个遍终于找到这个了。
这下嗨皮了,因为以前学C#的时候用过三菱的通信组件(就是动态链接库)
直接拖到前面板,就找找怎么加载我的OCX。
搞搞搞,OCX的属性设置好,又看了一个labview自带的VI,用了一个while循环。就OK了
又搞搞搞,先和GX的sim2通信试试,可以咯
然后关了电脑去厕所吐了一下,白吃了,都吐出来了。真不知道喝酒有啥意思
后来我也开始对labview感兴趣起来,学的时候,也碰到过很多问题,相对于文本语言很多不方便。
很多次都不想玩这个了,百度问问也搜了很多。
每次都想,NI推出labview都快30年了,不会这么点小问题都解决不了的。
然后就自己不停地百度,看论坛。人多论坛都去翻,前十页!
直到现在我,回头看当初给别人的demo,读写几个点很方便,也没有做具体的控制。要是在项目中用,这样真不是一般的繁琐。
在翻论坛的时候偶尔发现几个行家,就看他们以前的主题和回帖。收获良多
发现一种更高效,更傻瓜的设计思路。
就是OPC Sever + DSC + Labview简单配置一下就OK了
OPC Sever可以是下位机厂家自己的,也可以是NI的(听说是买的KEPserver)。
这里要说一下,我以前是有下载过三菱的MX OPCsever的。后来发现没用(实际上是不会用),只用到他的OCX,然后删了,下MX Component注册一堆组件。用了一个ActProgType动态链接库。
要是用文本语言的话,用这个动态链接库还是很方便的。它可以连所有的三菱PLC,所有的网络路径都OK。超级好用。
不过在labview里面稍微复杂一点的程序就相当麻烦了,读连续的地址还要用个FOR循环。(也可能是我还不太会labview的程序设计,哈哈哈)百度查了说用通知器和队列可以解决。不过我更喜欢傻瓜一点的啊
接着上面的说哈
先说说OPCSever,别人那么多牛叉公司一起搞了个OPC基金会,发布统一的标准,自然说明了OPC的用处之大,我们公司还在自己用OCX开发“采集程序”,想想也够无语的。可能是为了省钱。一套OPCSever也要点钱(不过网上注册机,产品ID什么的也是一大吧)。
有支持很多品牌下位机的OPC,比如KEPWare,NIOPCSever,还有各种组态软件的OPCSever(有的叫数据采集程序,跟组态软件一起卖,按点数收费的,真是不厚道),每个厂家也有自己专用的OPC。
OPC的运作机制一般是这样的,按照下位机的通信协议与下位机握手,数据存在数据库里(一般是SQLSever和ACCESS),轮询机制,有的支持局域网远程访问。
所以数据库是实时刷新的,上位机跟OPC通信其实就是跟数据库通信(我自己的理解)
我刚开始是怀疑到了软件界面上会不会延时很久。
后来看到NI的官网上的工程师说,通过labview的DSC模块和OPC通信,最快1秒中采集6500次,不知道是不是吹牛,哈哈哈。我只要肉眼看不出来延时就非常嗨皮了。
中间插一下,节前发生的一件事。也是写“我这几天在干嘛”的原因。还是那个客户打电话来说同时与20套PLC通信卡得很,我让他把20个PLC自己组一个网络,取其中一个做服务器,上位机只和服务器通信。
他又说不会PLC,得那我晚上给他做了个主PLC的程序,映射地址分配的好好的发给他了。(晚上给他做的,白天工作很多)。
第二天下午他还说卡,没一会那个销售跑来了,说让我想办法。我艹,我有什么办法。他们自己用Labview的肯定很有经验了啊。我又不搞那个。
销售又说他们买了PLC不肯付款,我好像明白了什么。真是无赖啊
我跟他说,是他们软件设计不行。销售也是个无知,一直念叨让我帮他们搞快一点。我真是又好气又好笑。
后来还跑去跟老板说了,还好老板也懂电气和软件,问了一下具体情况就说让软件工程师想办法。
然后就放假了,我不停的看资料,百度。
百度搜不到就用可一找到很多国外的论坛。找资源就用 ,推荐给大家
第二种就是DSC+共享变量了。
看到那句话后,我就按他说的翻帮助文件,里面都是一笔带过。
妈蛋不知道什么意思,又去看官网的介绍。说30点一下可以用DataSocket,30点以上建议用DSC+共享变量。(说句题外话这个DSC是个工具包要额外收费的,当然我可以找到注册机,哈哈哈哈)
于是就下了DSC模块,里面竟然还包含了NIOPCSever,哈哈哈。虽然期间出了点意外重装了几次,总的来说是很愉悦的。
看了一下NIOPCSever,好家伙,支持好多种PLC呢,基本上大公司的PLC都有,还有modbus主从都支持。于是我翻到了三菱的,基本都支持,不过关于各种网络路径的通信不太详细。也不支持和仿真软件通信,这下我怎么测试呢。手上也没有硬件。
于是我就用了三菱自己的OPCSever,组态好后,打开编程软件,启动仿真,开始搞起来了。
搞着搞着发现用共享变量怎么搞也通不上,用DataSocket就好好的。于是我开始怀疑这个DSC起来了。搞什么飞机啊
然后又开始疯狂的百度“labview 第三方OPC”关键词,尼玛百度看了前面五六页,也没找到个所以然。百度你真是够了。于是就用了上面说的“谷粉搜搜”(故名思议咯,可以翻墙的,哈哈哈)。
结果第一条就找到答案了,官网上的。原来是这个我的MXOPC拒绝了NI的“共享变量”,哈哈哈哈。OK,按它的步骤,顺利解决。
现在可以利用DSC+“共享变量”跟我的MXOPC通信了,用编程软件仿真也OK。
还有,这个共享变量确实效率高多了,在项目树下面配置好后,直接拖到前面板后面板都可以。真是爽歪歪啊。我在MXOPC设置的采集间隔是100ms肉眼看不到延时。哈哈哈哈哈
可读可写。