西門子的USS通訊,無需使用特殊硬件,PLC與變頻器都有繼承的串口,簡單,價廉。如果要使用總線的話,就需要額外使用通訊卡或適配器。
PLC 與驅動裝置連接,主要實現(xiàn)的任務是:
控制驅動裝置的啟動、停止等運行狀態(tài)
控制驅動裝置的轉速等參數(shù)
獲取驅動裝置的狀態(tài)和參數(shù)
S7-200 和西門子傳動裝置主要可以通過以下幾種方式連接在一起工作:
S7-200 通過數(shù)字量(DI/DO)信號控制驅動裝置的運行狀態(tài)和速度
S7-200 通過數(shù)字量信號控制驅動裝置的運行狀態(tài);通過模擬量(AI/AO)信號控制轉速等參數(shù)
S7-200 通過串行通信控制驅動裝置的運行和各種參數(shù)
****************************************************************************************************
由于題目的需要,那就使用“S7-200 通過串行通信控制驅動裝置的運行 ”,也就是控制啟停。
S7-200 CPU 將在 USS 通信中作為主站。而變頻器則為USS從站。
當S7-200的編程軟件為V4.0 SP5以上的話,就包括USS協(xié)議指令庫,以下介紹通過西門子提供的 USS 指令庫與 MM 440 之間的串行通信控制。
1、關于指令庫
見下圖,就是安裝了USS協(xié)議指令庫的指令樹。
西門子的標準 USS 協(xié)議庫以淺藍色圖標表示。如果未找到淺藍色圖標的指令庫,說明系統(tǒng)中沒有安裝西門子標準指令庫。必須先安裝標準指令庫。
2、USS 初始化指令
西門子的 S7-200 USS 標準指令庫包括 14 個子程序和 3 個中斷服務程序。但是只有 8 個指令可供用戶使用。一些子程序和所有中斷服務程序都在調用相關的指令后自動起作用。每個 USS 庫應用都要先進行 USS 通信的初始化。使用 USS_INIT 指令初始化 USS 通信功能。
打開 USS 指令庫分支,像調用子程序一樣調用 USS_INIT 指令。
上圖中:
a. EN: 初始化程序 USS_INIT 只需在程序中執(zhí)行一個周期就能改變通信口的功能,以及進行其他一些必要的初始設置,因此可以使用 SM0.1 或者沿觸發(fā)的接點調用 USS_INIT 指令;
b. Mode: 模式選擇,執(zhí)行 USS_INIT 時 ,Mode 的狀態(tài)決定 是否在 Port 0 上使用 USS 通信功能;
= 1 設置 Port 0 為 USS 通信協(xié)議并進行相關初始化
0 恢復 Port 0 為 PPI 從站模式
c. Baud: USS 通信波特率。此參數(shù)要和變頻器的參數(shù)設置一致;
= 2400 2400 bit/s
4800 4800 bit/s
9600 9600 bit/s
19200 19200 bit/s
38400 38400 bit/s
57600 57600 bit/s
115200 115200 bit/s
d. Active: 此參數(shù)決定網絡上的哪些 USS 從站在通信中有效。詳見下面的說明;
e. Done: 初始化完成標志
f. Error: 初始化錯誤代碼
Active 參數(shù) USS_INIT 子程序的 Active 參數(shù)用來表示網絡上哪些 USS 從站要被主站訪問,即在主站的輪詢表中激活。網絡上作為 USS 從站的驅動裝置每個都有不同的 USS 協(xié)議地址,主站要訪問的驅動裝置,其地址必須在主站的輪詢表中激活。USS_INIT 指令只用一個 32 位長的雙字來映射 USS 從站有效地址表,Active 的無符號整數(shù)值就是它在指令輸入端的取值。
在上表中的這個 32 位的雙字中,每一位的位號表示 USS 從站的地址號;要在網絡中激活某地址號的驅動裝置,則需要把相應位號的位置設為二進制“1",不需要激活 USS 從站,相應的位設置為”0"。最后對此雙字取無符號整數(shù)就可以得出 Active 參數(shù)的取值。
將使用站地址為 3 的 MM 440 變頻器,則須在位號為 03 的位單元格中填入二進制“1"。其他不需要激活的地址 對應的位設置為”0"。取整數(shù),計算出的 Active 值為 00000008 h,即 16#00000008,也等于十進制數(shù) 8(如調用 USS_INIT 指令中的 d)
我一般都是使用 16 進制數(shù),這樣可以每 4 位一組進行加權計算出 16 進制數(shù),并組合成一個整數(shù)。 如果一時難以計算出有多個 USS 從站配置情況下的 Active 值,可以使用 Windows 自帶的計算器。將其設置為科學計算器模式,可以方便地轉換數(shù)制。
3、分配庫存儲區(qū)地址
指令庫或者向導都要求分配庫存儲區(qū)地址,這也是使用西門子200容易忽略的步驟。
USS 指令庫需要大概 400 個字節(jié)的 V 存儲區(qū)用于支持其工作。調用 USS_INIT 指令后就可以為 USS 指令庫分配庫存儲區(qū)。也可以在編程的稍后階段分配存儲區(qū)地址,但這一步是必不可少的,否則程序無法通過編譯。注意: S7-200 中的數(shù)據(jù)存儲區(qū)分配原則,分配給庫指令的數(shù)據(jù)區(qū)絕對不能與其他程序使用的數(shù)據(jù)區(qū)有任何重疊。否則會造成出錯。
在指令樹的Project(項目)中,以鼠標右鍵單擊Program Block(程序塊),在彈出的快捷菜單中選擇Library Memory。如下圖所示:
4、USS 驅動裝置控制功能塊
USS_CTRL 指令用于對單個驅動裝置進行運行控制。這個功能塊利用了 USS 協(xié)議中的 PZD 數(shù)據(jù)傳輸,控制和反饋信號更新較快。
網絡上的每一個激活的 USS 驅動裝置從站,都要在程序中調用一個獨占的 USS_CTRL 指令,而且只能調用一次。需要控制的驅動裝置必須在 USS 初始化指令運行時定義為“激活”。
在 USS 通信指令庫分支中選擇 USS_CTRL 指令
上圖中:
a. EN: 使用 SM0.0 使能 USS_CTRL 指令
b. RUN: 驅動裝置的啟動/停止控制
= 0 停止
1 運行
此停車是按照驅動裝置中設置的斜坡減速指電機停止
c. OFF2: 停車信號 2。此信號為“1"時,驅動裝置將封鎖主回路輸出,電機自由停車
d. OFF3: 停車信號 3。此信號為”1"時,驅動裝置將快速停車
e. F_ACK: 故障確認。當驅動裝置發(fā)生故障后,將通過狀態(tài)字向 USS 主站報告;如果造成故障的原因排除,可以使用此輸入端清除驅動裝置的報警狀態(tài),即復位。注意這是針對驅動裝置的操作。
f. DIR: 電機運轉方向控制。其“0/1”狀態(tài)決定運行方向
g.Drive: 驅動裝置在 USS 網絡上的站號。從站必須先在初始化時激活才能進行控制
h.Type: 向 USS_CTRL 功能塊指示驅動裝置類型
= 0 MM 3 系列,或更早的產品
1 MM 4 系列,SINAMICS G 110
i. Speed_SP: 速度設定值。速度設定值必須是一個實數(shù),給出的數(shù)值是變頻器的頻率范圍百分比還是絕對的頻率值取決于變頻器中的參數(shù)設置(如 MM 440 的 P2009)
j. Resp_R: 從站應答確認信號。主站從 USS 從站收到有效的數(shù)據(jù)后,此位將為“1"一個程序掃描周期,表明以下的所有數(shù)據(jù)都是最新的
k. Error: 錯誤代碼。0 = 無出錯。其他錯誤代碼請參考
l. Status: 驅動裝置的狀態(tài)字。此狀態(tài)字直接來自驅動裝置的狀態(tài)字,表示了當時的實際運行狀態(tài)
詳細的狀態(tài)字信息意義請參考相應的驅動裝置手冊。
m. Speed: 驅動裝置返回的實際運轉速度值,實數(shù)。是否頻率值跟隨設定值的規(guī)格化設定
n. Run_EN: 運行模式反饋,表示驅動裝置是運行(為 1)還是停止(為 0)
o. D_Dir: 指示驅動裝置的運轉方向,反饋信號
p. Inhibit: 驅動裝置禁止狀態(tài)指示(0 - 未禁止,1 - 禁止狀態(tài))。禁止狀態(tài)下驅動裝置無法運行。要清除禁止狀態(tài),故障位必須復位,并且 RUN, OFF2 和 OFF3 都為 0
q. Fault: 故障指示位(0 - 無故障,1 - 有故障)。表示驅動裝置處于故障狀態(tài),驅動裝置上會顯示故障代碼(如果有顯示裝置)。要復位故障報警狀態(tài),必須先消除引起故障的原因,然后用 F_ACK 或者驅動裝置的端子、或操作面板復位故障狀態(tài)。
USS_CTRL 已經能完成基本的驅動裝置控制,如果需要有更多的參數(shù)控制選項,可以選用 USS 指令庫中的參數(shù)讀寫指令實現(xiàn)。
5、MM 440 的參數(shù)設置
5.1 控制源參數(shù)設置
控制命令控制驅動裝置的啟動、停止、正/反轉等功能。控制源參數(shù)設置決定了驅動裝置從何種途徑接受控制信號。
控制源由參數(shù) P0700 設置,選擇5
5.2 設定源控制參數(shù)
設定值控制驅動裝置的轉速/頻率等功能。設定源參數(shù)決定了驅動裝置從哪里接受設定值(即給定)。
設定源由參數(shù) P1000 設置:同樣選擇5
5.3 USS 通信控制的參數(shù)設置
主要參數(shù)有:
1. P0700: 設置 P0700[0] = 5,即控制源來自 COM Link 上的 USS 通信
2. P1000: 設置 P1000[0] = 5,即設定源來自 COM Link 上的 USS 通信
3. P2009: 決定是否對 COM Link 上的 USS 通信設定值規(guī)格化,即設定值將是運轉頻率的百分比形式,還是絕對頻率值
= 0 不規(guī)格化 USS 通信設定值,即設定為變頻器中的頻率設定范圍的百分比形式。
1 對 USS 通信設定值進行規(guī)格化,即設定值為絕對的頻率數(shù)值。
4. P2010: 設置 COM Link 上的 USS 通信速率。根據(jù) S7-200 通信口的限制,支持的通信波特率有:
= 4 2400 bit/s
5 4800 bit/s
6 9600 bit/s
7 19200 bit/s
8 38400 bit/s
9 57600 bit/s
12 115200 bit/s
5. P2011: 設置 P2011[0] = 0 至 31,即驅動裝置 COM Link 上的 USS 通信口在網絡上的從站地址。
USS 網絡上不能有任何兩個從站的地址相同。
6. P2012: 設置 P2012[0] = 2,即 USS PZD 區(qū)長度為 2 個字長。
7. P2013: 設置 P2013[0] = 127,即 USS PKW 區(qū)的長度可變。
8. P2014: 設置 P2014[0] = 0 至 65535,即 COM Link 上的 USS 通信控制信號中斷超時時間,單位為 ms。如設置為 0,則不進行此端口上
的超時檢查。
此通信控制信號中斷,指的是接收到的對本裝置有效通信報文之間的最大間隔。如果設定了超時時間,報文間隔超過此設定時間還沒有接收到
下一條信息,則會導致 F0072 錯誤,變頻器將會停止運行。通信恢復后此故障才能被復位。
根據(jù) USS 網絡通信速率和站數(shù)的不同,此超時值會不同。如果要設定超時值,請參考相關表格,并選取一個適當?shù)臄?shù)值。
9. P0971: 設置 P0971 = 1,上述參數(shù)將保存入MM 440 的 EEPROM 中。
USS 通信是由 S7-200 和驅動裝置配合,因此相關參數(shù)一定要配合設置。如通信速率設置不一樣,當然無法通信。
我這有個西門子的PLC和變頻器DP通訊
一、硬件組態(tài)
1. 將MASTERDRIVES CBP/CBP2 加入組態(tài)
2. Profibus 地址
3. 將MICR.master4 加入組態(tài)
4. Profibus 地址
二、選擇數(shù)據(jù)格式
1. MASTERDRIVE中可供選擇的PP0類型
2. I/Q address
3. MICR.master4 中可供選擇的數(shù)據(jù)格式
4. I/Q address
Step 7 中的編程
創(chuàng)建數(shù)據(jù)塊DB1
說明:
1.在Step7 中對PKW (參數(shù)區(qū))讀寫參數(shù)時調用SFC14和 SFC15
2. SFC14(“DPRD_DAT”)用于讀Profibus 從站的數(shù)據(jù)
3. SFC15(“DPWR_DAT”)用于將數(shù)據(jù)寫入Profibus 從站
4. W#16#100(即256)是硬件組態(tài)時PKW的起始地址
舉例
讀參數(shù)r015
1. W#16#100(即256)是硬件組態(tài)時PKW的起始地址
2 .將從站數(shù)據(jù)讀入DB1.DBX0.0 開始的8個字節(jié)(P#DB1.DBX0.0 BYTE 8)
PKE -> DB1.DBW0
IND -> DB1.DBW2
PWE1 -> DB1.DBW4 參數(shù)值的高字位
PWE2 -> DB1.DBW6 參數(shù)值的低字位
3 .將DB1.DBX28.0 開始的8個字節(jié)寫入從站(P#DB1.DBX28.0 BYTE 8)
DB1.DBW28 -> PKE
DB1.DBW30 -> IND
參數(shù)值的高字位 DB1.DBW32 -> PWE1
參數(shù)值的低字位 DB1.DBW34 -> PWE2
舉例
讀參數(shù)P401.2
1. W#16#100(即256)是硬件組態(tài)時PKW的起始地址
2 .將從站數(shù)據(jù)讀入DB1.DBX0.0 開始的8個字節(jié)(P#DB1.DBX0.0 BYTE 8)
PKE -> DB1.DBW0
IND -> DB1.DBW2
PWE1 -> DB1.DBW4 參數(shù)值的高字位
PWE2 -> DB1.DBW6 參數(shù)值的低字位
3 . 將DB1.DBX28.0 開始的8個字節(jié)寫入從站(P#DB1.DBX28.0 BYTE 8)
DB1.DBW28 -> PKE
DB1.DBW30 -> IND
參數(shù)值的高字位 DB1.DBW32 -> PWE1
參數(shù)值的低字位 DB1.DBW34 -> PWE2
舉例
3. 讀參數(shù)U001.2
1. W#16#100(即256)是硬件組態(tài)時PKW的起始地址
2 .將從站數(shù)據(jù)讀入DB1.DBX0.0 開始的8個字節(jié)(P#DB1.DBX0.0 BYTE 8)
PKE -> DB1.DBW0
IND -> DB1.DBW2
PWE1 -> DB1.DBW4 參數(shù)值的高字位
PWE2 -> DB1.DBW6 參數(shù)值的低字位
3 . 將DB1.DBX28.0 開始的8個字節(jié)寫入從站(P#DB1.DBX28.0 BYTE 8)
DB1.DBW28 -> PKE
DB1.DBW30 -> IND
參數(shù)值的高字位 DB1.DBW32 -> PWE1
參數(shù)值的低字位 DB1.DBW34 -> PWE2
舉例(寫參數(shù))
4. 寫參數(shù)P401.1 (將W#16#1000 寫入P401.1中)
1.將W#16# 8191 寫入DB1.DBW28 (PWE)
1. W#16#100(即256)是硬件組態(tài)時PKW的起始地址
2 .將從站數(shù)據(jù)讀入DB1.DBX0.0 開始的8個字節(jié)(P#DB1.DBX0.0 BYTE 8)
PKE -> DB1.DBW0
IND -> DB1.DBW2
PWE1 -> DB1.DBW4 參數(shù)值的高字位
PWE2 -> DB1.DBW6 參數(shù)值的低字位
3 . 將DB1.DBX28.0 開始的8個字節(jié)寫入從站(P#DB1.DBX28.0 BYTE 8)
DB1.DBW28 -> PKE
DB1.DBW30 -> IND
參數(shù)值的高字位 DB1.DBW32 -> PWE1
參數(shù)值的低字位 DB1.DBW34 -> PWE2
對PZD (過程數(shù)據(jù))的讀寫
說明:
1. 在Step7 中對PZD (過程數(shù)據(jù))讀寫參數(shù)時調用SFC14和SFC15
2. SFC14(“DPRD_DAT”)用于讀Profibus 從站的數(shù)據(jù)
3. SFC15(“DPWR_DAT”)用于將數(shù)據(jù)寫入Profibus 從站
4. W#16#108(即264)是硬件組態(tài)時PZD的起始地址
5. 對特殊結構的PZD 可用PQW , PIW 進行讀寫
舉例
5: 對PPO5 中10PZD的讀寫
DB1中與PZD相對應的數(shù)據(jù)字
1.在P918 中設置Profibus 地址,必須與Step 7 中設置相同.地址不能重復.
2. 控制字第十位置“1”. PZD1 = W#16#X4XX