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