999久久久精品国产消防器材,国产成人久久综合77777,√最新版天堂资源网在线,精品久久久久区二区8888,卡一卡二卡三乱码视频

技成培訓(xùn)網(wǎng) 技成學(xué)習(xí)APP 技成工具箱 技成企業(yè)服務(wù)

歡迎回到技成培訓(xùn)網(wǎng)

技成培訓(xùn)網(wǎng)

電工題庫寶典

技成電工課堂

PLC練習(xí)題

技成PLC課堂

變頻器故障查詢

技成PLC學(xué)吧

伺服驅(qū)動故障查詢

技成PLC網(wǎng)校

當(dāng)前位置:技成首頁 > 文章中心 > 技成百科 > 用wincc的腳本進(jìn)行二進(jìn)制位變量的位操作和判斷

用wincc的腳本進(jìn)行二進(jìn)制位變量的位操作和判斷

鄭志武 發(fā)布于2013-11-08 11:42 5 0 標(biāo)簽:

建立一個16位的wincc二進(jìn)制位變量*,然后將S7的變量A,B,C。。。的值0/1按順序放到*中,放完后了再和固定值比對,每個位數(shù)值不對都對應(yīng)一個文字輸出。用腳本怎么編了?

問題補(bǔ)充:
思路是這樣的吧S7變量A,B,C等按順序排列放入WINCC變量中成一個01110111.。。。。的數(shù)或字符串,然后與固定值11111111比較,第四位和第八位不同則分別同時輸出兩個文本。不一個個比較是因為變量多了后太龐大了。

佳答案

在wincc中我習(xí)慣用字符串代替二進(jìn)制變量,因為不然的話可能涉及到wincc與PLC數(shù)據(jù)類型匹配的問題,而且,字符串函數(shù)可以幫助我們直觀快速地實現(xiàn)要求。
把PLC中的開關(guān)量(0/1)讀回來,在腳本中用cstr變成字符串。

針對你的問題,如果你plc中是一連串的點(diǎn),可以直接按字(八位)讀上來,再換成二進(jìn)制字符串。

如果你是在wincc中創(chuàng)建了一連串按規(guī)律命名的變量與plc變量相對應(yīng),比如在wincc中的變量A1-A10 對應(yīng)你plc的A,B,C...十個變量,那么
dim i
dim strBin
strBin = ""
For i = 1 to 10 Step 1
strBin = Cstr(HMIRuntime.Tags("A"&cstr(i)),Read)&strBin 
Next
'到此得到了你想要的二進(jìn)制的字符串形式,如果strBin在下文中再無用了,那完全可以不建立這個變量。
For i = 1 to 10 Step 1
     if Mid(strBin,i,1)<>Mid(你的固定值,i,1) then
       Select Case i
                 Case 10  A1(A)不同時的文本
                 Case 9   A2(B)不同時的文本
                  ...
       End select
     end if
Next

------------------------------------------------------------------------------------------------------------------------
以下是我程序中用到的一小段代碼,節(jié)選的,主要用于討論思路,dim什么的就省了。

For i = 3 To 14 Step 1
      idec = Int(HMIRuntime.Tags ("I"&CStr(i)).Read) '讀八位開關(guān)量回來
      ibinstr = ""    
      Do While idec > 0   '轉(zhuǎn)為二進(jìn)制字符串
      ibinstr = CStr(idec Mod 2) & ibinstr 
           idec = idec  2
      Loop 
    
If Len (ibinstr) <> 8 Then  '補(bǔ)全八位
 ibinstr = Left ("00000000",8 - Len (ibinstr)) & ibinstr   
End If 
    
binstrL = Right (ibinstr,4)
binstrH = Left (ibinstr,4) 
'這里是對兩個四位串操作,省略了    
IGDSTR = Mid (binstrH,1,1)&Mid(binstrL,1,1)&IGDSTR '獲取每個四位串中的位
Next

Dim tc 
tc = 0
For i = 1 To 24 Step 1
     If Mid(IGDSTR,i,1) = "1" Then
       tc = tc + 1  '統(tǒng)計字符串中有多少個'"1"
     End If 
Next

若有收獲,就點(diǎn)個贊吧!

文章來源于網(wǎng)絡(luò)及文獻(xiàn)如有侵權(quán)請聯(lián)系站長
分享到:

微信掃一掃分享

閱讀與本文標(biāo)簽相同的文章

相關(guān)推薦

最新文章 熱門文章
最新課程 免費(fèi)課程
PLC資料下載 電工電氣資料下載
應(yīng)用新秀
變頻器故障代碼查詢APP
伺服故障代碼查詢APP
技成
手機(jī)APP
熱門標(biāo)簽