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