默認(rèn)情況下,STEP 7-Micro/WIN SMART沒有集成模擬量處理的指令,我們需要自己編寫量程轉(zhuǎn)換的子程序才能完成模擬量的處理。這種量程轉(zhuǎn)換的原理可以看看我之前寫的文章(怎樣將模擬量的信號(hào)值轉(zhuǎn)換成工程量值?)。今天這篇文章,我想告訴大家一種相對(duì)簡(jiǎn)單的模擬量處理方式——使用Scale指令庫。
Scale指令庫其實(shí)也是西門子內(nèi)部人員編寫的,但不是官方正式發(fā)布的。我覺的這個(gè)指令庫還是蠻方便的,值得推薦給大家使用。下面我們分兩個(gè)步驟介紹:1)怎樣添加Scale指令庫?2)怎樣使用里面的指令?
1、怎樣添加Scale指令庫?
首先需要下載Scale指令庫。從哪里下載呢?可以到西門子的網(wǎng)站上搜索,另外文章的末尾提供下載的方法。
下載好后,將其放在一個(gè)指定的文件夾中。然后打開STEP 7-Micro/WIN SMART ,單擊【工具】菜單的【選項(xiàng)】按鈕,在彈出的對(duì)話框中,單擊【項(xiàng)目】,你會(huì)看到一個(gè)用戶庫文件夾路徑的設(shè)置,其默認(rèn)路徑如下圖:
你可以將下載的Scale指令拷貝到這個(gè)文件夾中,也可以單擊【瀏覽】將用戶庫文件夾指定到你當(dāng)前存放的路徑,單擊【確定】后,就可以在【指令】-【庫】中看到你新添加的scale指令。
下面這張圖是我添加用戶指令庫前后的對(duì)比(當(dāng)然,除了Scale還添加了一些其它指令庫):
2、怎樣使用Scale指令庫
Scale指令庫(v1.2)中有三條指令:S_ITR、S_RTR、S_RTI。名稱中的"S"代表"Scale",表示"量程";"I"代表"Integer",即"整數(shù)";"R"代表"Real",即"實(shí)數(shù)";"T"代表"To",即"轉(zhuǎn)換"的意思;
這樣就很好理解了,比如:S_ITR,就表示 Scale ,integer to real ,也就是整數(shù)到實(shí)數(shù)的量程轉(zhuǎn)換;而S_RTI,就表示,Scale,real to integer,也就是實(shí)數(shù)到整數(shù)的量程轉(zhuǎn)換;S_RTR,就表示,Scale,real to real,也就是實(shí)數(shù)到實(shí)數(shù)的量程轉(zhuǎn)換;
下面來具體看一下:
2.1、S_ITR
該指令可以處理模擬量輸入信號(hào),并轉(zhuǎn)換成相應(yīng)的工程值,其初始添加到程序塊中的狀態(tài)如下圖所示:
該指令有6個(gè)輸入?yún)?shù)和1個(gè)輸出參數(shù),含義如下:
-
EN:布爾值,指令使能;
-
Input:整數(shù),要轉(zhuǎn)換的變量;
-
ISH:Input Scaled High,整數(shù),輸入量程的上限;
-
ISL:Input Scaled Low,整數(shù),輸入量程的下限;
-
OSH:Output Scaled High,實(shí)數(shù),輸出量程的上限;
-
OSL:Output Scaled Low,實(shí)數(shù),輸出量程的下限;
-
Output:實(shí)數(shù),轉(zhuǎn)換后的變量;
舉例說明:
假設(shè)模擬量輸入模塊連接的外部壓力傳感器,輸入信號(hào)為0~20mA的電流信號(hào),壓力的范圍為0~10000 mbar,輸入通道的地址為:AIW16,轉(zhuǎn)換后數(shù)據(jù)存放在VD0中,則代碼如下:
如果壓力傳感器的信號(hào)為4~20mA,則需要把ISL的值改為5530,代碼如下:
2.2、S_RTI
該指令可以將工程值轉(zhuǎn)換成模擬量值進(jìn)行輸出,其初始添加到程序塊中的狀態(tài)如下:
該指令有6個(gè)輸入?yún)?shù)和1個(gè)輸出參數(shù),含義如下:
-
EN:布爾值,指令使能;
-
Input:實(shí)數(shù),要轉(zhuǎn)換的變量;
-
ISH:Input Scaled High,實(shí)數(shù),輸入量程的上限;
-
ISL:Input Scaled Low,實(shí)數(shù),輸入量程的下限;
-
OSH:Output Scaled High,整數(shù),輸出量程的上限;
-
OSL:Output Scaled Low,整數(shù),輸出量程的下限;
-
Output:整數(shù),轉(zhuǎn)換后的變量;
舉例說明:
假設(shè)使用4~20mA的模擬量輸出信號(hào)控制比例閥的輸出壓力,其輸出量程范圍為:0~6000mbar,輸出通道的地址為AQW32,輸出壓力設(shè)定值存放在VD4,則代碼如下:
假設(shè)輸出±10V的電壓信號(hào)用于速度控制,正值表示正轉(zhuǎn),負(fù)值表示反轉(zhuǎn),轉(zhuǎn)速絕對(duì)值的范圍為:0~3000r/min,輸出通道AQW34,輸出設(shè)定值VD8,則代碼如下:
2.3、S_RTR
該指令可以進(jìn)行實(shí)數(shù)與實(shí)數(shù)的量程轉(zhuǎn)換,它的輸入?yún)?shù)和輸出參數(shù)都是實(shí)數(shù);
舉個(gè)例子:
我們?cè)趯?shí)例1中獲取了一個(gè)壓力值放在VD0(pressureValue),它是范圍為0~10000mbar的數(shù)值,我們想把當(dāng)前壓力值以其量程的百分?jǐn)?shù)表示出來,轉(zhuǎn)換值存放在VD12(pressurePercentage)中,就可以使用如下的代碼:
好了,這就是Scale指令庫的指令介紹,主要用于模擬量信號(hào)的處理。
本文提供指令庫下載鏈接:http://www.tuo13886.net.cn/Soft/ruanjian/88.html