此范例將向大家介紹如何應用S7-200 SMART 的 USS 協議對西門子V20 變頻器進行通訊控制。使大家更加熟練的掌握和靈活的應用S7-200 SMART 的 USS通訊協議功能。
一、 通訊連接:
用電纜將S7-200 SMART Port 0端口與V20的RS485接口相連(注意端口連接規則:V20的P+對3、N-對8),如下圖所示:
二、 西門子V20系列變頻器通訊參數設置
1. 首先對變頻器恢復出廠設置:設置P0010=30,P0970=21
2. 選擇連接宏 Cn010 -USS控制
3. 選擇設定好連接宏為CN010后,設置P0003=3(專家級),修改P2014=0
三、 程序編寫
S7-200 SMART USS 標準指令庫包括 USS_INIT、USS_CTRL、USS_RPM_X、USS_WPM_X等指令。調用這些指令時會自動增加一些子程序和中斷服務程序。
選擇 USS_INIT 指令,初始化模塊初始化S7-200 SMART的PORT0端口
EN:初始化程序 USS_INIT 只需在程序中執行一個周期就能改變通信口的功能,以及進行其他一些必要的初始設置,因此可以使用 SM0.1 或者沿觸發的接點調用 USS_INIT 指令;
Mode:模式選擇,執行 USS_INIT 時 ,Mode 的狀態決定在通訊端口上是否使用 USS 通信功能;
= | 1 | 設置為 USS 通信協議并進行相關初始化 | |
0 | 恢復為 PPI 協議并禁用USS通信 |
Baud:USS 通信波特率。此參數要和變頻器的參數設置*;
= | 1200 bit/s | |
2400 bit/s | ||
4800 bit/s | ||
9600 bit/s | ||
19200 bit/s | ||
38400 bit/s | ||
57600 bit/s | ||
115200 bit/s |
Port: 0 = CPU 集成的 RS485 通訊端口;1 = 可選CM 01 信號板。
Active:指示激活的變頻器站地址。
Done:初始化完成標志
Error:初始化錯誤代碼
Active參數:USS_INIT 子程序的 Active 參數用來表示網絡上哪些 USS 從站要被主站訪問,即在主站的輪詢表中激活。網絡上作為 USS 從站的驅動裝置每個都有不同的 USS 協議地址,主站要訪問的驅動裝置,其地址必須在主站的輪詢表中激活。USS_INIT 指令只用一個 32 位長的雙字來映射 USS 從站有效地址表,Active 的無符號整數值就是它在指令輸入端的取值。
表 1. 從站地址映射
在這個 32 位的雙字中,每一位的位號表示 USS 從站的地址號;要在網絡中激活某地址號的驅動裝置,則需要把相應位號的位置設為二進制“1",不需要激活 USS 從站,相應的位設置為”0"。zui后對此雙字取無符號整數就可以得出 Active 參數的取值。
在表 1 的例子中,如果使用站地址為 1 的 V20變頻器,則須在位號為 01 的位單元格中填入二進制“1"。其他不需要激活的地址 對應的位設置為”0"。取整數,計算出的 Active 值為 00000002 h,即 16#00000002,也等于十進制數2。
建議使用 16 進制數,這樣可以每 4 位一組進行加權計算出 16 進制數,并組合成一個整數。當然也可以表示為十進制或二進制數值,但有時會很麻煩,而且不直觀。
如果一時難以計算出有多個 USS 從站配置情況下的 Active 值,可以使用 Windows 自帶的計算器。將其設置為科學計算器模式,可以方便地轉換數制。
選擇 USS_CTRL指令,用于對單個驅動裝置進行運行控制
EN: 使用 SM0.0 使能 USS_CTRL 指令
RUN:驅動裝置的啟動/停止控制
= | 0 | 停止 |
1 | 運行 |
此停車是按照驅動裝置中設置的斜坡減速指電機停止
OFF2:停車信號 2。此信號為“1”時,驅動裝置將鎖主回路輸出,電機自由停車
OFF3:停車信號 3。此信號為“1”時,驅動裝置將快速停車
F_ACK: 故障確認。當驅動裝置發生故障后,將通過狀態字向 USS 主站報告;如果造成故障的原因排除,可以使用此輸入端清除驅動裝置的報警狀態,即復位。注意這是針對驅動裝置的操作。
DIR: 電機運轉方向控制。其“0/1”狀態決定運行方向
Drive:驅動裝置在 USS 網絡上的站號。從站必須先在初始化時激活才能進行控制
Type: 向 USS_CTRL 功能塊指示驅動裝置類型
= | 0 | MM 3 系列,或更早的產品 |
1 | MM 4 系列,SINAMICS G 110,SINAMICS V 20 |
Speed_SP:速度設定值。該速度是全速的一個百分數;“Speed_SP”為負值將導致變頻器反向運行。
Resp_R:從站應答確認信號。主站從 USS 從站收到有效的數據后,此位將為“1"一個程序掃描周期,表明以下的所有數據都是的
Error: 錯誤代碼。0 = 無出錯。其他錯誤代碼請參考
Status:驅動裝置的狀態字。此狀態字直接來自驅動裝置的狀態字,表示了當時的實際運行狀態
詳細的狀態字信息意義請參考相應的驅動裝置手冊。
Speed:驅動裝置返回的實際運轉速度值,實數。
Run_EN:運行模式反饋,表示驅動裝置是運行(為 1)還是停止(為 0)
D_Dir:指示驅動裝置的運轉方向,反饋信號
Inhibit: 驅動裝置禁止狀態指示(0 - 未禁止,1 - 禁止狀態)。禁止狀態下驅動裝置無法運行。要清除禁止狀態,故障位必須復位,并且 RUN, OFF2 和 OFF3 都為 0
Fault:故障指示位(0 - *,1 - 有故障)。表示驅動裝置處于故障狀態,驅動裝置上會顯示故障代碼(如果有顯示裝置)。要復位故障報警狀態,必須先消除引起故障的原因,然后用 F_ACK 或者驅動裝置的端子、或操作面板復位故障狀態。
因Speed_SP為速度是全速的一個百分數,即輸入50HZ對應*,轉換如下圖:
讀寫參數
在任一時刻 USS 主站內只能有一個參數讀寫功能塊有效,否則會出錯。因此如果需要讀寫 多個參數(來自一個或多個驅動裝置),必須在編程時進行讀寫指令之間的輪替處理。
輪詢處理方式可以參考下面給出一個簡單的例子,方法不是*的。
讀取V20頻率實際值,讀參數號r0021,經過濾波的頻率實際值[Hz]
EN: 要使能讀寫指令此輸入端必須為 1
XMT_REQ: 發送請求。必須使用一個沿檢測觸點以觸發讀操作,它前面的觸發條件必須與 EN 端輸入*
Drive: 要讀寫參數的驅動裝置在 USS 網絡上的地址
Param: 參數號(僅數字)。此處也可以是變量
Index:參數下標。有些參數由多個帶下標的參數組成一個參數組,下標用來指出具體的某個參數。對于沒有下標的參數,可設置為 0
DB_Ptr: 讀寫指令需要一個 16 字節的數據緩沖區,用間接尋址形式給出一個起始地址。此數據緩沖區與“庫存儲區”不同,是每個指令(功能塊)各自獨立需要的。
此數據緩沖區也不能與其他數據區重疊,各指令之間的數據緩沖區也不能沖突
Done: 讀寫功能完成標志位,讀寫完成后置 1
Error:出錯代碼。0 = 無錯誤
Value:讀出的數據值。該數據值在 “Done”位為1時有效。
讀取V20電流實際值,讀參數號r0027,輸出電流實際值
讀寫實數(浮點)類型參數
使用USS_RPM_R讀取參數P1058的值
注意:
(1)讀參數P1058,其數據類型為實數。
(2)只要M10.1接通一個上升沿,就完成一次P1058參數的讀操作。
(3)讀入的參數被放在VD116里。
(4)需要注意的是Index為0時代表讀Pxxx.0參數組
使用USS_RPM_R修改參數P1058的值
注意:
(1)寫參數P1058.In000,其數據類型為浮點數。
(2)只要給M10.2一個上升沿,就完成一次參數P1058.In000的寫操作。
(3)EEPR~的邏輯為0時,寫入的值只保存到RAM中,為1時,寫入得值保存到EEPROM。
(4)EEPROM中寫數據是有次數限制的,V20zui多不超過50000次
分配庫存儲區地址
USS 指令庫需要大概 402 個字節的 V 存儲區用于支持其工作。調用 USS_INIT 指令后就可以為 USS 指令庫分配庫存儲區。也可以在編程的稍后階段分配存儲區地址,但這一步是*的,否則程序無法通過編譯。
根據 S7-200 SMART中的數據存儲區分配原則,分配給庫指令的數據區不能與其他程序使用的數據區有任何重疊。否則會造成出錯。
右擊庫,點擊庫存儲器
分配庫存儲器地址
zui后編譯下載整個項目
打開狀態圖表,設定頻率為5HZ,修改點動頻率值為8.8HZ,運行變頻器
西門子V20 3KW變頻器6SL3210-5BB23-0UV0
西門子V20 3KW變頻器6SL3210-5BB23-0UV0