?? tip028.ob1
字號:
// Tip028B
// 題目:
// S7-214與SIMOVERT 電機(jī)驅(qū)動器之間的自由通信口通信接口
//***概述***
//S7-214通過與一臺SIMOVERT微型主電機(jī)驅(qū)動器通信來起動和停止電機(jī),以及改變輸出
//到電機(jī)的頻率。通信是通過S7-200自由通信口模式進(jìn)行,使用USS5字協(xié)議。輸入仿真
//器用來初始化發(fā)給電機(jī)驅(qū)動器的命令。
//***硬件要求***
//這個程序假定使用者已正確地將電機(jī)和微型主電機(jī)驅(qū)動器接好線,并且所有的電機(jī)和
//微型主機(jī)驅(qū)動器的參數(shù)已通過人工設(shè)定了。必須把微型主電機(jī)驅(qū)動器設(shè)置在遙控方式
//(P910=1),波特率19.2kb(P920=7),地址 1(P91=1).
//
//要求用一根帶9針陽性插頭的通信電纜接在S7-214的1,3,8端上,電纜另一端是無插
//頭的,以便接到微型主電機(jī)驅(qū)動器的13,14,15端子上(1接15,3接13,8接14)。
//***程序結(jié)構(gòu)***
//
// Main 主程序:監(jiān)視用于自由通信口/PPI通信切換的RUN/TERM開關(guān),尋找輸入
信號上升沿作業(yè)電機(jī)命令。
// SBR0 設(shè)置自由通信口通信:首次掃描時設(shè)置自由通信口模式的參數(shù)。
// SBR1 RUN子程序:設(shè)定電機(jī)恒速運(yùn)轉(zhuǎn)
// SBR2 PAMP子程序:設(shè)定電機(jī)變速運(yùn)轉(zhuǎn)。
// SBR3 增加頻率倍率的子程序:增加微型主電機(jī)驅(qū)動器的輸出頻率
// SBR4 降低頻率倍率的子程序:降低微型主電機(jī)驅(qū)動器的輸出頻率
// SBR5 Stop子程序:停止電機(jī)。
// SBR6 計算輸出信息的BBC
// SBR7 發(fā)送信息,初始化發(fā)送定時器。
// INT0 發(fā)送結(jié)束的中斷處理程序,打開接收器。
// INT1 發(fā)送超時的中斷處理程序,再試發(fā)送,最多試發(fā)三次
// INT2 接收字符的中斷程序,結(jié)束后進(jìn)行有效性檢驗。
// INT3 接收超時的中斷處理程序,再試接收最多試收3次。
//
//
//***程序和注釋***
//
//S7-214通過與一臺SIMOVERT微型主電機(jī)驅(qū)動器通信來起動和停止電機(jī),以及改變輸出到電機(jī)的
//頻率,通信是通過S7-200自由通信口模式進(jìn)行,使用USS5字協(xié)議。輸入仿真器用來初始化發(fā)給
//電機(jī)驅(qū)動器的命令,程序監(jiān)視RUM/TERM開關(guān),并選擇相應(yīng)的協(xié)議來設(shè)置自由通信口模式的控制
//字節(jié)(SMB30)。程序監(jiān)視如下的電機(jī)命令的輸入點(diǎn):
//
// I0.0 上升沿 使電機(jī)以上次命令的恒定頻率運(yùn)轉(zhuǎn)。
//
// I0.2 上升沿 使電機(jī)以上次命令的頻率開始變頻運(yùn)轉(zhuǎn)。
// 頻率可使用I0.6和I0.7升高或降低。
// I0.4 上升沿 停止電機(jī)。
//
// I0.5 電平 以1*或2*倍率改變頻率。
// I0.5: 0——1*, 1——2*。
// I0.6 上升沿 以1*或2*頻率增量(此例中為50)增加電機(jī)頻率。
//
// I0.7 上升沿 以1*或2*頻率增量(此例中為50)降低電機(jī)頻率。
//
// I1.0 電平 電機(jī)旋轉(zhuǎn)方向: I1.0: 0——CW,1——CCW
//
// 程序檢測并報告通信錯誤。首先對微型主電動機(jī)驅(qū)動器的發(fā)送要計時,如果失敗,允許
//再次發(fā)送,最多可試發(fā)送3次。然后對來自微型主電動機(jī)驅(qū)動器的接收亦要計時,在退出發(fā)
//送接收操作之前可重試多達(dá)3次。對來自微型主電動機(jī)驅(qū)動器的響應(yīng)信息要進(jìn)行有效校驗
//(STX,LEN,ADR和BCC),任何被檢驗到的錯誤都要由QB0顯示,直到下一次操作結(jié)束,QB0的
//顯示含義如下:
// 0 無錯誤
// 1 非法的響應(yīng)
// 2 壞的BCC
// 3 發(fā)送超時
// 4 接收超時
//
// 盡管這個示例程序只與一臺微型主電機(jī)驅(qū)動器通信,可把它擴(kuò)展用于另外的輸入點(diǎn),選擇
// 多站通信線路上的某一臺微型主電機(jī)驅(qū)動器的地址,向它發(fā)送命令。另外,這個程序的基
//本通信結(jié)構(gòu)還可以用來發(fā)送別的信息給微型主電機(jī)驅(qū)動器,如監(jiān)視電流,轉(zhuǎn)矩等。
//
//這個程序是S7-200自由通信口通信接口與SIMOVERT微型主電機(jī)驅(qū)動器通信的示例
//兩者間通信用USS5字協(xié)議。
//S7-200作為主設(shè)備,使用USS協(xié)議地址0,而微型主電機(jī)驅(qū)動器則是地址1。
//為了正確地應(yīng)用此例,你需要:
//1臺帶輸入仿真器的SIMATIC S7-212或S7-214.
//1根RS485電纜,其一端為陽性插頭,另一端無插頭,已接到微型主電機(jī)驅(qū)動器上。
//1臺微型主電機(jī)驅(qū)動器和電機(jī)
//這個例子使用Herb Taylor, SE&A的示例單元(驅(qū)動器和電機(jī))
//你要確保正確地設(shè)置微型主電機(jī)驅(qū)動器的參數(shù),并保證將它置于遙控方式
//(P910=1),波特率設(shè)置正確(P092),從地址設(shè)置正確(P091)。這個例子的波特率位19.2kb,
//從地址為1。
//微型主電機(jī)驅(qū)動器使用的USS串行通信5字協(xié)議有如下14字節(jié)結(jié)構(gòu):
//
// 02 開始信息(STX)
// 12 微型主電機(jī)驅(qū)動器的信息從AA到BCC長度為12字節(jié)。
// ADR device number address. (In this example, the drive is
// 1 for a single slave station, or 32 for broadcast mode.)
// PKE 參數(shù)控制高字節(jié)
// PKE 參數(shù)控制低字節(jié)
// IND 陳列序引字的高字節(jié)
// IND 陳列序引字的低字節(jié)
// PWE 參數(shù)值和錯誤代碼的高字節(jié)
// PWE 參數(shù)值和錯誤代碼的低字節(jié)
// PZD1 控制/狀態(tài)字高字節(jié)
// PZD1 控制/狀態(tài)字低字節(jié)
// PZD2 主設(shè)定2點(diǎn)和返回值的高字節(jié)。
// PZD2 主設(shè)定2點(diǎn)和返回值的低字節(jié)。
// BCC 塊校驗和
//
// ***注意例中對于 開/關(guān)/速度改變只使用數(shù)據(jù)字:PZD1和PZD2.***
//
//
// 內(nèi)存單元分配:
//
// VB99 發(fā)送信息的長度
// VB100 to VB113 發(fā)送緩沖區(qū)
// VB114 to VB127 接收緩沖區(qū)
// VW200 缺省頻率倍率,初始值=5461,頻率=(5461/16384)*P094
// VW202 頻率倍率增/減量,初始值=50。
// VW204 發(fā)送再試次數(shù),初始值為3次,每發(fā)一次減1。
// VW206 發(fā)送再試次數(shù),初始值為3次,每收一次減1。
// VW208 信息中接收字符數(shù),USS 10=14
// VB210 最后一次試操作的狀態(tài)(也在輸出QB0顯示),其值含義如下:
// 0 操作正確。
// 1 來自微型主電機(jī)驅(qū)動器的非法響應(yīng)(除去壞的BCC)
// 2 壞的BCC
// 3 發(fā)送超時
// 4 接收超時
// VD211 接收緩沖區(qū)的地址指針
// VW215 累積接收信息為BCC,存于最低字節(jié)。
// VB217 to VB218 暫時存儲區(qū)
//
//
NETWORK 1 // //***主程序***
首次掃描執(zhí)行的程序
LD "First_Scan_On" //首次掃描時 SM0.1=1
CALL 0 // 調(diào)用子程序0
NETWORK 2 //用RUN/TERM開關(guān)選擇自由通信口/PPI通信
LD "Mode_Switch" // RUN/TERM開關(guān)位置:1——RUN,0——TERM
= "P0_Config_0" // SM30.0=1為自由通信口協(xié)議,SM30.0=0為
//PPI協(xié)議。
NETWORK 3 // 檢查命令
LD I0.4 // 停止電機(jī)
EU // 且上升沿
CALL 5 // 則往微型主電機(jī)驅(qū)動器發(fā)送信息
S M0.0, 1 // 使后續(xù)的RUN或RAMP命令有效(M0.1=1)
R M0.1, 1 // M.01=0
NETWORK 4 // .
LD I0.0 // 運(yùn)行電機(jī),且
EU // 上升沿,則
A M0.0 // M0.0=1,則
CALL 1 // 往微型主電機(jī)驅(qū)動器發(fā)送信息
R M0.0, 2 // 使后續(xù)的RUN命令無效(M0.0=0,M0.1=0)
NETWORK 5 //
LD I0.2 // RAMP命令,且
EU // 上升沿
A M0.0 // M0.0=1,則
R M0.0, 1 // 使后續(xù)的RUN命令無效。
CALL 2 // 往微型主電動機(jī)驅(qū)動器發(fā)送信息
S M0.1, 1 // 顯示現(xiàn)在的狀態(tài)(M0.1=1)
NETWORK 6 //
LD I0.6 // 若增加頻率
EU // 且上升沿
CALL 3 // 增加速度
NETWORK 7 //
LD I0.7 // 減少頻率
EU // 且上升沿,則
CALL 4 // 減速
NETWORK 8 // 主程序結(jié)束
MEND
//
//
NETWORK 9 ////***子程序0***
// 初始化子程序——僅在第一次掃描時執(zhí)行。
SBR 0 // 初始化XMT緩沖區(qū),設(shè)置通信參數(shù)
NETWORK 10
LD "Always_On" //
MOVB 16#45, "P0_Config" // 19.2kb,每字符8位,偶校驗
MOVB 16#E, VB99 // XMT長度
MOVB 16#2, VB100 // (STX)
//
MOVB 16#C, VB101 // (LEN)
MOVB 16#1, VB102 // (ADR) 微型主電機(jī)驅(qū)動器地址為1
//
FILL 0, VW103, 5 // 清除所有5個數(shù)據(jù)字(VW103至VW111)以后還
//可以改變
MOVW 16#1500, VW200 // 1/3最大的頻率倍率
MOVW 16#32, VW202 // 頻率倍率以50增/減
MOVD 16#30003, VD204 // 設(shè)定發(fā)送和接收重試次數(shù)為3
MOVB 0, VB210 // 清除操作狀態(tài)指示
MOVB 0, QB0 // QB0=0
MOVB 0, VB219 // S7-200地址。
S M0.0, 1 // 允許RUN或RAMP或RAMP(方向改變)
ENI // 允許用戶中斷
NETWORK 11 // 子程序0結(jié)束
RET
NETWORK 12 // 子程序1
// 運(yùn)行電機(jī)子程序,旋轉(zhuǎn)方向取決于輸入I1.0的狀態(tài)。
SBR 1 // 運(yùn)行電機(jī)
NETWORK 13 //
LD "Always_On" //
MOVB 16#5, VB109 // 為CW設(shè)置STW
MOVB 16#7F, VB110 // clockwise inching.
MOVW VW200, VW111 // 設(shè)置頻率.
NETWORK 14 //
LD I1.0 // 設(shè)定旋轉(zhuǎn)方向,若I1.0=0,則為CW;若I1.0=1
// 則為CCW
= V109.3 // set V109.3 to indicate
// counterclockwise direction.
NOT // If input I1.0 is not on,
= V109.4 // set V109.4 to indicate clockwise
// direction.
NETWORK 15
LD "Always_On" //
CALL 6 // 計算BCC.
CALL 7 // 初始化。XMT及XMT定時器
NETWORK 16 // 子程序1結(jié)束
RET
NETWORK 17 // 子程序2
//RAMP電機(jī)的處理子程序,電機(jī)運(yùn)行時,根據(jù)輸入I0.2的上升沿脈沖,對電機(jī)頻率進(jìn)行
//+/-RAMP修正,電機(jī)旋轉(zhuǎn)方向取決于輸入I1.0的狀態(tài)。
SBR 2 // 運(yùn)行電機(jī)
NETWORK 18 //
LD "Always_On" //
MOVB 16#4, VB217 // 設(shè)置命令字符
NETWORK 19 //
LD V109.3 //保存以前的電機(jī)旋轉(zhuǎn)方向
= V217.3 // direction indicator for
// counterclockwise.
NETWORK 20 // Preserve Previous Motor Direction Indicator for Clockwise
// Load variable memory bit V109.4.
// If V109.4 is on (has a signal state of 1),
// indicating that the motor is running clockwise),
// turn on variable memory bit V217.4
// to preserve the previous motor direction indicator for clockwise.
LD V109.4 // Preserve the previous motor
= V217.4 // direction indicator for
// clockwise.
NETWORK 21 // Set Up the Status Word (STW) for RUN and Set the Frequency
// Load special memory bit SM0.0 to process this network every scan cycle.
// Move the contents of variable memory byte VB217 (the setup for
// command byte) into VB109
// and move the hexadecimal value 7F (binary 0111 1111) into variable
// memory byte VB110 to set up STW for RUN.
// Move the contents of variable memory word VW200 into VW111
// to set the frequency.
LD "Always_On" // SM0.0總是1.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -