亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        LabWindows/CVI調(diào)用動(dòng)態(tài)鏈接庫(kù)與PLC實(shí)現(xiàn)以太網(wǎng)通信

        2016-04-06 08:15:08孔令剛范多旺夏榮斌蘭州交通大學(xué)國(guó)家綠色鍍膜技術(shù)與裝備工程技術(shù)研究中心甘肅蘭州730070常州大成綠色鍍膜科技有限公司江蘇常州23000
        電氣傳動(dòng) 2016年1期
        關(guān)鍵詞:可編程邏輯控制器

        孔令剛,范多旺,夏榮斌,2(.蘭州交通大學(xué)國(guó)家綠色鍍膜技術(shù)與裝備工程技術(shù)研究中心,甘肅蘭州730070;2.常州大成綠色鍍膜科技有限公司,江蘇常州23000)

        ?

        LabWindows/CVI調(diào)用動(dòng)態(tài)鏈接庫(kù)與PLC實(shí)現(xiàn)以太網(wǎng)通信

        孔令剛1,范多旺1,夏榮斌1,2
        (1.蘭州交通大學(xué)國(guó)家綠色鍍膜技術(shù)與裝備工程技術(shù)研究中心,甘肅蘭州730070;2.常州大成綠色鍍膜科技有限公司,江蘇常州213000)

        摘要:以LabWindows/CVI跨平臺(tái)調(diào)用動(dòng)態(tài)鏈接庫(kù)存在的問(wèn)題為切入點(diǎn),以調(diào)用基于Visual Basic開發(fā)的第3方動(dòng)態(tài)鏈接庫(kù)為例詳細(xì)闡述了LabWindows/CVI內(nèi)嵌的ActiveX控制器向?qū)?shí)現(xiàn)動(dòng)態(tài)鏈接庫(kù)的調(diào)用過(guò)程,以此為基礎(chǔ),在LabWindows/CVI環(huán)境下調(diào)用omron_plc_ethernet.dll,實(shí)現(xiàn)與歐姆龍PLC的工業(yè)以太網(wǎng)通信。為L(zhǎng)abWindows/CVI應(yīng)用工業(yè)以太網(wǎng)通信提供了一種解決方法,該通信已成功應(yīng)用于大型連續(xù)真空鍍膜生產(chǎn)線測(cè)控系統(tǒng),長(zhǎng)期運(yùn)行結(jié)果表明穩(wěn)定可靠。

        關(guān)鍵詞:虛擬儀器軟件;動(dòng)態(tài)鏈接庫(kù);可編程邏輯控制器;以太網(wǎng)通信

        LabWindows/CVI是美國(guó)NI(national instruments)公司開發(fā)的面向計(jì)算機(jī)測(cè)控領(lǐng)域的虛擬儀器軟件開發(fā)平臺(tái),為C語(yǔ)言程序員提供集成開發(fā)環(huán)境(IDE),在此開發(fā)環(huán)境中可以創(chuàng)建數(shù)據(jù)采集、分析和顯示以及儀器控制的應(yīng)用程序;開發(fā)IVI儀器驅(qū)動(dòng)程序和創(chuàng)建ActiveX服務(wù)器;為其它程序開發(fā)C目標(biāo)模塊、動(dòng)態(tài)連接庫(kù)(DLL)、C語(yǔ)言庫(kù)等[1-3]。動(dòng)態(tài)鏈接庫(kù)技術(shù)(DLL)是Windows的一種極其重要的代碼共享技術(shù),可為其他可執(zhí)行文件提供共享函數(shù)[4-5]。DLL獨(dú)立于編程語(yǔ)言,通過(guò)導(dǎo)出函數(shù)將特定的變量和函數(shù)交給應(yīng)用程序使用。

        在LabWindows/CVI環(huán)境中,上位機(jī)在以太網(wǎng)上采用TCP/IP協(xié)議與PLC通信,利用Socket編程,通過(guò)IP地址、端口號(hào)向PLC發(fā)送數(shù)據(jù)并接收應(yīng)答數(shù)據(jù),通過(guò)頭文件TCP.H中的TCP/IP函數(shù),向PLC發(fā)送命令。需要注意的是,向PLC發(fā)送的數(shù)據(jù)必須進(jìn)一步按照FINS協(xié)議進(jìn)行封裝,接收時(shí)需要解開封裝,這需要對(duì)充分理解FIN協(xié)議[6]。為簡(jiǎn)化應(yīng)用,OMRON公司或第3方提供通信協(xié)議驅(qū)動(dòng)程序FINSGETWAY、動(dòng)態(tài)鏈接OMRON_ PLC_FINS等提供的接口函數(shù),可以更方便、更可靠地實(shí)現(xiàn)上位機(jī)與PLC之間的Ethernet通信。

        本文主要闡述LabWindows/CVI環(huán)境下通過(guò)跨平臺(tái)調(diào)用ActiveX DLL實(shí)現(xiàn)與歐姆龍PLC進(jìn)行Ethernet通信的方法。

        1 LabWindows/CVI跨平臺(tái)調(diào)用DLL存在的問(wèn)題

        1.1DLL調(diào)用的一般方法

        DLL調(diào)用即將DLL文件映射到用戶進(jìn)程地址空間,然后進(jìn)行函數(shù)調(diào)用,調(diào)用方法與進(jìn)程內(nèi)部一般函數(shù)的調(diào)用方法相同,Windowins提供隱式調(diào)用與顯式調(diào)用兩種方式將DLL映射到進(jìn)程空間。

        隱式調(diào)用需要在客戶端引入頭文件,并在鏈接時(shí)指明dll對(duì)應(yīng)的lib文件位置和名稱。此文件包含DLL允許應(yīng)用程序調(diào)用的所有函數(shù)列表。LINKER檢測(cè)應(yīng)用程序調(diào)用了LIB文件中的某個(gè)函數(shù)時(shí),就會(huì)在應(yīng)用程序EXE文件中加入相關(guān)信息。該應(yīng)用程序運(yùn)行時(shí),系統(tǒng)會(huì)查看這個(gè)文件的DLL信息,后將DLL文件映射到地址空間。LabWindows/CVI使用一個(gè)外部的DLL時(shí),典型的應(yīng)用如在調(diào)用第3方提供的儀器驅(qū)動(dòng)時(shí),儀器生產(chǎn)廠商會(huì)提供一個(gè)DLL。但通常不會(huì)為CVI這樣的編譯器提供導(dǎo)入library,但會(huì)帶有一個(gè)C的頭文件(.h),包含有DLL中函數(shù)的原型。使用對(duì)應(yīng)的頭文件在CVI開發(fā)環(huán)境可以為DLL創(chuàng)建導(dǎo)入library。在CVI中打開頭文件,從頭文件源代碼窗口的菜單欄中選擇“Options”,再選擇“Generate DLL Import Library”,通過(guò)瀏覽文件的方式選擇DLL,生成導(dǎo)入library。

        在只提供DLL文件而沒(méi)有其相關(guān)的LIB文件和頭文件的情況下,可通過(guò)Windows API函數(shù)如LoadLibrary(),GetProcAddress(),F(xiàn)reeLibrary()進(jìn)行顯示調(diào)用。顯示調(diào)用能夠更加有效地使用內(nèi)存,編寫大型程序時(shí)往往使用顯示調(diào)用。該方法使用LoadLibrary或AfxLoadLibrary函數(shù)對(duì)DLL進(jìn)行動(dòng)態(tài)加載;使用GetProcessAdress獲得所調(diào)用函數(shù)的指針,再通過(guò)函數(shù)指針來(lái)調(diào)用DLL的導(dǎo)出函數(shù);使用完畢后以Free Library或者Afx-FreeLibrary將DLL從地址空間中卸載。

        1.2LabWindows/CVI跨平臺(tái)調(diào)用DLL存在的問(wèn)題

        顯式調(diào)用DLL時(shí)的方法,當(dāng)生成DLL文件的導(dǎo)出函數(shù)列表時(shí),編譯器可能改變導(dǎo)出函數(shù)的名稱,若采用C編譯環(huán)境,可以在前面加上一個(gè)extern“C”來(lái)讓避免編譯器將導(dǎo)出函數(shù)改名,也可以給DLL工程中加入一個(gè).def文件,在.def文件中的EXPORTS下面寫上你的導(dǎo)出函數(shù)的名稱例如:EXPORTS void MyFunction();這樣在其他應(yīng)用程序中調(diào)用這個(gè)導(dǎo)出函數(shù)的時(shí)候,就不會(huì)出現(xiàn)找不到這個(gè)函數(shù)的問(wèn)題了(一般情況下,如果找不到函數(shù)GetProcAddress()函數(shù)的返回值為空),而且如果調(diào)用DLL中導(dǎo)出函數(shù)的應(yīng)用程序是其他開發(fā)語(yǔ)言編寫的程序,用.def這種方法同樣適用,而第1種方法就不適用了。但VB-COM組建類DLL不提供LIB文件和頭文件,LabWindows/CVI既不能直接采用隱式調(diào)用的方法,也不能直接采用顯式調(diào)用的方法。

        2 LabWindows/CVI調(diào)用基于VB的DLL

        2.1LabWindows/CVI ActiveX控制器向?qū)Ш?jiǎn)介

        LabWindows/CVI ActiveX控制器向?qū)檎{(diào)用ActiveX servers進(jìn)行C語(yǔ)言的轉(zhuǎn)換。完整的轉(zhuǎn)換步驟如下所示:1)選擇Tools?Create ActiveX Controller打開ActiveX控制器向?qū)В?)選擇LabWindows/CVIActiveX控制器向?qū)е辛谐龅囊言谟?jì)算機(jī)中登記的ActiveX servers或控件;3)控制器向?qū)凑蛰斎氲哪繕?biāo)文件名和后綴進(jìn)行轉(zhuǎn)換,生成LabWindows/CVI儀器面板形式的C代碼。如:MyClient.fp,LabWindows/CVI自動(dòng)生成4個(gè)文件,如MyClient.fp,MyClient.sub,MyClient.c,and MyClient.h。

        2.2控制器向?qū)мD(zhuǎn)換規(guī)則

        本文以AServer.Dll命名的ActiveX Server為例來(lái)介紹LabWindows/CVI內(nèi)嵌的ActiveX控制器向?qū)Чぞ哌M(jìn)行C語(yǔ)言包裝轉(zhuǎn)換的規(guī)則和過(guò)程,生成的Aobject對(duì)象包括2個(gè)導(dǎo)出接口,其中接口AInterface1包含AMethod1()方法和AProperty1“整數(shù)”屬性,接口AInterface2包含AMethod2()方法和AProperty2“整數(shù)”屬性。Object對(duì)象的結(jié)構(gòu)如圖1所示。

        圖1 Object對(duì)象的結(jié)構(gòu)示意圖Fig.1 Structural diagram of object

        2.2.1包裝命名約定

        ActiveX控制器向?qū)樵贏ctiveX server中生效的每個(gè)接口生成一個(gè)函數(shù)面板類,每一個(gè)函數(shù)面板類中向?qū)⑸蒒ew,Active和Open函數(shù),函數(shù)的命名規(guī)則如下:

        _New

        _Active

        _Open

        如果同一個(gè)的接口被另一個(gè)對(duì)象應(yīng)用,函數(shù)的命名規(guī)則如下:

        _New

        _Active

        _Open

        應(yīng)用上述命名規(guī)則,得到下面的函數(shù)名:

        AServer_NewExampleObject1AInterface1

        AServer_NewExampleObject2AInterface1

        AServer_NewExampleObject1AInterface1和AServer_NewExampleObject2AInterface1 2個(gè)包裝函數(shù)創(chuàng)建對(duì)象的新實(shí)例,相當(dāng)于Visual Basic中的CreateObject函數(shù),在包裝函數(shù)中,ActiveX對(duì)象對(duì)應(yīng)于LabWindows/CVI中的CAObjHandle類型,相當(dāng)于Visual Basic中的Object類型,通過(guò)LabWindows/CVI用戶接口庫(kù)中的函數(shù)GetObjHandleFromActiveXCtrl可得到加載面板中該對(duì)象的句柄。

        CAObjHandle obj1,obj2;

        AServer_NewAInterface1(0,1,LOCALE_NEUTRAL,0,&obj1);

        AServer_NewAInterface2(0,1,LOCALE_NEUTRAL,0,&obj2).

        2.2.2接口中方法與屬性包裝命名約定

        對(duì)應(yīng)于ActiveX接口的函數(shù)面板類,LabWindows/CVI ActiveX控制器向?qū)榻涌谥蟹椒ㄅc屬性生成包裝函數(shù),命名規(guī)則如下:

        _

        _Get

        _Set

        調(diào)用AMethod1:

        CAObjHandle obj;

        AServer_NewIAInterface1(0,1,LOCALE_ NEUTRAL,0,&obj);

        AServer_IAInterface1AMethod1(obj,0);

        調(diào)用Get,SetAProperty1:

        CAObjHandle obj;

        int AProp;

        AServer_NewIAInterface1(0,1,LOCALE_NEUTRAL,0,&obj);

        AServer_IAInterface1GetAProperty1(obj,0,&AProp);

        AServer_IAInterface1SetAProperty1(obj,0,42);

        當(dāng)停止使用ActiveX對(duì)象時(shí),需調(diào)用CA_DiscardObjHandle函數(shù)銷毀對(duì)象句柄,相當(dāng)于在Visual Basic中將對(duì)象設(shè)置為Nothing。

        CAObjHandle obj;

        AServer_NewIAInterface1(0,1,LOCALE_NEUTRAL,0,&obj);

        CA_DiscardObjHandle(obj).

        3 LabWindows/CVI與歐姆龍PLC的Ethernet通信

        首先在WINDOWS系統(tǒng)中登記注冊(cè)“OMRON_PLC_FINS.dll”,并將dll文件復(fù)制到CVI工程目錄中,打開CVI工程,從工具下找到“Creative ActiveX Controller Wizard”,打開ActiveX控制器向?qū)?,按?.1中介紹的步驟進(jìn)行C包裝轉(zhuǎn)化,生成“.fp、.sub、.c,、.h”文件。在主函數(shù)中調(diào)用的過(guò)程如下:

        int __stdcall WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpszCmdLine,int nCmd-Show)

        {

        CAObjHandle objecthandle=NULL;

        OMRONFINS_New_OMRON_PLC_ENT(0,1,LOCALE_NEUTRAL,0,&objecthandle);

        OMROFINS_OMRON_PLC_ENTLink(objecthandle,0,pcIP,pcPort,plcIP,plcPort,arg5);

        OMRONFINS _OMRON_PLC_ENTCIO_Read(objecthandle,NULL,0,1,&dAry,arg4);

        OMRONFINS _OMRON_PLC_ENTCIO_Write(objecthandle,NULL,0,1,&dAry,arg4);

        CA_DiscardObjHandle(objecthandle);

        return 0;

        }

        上述基于LabWindows/CVI和OMRON-PLC 的Ethernet通信網(wǎng)絡(luò)方式可以構(gòu)建IPC與歐姆龍全系列PLC的M:N(最大32臺(tái))控制系統(tǒng)架構(gòu),為設(shè)計(jì)大型生產(chǎn)線測(cè)控系統(tǒng)提供穩(wěn)定可靠的技術(shù)方案。該方案已成功應(yīng)用于大型連續(xù)真空鍍

        膜生產(chǎn)線測(cè)控系統(tǒng),系統(tǒng)結(jié)構(gòu)如圖2所示。

        圖2 生產(chǎn)線Ethernet控制網(wǎng)絡(luò)示意圖Fig.2 Ethernet control diagram of product line

        4 結(jié)論

        通過(guò)第3方提供通信協(xié)議驅(qū)動(dòng)程序可以方便可靠地實(shí)現(xiàn)IPC與歐姆龍PLC之間較為復(fù)雜的Ethernet通信,LabWindows/CVI集成的ActiveX控制器向?qū)榭缙脚_(tái)調(diào)用ActiveX DLL提供了快捷有效的工具,本文介紹的調(diào)用Visual Basic語(yǔ)言的ActiveX servers的方法也同樣適用于C++,Java,C#等語(yǔ)言的情況。基于LabWindows/CVI和OMRON-PLC的Ethernet通信網(wǎng)絡(luò)架構(gòu)已成功應(yīng)用于大型連續(xù)真空鍍膜生產(chǎn)線控制系統(tǒng),具有很強(qiáng)的可擴(kuò)展性,長(zhǎng)期運(yùn)行結(jié)果表明通信穩(wěn)定可靠。

        參考文獻(xiàn)

        [1]劉君華.虛擬儀器編程語(yǔ)言LabWindows/CVI教程[M].北京:電子工業(yè)出版社,2001.

        [2]王建新,隋美麗. LabWindows/CVI虛擬儀器高級(jí)應(yīng)用[M].北京:化學(xué)工業(yè)出版社,2013.

        [3]雷金波,陳進(jìn),李毅,等.基于LabWindows/CVI的卷曲機(jī)實(shí)時(shí)狀態(tài)監(jiān)測(cè)系統(tǒng)[J].計(jì)算機(jī)工程與應(yīng)用,2007,43(16):222-224.

        [4]耿娟,原亮,吳彩華. DLL在LabWindows/CVI的虛擬儀器中的應(yīng)用[J].微計(jì)算機(jī)信息,2006,28(22):115-116.

        [5]姜飛,謝致龍,岳蕊霞.對(duì)話框方式下的DLL軟件混合編程與工程運(yùn)用[J].電氣傳動(dòng),2007,37(5):49-52.

        [6]戴斌,朱建平,袁焱.基于FINS協(xié)議的OMRON PLC與上位機(jī)以太網(wǎng)通信的實(shí)現(xiàn)[J].電子技術(shù),2009,36(9):13-16.

        修改稿日期:2015-07-12

        Method on Ethernet Communication Between LabWindows /CVI with PLC Via Cross-platform DLL

        KONG Linggang1,F(xiàn)AN Duowang1,XIA Rongbin1,2
        (1. National Engineering Research Center for Technology and Equipment of Environmental Deposition,Lanzhou Jiaotong University,Lanzhou 730070,Gansu,China;2. Changzhou Dacheng Environmental Deposition Technology Co.,Ltd.,Changzhou 213000,Jiangsu,China)

        Abstract:Discussed the problems of LabWindows/CVI cross-platform DLL invoking. Detailed the DLL invoking methods via LabWindows/CVI embedded ActiveX control wizard based on the examples of calling the third-party DLL programmed in Visual Basic. On this basis,we achieved industrial Ethernet communication between LabWindows/CVI with Omron PLC by calling‘omron_plc_ethernet.Dll’,the case has been successfully applied to the measurement and control system of large vacuum coating line.

        Key words:virtual instrument software;dynamic link library(DLL);programmable logic controller;ethernet commun-ication

        收稿日期:2015-03-17

        作者簡(jiǎn)介:孔令剛(1978-)男,博士研究生,講師,Email:konglg_1978@163.com

        基金項(xiàng)目:國(guó)家科技支撐計(jì)劃項(xiàng)目(2014BF00)

        中圖分類號(hào):TP391.7

        文獻(xiàn)標(biāo)識(shí)碼:A

        猜你喜歡
        可編程邏輯控制器
        PLC在移動(dòng)式膜法提純沼氣生產(chǎn)生物天然氣工程中的應(yīng)用
        綠色科技(2017年4期)2017-03-23 23:30:10
        PLC在液體攪拌機(jī)中的應(yīng)用
        一種熱疲勞試驗(yàn)方法
        基于PLC的城市給排水控制系統(tǒng)研究
        如何將傳統(tǒng)繼電器控制的雙重連鎖正反轉(zhuǎn)電路轉(zhuǎn)換為PLC
        基于中藥自動(dòng)配藥PLC系統(tǒng)的設(shè)計(jì)方案的研究
        科技資訊(2016年19期)2016-11-15 10:25:41
        淺談城市供水調(diào)度系統(tǒng)的建設(shè)與維護(hù)
        礦井提升機(jī)直流調(diào)速拖動(dòng)
        升降橫移式立體停車庫(kù)的控制形式的研究
        基于PLC的高壓密封試驗(yàn)臺(tái)的電控系統(tǒng)的設(shè)計(jì)
        国产69精品久久久久9999| 夜夜骚久久激情亚洲精品| 在线视频夫妻内射| 日日噜狠狠噜天天噜av| 国产亚洲女在线线精品| 日本熟妇免费一区二区三区| 日韩中文字幕有码午夜美女| 亚洲av永久精品爱情岛论坛| 亚洲久无码中文字幕热| 国产成人高清精品亚洲一区| 日韩精品中文一区二区三区在线 | 日韩一区二区中文字幕视频| 超碰国产精品久久国产精品99| 国产av丝袜旗袍无码网站| 国产网站视频| 中文字幕亚洲精品高清| 狠狠综合久久av一区二区蜜桃| 极品粉嫩小泬无遮挡20p| 九九九影院| 国产午夜三级精品久久久| 精品无码一区二区三区爱欲| 人妻影音先锋啪啪av资源 | 大学生被内谢粉嫩无套| 色偷偷亚洲第一综合网| 少妇被爽到高潮喷水免费福利 | 亚洲精品无amm毛片| 日韩精品区欧美在线一区| 精品国产三级国产av| 欧美精品色婷婷五月综合| 欧洲极品少妇| 九九99久久精品午夜剧场免费| 国产精品自拍盗摄自拍| 寂寞少妇做spa按摩无码| 久久久国产精品麻豆| 日韩精品久久不卡中文字幕| 一级r片内射视频播放免费| 全部孕妇毛片丰满孕妇孕交| 91热国内精品永久免费观看| 久久精品国产亚洲av久五月天| 人人妻人人狠人人爽| 欧美在线不卡视频|