vb通過hmiruntime讀取wincc的錯(cuò)誤處理問題
鄭志武
發(fā)布于2013-01-17 23:54
4
0
標(biāo)簽:
用vb讀wincc的8個(gè)變量,程序如下,變量是讀過來了,timerdde_timer是6秒的定時(shí)器;但是現(xiàn)在有以下3個(gè)問題如下:
1、發(fā)現(xiàn)當(dāng)vb程序先啟動(dòng),而wincc而后啟動(dòng)并激活時(shí),變量一直讀不過來;反之沒有問題,請(qǐng)問是不是程序哪里有問題,還是要讀取wincc的運(yùn)行狀態(tài)?
2、當(dāng)wincc與plc連接斷開時(shí),讀過來的變量還是之前沒斷時(shí)的值,一直不會(huì)改變,這是怎么回事,還是wincc斷開時(shí)調(diào)上來的值是不會(huì)變的,請(qǐng)問此時(shí)的wincc狀態(tài)vb能不能讀取過來,謝謝!
3、當(dāng)vb與wincc通信正常時(shí),如果wincc突然取消激活,這個(gè)狀態(tài)vb能不能讀取
privatesubtimerdde_timer()
dimiasinteger
dimwincc_objectasobject
dimwincc_data(8)asobject
setwincc_object=createobject("cchmiruntime.hmiruntime")
setwincc_data(1)=hmiruntime.tags("db34_8")
wincc_data(1).read
setwincc_data(2)=hmiruntime.tags("db34_0")
wincc_data(2).read
setwincc_data(3)=hmiruntime.tags("db34_4")
wincc_data(3).read
setwincc_data(4)=hmiruntime.tags("db34_60")
wincc_data(4).read
setwincc_data(5)=hmiruntime.tags("db31_16")
wincc_data(5).read
setwincc_data(6)=hmiruntime.tags("db31_20")
wincc_data(6).read
setwincc_data(7)=hmiruntime.tags("db36_0")
wincc_data(7).read
setwincc_data(8)=hmiruntime.tags("db36_4")
wincc_data(8).read
fori=1to8step1
data_test(i)=wincc_data(i).value
nexti
setwincc_object=nothing
endsub
問題補(bǔ)充:
wincc中聯(lián)接到plc的都是變量形式,在激活狀態(tài)下斷開plc這些變量還是保存著近讀上來的值。
那如何在wincc激活狀態(tài)下斷開與plc連接后把激活前讀取的變量值在wincc值都清零
佳答案
1、可以把vb程序的執(zhí)行文件放在wincc項(xiàng)目屬性-》啟動(dòng)里面,這樣wincc啟動(dòng)后自動(dòng)啟動(dòng)vb程序文件,因?yàn)槟氵@個(gè)對(duì)象是wincc運(yùn)行屬性,如果沒有運(yùn)行哪個(gè)創(chuàng)建對(duì)象是空的,所以后面就不會(huì)執(zhí)行,其實(shí)還可以判定對(duì)象創(chuàng)建是否成功,如果不成功提示或重新執(zhí)行創(chuàng)建也應(yīng)該可以可以。
2、你可以先檢查wincc在與plc斷開時(shí),wincc變量值是否已經(jīng)刷新還是保持??赡苁莣incc保持了。
3、如果這個(gè)方法不行,還可以嘗試wincc帶的dmc控件