西門子6SN1123-1AB00-0AA0
公司所售出的產(chǎn)品,全新原裝,質(zhì)保一年、但凡發(fā)現(xiàn)有任何質(zhì)量問題,可無條件退換(非人為損壞).
有需要聯(lián)系公司現(xiàn)貨價優(yōu)
【產(chǎn)品價格】電議(含17%增值稅)
【產(chǎn)品質(zhì)量】原裝正品、假一罰十。
【產(chǎn)品包裝】全新原裝、現(xiàn)貨銷售。
【售后服務】質(zhì)保一年,貨到后有任何質(zhì)量問題7天內(nèi)包換(人為除外)
希殿電氣技術(上海)有限公司(西門子合作伙伴)
聯(lián) 系 人 :康經(jīng)理(銷售工程師)
在線商務Q Q :192061030
聯(lián) 系 手 機 :18621061383(微信)
聯(lián) 系 電 話 :021-60541249
公 司 傳 真 :021-57271268
郵 箱 :192061030@qq.com
地 址:上海市金山區(qū)楓涇鎮(zhèn)涇波路999弄20棟
【分享】關于Variant數(shù)據(jù)類型在LAD中的簡單用法。 精華星級星級星級星級星級熱門
yming版主
2017-09-27 16:03:08樓主
在1200/1500版區(qū)中,有不少關于Variant的疑惑、討論。根據(jù)我對這個Variant的學習和使用,
結合各位大俠的表述,說一下我對它的認識和理解。
一、什么情況下,會考慮使用Variant?
如果你想做一個通用功能的函數(shù)、函數(shù)塊,而被處理的數(shù)據(jù)類型是不確定的(被處理數(shù)據(jù)可能是
整數(shù);也可能是實數(shù)等等);但執(zhí)行的功能是一樣的時候,就要考慮使用Variant。
二、Variant用在哪里?
Variant主要用在這個通用的函數(shù)(FC)、函數(shù)塊(FB)的接口處和它們的局部變量中。(如果
是一個專用的函數(shù)、函數(shù)塊,數(shù)據(jù)類型都是確定的,你不需要用Variant。)
三、Variant到底是什么?
Variant在使用上,雖然把它稱為指針,但實際上,它是在函數(shù)、函數(shù)塊上開了一個個不占用
空間的“口子”,對于函數(shù)要處理的各種數(shù)據(jù)類型變量,都可以通過它進入函數(shù)(只是進入哦,
函數(shù)內(nèi)的計算,不能在此取得數(shù)值)。
四、在哪里可以取得進入函數(shù)的Variant變量的值呢?
取得Variant變量的值是要用VariantGet獲得,用VariantPut輸出。
下面用個簡單例子來詳細說明:
首先注意到,用Variant做函數(shù),它只支持固件版本4.0以上的1200PLC。
例如:我需要個通用的功能函數(shù),來處理一個數(shù)值的1/2,然后輸出。根據(jù)以往項目經(jīng)驗,主要是處理整數(shù)
,雙精度整數(shù)、實數(shù)、長實數(shù)四種。準備寫個通用函數(shù)放到全局庫中,各項目可以調(diào)用。(否則我需要針對不同的數(shù)據(jù)類型寫四個FC。)
1、首先,新建個FC(取個名字HafB)
2、在函數(shù)輸入接口處寫個變量,數(shù)據(jù)類型選擇Variant;在輸出接口也寫個變量,數(shù)據(jù)類型也選
擇Variant。為了處理出錯,添加個狀態(tài)字。
然后使用中間局部變量,添加可能需要的各種數(shù)據(jù)類型,用它們來獲取實際使用時的值。最后用
個布爾值變量,控制本函數(shù)的ENO。
見下圖:
3、寫FC程序
程序很簡單,寫出一個程序段,然后就是復制-拷貝-粘貼,然后再用鼠標按住那幾個聲明的變量
拖-拽-放。
每一個處理程序段中,都是從VariantGet指令獲取這個數(shù)據(jù)類型的數(shù)值,然后處理計算,發(fā)送到
輸出,然后置位旗標。
4、函數(shù)測試
為方便測試,我建了個數(shù)據(jù)類型(一股腦的把四種類型都寫進去);然后建個全局DB,使用這個
自定義數(shù)據(jù)類型,分別作測試函數(shù)的輸入和輸出。
下圖:
然后
在主循環(huán)OB1中拖入4個寫好的FC(HafB),打開上述DB,用鼠標按住變量旗標,拖入到各自的
FC接口。下載硬件配置,下載全部程序,啟動運行。
故意用個不在范圍的數(shù)據(jù)類型,看看FC是如何處理的。
至此,一個簡單地、通用的FC就完成了??梢酝系阶约旱娜謳熘?,供以后調(diào)用啦。