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

        ?

        基于Vx Works的軟PLC 遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)?

        2013-05-15 08:10:40楊杰軍陳雄姿
        機(jī)械工程與自動化 2013年3期
        關(guān)鍵詞:程序信息系統(tǒng)

        詹 俊,龍 辛,黃 波,楊杰軍,陳雄姿

        (1.湘潭大學(xué) 信息工程學(xué)院 電氣工程系,湖南 湘潭 411105;2.湘電風(fēng)能有限公司,湖南 湘潭411105;3.長沙金博聯(lián)信息技術(shù)有限公司,湖南 長沙 410000)

        0 引言

        PLC在工業(yè)控制領(lǐng)域扮演十分重要的角色,區(qū)別于傳統(tǒng)的PLC,軟PLC系統(tǒng)具有通用性強(qiáng)、操作方便、開發(fā)周期短等多方面的優(yōu)點,逐漸成為未來工業(yè)控制器的主力軍。

        軟PLC主要分為基于PC軟PLC系統(tǒng)和基于嵌入式操作系統(tǒng)的軟PLC系統(tǒng)。其中后者以其實時性能的優(yōu)勢成為主流。Vx Works操作系統(tǒng)作為一款具有強(qiáng)實時性能的嵌入式操作系統(tǒng),能根據(jù)需求靈活地對其進(jìn)行裁剪,所以目前被廣泛應(yīng)用在基于嵌入式操作系統(tǒng)的軟PLC開發(fā)上[1]。CodeSys是由3S公司開發(fā)的一種功能強(qiáng)大的PLC軟件編程工具,它支持IEC61131-3標(biāo)準(zhǔn),通過其runtime庫可以與底層操作系統(tǒng)很好地鏈接[2]。二者結(jié)合不僅可以很好地保證系統(tǒng)的實時性能,同時也可大大地縮短開發(fā)周期。

        1 遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)

        1.1 系統(tǒng)整體結(jié)構(gòu)設(shè)計

        遠(yuǎn)程監(jiān)控系統(tǒng)由基于Vx Works的數(shù)據(jù)采集與發(fā)送模塊、上位機(jī)監(jiān)控及數(shù)據(jù)分析處理模塊和基于CodeSys的輸出信息函數(shù)庫三大部分組成。遠(yuǎn)程監(jiān)控系統(tǒng)結(jié)構(gòu)如圖1所示。

        上位機(jī)與被監(jiān)控設(shè)備直接采用UDP協(xié)議進(jìn)行通信,以減少對系統(tǒng)資源的消耗,同時提高處理的速度。被監(jiān)控目標(biāo)系統(tǒng)循環(huán)偵聽請求,一旦接收到上位機(jī)發(fā)送過來的監(jiān)控請求即以固定頻率收集信息并發(fā)送,如果接收到其他控制請求則進(jìn)行其他操作。

        圖1 遠(yuǎn)程監(jiān)控系統(tǒng)結(jié)構(gòu)圖

        Vx Wor ks系統(tǒng)中通過啟動數(shù)據(jù)采集發(fā)送任務(wù)(TInf Send)及PLC信息采集任務(wù)(Get Log Data)實現(xiàn)全部信息的收集發(fā)送工作。主要任務(wù)包括:任務(wù)信息采集、CPU及內(nèi)存使用信息采集、系統(tǒng)異常處理、程序計數(shù)器計數(shù)值采集、PLC應(yīng)用程序輸出信息采集、信息發(fā)送。數(shù)據(jù)采集發(fā)送主程序流程見圖2。

        1.2 功能模塊設(shè)計

        1.2.1 系統(tǒng)任務(wù)信息

        Vx Works操作系統(tǒng)函數(shù)庫提供了taskInfo庫函數(shù)用于用戶獲取所有任務(wù)的信息,其中主要的信息包括:任務(wù)ID、任務(wù)名稱、入口地址、優(yōu)先級、當(dāng)前狀態(tài)、堆棧值等。系統(tǒng)是根據(jù)可以唯一識別任務(wù)的ID號來檢索任務(wù)相關(guān)信息的,通過函數(shù)taskId List Get()可以獲取到當(dāng)前系統(tǒng)運行的所有任務(wù)的ID,同時系統(tǒng)提供根據(jù)ID檢索任務(wù)信息的函數(shù)taskInfo Get(),獲取的信息以TASK_DESC結(jié)構(gòu)體格式存儲[3],提取其中有用的信息存于構(gòu)建的TASK_INFO結(jié)構(gòu)體中,打包成發(fā)送數(shù)據(jù)包的格式,實現(xiàn)了任務(wù)信息的采集。任務(wù)信息數(shù)據(jù)結(jié)構(gòu)如下所示:

        typedef struct/*TASK_INFO-任務(wù)結(jié)構(gòu)體 */

        int td_id;/* 任務(wù)ID*/

        Char td_na me[12];/* 任務(wù)名稱 */

        int td_priority;/* 優(yōu)先級 */

        int td_status;/* 任務(wù)當(dāng)前狀態(tài) */

        int td_stack Size;/* 堆棧大小 */

        int td_stack Current;/* 當(dāng)前堆棧大小 */

        int td_error Status;/*任務(wù)錯誤狀態(tài) */

        }TASK_INFO;

        圖2 數(shù)據(jù)采集發(fā)送主程序流程圖

        1.2.2 資源信息

        系統(tǒng)資源包括CPU資源和內(nèi)存資源,Vx Works提供的系統(tǒng)工具直接將這些信息定位到文件或指定IO輸出。這里通過構(gòu)建函數(shù)截取CPU資源的信息,并且通過修改系統(tǒng)函數(shù)直接將內(nèi)存使用信息定位到指定的內(nèi)存區(qū)域。

        Vx Works提供了spy Lib庫函數(shù)用于監(jiān)控CPU的使用情況,spy利用輔助時鐘的中斷服務(wù)程序,并且為每個任務(wù)維護(hù)一個計數(shù)器,這樣在特定的時間周期內(nèi)即可統(tǒng)計出每個任務(wù)的CPU占用率。在庫的源程序中提供了spy Report Co mmon(FUNCPTR print-Rtn)用于系統(tǒng)工具(Shell等)獲取CPU信息,這里通過構(gòu)建print Rtn函數(shù)[4],直接將信息格式輸出到指定的內(nèi)存區(qū)域,相關(guān)函數(shù)代碼如下所示:

        Void spy Ptn Func(const char*fmt Ptn)

        va_list va1;

        va_start(va1,f mt Pt n);

        /*Cpu Dt Buf存儲CPU信息的全局變量*/

        vsprintf(Cpu Dt Buf,f mt Pt n,va1);

        va_end;

        Vx Wor ks對內(nèi)存信息進(jìn)行統(tǒng)計,系統(tǒng)提供的memshow()函數(shù)直接將信息定位標(biāo)準(zhǔn)輸出,目前的辦法一般都是將其定位到文件再從中讀取。本文通過重新構(gòu)建函數(shù)庫,然后獲取CPU信息的辦法可以將信息定位到指定的區(qū)域,主要函數(shù)代碼如下:

        STATUS jbl_mem Part Show(PART_ID part Id ,int type ,F(xiàn)UNCPTR print Pt n)

        Int nu mBlocks;

        Unsigned total Bytes=0;

        Unsigned biggest words=0;

        ...

        /* 調(diào)用系統(tǒng)函數(shù)獲取總大小及內(nèi)存塊參數(shù) */

        If((total Bytes= mem Prat Available(patr Id,&biggest Words,type))== ERROR)

        {...;

        }...

        nu m Blocks=dll Count(&part Id->free List);

        ...

        /* 格式化輸出到指定位置 */

        If(nu m Blocks?。?)

        (* print Ptn)("free%10u%9u%10u%10u\n",total Bytes,nu m Blocks,total Bytes/nu m Blocks,2*biggest Words);

        }...

        1.2.3 PLC應(yīng)用程序信息

        以Vx Works加CodeSys模式構(gòu)建的軟PLC系統(tǒng),在脫離在線編程模式時很難獲取客戶運行的PLC程序相關(guān)信息,因此在程序中安插信息輸出函數(shù),使PLC程序運行到指定位置時如果滿足輸出要求即輸出一條消息,這樣就能像在C語言中加printf函數(shù)一樣獲取到程序不同位置的信息[5]。本設(shè)計中構(gòu)建基于ST語言的PLC函數(shù)庫、Util_LogInfo()函數(shù)和Util_Log Wr n()函數(shù),其用法如以下ST代碼所示:

        (* 變量定義 *)

        PROGRA M PLC_PRG

        VAR

        ...

        Log Msg:STRING:='Rd Data is:';

        Log Msg2:STRING:='Gd Su m2- Gd Su m =';

        END_VAR

        (* 程序?qū)嵗?*)

        ...

        My_Log Msg:= CONCAT(Log Msg,DINT_TO_STRING(Gd-Su m));

        Util_LogInf o(My_Log Msg);

        My_Log Msg2:= CONCAT(Log Msg2,DINT_TO_STRING(Gd Su m - Gd Su m2));

        Util_LogInf o(My_Log Msg2);

        底層基于Vx Wor ks消息機(jī)制,接口函數(shù)定義為:jbl_Log Msg(char*f mt,int ar g1,...,int ar g6)。CodeSys通過RUNTI ME SYSTEM調(diào)用此接口函數(shù),系統(tǒng)同時開辟任務(wù)Get Log Data用于獲取來自PLC應(yīng)用程序的輸出信息,并且將其定向到指定的內(nèi)存區(qū)域和記錄到日志文件里面。輸出信息格式定義見表1。

        表1 PLC應(yīng)用程序的輸出信息格式

        1.2.4 信息發(fā)送

        設(shè)計中對每幀網(wǎng)絡(luò)包的數(shù)據(jù)區(qū)進(jìn)行重新定義,這就保證了上位機(jī)對數(shù)據(jù)進(jìn)行準(zhǔn)確的解析,數(shù)據(jù)包格式見表2。

        表2 數(shù)據(jù)包格式

        2 實時系統(tǒng)性能分析和故障排查

        基于Windows開發(fā)上位機(jī)程序,項目中已經(jīng)搭建了基于Vx Works加CodeSys的軟PLC系統(tǒng),在系統(tǒng)初始化階段啟動信息采集任務(wù),并且運行上位機(jī)程序監(jiān)控到如圖3所示數(shù)據(jù)。

        Vx Works提供一個異常處理句柄(handler)和一個名為t Exc Task的任務(wù)來處理異常。異常出現(xiàn)后任務(wù)將變?yōu)閽炱馉顟B(tài)(suspend),并且不能轉(zhuǎn)變?yōu)槠渌麪顟B(tài),通過任務(wù)信息窗口STAT可以準(zhǔn)確觀測到任務(wù)的狀態(tài),選擇相應(yīng)任務(wù),通過點擊左側(cè)按鈕欄對任務(wù)進(jìn)行掛起、恢復(fù)、刪除處理。

        圖3 上位機(jī)監(jiān)控主界面

        程序非法執(zhí)行或訪問內(nèi)存越界等都會發(fā)生任務(wù)異常,通過異常處理函數(shù)打印輸出的信息反映了當(dāng)前異常的具體信息。

        運行一段時間,點擊繪制曲線按鈕可得到free內(nèi)存的柱狀圖(如圖4所示)和其中TInf Send任務(wù)CPU占用率曲線圖(如圖5所示)。由圖5可直觀看到一段時間內(nèi)CPU占用率為8%,所以此時可以直觀觀測系統(tǒng)運行情況。

        圖4 內(nèi)存使用信息柱狀圖

        圖5 CPU使用信息圖(以采集任務(wù)為例)

        3 結(jié)束語

        通過測試,系統(tǒng)在開發(fā)和運行階段通過網(wǎng)線簡單連接目標(biāo)板和上位機(jī)即可準(zhǔn)確及時獲取到軟PLC系統(tǒng)運行的各項參數(shù),同時可以對數(shù)據(jù)進(jìn)行分析,方便技術(shù)人員及時排查故障和優(yōu)化應(yīng)用程序,具有一定的使用價值。下一步將進(jìn)一步優(yōu)化故障處理,增加可控項目,使系統(tǒng)實用性更強(qiáng)。

        [1] 李峰,應(yīng)宏.利用TCP/IP實現(xiàn) Windows與Vx works的通信[J].微計算機(jī)信息,2006(5):80-82.

        [2] 王麗麗,康存鋒,馬春敏,等.基于codesys的嵌入式軟PLC系統(tǒng)的設(shè)計與實現(xiàn)[J].現(xiàn)代制造工程,2007(3):54-56.

        [3] 汪毅,顧曉霞,奚宏明.Vx Works嵌入式系統(tǒng)遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[J].科學(xué)技術(shù)與工程,2011(27):6747-6755.

        [4] Bollerslev T.PLC and PSTN based expert system for long-distance fault diagnosis of can-body resistance welding machine[J].Review of Economics and Statistics,2007,72:498-505.

        [5] Mohammad Abu Zalata,Tariq M Younes,Mohammad A K Alia.Development of equivalent virtual instruments to PLC functions and net works[J].Journal of Soft ware Engineering and Applications,2011(3):172-180.

        猜你喜歡
        程序信息系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機(jī)系統(tǒng)
        ZC系列無人機(jī)遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        試論我國未決羈押程序的立法完善
        “程序猿”的生活什么樣
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        訂閱信息
        中華手工(2017年2期)2017-06-06 23:00:31
        英國與歐盟正式啟動“離婚”程序程序
        創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
        展會信息
        中外會展(2014年4期)2014-11-27 07:46:46
        亚洲AⅤ永久无码精品AA| 日本人妻97中文字幕| 国产色第一区不卡高清| 制服丝袜一区二区三区| 中国老太婆bb无套内射| 成人免费a级毛片| 亚洲狠狠婷婷综合久久| 国产一区免费观看| 久久久久亚洲AV成人网毛片| 国产一区二区欧美丝袜| 日韩人妻中文字幕一区二区| 日韩一区中文字幕在线| av在线不卡免费中文网| 亚洲精品欧美精品日韩精品| 久久久精品欧美一区二区免费| 欧美人成人亚洲专区中文字幕| 久久国产精品超级碰碰热| 黄色三级国产在线观看| 亚洲综合在不卡在线国产另类 | 国产av一区二区亚洲精品| 亚洲精品无码久久久久去q| 国产成人av性色在线影院色戒 | 国产高清一区二区三区三州| 中文字幕亚洲乱码成熟女1区| 久久亚洲欧美国产精品| 69精品丰满人妻无码视频a片| 日本午夜国产精彩| 国产成人AⅤ| 日本免费一区二区在线| 国产91精品高潮白浆喷水| 小鲜肉自慰网站| 亚洲gv白嫩小受在线观看| 淫妇日韩中文字幕在线| 久久丝袜熟女av一区二区| 帮老师解开蕾丝奶罩吸乳视频| 免费特级黄毛片| 中文字幕一区二区三区人妻精品| 久久九九av久精品日产一区免费| 男女无遮挡高清性视频| 国产免费拔擦拔擦8x高清在线人| 久久乐国产精品亚洲综合|