WinCC上可以很方便的編寫VB腳本和C腳本_第1頁
WinCC上可以很方便的編寫VB腳本和C腳本_第2頁
WinCC上可以很方便的編寫VB腳本和C腳本_第3頁
WinCC上可以很方便的編寫VB腳本和C腳本_第4頁
WinCC上可以很方便的編寫VB腳本和C腳本_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、WinCC上可以很方便的編寫 VB腳本和C腳本,但是調試起來還是比擬費 勁的.下面介紹一下個人的應用體會.1 , VB,最好安裝VB6,先在VB6里面編寫程序,然后再放到 WinCC的腳 本中,事半功倍,畢竟VB的調試非常方便.a,插入引用注意選擇 OLE Automation 和 WinCC * ;b,可以直接在VB里面調用 WinCC的全部變量,內部,外部全可以:如下:c,在VB里面監(jiān)視 WinCC的變量:d,調試完畢,程序拷貝到 WinCC的腳本中.2 , C語言系統(tǒng)提供了一個應用程序窗口,如下,只要把他拖到畫面窗口即可:2,使用Printf函數(shù),把需要調試的內容打印出來;3,效果如下:

2、2.00 |SDOODDH 3.U0IOOQII S.OODOODH J.ODOOQOi 2.00000011 3.OD00DDP11cM 出 18 27 CH希望對大家有點用處.下面內容來自網(wǎng)絡,感謝原文作者.Vbs操作wincc畫面腳本總結一:不使用變量單純的操作界面1 .操作某個畫面中控件的屬性如Homel.Pdl 總窗體 下的 畫面窗口 2畫面窗口Sub OnClickByVal ItemDim objCircleDim screennameDim pwnameSet objCircle= ScreenItems"圓 1"objCircle.Radius = 60S

3、et screenname=HMIRuntime.Screens"Home1" /獲取要操作的窗體Set pwname=screenname.ScreenItems(" 畫面窗口 2") 獲取要操作的控件,這里填入你要操作的控件名MsgBox(objCircle.Radius) / 輸出圓的半徑MsgBox (pwname.Picturename) / 輸出當前畫面窗口 2的名字End Sub注意 當調用某窗體下的某控件的某個屬性時,需要聲明兩個對象,一個接納這個控件,一個接納值例如Dim objectDim valueSet object =HMIRu

4、ntime.Screens("Home1").ScreenItems("畫面窗口 2)Set value=object.picturename2 .更改畫面窗口的對象Sub OnClick(Byval Item)Dim opObjectSet opObject=HMIRuntime.Screens ("Home1").ScreenItems("畫面窗口 2)opObject.PictureName="Page1.PdlEnd Sub3 .設置文本Set titleTxt=HMIRuntime.Screens ("H

5、ome1").ScreenItems(" 靜態(tài)文本 2)titleTxt.Text =titleTxt.Text+"EF" / 獲取文本的值并追加字符4 .vb字符串函數(shù) VB的字符串截取函數(shù)有Left 字符串,n,返回字符串 前N個字符;Mid 字符串,p, n,從第p個字符開始,向后截取N個字 符;right 字符串,n,返回字符串的最后n個字符.用 WinCC讀取VB的數(shù)據(jù)的方法一DDE ? ? ? ? ? ? ? ? ?VB6.0中的步驟:1、新建一個標準EXE,工程2、設置窗體Form1的LinkMode屬性為1 - Source, ? ? 一

6、定要設定為13、在Forml上添加一個文本框控件 Textl ,將其Text屬性設為textl4、保存工程:工程名為 VBDDE.vbp5、生成 VBDDE.exeWinCC的步驟:1、新建一單用戶工程2、在變量治理器中添加Windows DDE驅動3、在DDE下新建連接NewConnection ,在其屬性對話框中:Computer Name :不設置Application : VBDDETopic : Form1VB 中窗體名其它不作改動4、在此連接下新建一有符號16位整型變量Tag1 ,在其地址選擇框中:條目名稱:Text1 ? ?窗體控件名稱?數(shù)據(jù)類型Data Type : SWORD

7、要與變量類型一致5、新建一個畫面:DDE_Test.Pdl6、在畫面中添加一個IO域:與Tag1動態(tài)連接,更新周期為:根據(jù)變化,輸出格式為s99997、保存畫面聯(lián)機調試:1、先運行VBDDE.EXE(或者在VB設計器中運行工程)2、后激活WinCC工程3、此時IO域值與Textl值總是保持一致(無論你在哪一方改動)用 WinCC讀取VB的數(shù)據(jù)的方法二 (OLE)VB文本框的代碼:private sub text1_change()? ? Dim wincc As Object ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'定義 wincc 為對象? ? Dim Var ?

8、As Integer ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'定義 wincc 變量? ? ? Set wincc = CreateObject("WinCC-Runtime-Project")' 創(chuàng)立 wincc 運行 對象? ? Call wincc.SetValue("Var", textl.text) ? ? ? ? ? ?'將 VB 變量值寫入WINCC變量,變量名稱要與 WINCC變量名稱完全一致,要區(qū)分大小寫 end sub在WINCC中建立內部變量var,類型要與VB一致,在畫面中參加IO顯示即

9、 可.WinCC腳本應用?腳本的應用給 WinCC工程帶來了極大的靈活性和開放性.通過使用腳本可 以完成一些 WinCC根本組態(tài)無法實現(xiàn)的功能.從版本V6起,WinCC同時提供了 C和VB兩套腳本系統(tǒng),使腳本功能更 加豐富、易用.首先C腳本功能實在是太強大了,除了系統(tǒng)提供的標準函數(shù)和系統(tǒng)函數(shù)外, 還可以直接調用API函數(shù),再加上可以直接使用 ODK函數(shù),就連VBS 中的Method調用也可以通過特別的方法實現(xiàn),可謂是無所不能.當然缺點 也是有的,不支持自動列出函數(shù)或者方法,編寫程序多有不便.自版本V6起又增加了 VB腳本,它使用起來較為簡單,而且入門很快.VBS 自身的功能并不強,除了一些根本

10、的函數(shù)和WinCC自身的對象(比方HMIRuntime.Tags ),剩下的功能全部都得通過 COM組件進行擴展,比方 我們很熟悉的Excel、fso、ws cript.shell等等,通過這些組件使得 WinCC 訪問Windows的接口得以增加,但是訪問WinCC底層東西卻沒有(比方用 戶登陸、報表打印等),這是VBS美中缺乏的地方,希望下一版本能夠改 進,A_AoVBS的另外一個弱點就是無法直接調用API函數(shù),只能通過其他的方法解決.網(wǎng)上常見的方法應該是通過 dynwrap.dll先注冊再調用,比方:Dim UserWrapSet UserWrap = CreateObject(&quo

11、t;DynamicWrapper")'Call MessageBoxA(), first register the API functionUserWrap.Register "USER32.DLL", "MessageBoxA", "I=HsSu", _ "f=s", "R=l"'now call the functionUserWrap.MessageBoxA Null, "MessageBox (ANSI)", "From DynaW

12、rap Object", 3dynwrap的下載地址我已經找不到了,大家可以上網(wǎng)搜索.另外安裝 DriveMonitor后就會有這個文件,詳細用法在DriveMonitor幫助信息中也可 以找到.另外我試過利用Excel代為聲明,VBS調用Excel的宏來實現(xiàn),這是一篇我 寫的關于VBS結合EXCEL調用API函數(shù)的心得總結,內容太長我就不貼 了,直接見附件,附件DOC附有本文檔用到的Excel文件、VBS文件以及 C函數(shù).全局C腳本里面對PLC的值進行讀取和更新,有對數(shù)據(jù)庫的操作,但有的 時候發(fā)現(xiàn)設備不動作,點擊按鈕進入狀態(tài)界面用于顯示PLC的狀態(tài),觀察PLC的值.此時設備就會繼續(xù)

13、動作,按鈕中未寫任何腳本,只是用直 接連接來給一個內部變量賦值以用于切換畫面?疑心是全局腳本中對數(shù)據(jù)庫的操作阻塞了腳本的運行,不知道是不是原因啊?為什么點擊按鈕后又能解除呢?懇請高人幫助???/quote不知道您使用的是全局腳本工程函數(shù),還是全局動作呢?如果在畫面中調用的是全局工程函 數(shù),應該屬于畫面的腳本線程,切換畫面的時候,重新啟動新的畫面周期, 執(zhí)行該畫面中的腳本,前一畫面中未執(zhí)行的腳本隊列被釋放.如果您疑心是數(shù)據(jù)庫的操作阻塞了進程,您可以在腳本中屏蔽掉操作數(shù)據(jù)庫的代碼,觀察是否還出現(xiàn)阻塞的現(xiàn)象;也可以在您的全局腳本中參加printf函數(shù),輸出到GSC診斷窗口中,判斷是否發(fā)生阻塞.另外,關

14、于WinCC對C腳本的診斷方法有很多,以下幾種僅供參考,在WinCC的幫助文檔中可以找到更多詳細的內容:1 .GSC運行系統(tǒng):提供關于所有全局腳本動作的動態(tài)特性信息.2 .GSC診斷:按調用的順序輸出 printf指令,可以將變量的數(shù)值和錯誤信 息等輸出到診斷窗口.全局C腳本里面對PLC的值進行讀取和更新,有對數(shù)據(jù)庫的操作,但有的 時候發(fā)現(xiàn)設備不動作,點擊按鈕進入狀態(tài)界面用于顯示PLC的狀態(tài),觀察PLC的值.此時設備就會繼續(xù)動作,按鈕中未寫任何腳本,只是用直 接連接來給一個內部變量賦值以用于切換畫面?疑心是全局腳本中對數(shù)據(jù)庫的操作阻塞了腳本的運行,不知道是不是原因啊?為什么點擊按鈕后又能解除呢?懇請高人幫助???請問高人一個問題:兩個全局 C腳本,其中一個被阻塞了,另一個會怎樣, 是不是也會被阻塞?多個全局腳本是獨立的單線程嗎?/quote雖然WinCC的全局腳本對應于進程 Gscrt.exe - Global s cript Runt

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論