S7-200 SMART怎樣添加和使用模擬量指令庫?

默認情況下,STEP 7-Micro/WIN SMART沒有集成模擬量處理的指令,我們需要自己編寫量程轉換的子程序才能完成模擬量的處理。這種量程轉換的原理可以看看我之前寫的文章(怎樣將模擬量的信號值轉換成工程量值?)。今天這篇文章,我想告訴大家一種相對簡單的模擬量處理方式——使用Scale指令庫。

S7-200 SMART怎樣添加和使用模擬量指令庫?

封面

封面原圖由Gordon Johnson在Pixabay上發佈,經適當修改後用作本文封面

Scale指令庫其實也是西門子內部人員編寫的,但不是官方正式發佈的。我覺得這個指令庫還是蠻方便的,值得推薦給大家使用。下面我們分兩個步驟介紹:1)怎樣添加Scale指令庫?2)怎樣使用裡面的指令?

1、怎樣添加Scale指令庫?

首先需要下載Scale指令庫。從哪裡下載呢?可以到西門子的網站上搜索,另外文章的末尾提供下載的方法。

下載好後,將其放在一個指定的文件夾中。然後打開STEP 7-Micro/WIN SMART ,單擊【工具】菜單的【選項】按鈕,在彈出的對話框中,單擊【項目】,你會看到一個用戶庫文件夾路徑的設置,其默認路徑如下圖:

S7-200 SMART怎樣添加和使用模擬量指令庫?

你可以將下載的Scale指令拷貝到這個文件夾中,也可以單擊【瀏覽】將用戶庫文件夾指定到你當前存放的路徑,單擊【確定】後,就可以在【指令】-【庫】中看到你新添加的scale指令。

下面這張圖是我添加用戶指令庫前後的對比(當然,除了Scale還添加了一些其它指令庫):

S7-200 SMART怎樣添加和使用模擬量指令庫?

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,也就是實數到實數的量程轉換;

下面來具體看一下:

2.1、S_ITR

該指令可以處理模擬量輸入信號,並轉換成相應的工程值,其初始添加到程序塊中的狀態如下圖所示:

S7-200 SMART怎樣添加和使用模擬量指令庫?

該指令有6個輸入參數和1個輸出參數,含義如下:

  • EN:布爾值,指令使能;
  • Input:整數,要轉換的變量;
  • ISH:Input Scaled High,整數,輸入量程的上限;
  • ISL:Input Scaled Low,整數,輸入量程的下限;
  • OSH:Output Scaled High,實數,輸出量程的上限;
  • OSL:Output Scaled Low,實數,輸出量程的下限;
  • Output:實數,轉換後的變量;

舉例說明:

假設模擬量輸入模塊連接的外部壓力傳感器,輸入信號為0~20mA的電流信號,壓力的範圍為0~10000 mbar,輸入通道的地址為:AIW16,轉換後數據存放在VD0中,則代碼如下:

S7-200 SMART怎樣添加和使用模擬量指令庫?

如果壓力傳感器的信號為4~20mA,則需要把ISL的值改為5530,代碼如下:

S7-200 SMART怎樣添加和使用模擬量指令庫?

2.2、S_RTI

該指令可以將工程值轉換成模擬量值進行輸出,其初始添加到程序塊中的狀態如下:

S7-200 SMART怎樣添加和使用模擬量指令庫?

該指令有6個輸入參數和1個輸出參數,含義如下:

  • EN:布爾值,指令使能;
  • Input:實數,要轉換的變量;
  • ISH:Input Scaled High,實數,輸入量程的上限;
  • ISL:Input Scaled Low,實數,輸入量程的下限;
  • OSH:Output Scaled High,整數,輸出量程的上限;
  • OSL:Output Scaled Low,整數,輸出量程的下限;
  • Output:整數,轉換後的變量;

舉例說明:

假設使用4~20mA的模擬量輸出信號控制比例閥的輸出壓力,其輸出量程範圍為:0~6000mbar,輸出通道的地址為AQW32,輸出壓力設定值存放在VD4,則代碼如下:

S7-200 SMART怎樣添加和使用模擬量指令庫?

假設輸出±10V的電壓信號用於速度控制,正值表示正轉,負值表示反轉,轉速絕對值的範圍為:0~3000r/min,輸出通道AQW34,輸出設定值VD8,則代碼如下:

S7-200 SMART怎樣添加和使用模擬量指令庫?

2.3、S_RTR

該指令可以進行實數與實數的量程轉換,它的輸入參數和輸出參數都是實數;

舉個例子:

我們在實例1中獲取了一個壓力值放在VD0(pressureValue),它是範圍為0~10000mbar的數值,我們想把當前壓力值以其量程的百分數表示出來,轉換值存放在VD12(pressurePercentage)中,就可以使用如下的代碼:

S7-200 SMART怎樣添加和使用模擬量指令庫?

好了,這就是Scale指令庫的指令介紹,主要用於模擬量信號的處理。點擊左下角【瞭解更多】可以進入下載指令庫的鏈接。


分享到:


相關文章: