999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

WINCC腳本系統在香料廚房防差錯技術中的應用

2012-04-29 00:44:03劉振強
中國高新技術企業 2012年21期

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

關鍵詞:腳本函數;WINCC;C語言;VBS;香料廚房防差錯技術;配料系統

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

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

1 腳本函數

1.1 腳本函數的介入

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

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

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

1.2 C腳本及VB腳本的設計

1.2.1 C腳本。

internal functions(內部函數):內部函數是指C語言的內嵌函數,同被經常用到的函數。

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

standard functions(標準函數):包含用于WINCC歸檔、編輯器、報警等功能。

action(動作功能):有用戶創建,不由其他C腳本中調用,和其他函數不同,它是由其他判斷觸發的。

acyclic非周期型,根據時間和日期調用一次。cyclic周期型,分為每秒、每分、每小時等。tag triggered變量標簽觸發,當綁定的標簽觸發時觸發。

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

1.2.2 VBS。由于C語言腳本的開發相對復雜,制作周期較長,所以新版本的WINCC系統引入了新的腳本語言VB,WINCC集成了微軟基于VB的運行期腳本語言,能夠使用微軟的標準工具進行編輯、調試。能夠訪問ActiveX控件和Windows應用的屬性和方法。

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

2 香料廚房的C腳本及VB的應用

2.1 C腳本在配料系統中的應用

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

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

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

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

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

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

統-");調用的彈出對話框在WINCC中顯示

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

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

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

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

"操作提示" 說明:MessageBox函數彈出對

話框

",MB_OK|MB_ICONQUESTION|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_APPLMODAL);當這條語句執行是彈出OK確認鍵

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時執行else后的語句,SetVisible是彈出配料界面并將料罐號設置為1。

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

2.2 VBS腳本在配料系統中的應用

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

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,"不能完成操作"

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

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的變量聯接到"TL_TX_FT_Name302",此變量是來自現場加料點的料液名稱

Set Cn = CreateObject("ADODB.Connection")

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

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

說明:上一步已經聲明過變量,這步是鏈接數

據庫。

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

說明:根據S1這個變量在數據庫中找到相應的的料液編碼。

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

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

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

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

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

4 結語

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

全性。

參考文獻

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

[2] 西門子自動化與驅動集團.WINCC全局腳本手冊[M].

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

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

(責任編輯:周 瓊)

主站蜘蛛池模板: 国产精品伦视频观看免费| 国产精品网址在线观看你懂的| 国产欧美日本在线观看| 1024你懂的国产精品| 91探花国产综合在线精品| 日本精品αv中文字幕| 亚洲精品成人片在线观看| 老色鬼欧美精品| 亚洲天堂视频在线观看免费| 国产精品天干天干在线观看| 狠狠综合久久久久综| 亚洲精品自在线拍| 日本成人在线不卡视频| 亚洲天堂2014| 亚洲视频免| 美女国产在线| 精品免费在线视频| m男亚洲一区中文字幕| 亚洲精品在线影院| 欧美激情视频在线观看一区| 自拍偷拍欧美日韩| 成人免费午间影院在线观看| a毛片在线| 国产在线91在线电影| 狠狠综合久久| 久久国产热| 亚洲69视频| 亚洲综合色吧| 欧美特黄一级大黄录像| 亚洲成a人片在线观看88| 青青热久免费精品视频6| 国产精品一线天| www.99精品视频在线播放| 91最新精品视频发布页| 亚洲国产中文欧美在线人成大黄瓜 | 制服丝袜 91视频| 狠狠亚洲婷婷综合色香| 精品久久久无码专区中文字幕| 中文字幕欧美日韩| 91色在线观看| 亚洲国产天堂久久综合| 亚洲精品少妇熟女| 亚洲午夜片| 国产精品免费久久久久影院无码| 成人在线观看一区| 欧美人与动牲交a欧美精品| 久久久久无码精品| 国产视频你懂得| 九九九国产| 先锋资源久久| 亚洲AV无码一区二区三区牲色| 制服丝袜亚洲| 最新国产在线| 91久久大香线蕉| 麻豆精品在线| 成·人免费午夜无码视频在线观看 | 最新痴汉在线无码AV| 欧美另类精品一区二区三区| 国产乱人视频免费观看| 毛片网站观看| 免费全部高H视频无码无遮掩| 精品91视频| 无码又爽又刺激的高潮视频| 最新精品国偷自产在线| 五月婷婷丁香综合| 欧美日韩资源| 久久熟女AV| 国产欧美中文字幕| 国产黄网站在线观看| 青青久视频| 72种姿势欧美久久久大黄蕉| 毛片久久久| 五月综合色婷婷| 亚洲欧美一区二区三区图片| 亚洲国产成人精品一二区| 欧美成人一级| 久草视频中文| 超薄丝袜足j国产在线视频| 国产一级毛片高清完整视频版| 999国内精品久久免费视频| 日本欧美成人免费| 欧美 国产 人人视频|