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

        ?

        WINCC腳本系統(tǒng)在香料廚房防差錯技術(shù)中的應(yīng)用

        2012-04-29 00:44:03劉振強
        中國高新技術(shù)企業(yè) 2012年21期

        摘要:WINCC技術(shù)的不斷更新,使得其可操作性更強。腳本的加入給WINCC項目帶來了極大的靈活性和開放性,通過一些腳本的介入,能夠完成一些WINCC基本組態(tài)無法實現(xiàn)的功能。在V6版本以后WINCC加入了VB腳本,它編寫起來更加簡單、容易入手。

        關(guān)鍵詞:腳本函數(shù);WINCC;C語言;VBS;香料廚房防差錯技術(shù);配料系統(tǒng)

        中圖分類號:TS43 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-2374(2012)31-0049-04

        香料廚房防差錯技術(shù)是北京卷煙廠新上馬的項目,供料方式由原來的人工推料到現(xiàn)場改為了集中調(diào)配、集中發(fā)料的方式,實現(xiàn)了煙草加工過程對控制信息化、智能化、自動化的要求。同時也要求了對現(xiàn)場發(fā)料的準(zhǔn)確性,目前我廠統(tǒng)計的配置的香料品種48個,香精品種14個。由于品種繁多,極易出現(xiàn)發(fā)料錯誤,目前采用的是PLC采集現(xiàn)場編碼利用S7程序進(jìn)行編碼比對,考慮到過程控制工業(yè)總線PRFINET的局限性,不能完全保證料液編碼的比對正確(如工控限制條件的改變、網(wǎng)絡(luò)通訊的故障都能導(dǎo)致料液編碼的比對出現(xiàn)錯誤,模擬測試時就出現(xiàn)過誤發(fā)料情況)。因此我們準(zhǔn)備利用WINCC VB及C語言的腳本編程,通過調(diào)用ORACREL數(shù)據(jù)庫中的煙牌名稱與料罐中的料液名稱,利用高級編程語言編寫腳本進(jìn)行比對,作為對編碼比對的校驗程序,確保發(fā)料的準(zhǔn)確性。

        1 腳本函數(shù)

        1.1 腳本函數(shù)的介入

        西門子公司在推出了WINCC V6版本之后,引入了腳本函數(shù)這一概念。使得整個WINCC系統(tǒng)通過完整和豐富的編程系統(tǒng)實現(xiàn)了雙向的開放性。

        借助C腳本動作,WINCC幾乎可以無限制地訪問ORACEL數(shù)據(jù)庫及其平臺上的各種應(yīng)用功能。

        而VB腳本也以其易用性和開發(fā)快速性贏得了廣大用戶的青睞。

        1.2 C腳本及VB腳本的設(shè)計

        1.2.1 C腳本。

        internal functions(內(nèi)部函數(shù)):內(nèi)部函數(shù)是指C語言的內(nèi)嵌函數(shù),同被經(jīng)常用到的函數(shù)。

        project functions(項目函數(shù)):可生成全局訪問的函數(shù)。

        standard functions(標(biāo)準(zhǔn)函數(shù)):包含用于WINCC歸檔、編輯器、報警等功能。

        action(動作功能):有用戶創(chuàng)建,不由其他C腳本中調(diào)用,和其他函數(shù)不同,它是由其他判斷觸發(fā)的。

        acyclic非周期型,根據(jù)時間和日期調(diào)用一次。cyclic周期型,分為每秒、每分、每小時等。tag triggered變量標(biāo)簽觸發(fā),當(dāng)綁定的標(biāo)簽觸發(fā)時觸發(fā)。

        上面這段程序是我們要創(chuàng)建的一個動作程序,如圖3所示,每當(dāng)我們創(chuàng)建好后就會自動產(chǎn)生一段缺省程序(圈中的部分是WINCC自帶腳本注釋),在我廠的香料廚房中基本應(yīng)用的都是動作功能。

        1.2.2 VBS。由于C語言腳本的開發(fā)相對復(fù)雜,制作周期較長,所以新版本的WINCC系統(tǒng)引入了新的腳本語言VB,WINCC集成了微軟基于VB的運行期腳本語言,能夠使用微軟的標(biāo)準(zhǔn)工具進(jìn)行編輯、調(diào)試。能夠訪問ActiveX控件和Windows應(yīng)用的屬性和方法。

        VBS的應(yīng)用:WINCC中實現(xiàn)動態(tài)化(圖形編輯器中)、WINCC中的動態(tài)化、集成ActiveX控件;通過Microsoft outlook發(fā)送電子郵件;集成Microsoft internet Explorer;集成Acrobat reader;集成在線幫助功能、聯(lián)接Office應(yīng)用(Excel、word、access)、讀寫變量,啟動報表;鏈接數(shù)據(jù)庫。

        2 香料廚房的C腳本及VB的應(yīng)用

        2.1 C腳本在配料系統(tǒng)中的應(yīng)用

        首先我們我們看到的是香廚系統(tǒng)在配料時彈出配料界面的C動作。

        接下來我們來分析下這段C語言動作(我們以301號罐為例):

        #include "apdefap.h" 插入一個文本

        HWND hwnd=NULL 定義一個句柄目的是為了下文的彈出對話框找到出處

        int iRet 定義一個名稱為iRet的整型變量

        hwnd=FindWindow(NULL,"WinCC-運行系

        統(tǒng)-");調(diào)用的彈出對話框在WINCC中顯示

        if(GetTagBit("TL_B_PT_Start")&(GetTagWord("TL_I_PT_InSelect")!=1))

        說明:一個嵌套功能語句"TL_B_PT_Start"在PLC中為配料啟動按鈕,"TL_I_PT_InSelect"為配糖畫面中的料罐選擇,這條語句的意思是當(dāng)配料啟動為1時且配料選擇按鈕不等于1時執(zhí)行下一句。

        if(GetTagWord("TL_I_PT_InSelect")==2) 當(dāng)配料選則等于2時

        iRet=MessageBox(hwnd,"配料畫面不能打開,301罐配料正在進(jìn)行中"

        "操作提示" 說明:MessageBox函數(shù)彈出對

        話框

        ",MB_OK|MB_ICONQUESTION|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_APPLMODAL);當(dāng)這條語句執(zhí)行是彈出OK確認(rèn)鍵

        else {

        SetVisible("配料1.PDL","畫面窗口5",1); //Return-Type:BOOL

        SetVisible("配料1.PDL","畫面窗口4",0); //Return-Type:BOOL

        SetTagWord("N_I_PT_InSelect",2); //Return-Type:BOOL

        }

        說明:從ELSE這條語句開始表示如果配料選擇為2時執(zhí)行else后的語句,SetVisible是彈出配料界面并將料罐號設(shè)置為1。

        以上程序就是配料的過程中進(jìn)行料罐選擇的C腳本。

        2.2 VBS腳本在配料系統(tǒng)中的應(yīng)用

        圖7中的上述界面是由調(diào)制罐到將香料送到儲存罐的動作過程。

        Sub OnClick(ByVal Item)聲明子程序

        If HMIRuntime.Tags("TL_I_JT_OutNO303").Read = 1 And (HMIRuntime.Tags("TL_TX_QG_Name413").Read >< "" And HMIRuntime.Tags("TL_TX_QG_Name413").Read >< HMIRuntime.Tags("TL_TX_QG_Name303").Read) Then

        MsgBox "與413罐料液名稱不符,不能出料",vbExclamation,"不能完成操作"

        說明:上面一條語句是當(dāng)"TL_I_JT_OutNO303"即303出料啟動為1時,比較"TL_TX_QG_Name413"和"TL_TX_QG_Name303"這兩個料液名稱如果不同,彈出對話框"與413罐料液名稱不符,不能出料",并且VB執(zhí)行動作不能操作。

        Else

        If HMIRuntime.Tags("TL_I_JT_OutNO303").Read = 1 And ((HMIRuntime.Tags("TL_B_QG_OutAll303").Read = 1 And HMIRuntime.Tags("TL_R_QG_Weight303").Read+ HMIRuntime.Tags("TL_R_QG_Weight413").Read >= 300) Or (HMIRuntime.Tags("TL_B_QG_OutAll303").Read = 0 And HMIRuntime.Tags("TL_R_QG_SWeight303").Read+ HMIRuntime.Tags("TL_R_QG_Weight413").Read >= 300)) Then

        MsgBox "超出413罐容量上限,不能出料",vbExclamation,"不能完成操作"

        說明:此段程序中是比較"TL_R_QG_Weight303"與"TL_R_QG_Weight413",表示出料量超出413存儲容量時不能出料。

        Else

        HMIRuntime.Tags("TL_B_JT_Start303").Write 1

        說明:以上條件都不滿足是將"TL_B_JT_Start303"變量置1即出料啟動。

        3 防差錯程序的編寫

        首先我們先定義變量Dim s1 Dim s2 Dim Cn Dim RS

        s1 = HMIRuntime.Tags("TL_TX_FT_Name302").Read 將S1的變量聯(lián)接到"TL_TX_FT_Name302",此變量是來自現(xiàn)場加料點的料液名稱

        Set Cn = CreateObject("ADODB.Connection")

        Set RS = CreateObject("ADODB.Recordset")聲明鏈接數(shù)據(jù)庫的變量

        Cn.Open "Provider=MSDAORA.1;Password=wang1001;User ID=zswang;Data Source=xlcf;Persist Security Info=TRUE"

        說明:上一步已經(jīng)聲明過變量,這步是鏈接數(shù)

        據(jù)庫。

        Set RS = Cn.Execute("SELECT mn_materialname FROM materialname WHERE mn_materialcode LIKE '" & s1 & "'")

        說明:根據(jù)S1這個變量在數(shù)據(jù)庫中找到相應(yīng)的的料液編碼。

        If HMIRuntime.Tags("TL_I_FT_InNO302").Read = 1 Then

        HMIRuntime.Tags("TL_TX_FT_ReceiveNN302").Write HMIRuntime.Tags("TL_TX_QG_Name407").Read

        說明:上面這條語句是賦值語句是將現(xiàn)場加料點的料液名稱賦給料罐的料液名稱。

        s2 = RTrim(RS(0))

        If HMIRuntime.Tags("TL_I_FT_InNO302").Read = 1 Then

        If RTrim(HMIRuntime.Tags("TL_TX_QG_Name407").Read) = s2Then

        HMIRuntime.Tags("TL_TX_FT_ReceiveNN302").Write HMIRuntime.Tags("TL_TX_QG_Name407").Read

        HMIRuntime.Tags("TL_TX_FT_ReceiveName302").Write s1

        HMIRuntime.Tags("TL_B_FT_CSend302").Write 1

        Else MsgBox "所選料罐料名不同"

        End If

        說明:以上這段是我們根據(jù)后來的生產(chǎn)情況添加的香料廚房對比塊,保證香料廚房出料的正確性,在我們之前聲明過變量之后,首先將s2= RTrim(RS(0))即將數(shù)據(jù)庫中調(diào)出的料液名稱。當(dāng)"TL_I_FT_InNO302"為1時,即料罐被選中時,比較"TL_TX_QG_Name407"與S2的變量是否相同,即確認(rèn)現(xiàn)場發(fā)來的牌號與料罐存儲的牌號是否相符,如果不相符即彈出對話框"所選料罐料名不同"。Rtrim是一個消除空格的指令,防止在數(shù)據(jù)庫中輸入時產(chǎn)生全角、半角等問題而導(dǎo)致誤判斷。

        4 結(jié)語

        我們添加的防差錯程序基本是由VBS動作腳本編寫而成,但是其中很多的料罐參數(shù)變量分別由配料的C腳本程序和調(diào)配罐到存儲罐發(fā)料的VBS腳本提供。最開始設(shè)計的程序由于存在全角和半角的差異,經(jīng)常誤報所選料罐料名不同,因此我們在后面添加了Rtrim命令消除差異。在經(jīng)過一段時間的觀察后發(fā)現(xiàn),檢驗正確率100%,沒有發(fā)現(xiàn)誤檢測情況,杜絕了發(fā)料錯誤,提高了生產(chǎn)的可靠性、安

        全性。

        參考文獻(xiàn)

        [1] 周良志.C++實踐之路[M].北京:人民郵電出版社.

        [2] 西門子自動化與驅(qū)動集團(tuán).WINCC全局腳本手冊[M].

        [3] 龔沛曾,陸慰民.VB程序設(shè)計簡明教材[M].北京:高等教育出版社.

        作者簡介:劉振強(1985-),男,北京人,上海煙草集團(tuán)北京卷煙廠助理工程師,研究方向:自動控制。

        (責(zé)任編輯:周 瓊)

        免费av在线国模| 医院人妻闷声隔着帘子被中出| 人人摸人人操| 一级片久久| 亚洲综合免费在线视频| 久久国产精品婷婷激情| 亚欧免费无码aⅴ在线观看| 久久精品岛国av一区二区无码| 永久免费毛片在线播放| 一级老熟女免费黄色片| 欧美人妻aⅴ中文字幕| 亚洲av无码片一区二区三区| 欧美成人网视频| 久久精品国产免费一区二区三区| 亚洲人成影院在线无码按摩店| 中文无码制服丝袜人妻av| 亚洲欧美日本人成在线观看| 亚洲一区二区三区免费网站| 人妻少妇精品视频三区二区一区| 欧美日韩精品一区二区在线视频 | 中文字幕肉感巨大的乳专区| 亚洲精品视频久久| av天堂一区二区三区| 亚洲精品国产电影| 国产成人综合色在线观看网站| 国产va在线播放| av中文字幕一区人妻| 熟女少妇内射日韩亚洲| 91av国产视频| 国产熟妇一区二区三区网站| 亚洲2022国产成人精品无码区| 亚洲欧美另类激情综合区| 精品亚洲一区二区99| 亚洲男人免费视频网站| 中国女人内谢69xxxx免费视频| 人妻丰满熟妇av无码区hd| 久久精品亚洲成在人线av| 久久婷婷五月综合色丁香| 精品一区二区三区在线观看视频| 亚洲精品久久久中文字| 人妻av有码中文字幕|