最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

WinCC腳本對變量位讀寫

2023-12-10 19:42 作者:工控小周  | 我要投稿

原創(chuàng)?RENHQ

有時候在項目里面需要對一個變量的位進行操作,比如為了節(jié)省授權(quán),一個無符號32位的變量可以節(jié)省31個BOOL類型的變量,我項目做的比較少,其他時候應(yīng)該也有這樣的需求,這里分別就用C和VBS腳本對變量的每一位的操作介紹一下。

在VBS腳本腳本里面,“AND”即有邏輯與運算的功能,也有對變量進行按位與運算,“OR”即有邏輯或運算的功能,也能對變量進行按位或運算,字面意思就能分辨。在C腳本里面的是按位與運算“&”;按位或運算是“|”。

當(dāng)對一個變量的某一位操作的時候,需要注意不能影響其他位的狀態(tài),根據(jù)邏輯運算可以知道,和TRUE進行邏輯運算,結(jié)果是不變的,和False進行或運算,結(jié)果也是不會發(fā)生改變的,所以不管VBS還是C腳本,對位操作都是這個思路,想對一個變量的某一位置1的時候,就進行按位或運算,該位是1,其他位都是0,對變量的某一位置0的時候,進行按位與運算,該位是0,其他位是1,舉個例子,在VBS腳本里面對一個8位無符號的變量的第4位(0位開始),分別進行置1和置0的腳本如下:

'對第4位置1
Dim BIT
Set BIT = HMIRuntime.Tags("8BIT")
BIT.Write BIT.Read Or 16

'下面是對第4位置0
Dim BIT
Set BIT = HMIRuntime.Tags("8BIT")
BIT.Write BIT.Read And &HEF

C腳本里面對第7位置1和置0如下:

// 下面是對第7位置1,去除了WinCC里面的注釋
#define TAG "8BIT"
SetTagByte(TAG,(BYTE)(GetTagByte(TAG) | 0x80));

// 下面是對第7位置0
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
#define TAG "8BIT"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END

// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
SetTagByte(TAG,(BYTE)(GetTagByte(TAG) & 0x7F));

上面是對變量的寫操作,那還有對變量的讀操作,下面以WinCC8.0為例,我個人認(rèn)為常用的4中方法分別說明一下。

  1. 忘了哪個版本新增的動畫組態(tài)功能,有點類似博途組態(tài)動畫的操作,組態(tài)的大題過程看圖里面的箭頭

  1. 再就是WinCC所有版本里面都有的直接動態(tài)對話框組態(tài),看附圖

  1. VBS腳本,這次以圖片的形式顯示吧

  1. C腳本,也是用圖片顯示

如果只是一般的狀態(tài)顯示,推薦第一種或者第二種,除非腳本還有別的功能,要不然不推薦腳本,一個畫面里面腳本多了,會影響運行速度的。最后是動圖演示,呃,那個變量名寫錯了,本來是想用32位的,結(jié)果做畫面的時候32位實在太麻煩了,所以變量名就改成了8BIT:

PS:

做這種有技術(shù)性的內(nèi)容,還是比較麻煩的,需要做畫面,然后測試,測試沒問題了,再寫出來,最后做動圖了才發(fā)現(xiàn)變量名稱沒改,不想再弄了,就這樣吧

祝賀已超 1 萬工控人加入 PLC 工業(yè)自動化精 英群

祝賀已超 1 萬工控人加入 PLC 工業(yè)自動化精 英群

WinCC腳本對變量位讀寫的評論 (共 條)

分享到微博請遵守國家法律
集贤县| 东丰县| 景宁| 图片| 巴楚县| 页游| 罗定市| 贡山| 道孚县| 盘锦市| 贺兰县| 交城县| 邢台县| 永丰县| 都昌县| 新宾| 德清县| 邓州市| 汉源县| 岫岩| 花莲县| 栖霞市| 绵竹市| 平顶山市| 棋牌| 三穗县| 无锡市| 石棉县| 弥渡县| 阜南县| 定安县| 吉首市| 惠州市| 休宁县| 阳谷县| 化隆| 鞍山市| 民权县| 奇台县| 沭阳县| 泌阳县|