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