五月婷网站,av先锋丝袜天堂,看全色黄大色大片免费久久怂,中国人免费观看的视频在线,亚洲国产日本,毛片96视频免费观看

| 注冊| 產(chǎn)品展廳| 收藏該商鋪

行業(yè)產(chǎn)品

當(dāng)前位置:
上海慶惜自動化設(shè)備有限公司>>西門子代理商>> 西門子代理商滁州西門子PLC系列代理商

滁州西門子PLC系列代理商

返回列表頁
  • 滁州西門子PLC系列代理商
  • 滁州西門子PLC系列代理商
  • 滁州西門子PLC系列代理商
  • 滁州西門子PLC系列代理商
  • 滁州西門子PLC系列代理商
收藏
舉報
參考價 88
訂貨量 1
具體成交價以合同協(xié)議為準(zhǔn)
  • 型號 西門子代理商
  • 品牌 Siemens/西門子
  • 廠商性質(zhì) 經(jīng)銷商
  • 所在地 上海市
在線詢價 收藏產(chǎn)品

更新時間:2019-03-01 14:14:53瀏覽次數(shù):545

聯(lián)系我們時請說明是化工儀器網(wǎng)上看到的信息,謝謝!

同類優(yōu)質(zhì)產(chǎn)品

更多產(chǎn)品

產(chǎn)品簡介

產(chǎn)地類別 進(jìn)口
滁州西門子PLC系列代理商
中國已進(jìn)入了經(jīng)濟(jì)“新常態(tài)"格局,企業(yè)面臨轉(zhuǎn)型升級的關(guān)鍵時刻。西門子以客戶面臨的挑戰(zhàn)為驅(qū)動力,憑借的工程技術(shù)與創(chuàng)新能力,以電氣化、自動化和數(shù)字化產(chǎn)品,解決方案和服務(wù),為客戶帶來更大價值——更強的靈活性,更高的效率,更快的上市時間,實現(xiàn)可持續(xù)的發(fā)展。我們將這種力量稱之為“博大精深,同心致遠(yuǎn)"。

詳細(xì)介紹

                         滁州西門子PLC系列代理商

 

西門子PLC300系列的設(shè)計步驟與實例

S7-300系列PLC應(yīng)用系統(tǒng)設(shè)計

PLC應(yīng)用系統(tǒng)設(shè)計的內(nèi)容和步驟

PLC應(yīng)用系統(tǒng)的硬件設(shè)計

PLC應(yīng)用系統(tǒng)的軟件設(shè)計

PLC應(yīng)用系統(tǒng)設(shè)計實例

PLC應(yīng)用系統(tǒng)設(shè)計的內(nèi)容和步驟

系統(tǒng)設(shè)計的原則與內(nèi)容

1.設(shè)計原則

(1) 大限度地滿足被控設(shè)備或生產(chǎn)過程的控制要求;

(2) 在滿足控制要求的前提下,力求簡單、經(jīng)濟(jì),操作方便;

(3) 保證控制系統(tǒng)工作安全可靠;

(4) 考慮到今后的發(fā)展改進(jìn),應(yīng)適當(dāng)留有進(jìn)一步擴展的余地。

2.設(shè)計內(nèi)容

(1) 擬定控制系統(tǒng)設(shè)計的技術(shù)條件,它是整個設(shè)計的依據(jù);

(2) 選擇電氣傳動形式和電動機、電磁閥等執(zhí)行機構(gòu);

(3) 選定PLC的型號;

(4) 編制PLC的輸入輸出分配表或繪制輸入輸出端子接線圖;

(5) 根據(jù)系統(tǒng)要求編寫軟件說明書,然后再進(jìn)行程序設(shè)計;

(6) 重視人機界面的設(shè)計,增強人與機器之間的友善關(guān)系;

(7) 設(shè)計操作臺、電氣柜及非標(biāo)準(zhǔn)電器元部件;

(8) 編寫設(shè)計說明書和使用說明書。

系統(tǒng)設(shè)計和調(diào)試的主要步驟

1.深入了解和分析被控對象的工藝條件和控制要求

2.確定IO設(shè)備,常用的輸入設(shè)備有按鈕、選擇開關(guān)、行程開關(guān)、傳感器等,常用的輸出設(shè)備有繼電器、接觸器、指示燈、電磁閥等。

3.選擇合適的PLC類型, 根據(jù)已確定的用戶IO設(shè)備,統(tǒng)計所需的輸入信號和輸出信號的點數(shù),選擇合適的PLC類型。

4.分配IO點,編制出輸入輸出端子的接線圖。

5.設(shè)計應(yīng)用系統(tǒng)梯形圖程序,這一步是整個應(yīng)用系統(tǒng)設(shè)計核心的工作。

6.將程序輸入PLC,當(dāng)使用計算機上編程時,可將程序下載到PLC中。

7.進(jìn)行軟件測試,在將PLC連接到現(xiàn)場設(shè)備上之前,必須進(jìn)行軟件測試,以排除程序中的錯誤。

8.應(yīng)用系統(tǒng)整體調(diào)試,在PLC軟硬件設(shè)計和控制柜及現(xiàn)場施工完成后,就可以進(jìn)行整個系統(tǒng)的聯(lián)機調(diào)試。調(diào)試中發(fā)現(xiàn)的問題要逐一排除,直至調(diào)試成功。

9.編制技術(shù)文件, 系統(tǒng)技術(shù)文件包括功能說明書、電氣原理圖、電器布置圖、電氣元件明細(xì)表、PLC梯形圖等。

PLC選型

在滿足控制要求的前提下,選型時應(yīng)選擇的性能價格比,具體應(yīng)考慮以下幾點。

1.性能與任務(wù)相適應(yīng)

2.PLC的處理速度應(yīng)滿足實時控制的要求

3.PLC應(yīng)用系統(tǒng)結(jié)構(gòu)合理、機型系列應(yīng)統(tǒng)一

4.在線編程和離線編程的選擇

PLC容量估算

PLC容量包括兩個方面:一是IO的點數(shù),二是用戶存儲器的 容量。

1.IO點數(shù)的估算

根據(jù)功能說明書,可統(tǒng)計出PLC系統(tǒng)的開關(guān)量IO點數(shù)及模擬量IO通道數(shù),以及開關(guān)量和模擬量的信號類型。應(yīng)在統(tǒng)計后得出IO總點數(shù)的基礎(chǔ)上,增加10%~15%的裕量。選定的PLC機型的IO能力極限值必須大于IO點數(shù)估算值,并應(yīng)盡量避免使PLC能力接近飽和,一般應(yīng)留有30%左右的裕量。

2. 存儲器容量估算

用戶應(yīng)用程序占用多少內(nèi)存與許多因素有關(guān),如IO點數(shù)、控制要求、運算處理量、程序結(jié)構(gòu)等。因此在程序設(shè)計之前只能粗略的估算。根據(jù)經(jīng)驗,每個IO點及有關(guān)功能器件占用的內(nèi)存大致如下:

所需存儲器容量(KB)=(1~1.25)×(DI×10+DO×8+AIO×100+CP×300)1024

其中:DI為數(shù)字量輸入總點數(shù);DO為數(shù)字量輸出總點數(shù);AIAO為模擬量IO通道總數(shù);CP為通信接口總數(shù)。

IO模塊的選擇

1.開關(guān)量輸入模塊的選擇

PLC的輸入模塊用來檢測來自現(xiàn)場(如按鈕、行程開關(guān)、溫控開關(guān)、壓力開關(guān)等)電平信號,并將其轉(zhuǎn)換為PLC內(nèi)部的低電平信號。開關(guān)量輸入模塊按輸入點數(shù)分,常用的有8點、12點、16點、32點等;按工作電壓分,常用的有直流5 V、12 V、24 V,交流110 V、220 V等選擇輸入模塊主要應(yīng)考慮以下兩點:

(1) 根據(jù)現(xiàn)場輸入信號(如按鈕、行程開關(guān))與PLC輸入模塊距離的遠(yuǎn)近來選擇電壓的高低。一般,24 V以下屬低電平,其傳輸距離不宜太遠(yuǎn)。如12 V電壓模塊一般不超過10 m,距離較遠(yuǎn)的設(shè)備選用較高電壓模塊比較可靠。

(2) 高密度的輸入模塊,如32點輸入模塊,允許同時接通的點數(shù)取決于輸入電壓和環(huán)境溫度。一般,同時接通的點數(shù)不得超過總輸入點數(shù)的60%。

;按外部接線方式又可分為匯點輸入、分隔輸入等。

2.開關(guān)量輸出模塊的選擇

輸出模塊的任務(wù)是將PLC內(nèi)部低電平的控制信號轉(zhuǎn)換為外部所需電平的輸出信號,驅(qū)動外部負(fù)載。輸出模塊有三種輸出方式:繼電器輸出、雙向可控硅輸出和晶體管輸出。

1) 輸出方式的選擇

繼電器輸出價格便宜,使用電壓范圍廣,導(dǎo)通壓降小,承受瞬間過電壓和過電流的能力較強,且有隔離作用。但繼電器有觸點,壽命較短,且響應(yīng)速度較慢,適用于動作不頻繁的交直流負(fù)載。當(dāng)驅(qū)動電感性負(fù)載時,大開閉頻率不得超過1 Hz。

晶閘管輸出(交流)和晶體管輸出(直流)都屬于無觸點開關(guān)輸出,適用于通斷頻繁的感性負(fù)載。感性負(fù)載在斷開瞬間會產(chǎn)生較高的反壓,必須采取抑制措施

2) 輸出電流的選擇

模塊的輸出電流必須大于負(fù)載電流的額定值,如果負(fù)載電流較大,輸出模塊不能直接驅(qū)動,則應(yīng)增加中間放大環(huán)節(jié)。對于電容性負(fù)載、熱敏電阻負(fù)載,考慮到接通時有沖擊電流,故要留有足夠的裕量。

3) 允許同時接通的輸出點數(shù)

在選用輸出模塊時,還要看整個輸出模塊的滿負(fù)荷能力,如OMRON公司的CQM1-OC222是16點輸出模塊,每個點允許通過電流2 A(AC250 VDC24 V)。但整個模塊允許通過的大電流僅8 A。

分配輸入輸出點

一般輸入點與輸入信號、輸出點與輸出控制是一一對應(yīng)的;在個別情況下,也有兩個信號用一個輸入點的,那樣就應(yīng)在接入輸入點前,按邏輯關(guān)系接好線(如兩個觸點先串聯(lián)或并聯(lián)),然后再接到輸入點。

1. 明確IO通道范圍

不同型號的PLC,其輸入輸出通道的范圍是不一樣的,應(yīng)根據(jù)所選PLC型號,弄清相應(yīng)的IO點地址的分配。

2. 內(nèi)部輔助繼電器

內(nèi)部輔助繼電器不對外輸出,不能直接連接外部器件,而是在控制其他繼電器、定時器、計數(shù)器時作數(shù)據(jù)存儲或數(shù)據(jù)處理用。根據(jù)程序設(shè)計的需要,應(yīng)合理安排PLC的內(nèi)部輔助繼電器,在設(shè)計說明書中應(yīng)詳細(xì)列出各內(nèi)部輔助繼電器在程序中的用途,避免重復(fù)使用。

3.分配定時器計數(shù)器

對用到定時器和計數(shù)器的控制系統(tǒng),注意定時器和計數(shù)器的編號不能相同。若掃描時間較長,則要使用高速定時器以保證計時準(zhǔn)確

安全回路設(shè)計

安全回路起保護(hù)人身安全和設(shè)備安全的作用,它應(yīng)能獨立于PLC工作,并采用非半導(dǎo)體的機電元件以硬接線方式構(gòu)成。

確保系統(tǒng)安全的硬接線邏輯回路,在以下幾種情況下將發(fā)揮安全保護(hù)作用:① PLC或機電元件檢測到設(shè)備發(fā)生緊急異常狀態(tài)時;② PLC失控時;③ 操作人員需要緊急干預(yù)時。

設(shè)計安全回路的任務(wù)包括以下內(nèi)容:

(1) 確定控制回路之間邏輯和操作上的互鎖關(guān)系;

(2) 設(shè)計硬回路以提供對過程中重要設(shè)備的手動安全性干預(yù)手段;

(3) 為PLC定義故障形式和重新啟動特性。

PLC應(yīng)用系統(tǒng)的軟件設(shè)計

PLC應(yīng)用軟件設(shè)計的內(nèi)容

PLC應(yīng)用軟件的設(shè)計是一項十分復(fù)雜的工作,它要求設(shè)計人員既要有PLC、計算機程序設(shè)計的基礎(chǔ),又要有自動控制的技術(shù),還要有一定的現(xiàn)場實踐經(jīng)驗。

一個實用的PLC軟件工程的設(shè)計通常要涉及以下幾個方面的內(nèi)容:

(1) PLC軟件功能的分析與設(shè)計;

(2) IO信號及數(shù)據(jù)結(jié)構(gòu)分析與設(shè)計(3) 程序結(jié)構(gòu)分析與設(shè)計;

(4) 軟件設(shè)計規(guī)格說明書編制;

(5) 用編程語言、PLC指令進(jìn)行程序設(shè)計;

(6) 軟件測試;

(7) 程序使用說明書編制。

PLC應(yīng)用系統(tǒng)的軟件設(shè)計步驟

根據(jù)可編程序控制器系統(tǒng)硬件結(jié)構(gòu)和生產(chǎn)工藝要求,在軟件規(guī)格說明書的基礎(chǔ)上,編制實際應(yīng)用程序并形成程序說明書的過程就是應(yīng)用系統(tǒng)的軟件設(shè)計。

1. 制定設(shè)備運行方案

制定方案就是根據(jù)生產(chǎn)工藝的要求,分析各輸入、輸出與各種操作之間的邏輯關(guān)系,確定需要檢測的量和控制的方法,并設(shè)計出系統(tǒng)中各設(shè)備的操作內(nèi)容和操作順序。據(jù)此便可畫出流程圖。

2. 畫控制流程圖

對于較復(fù)雜的應(yīng)用系統(tǒng),需要繪制系統(tǒng)控制流程圖,用以清楚地表明動作的順序和條件。對于簡單的控制系統(tǒng),可省去這一步。

3. 制定系統(tǒng)的抗干擾措施

根據(jù)現(xiàn)場工作環(huán)境、干擾源的性質(zhì)等因素,綜合制定系統(tǒng)的硬件和軟件抗干擾措施,如硬件上的電源隔離、信號濾波,軟件上的平均值濾波等。

4. 編寫程序

根據(jù)被控對象的輸入輸出信號及所選定的PLC型號分配PLC的硬件資源,為梯形圖的各種繼電器或接點進(jìn)行編號,再按照軟件規(guī)格說明書(技術(shù)要求、編制依據(jù)、測試),用梯形圖進(jìn)行編程。

5. 軟件測試

剛編寫好的程序難免有缺陷或錯誤。為了及時發(fā)現(xiàn)和消除程序中的錯誤和缺陷,需要對程序進(jìn)行離線測試。經(jīng)調(diào)試、排錯、修改及模擬運行后,才能正式投入運行。

6. 編制程序使用說明書

當(dāng)一項軟件工程完成后,為了便于用戶和現(xiàn)場調(diào)試人員的使用,應(yīng)對所編制的程序進(jìn)行說明,說明書應(yīng)包括程序設(shè)計的依據(jù)、結(jié)構(gòu)、功能、流程圖,各項功能單元的分析,PLC的IO信號,軟件程序操作使用的步驟、注意事項等。

PLC應(yīng)用系統(tǒng)設(shè)計實例

機械手控制系統(tǒng)設(shè)計

1. 工藝過程及控制要求

1) 工藝過程

圖6.1所示為一簡易物料搬運機械手的工藝流程圖。該機械手是一個水平垂直位移的機械設(shè)備,其操作是將工件從左工作臺搬運到右工作臺,由光耦合器VLC來檢測工作臺上有沒有工件。機械手通常位于原點,它的動作全部由氣缸驅(qū)動,而氣缸則由相應(yīng)的電磁閥控制。其中,上升下降和左移右移分別由雙線圈二位電磁閥控制,放松夾緊由一個單線圈二位電磁閥(稱為夾緊電磁閥)控制。

2) 控制要求

機械手整個搬運過程要求都能自動控制。在啟動過程中能切換到手動控制及自動控制或半自動控制(又稱單周期控制),以便對設(shè)備進(jìn)行調(diào)整和檢修。圖6.2是機械手控制系統(tǒng)的邏輯流程圖。系統(tǒng)啟動之前,機械手處于原始位置,條件是機械手在高位﹑左位。

2. 可編程序控制器選型

1) 硬件配置

系統(tǒng)輸入信號有3個啟動按鈕,4個限位開關(guān),5個手動輸入信號,1個有工件檢測信號,共計14個數(shù)字量輸入信號;輸出信號有機械手上升下降驅(qū)動信號﹑左移右移驅(qū)動信號和機械手夾緊驅(qū)動信號,共有5個數(shù)字量輸出信號。不需模擬量模塊,選擇S7-300系列的CPU313,加上數(shù)字量輸入模塊SM321及輸出模塊SM322就可以滿足要求,而且還有一定的裕量。

2) IO地址分配

將14個輸入信號、5個輸出信號與PLC的IO端一一對應(yīng),編排好地址,

其它地址分配

(1) 夾緊定時器T1,定時5 s;

(2) 放松定時器T2,定時5 s;

(3) 自動方式標(biāo)志M0.0;

(4) 單動方式標(biāo)志M0.1;

(5) 手動方式標(biāo)志M0.2;

(6) 結(jié)束標(biāo)志M0.5。

3. 機械手程序設(shè)計

1) 邏輯功能塊(子程序)

邏輯功能塊包括兩個部分:自動方式或單動方式控制(FC10)和手動方式控制(FC11)。

(1) 自動方式或單動方式控制(FC10)的具體程序(梯形圖表示)如圖6.3所示。

(2) 手動方式控制(FC11)的具體程序(梯形圖表示)如圖6.4所示。

2) 組織塊(主程序)

組織塊OB1用于設(shè)定機械手啟動方式,主要負(fù)責(zé)功能塊或子程序的調(diào)用,是自動運行還是單動運行,以及系統(tǒng)的循環(huán)掃描、故障診斷和輸出刷新。其梯形圖如圖6.5所示。

5.1 編程方式與程序塊

5.2 數(shù)據(jù)塊與數(shù)據(jù)結(jié)構(gòu)

5.3 S7系列PLC程序設(shè)計

5.1.1 S7-300編程方式簡介

S7-300系列PLC的編程語言是STEP 7。STEP 7繼承了STEP 5語言結(jié)構(gòu)化程序設(shè)計的優(yōu)點,用文件塊的形式管理用戶編寫的程序及程序運行所需的數(shù)據(jù)。如果這些文件塊是子程序,則可以通過調(diào)用語句,將它們組成結(jié)構(gòu)化的用戶程序。這樣,PLC的程序組織明確,結(jié)構(gòu)清晰,易于修改。

為支持結(jié)構(gòu)化程序設(shè)計,STEP 7用戶程序通常由組織塊(OB)、功能塊(FB)或功能塊(FC)等三種類型的邏輯塊和數(shù)據(jù)塊(DB)組成。

組織塊(OB)是系統(tǒng)操作程序與用戶應(yīng)用程序在各種條件下的接口界面,用于控制程序的運行。OB塊根據(jù)操作系統(tǒng)調(diào)用的條件(如時間中斷、報警中斷等)可分成幾種類型,這些類型有不同的優(yōu)先級,高優(yōu)先級的OB可以中斷低優(yōu)先級的OB。每個S7 CPU包含一套可編程的OB塊(隨CPU而不同),不同的OB塊執(zhí)行特定的功能。

OB1是主程序循環(huán)塊,在任何情況下,它都是需要的。根據(jù)過程控制的復(fù)雜程度,可將所有程序放入OB1中進(jìn)行線性編程,或?qū)⒊绦蛴貌煌倪壿媺K加以結(jié)構(gòu)化,通過OB1調(diào)用這些邏輯塊,并允許塊間的相互調(diào)用。塊的調(diào)用指令中止當(dāng)前塊(調(diào)用塊)的運行調(diào)用,然后執(zhí)行被調(diào)用塊的所有指令。一旦被調(diào)用的塊被完成,執(zhí)行調(diào)用指令的塊繼續(xù)執(zhí)行調(diào)用指令后的指令。調(diào)用塊可以是任何邏輯塊,被調(diào)用塊只能是功能塊(除OB外的邏輯塊)。圖5.1所示是一個STEP 7調(diào)用實例。除了OB1,操作系統(tǒng)可以調(diào)用其它的OB塊以響應(yīng)確定事件。其它可用的OB塊隨所用的CPU性能和控制過程的要求而定。

功能塊(FB、FC)實際上是用戶子程序,分為帶“記憶”的功能塊FB和不帶“記憶”的功能塊FC。前者有一個數(shù)據(jù)結(jié)構(gòu)與該功能塊的參數(shù)表*相同的數(shù)據(jù)塊(DB)附屬于該功能塊,并隨功能塊的調(diào)用而打開,隨功能塊的結(jié)束而關(guān)閉。該附屬數(shù)據(jù)塊叫做背景數(shù)據(jù)塊(Instance Data Block),存放在背景數(shù)據(jù)塊中的數(shù)據(jù)在FB塊結(jié)束時繼續(xù)保持,即被“記憶”。功能塊FC沒有背景數(shù)據(jù)塊,當(dāng)FC完成操作后數(shù)據(jù)不能保持。

數(shù)據(jù)塊(DB)是用戶定義的用于存取數(shù)據(jù)的存儲區(qū),可以被打開或關(guān)閉。DB可以是屬于某個FB的情景數(shù)據(jù)塊,也可以是通用的全局?jǐn)?shù)據(jù)塊,用于FB或FC。S7 CPU還提供標(biāo)準(zhǔn)系統(tǒng)功能塊(SFB、SFC),它們是預(yù)先編好的,經(jīng)過測試后集成在S7 CPU中的功能程序庫。用戶可以直接調(diào)用它們,高效地編制自己的程序。由于它們是操作系統(tǒng)的一部分,因此不需將其作為用戶程序下載到PLC。與FB塊相似,SFB需要一個背景數(shù)據(jù)塊,并需將此DB塊作為程序的一部分安裝到CPU中。不同的CPU提供不同的SFB、SFC功能。

系統(tǒng)數(shù)據(jù)塊(SDB)是為存放PLC參數(shù)所建立的系統(tǒng)數(shù)據(jù)存儲區(qū)。用STEP 7的S7組態(tài)軟件可以將PLC組態(tài)數(shù)據(jù)和其它操作參數(shù)存放于SDB中。

功能塊編程及調(diào)用

功能塊由兩個主要部分組成:一部分是每個功能塊的變量聲明表,變量聲明表聲明此塊的局部數(shù)據(jù);另一部分是邏輯指令組成的程序,程序要用到變量聲明表中給出的局部數(shù)據(jù)。

當(dāng)調(diào)用功能塊時,需提供塊執(zhí)行時要用到的數(shù)據(jù)或變量,也就是將外部數(shù)據(jù)傳遞給功能塊,這被稱為參數(shù)傳遞。參數(shù)傳遞的方式使得功能塊具有通用性,它可被其它的塊調(diào)用,以完成多個類似的控制任務(wù)。

1. 變量聲明表(局部數(shù)據(jù))

每個邏輯塊前部都有一個變量聲明表,在變量聲明表中定義邏輯塊用到的局部數(shù)據(jù)。局部數(shù)據(jù)分為參數(shù)和局部變量兩大類,局部變量又包括靜態(tài)變量和臨時變量(暫態(tài)變量)兩種。參數(shù)是在調(diào)用塊和被調(diào)用塊間傳遞的數(shù)據(jù)。靜態(tài)變量和臨時變量是僅供邏輯塊本身使用的數(shù)據(jù)。表5.1給出了局部數(shù)據(jù)聲明類型,表中內(nèi)容的排列順序也是在變量聲明

表中聲明變量的順序和變量在內(nèi)存中的存儲順序。在邏輯塊中不需使用的局部數(shù)據(jù)類型,可以不必在變量聲明表中聲明。

表5.1 局部數(shù)據(jù)類型

變 量 名 類 型 說 明

輸入?yún)?shù) In 由調(diào)用邏輯塊的塊提供數(shù)據(jù),輸入給邏輯塊的指令

輸出參數(shù) Out 向調(diào)用邏輯塊的塊返回參數(shù),即從邏輯塊輸出結(jié)果數(shù)據(jù)

IO參數(shù) In_Out 參數(shù)的值由調(diào)用塊的塊提供,由邏輯塊處理修改,然后返回

靜態(tài)變量 Stat 靜態(tài)變量存儲在背景數(shù)據(jù)塊中,塊調(diào)用結(jié)束后,其內(nèi)容被保留

臨時變量 Temp 臨時變量存儲在L堆棧中,塊執(zhí)行結(jié)束變量的值因被其它內(nèi)容覆蓋而丟掉

對于功能塊FB,操作系統(tǒng)為參數(shù)及靜態(tài)變量分配的存儲空間是背景數(shù)據(jù)塊。這樣參數(shù)變量在背景數(shù)據(jù)塊中留有運行結(jié)果備份。在調(diào)用FB時,若沒有提供實參,則功能塊使用背景數(shù)據(jù)塊中的數(shù)值。操作系統(tǒng)在L堆棧中給FB的臨時變量分配存儲空間。

對于功能塊FC,操作系統(tǒng)在L堆棧中給FC的臨時變量分配存儲空間。由于沒有背景數(shù)據(jù)塊,因而FC不能使用靜態(tài)變量。輸入、輸出、IO參數(shù)以指向?qū)崊⒌闹羔樞问酱鎯υ诓僮飨到y(tǒng)為參數(shù)傳遞而保留的額外空間中。

對于組織塊OB來說,其調(diào)用是由操作系統(tǒng)管理的,用戶不能參與。因此,OB只有定義在L堆棧中的臨時變量。

1) 形參

為保證功能塊對同一類設(shè)備控制的通用性,用戶在編程時就不能使用具體設(shè)備對應(yīng)的存儲區(qū)地址參數(shù)(如不能使用I1.0等),而是使用這類設(shè)備的抽象地址參數(shù)。這些抽象參數(shù)稱為形式參數(shù),簡稱形參。將該設(shè)備的相應(yīng)實際存儲區(qū)地址參數(shù)(簡稱實參)傳遞給功能塊,功能塊在運行時以實參替代形參,從而可通過調(diào)用功能塊實現(xiàn)對具體設(shè)備的控制。當(dāng)對另一設(shè)備控制時,同樣也可通過調(diào)用實參將其傳遞給功能塊。

形參需在功能塊的變量聲明表中定義,實參在調(diào)用功能塊時給出。在功能塊的不同調(diào)用處,可為形參提供不同的實參,但實參的數(shù)據(jù)類型必須與形參*。用戶程序可定義功能塊的輸入值參數(shù)或輸出值參數(shù),也可定義一參數(shù)作為輸入輸出值。參數(shù)傳遞可將調(diào)用塊的信息傳遞給被調(diào)用塊,也能把被調(diào)用塊的運行結(jié)果返回給調(diào)用塊。

2) 靜態(tài)變量

靜態(tài)變量在PLC運行期間始終被存儲。S7將靜態(tài)變量定義在背景數(shù)據(jù)塊中,當(dāng)被調(diào)用塊運行時,能讀出或修改靜態(tài)變量;被調(diào)用塊運行結(jié)束后,靜態(tài)變量保留在數(shù)據(jù)塊中。由于只有功能塊FB有關(guān)聯(lián)的背景數(shù)據(jù)塊,因此只能為FB定義靜態(tài)變量。功能塊FC不能有靜態(tài)變量。

3) 臨時變量

臨時變量僅在邏輯塊運行時有效,邏輯塊結(jié)束時存儲臨時變量的內(nèi)存被操作系統(tǒng)另行 分配。S7將臨時變量定義在L堆棧中,L堆棧是為存儲邏輯塊的臨時變量而專設(shè)的。當(dāng)塊程序運行時,在L堆棧中建立該塊的臨時變量,一旦塊執(zhí)行結(jié)束,堆棧重新分配,因而信息丟失。

邏輯塊局部數(shù)據(jù)的數(shù)據(jù)類型

在變量聲明表中,要明確局部數(shù)據(jù)的數(shù)據(jù)類型,這樣操作系統(tǒng)才能給變量分配確定的 存儲空間。局部數(shù)據(jù)可以是基本數(shù)據(jù)類型或復(fù)式數(shù)據(jù)類型,也可以是專門用于參數(shù)傳遞 的所謂的“參數(shù)類型”。參數(shù)類型包括定時器、計數(shù)器、塊的地址或指針等,見表5.2。表5.2 參數(shù)類型變量

參數(shù)類型 大 小 說 明

定時器(Timer) 2 B 在功能塊中定義一個定時器形參,調(diào)用時賦予定時器實參

計數(shù)器(Counter) 2 B 在功能塊中定義一個計數(shù)器形參,調(diào)用時賦予計數(shù)器實參

塊:

Block_FB

Block_FC

Block_DB

Block_SDB 2 B 在功能塊中定義一個功能塊或數(shù)據(jù)塊形參變量,調(diào)用時給功能塊類或數(shù)據(jù)塊類形參賦予實際的功能塊或數(shù)據(jù)塊編號,如

FC 101、DB 42

指針(Pointer) 6 B 在功能塊中定義一個形參,該形參說明的是內(nèi)存的地址指針。例如,調(diào)用時可給形參賦予實參P#M50.0,以訪問內(nèi)存M50.0

ANY 10 B 當(dāng)實參的數(shù)據(jù)類型未知時,可以使用該類型

1) 定時器或計數(shù)器參數(shù)類型

在功能塊中定義一個定時器或計數(shù)器類型的形參,功能塊就能使用一個定時器或計數(shù)器,而不需明確具體的定時器或計數(shù)器,等到調(diào)用該功能塊時再確定定時器或計數(shù)器號。這使用戶程序能靈活性地分配和使用定時器或計數(shù)器。當(dāng)給定時器或計數(shù)器參數(shù)類型形參分配實參時,在“T”或“C”后跟一個有效整數(shù),如T 100。

2) 塊參數(shù)類型

當(dāng)定義一個作為輸入輸出的塊時,參數(shù)聲明決定了塊的類型(FB、FC、DB等)。當(dāng)為塊參數(shù)類型形參分配實參時,可以使用物理地址,如FC 101,也可使用符號地址,如“valve

3) 指針參數(shù)類型

一個指針給出的是變量的地址,而不是變量的數(shù)值大小。在有些功能塊中,可能使用指針編程更為方便。用定義指針類型的形參,就能在功能塊中先使用一個虛設(shè)的指針,待調(diào)用功能塊時再為其賦予確定的地址。當(dāng)為指針參數(shù)類型形參分配實參時,需要指明內(nèi)存地址,例如P#M50.0。

3. 塊調(diào)用過程及內(nèi)存分配

CPU提供塊堆棧(B堆棧)來存儲與處理被中斷塊的有關(guān)信息。當(dāng)發(fā)生塊調(diào)用或有來自更高優(yōu)先級的中斷時,就有相關(guān)的塊信息存儲在B堆棧里,并影響部分內(nèi)存和寄存器。圖5.2顯示了調(diào)用塊時B堆棧與L堆棧的變化。圖5.3提供了關(guān)于STEP 7的塊調(diào)用情況。

1) B堆棧與L堆棧

B堆棧是CPU系統(tǒng)內(nèi)存中的一部分,它存儲以下被中斷塊的數(shù)據(jù):

(1) 塊號、塊類型、優(yōu)先級、被中斷塊的返回地址;

(2) 塊寄存器DB、DI被中斷前的內(nèi)容;

(3) 臨時變量的指針(被中斷塊的L堆棧地址)。

STEP 7中可使用的B堆棧大小是有限制的,對于S7-300 CPU,則可在B堆棧中存儲8個塊的信息。因此,塊調(diào)用嵌套深度也是有限制的,多可同時激活8個塊。

L堆棧是CPU內(nèi)存中的一部分,它在塊調(diào)用時被重新分配。L堆棧用來存儲邏輯塊中定義的臨時變量,也分配給臨時本地數(shù)據(jù)使用。梯形圖的方塊指令與標(biāo)準(zhǔn)功能塊也可能使用L堆棧存儲運算的中間結(jié)果。

2) 調(diào)用功能塊FB

當(dāng)調(diào)用功能塊FB時,會有以下事件發(fā)生:

(1) 調(diào)用塊的地址和返回位置存儲在塊堆棧中,調(diào)用塊的臨時變量壓入L堆棧;

(2) 數(shù)據(jù)塊DB寄存器內(nèi)容與DI寄存器內(nèi)容交換;

(3) 新的數(shù)據(jù)塊地址裝入DI寄存器;

(4) 被調(diào)用塊的實參裝入DB和L堆棧上部;

(5) 當(dāng)功能塊FB結(jié)束時,先前塊的現(xiàn)場信息從塊堆棧中彈出,臨時變量彈出L堆棧;

(6) DB和DI寄存器內(nèi)容交換。

當(dāng)調(diào)用功能塊FB時,STEP 7并不一定要求給FB形參賦予實參,除非參數(shù)是復(fù)式數(shù)據(jù)類型的IO形參或參數(shù)類型形參。如果沒有給FB形參賦予實參,則功能塊FB就調(diào)用背景數(shù)據(jù)塊內(nèi)的數(shù)值。該數(shù)值是在功能塊的變量聲明表內(nèi)或背景數(shù)據(jù)塊內(nèi)設(shè)置的形參初始數(shù)值。

3) 調(diào)用功能塊FC

當(dāng)調(diào)用功能塊FC時會有以下事件發(fā)生:

(1) 功能塊FC實參的指針存到調(diào)用塊的L堆棧;

(2) 調(diào)用塊的地址和返回位置存儲在塊堆棧,調(diào)用塊的局部數(shù)據(jù)壓入L堆棧;

(3) 功能塊存儲臨時變量的L堆棧區(qū)被推入L堆棧上部;

(4) 當(dāng)被調(diào)用功能塊FC結(jié)束時,先前塊的信息存儲在塊堆棧中,臨時變量彈出L堆棧。

因為功能塊FC不用背景數(shù)據(jù)塊,不能分配初始數(shù)值給功能塊FC的局部數(shù)據(jù),所以必須給功能塊FC提供實參。

STEP 7為功能塊FC提供了一個特殊的返回值輸出參數(shù)(關(guān)鍵字:RET_VAL)。當(dāng)在文本文件中創(chuàng)建功能塊FC時,你可以在定義功能塊FC命令后輸入數(shù)據(jù)類型(如BOOL或INT)。對文本文件進(jìn)行編譯時,STEP 7會自動生成RET_VAL輸出參數(shù)。當(dāng)用STEP 7的程序編輯器(Program Editor)以增量模式創(chuàng)建功能塊FC時,可在FC的變量聲明表中聲明一個輸出參數(shù)RET_VAL,并指明其數(shù)據(jù)類型。

功能塊編程與調(diào)用舉例

對功能塊編程分兩步進(jìn)行:*步是定義局部變量(填寫局部變量表);第二步是編寫要執(zhí)行的程序,可以用梯形圖或語句表兩種形式編程,并在編程過程中使用定義了的局部變量(數(shù)據(jù))。

定義局部變量的工作內(nèi)容包括:

(1) 分別定義形參、靜態(tài)變量和臨時變量(FC塊中不包括靜態(tài)變量);

(2) 確定各變量的聲明類型(Decl.)、變量名(Name)和數(shù)據(jù)類型(Data Type),還要為變量設(shè)置初始值(Initial Value)(盡管對有些變量初始值不一定有意義)。如果需要還可為變量注釋(Comment)。在增量編程模式下,STEP 7將自動產(chǎn)生局部變量地址(Address)。

寫功能塊程序時,可以用以下兩種方式使用局部變量:

(1) 使用變量名,此時變量名前加前綴“#”,以區(qū)別于在符號表中定義的符號地址。增量方式下,前綴會自動產(chǎn)生。

(2) 直接使用局部變量的地址,這種方式只對背景數(shù)據(jù)塊和L堆棧有效。

在調(diào)用FB塊時,要說明其背景數(shù)據(jù)塊。背景數(shù)據(jù)塊應(yīng)在調(diào)用前生成,其順序格式與變量聲明表必須保持*。在增量方式下,調(diào)用FB塊時,STEP 7會自動提醒并生成背景數(shù)據(jù)塊。此時也為背景數(shù)據(jù)塊設(shè)置了初始值,該初始值與變量聲明表中的相同。當(dāng)然也可以為背景數(shù)據(jù)塊設(shè)置當(dāng)前值(Current Value),即存儲在CPU中的數(shù)值。

1.二分頻器

假設(shè)功能塊FC10是二分頻器產(chǎn)生程序,功能是對不同的輸入位進(jìn)行二分頻處理。以下給出了FC10的變量聲明表和語句表程序。在程序中使用了跳變沿檢測指令。

1) FC10的變量聲明表(見表5.3)

Address Decl. Symbol Data Type Initial Value Comment

0.0 In INP BOOL FALSE 脈沖輸入信號

1.0 Out OUTP BOOL FALSE 脈沖輸出信號

2.0 In_Out ETF BOOL FALSE 跳變沿標(biāo)志

2) 語句表程序

Network 1

A #INP 對脈沖輸入信號產(chǎn)生RLO

FP #ETF 對前面的RLO進(jìn)行跳變沿檢測,若有正跳沿則RLO=1,否則RLO=0

NOT 取反RLO

BEC 若RLO=1(沒有正跳沿),結(jié)束塊;若RLO=0(有正跳沿),繼續(xù)執(zhí)行下一條指令

AN #OUTP

= #OUTP 輸出信號反轉(zhuǎn)

BEU 無條件結(jié)束塊

在功能塊FCl0中定義了三個形參,程序中以引用變量名方式使用了形參變量。也可以為FC10在符號表中定義一個符號名,如“BINARY”,并選用以下兩種方式之一調(diào)用功能塊FC10。調(diào)用時為形參分別賦予實參I0.0、Q4.0和M10.0,以對輸入位I0.0進(jìn)行二分頻以產(chǎn)生輸出脈沖Q4.0。

調(diào)用方式1 調(diào)用方式2

CALL FC10 CALL BINARY

INP:= I0.0 INP:= I0.0

OUTP:= Q4.0 OUTP:= Q4.0

ETF:= M10.0 ETF:= M10.0

2.讀模擬輸入量程序

一些S7-300的應(yīng)用系統(tǒng)中,使用8通道模擬量模塊采集信號,當(dāng)模塊數(shù)量較多時,讀模擬輸入量就很繁瑣。下面給出一個通用程序FC100,利用它可以方便地把模擬量讀回并順序存入數(shù)據(jù)塊,因為模入模塊的起始地址、通道數(shù)、存儲數(shù)據(jù)塊號及數(shù)據(jù)在數(shù)據(jù)塊中的存儲起始位置均是可變的,所以可在調(diào)用FC100時靈活確定。

Address Decl. Symbol Data Type Initial Value Comment

0.0 In PIW_Addr INT

模入模塊通道起始地址

2.0 In CH_LEN INT

要讀入的通道數(shù)

4.0 In DB_No INT

存儲數(shù)據(jù)塊號

6.0 In DBW_Addr INT

存儲在數(shù)據(jù)塊中的字地址

Network 1

L #DB_No

T LW0

OPN DB[LW 0] 打開存儲數(shù)據(jù)塊

L #PIW_Addr

SLD 3 形成模入模塊地址指針

T LD4 在臨時本地數(shù)據(jù)雙字LD 4中存儲模入模塊地址指針

L #DBW_Addr

SLD 3 形成數(shù)據(jù)塊存儲地址指針

T LD8 在臨時本地數(shù)據(jù)雙字LD 8中存入數(shù)據(jù)塊存儲地址指針

L #CH_LEN 以要讀入的通道數(shù)為循環(huán)次數(shù),裝入累加器1

2.讀模擬輸入量程序

一些S7-300的應(yīng)用系統(tǒng)中,使用8通道模擬量模塊采集信號,當(dāng)模塊數(shù)量較多時,讀模擬輸入量就很繁瑣。下面給出一個通用程序FC100,利用它可以方便地把模擬量讀回并順序存入數(shù)據(jù)塊,因為模入模塊的起始地址、通道數(shù)、存儲數(shù)據(jù)塊號及數(shù)據(jù)在數(shù)據(jù)塊中的存儲起始位置均是可變的,所以可在調(diào)用FC100時靈活確定。

Address Decl. Symbol Data Type Initial Value Comment

0.0 In PIW_Addr INT

模入模塊通道起始地址

2.0 In CH_LEN INT

要讀入的通道數(shù)

4.0 In DB_No INT

存儲數(shù)據(jù)塊號

6.0 In DBW_Addr INT

存儲在數(shù)據(jù)塊中的字地址

Network 1

L #DB_No

T LW0

OPN DB[LW 0] 打開存儲數(shù)據(jù)塊

L #PIW_Addr

SLD 3 形成模入模塊地址指針

T LD4 在臨時本地數(shù)據(jù)雙字LD 4中存儲模入模塊地址指針

L #DBW_Addr

SLD 3 形成數(shù)據(jù)塊存儲地址指針

T LD8 在臨時本地數(shù)據(jù)雙字LD 8中存入數(shù)據(jù)塊存儲地址指針

L #CH_LEN 以要讀入的通道數(shù)為循環(huán)次數(shù),裝入累加器1

NEXT:T LW 0

將累加器1的值,裝入循環(huán)次數(shù)計數(shù)器LW0(臨時本地數(shù)據(jù)字)

L LD4

LARl 將模入模塊地址指針裝入地址寄存器1

L PIW[ARl,P#0.0] 讀模入模塊裝入累加器1

T LW2 將累加器1的內(nèi)容暫存入緩沖器LW2

L LD8

LARl 將數(shù)據(jù)塊存儲地址指針裝入地址寄存器1

L LW2 將數(shù)據(jù)緩沖器中的內(nèi)容裝入累加器1

T DBW[ARl,P#0.0] 將累加器的內(nèi)容存入數(shù)據(jù)塊中

L LD4 AR1+P#2.0→AR1

+ L#16 ACC1+(.._0001_0 000)

T LD4 調(diào)整模入模塊地址指針,指向下一通道Acc1+(bb bbbb bxxx)

L LD8

+ L#16

T LD8 調(diào)整數(shù)據(jù)塊存儲地址指針,指向下一存儲地址

L LW0 將循環(huán)次數(shù)計數(shù)器LW0的值裝入累加器1

LOOP NEXT 若累加器1的值不為0,將累加器減1繼續(xù)循環(huán);若累加

器為0,則結(jié)束

在FC100中,寄存器間接尋址指令OP NDB[LW0]使用了臨時本地數(shù)據(jù)LW0,變量表中定義的臨時變量雖然也在L堆棧中,但不能用于存儲器間接尋址,從這里也可看出臨時本地數(shù)據(jù)與臨時變量的區(qū)別。程序中LW2、LD4和LD8起的作用也可用臨時變量替代。

下面舉例說明如何使用FC100。在某應(yīng)用中,機架0的4號槽位安裝了一個8模入模塊(地址256開始),若要將前6個模入模塊信號讀回,存入DB50.DBW10開始的6個字單元中,可按下列形式調(diào)用FC100:

CALL FC100

PIW_Add:= 256

CH_LEN:= 6

DB_No:= 50

DBW_Addr:= 10

數(shù)據(jù)塊

數(shù)據(jù)塊定義在S7 CPU存儲器中,用戶可在存儲器中建立一個或多個數(shù)據(jù)塊。每個數(shù)據(jù)塊可大可小,但CPU對數(shù)據(jù)塊數(shù)量及數(shù)據(jù)總量有限制,如對于CPU314,用作數(shù)據(jù)塊的存儲器多為8 KB(8192 B),用戶定義的數(shù)據(jù)總量不能超出這個限制。對數(shù)據(jù)塊必須遵循先定義后使用的原則,否則,將造成系統(tǒng)錯誤。

1. 定義數(shù)據(jù)塊

在編程階段和運行程序中都能定義數(shù)據(jù)塊。大多數(shù)數(shù)據(jù)塊是在編程階段用STEP 7開發(fā)軟件包定義的,定義內(nèi)容包括數(shù)據(jù)塊號及塊中的變量(包括變量符號名、數(shù)據(jù)類型以及初始值等),定義完成后,數(shù)據(jù)塊中變量的順序及類型決定了數(shù)據(jù)塊的數(shù)據(jù)結(jié)構(gòu),變量的數(shù)量決定了數(shù)據(jù)塊的大小。數(shù)據(jù)塊在使用前,必須作為用戶程序的一部分下載到CPU中。

如果確實需要,還可以在程序運行中動態(tài)定義一個數(shù)據(jù)塊。動態(tài)定義時,數(shù)據(jù)塊號是自動產(chǎn)生的,數(shù)據(jù)塊在存儲器中的位置是動態(tài)分配的。由于要定義的數(shù)據(jù)塊有可能大于CPU存儲器(用于數(shù)據(jù)塊的部分)的剩余空間,因此動態(tài)定義過程有可能失敗

2.訪問數(shù)據(jù)塊

在用戶程序中可能定義了許多數(shù)據(jù)塊,而每個數(shù)據(jù)塊中又有許多不同類型的數(shù)據(jù),因此,訪問時需要明確數(shù)據(jù)塊號和數(shù)據(jù)塊中的數(shù)據(jù)類型與位置。根據(jù)明確數(shù)據(jù)塊號的不同方法,可以用多種方法訪問數(shù)據(jù)塊中的數(shù)據(jù)。

直接在訪問指令中寫明數(shù)據(jù)塊號,如:

L DB5.DBW10

T DB10.DBW20

L Motor_1.Speed 符號地址

另一種方法是“先打開后訪問”。在訪問某數(shù)據(jù)塊中的數(shù)據(jù)前,先“打開”這個數(shù)據(jù)塊,也就是將數(shù)據(jù)塊號(數(shù)據(jù)塊的起始地址)裝入數(shù)據(jù)塊寄存器。這樣,存放在數(shù)據(jù)塊中的數(shù)據(jù)就可利用數(shù)據(jù)塊起始地址加偏移量的方法來訪問。如:

OPN DB5

L DBW10

OPN DB10

T DBW20

在打開一個數(shù)據(jù)塊時,先打開的數(shù)據(jù)塊會自動關(guān)閉(沒有專門的數(shù)據(jù)塊關(guān)閉指令)。由于有兩個數(shù)據(jù)塊寄存器(DB和DI寄存器),因此,多可同時打開兩個數(shù)據(jù)塊。一個作為背景數(shù)據(jù)塊,數(shù)據(jù)塊的起始地址存儲在DI寄存器中;另一個作為共享數(shù)據(jù)塊,數(shù)據(jù)塊的起始地址存儲在DB寄存器中。打開背景數(shù)據(jù)塊,在調(diào)用FB時可以自動實現(xiàn)。由于調(diào)用FB時使用DI寄存器,因此,一般不在FB程序中用OPN DI n指令打開數(shù)據(jù)塊。

3. 背景數(shù)據(jù)塊和共享數(shù)據(jù)塊

背景數(shù)據(jù)塊和共享數(shù)據(jù)塊有不同的用途。任何FB、FC或OB均可讀寫存放在共享數(shù)據(jù)塊中的數(shù)據(jù)。背景數(shù)據(jù)塊是FB運行時的工作存儲區(qū),它存放FB的部分運行變量。調(diào)用FB時,必須一個相關(guān)的背景數(shù)據(jù)塊。作為規(guī)則,只有FB塊才能訪問存放在背景數(shù)據(jù)塊中的數(shù)據(jù)。

一般情況下,每個FB都有一個對應(yīng)的背景數(shù)據(jù)塊,一個FB也可以使用不同的背景數(shù)據(jù)塊。如果幾個FB需要的背景數(shù)據(jù)*相同,為節(jié)省存儲器,則可以定義成一個背景數(shù)據(jù)塊,供它們分別使用。通過多重背景數(shù)據(jù),也可將幾個FB需要的不同的背景數(shù)據(jù)定義在一個背景數(shù)據(jù)塊中,以優(yōu)化數(shù)據(jù)管理。各數(shù)據(jù)塊在CPU的存儲器中是沒有區(qū)別的,只是由于打開方式不同,才在打開時有背景數(shù)據(jù)塊和共享數(shù)據(jù)塊之分。原則上,任何一個數(shù)據(jù)塊都可以當(dāng)作共享數(shù)據(jù)塊或背景數(shù)據(jù)塊使用,實際上,一個數(shù)據(jù)塊由FB當(dāng)作背景數(shù)據(jù)塊使用時,必須與FB的要求格式相符。

數(shù)據(jù)結(jié)構(gòu)

STEP 7數(shù)據(jù)塊中的數(shù)據(jù)結(jié)構(gòu)形式比較豐富,數(shù)據(jù)塊中的數(shù)據(jù)既可以是基本數(shù)據(jù)類型,又可以是復(fù)式數(shù)據(jù)類型。所謂復(fù)式數(shù)據(jù)類型,是指位數(shù)超過32位的數(shù)據(jù)或由其它數(shù)據(jù)類型構(gòu)成的數(shù)據(jù)組。基本數(shù)據(jù)類型在第4章中已有過介紹,本節(jié)專門說明復(fù)式數(shù)據(jù)類型。STEP 7允許4種復(fù)式數(shù)據(jù)類型,如表5.5所示。

名 稱 類 型 說 明

日期-時間 DATE_AND_TIME 長度為8 B(64位)。按BCD碼格式順序存儲以下信息:年(字節(jié)0)、月(字節(jié)1)、日(字節(jié)2)、小時(字節(jié)3)、分(字節(jié)4)、秒(字節(jié)5)、毫秒(字節(jié)6和7的高半字節(jié))、星期(字節(jié)7的低半字節(jié))

字符串 STRING 字符串是一組ASCII碼,一個串內(nèi)可定義多254個字符,占用256 B內(nèi)存。串中每個字符占用1 B,內(nèi)存中頭兩個字節(jié)存儲串的長度信息。*個字節(jié)存放此串的定義長度(默認(rèn)值為254個字符),第二個字節(jié)存放字符串實際長度。例如,String[7]定義長度為7的字符串,占用內(nèi)存9 B(2+7)。若不定義長度,則默認(rèn)為254個字符

數(shù)組 ARRAY 由一種數(shù)據(jù)類型組成的數(shù)據(jù)集合,數(shù)據(jù)類型可以是基本數(shù)據(jù)類型或復(fù)式數(shù)據(jù)類型。通過下標(biāo)訪問數(shù)組中的數(shù)據(jù)??啥x到6維數(shù)組

構(gòu)造 STRUCT 由多種數(shù)據(jù)類型組成的數(shù)據(jù)集合

另一種復(fù)式數(shù)據(jù)類型稱為“用戶數(shù)據(jù)類型(UDT)”,它是利用STEP 7“程序編輯器”產(chǎn)生的,可命名構(gòu)造。將大量數(shù)據(jù)組織到UDT中,在生成數(shù)據(jù)塊或在變量聲明表中聲明變量時將變得更加方便。用戶還可為UDT聲明符號名。

日期-時間數(shù)據(jù)類型的名稱、位數(shù)及格式是由操作系統(tǒng)定義的,用戶不可改變,并且該類型在S7-300中必須用標(biāo)準(zhǔn)功能塊SFC才能訪問。其它復(fù)式數(shù)據(jù)類型則由用戶在邏輯塊變量聲明表或數(shù)據(jù)塊中定義。

1. 數(shù)組

一個數(shù)組將同種數(shù)據(jù)類型組合成整體,但不能建立數(shù)組的數(shù)組。圖5.4表示一個二維 整數(shù)數(shù)組。數(shù)組的符號名是“Op_temps”,用符號名加下標(biāo)可訪問數(shù)組中的數(shù)據(jù)。以圖5.4為例,*個整數(shù)是Op_temps[1,1],第三個為Op_temps[l,3],第四個為Op_temps[2,1],第六個為Op_temps[2,3]。

1) 建立數(shù)組

在數(shù)據(jù)塊或變量聲明表中可定義數(shù)組。在聲明數(shù)組時,首先給數(shù)組命名,接著使用關(guān)鍵字(ARRAY),然后在方括號中給出數(shù)組的大小及維數(shù)。可以定義多達(dá)6維的數(shù)組,并用下標(biāo)來標(biāo)識數(shù)組的大小。在方括號中放下標(biāo),各維之間用逗號隔開,每一維的首尾之間用雙點隔開。一個下標(biāo)可以為任何一個整數(shù)值(范圍:-32 768~+32 767),并包括負(fù)數(shù)。如用ARRAY[1‥3, 1‥2, 1‥3, -2‥3, 30‥32, 1‥4]來定義變量Op_temps為6維數(shù)組。該數(shù)組的*個整數(shù)為Op_temps[1, 1, 1, -2, 30, 1];后一個為Op_temps[3, 2, 3, 3, 32, 4]。圖5.5顯示了建立名字為Heat_2×3的二維數(shù)組(與圖5.4中的數(shù)組相似)。

2) 賦初始值

在建立數(shù)組時,STEP 7允許以兩種方法給數(shù)組的元素賦初始值。對圖5.5中的數(shù)組,可以為6個元素賦初始值:17,23,-45,556,3342,0;若初始值中有順序相同的元素,寫法可以簡化,如要數(shù)組的頭兩個元素設(shè)特定數(shù)值,其余4個為10,則可簡寫為17,23,4(10),其中4為重復(fù)系數(shù),10為要重復(fù)的數(shù)值。

3) 訪問數(shù)組

利用數(shù)組中元素的下標(biāo)可以訪問數(shù)組數(shù)據(jù),這時數(shù)據(jù)塊、數(shù)組符號名及下標(biāo)一起 使用。如圖5.5中聲明的數(shù)組在DB20(符號名:MOTOR)的*個字節(jié)處開始,用以下地址訪問數(shù)組中的第二個元素:

MOTOR. Heat_2×3[1,2]

4) 利用數(shù)組傳遞參數(shù)

將數(shù)組作為參數(shù)傳遞時,要求形式參數(shù)和實際參數(shù)必須有同樣的數(shù)據(jù)組織結(jié)構(gòu)、相同 的數(shù)據(jù)類型,并按相同的順序排列。

2. 構(gòu)造

構(gòu)造將不同數(shù)據(jù)類型組合成一個整體,見圖5.6。構(gòu)造的元素可以是任何基本數(shù)據(jù)類型或復(fù)式數(shù)據(jù)類型,有數(shù)組或構(gòu)造元素的構(gòu)造能嵌套8層。因此,STEP 7允許用戶將過程中的各種關(guān)聯(lián)數(shù)據(jù)統(tǒng)一組織在一個構(gòu)造中,也為統(tǒng)一處理不同類型數(shù)據(jù)或參數(shù)提供了可能性

1) 建立構(gòu)造

構(gòu)造(STRUCT)只能在數(shù)據(jù)塊或變量聲明表中定義。圖5.7所示為由整數(shù)(存放數(shù)量)、字節(jié)(存放原始數(shù)據(jù))、字符(存放控制碼)、浮點數(shù)(存放溫度)、布爾數(shù)(完成標(biāo)志信號)組成的構(gòu)造。該構(gòu)造的名稱為Stack_1。

2) 賦初始值

按每個元素的類型和名稱給構(gòu)造的每個元素賦初始值。并將其寫入圖5.8中Initial Value(初始值欄)的相應(yīng)行中。例如,可以分配如下初始值:

Amount=0

Original_data=B#l6#0

Control_code=“Z”

Temperature=98.6

End:=FALSE

3) 訪問構(gòu)造

(1) 用符號地址訪問:如MOTO.Stack_1.Temperature,其中,MOTO為構(gòu)造所在數(shù)據(jù)塊DB20的符號名。

(2) 用物理地址訪問:如Stack_l從DB20的字節(jié)0開始存放,Amount的物理地址是DB20.DBW0,Temperature的地址為DB20.DBD4。

4) 利用構(gòu)造傳遞參數(shù)

構(gòu)造可以作為參數(shù)來傳遞。將構(gòu)造作為參數(shù)傳遞時,要求形式參數(shù)和實際參數(shù)必須有同樣的數(shù)據(jù)組織結(jié)構(gòu)、相同的數(shù)據(jù)類型,并按相同的順序排列。

3. 用戶數(shù)據(jù)類型

STEP 7允許將基本數(shù)據(jù)類型或復(fù)式數(shù)據(jù)類型組合成用戶自己定義的數(shù)據(jù)類型,這種類型稱為用戶數(shù)據(jù)類型或UDT。用戶數(shù)據(jù)類型必須首先單獨建立,并存放在稱為UDT的特殊數(shù)據(jù)塊中,見圖5.8。

圖5.8是用“程序編輯器”建立的一個UDT,其數(shù)據(jù)組織結(jié)構(gòu)與圖5.7相同,該用戶數(shù)據(jù)類型被定義為UDT200,并單獨存儲在被稱為UDT200的特殊塊中。也可以為UDT200建立符號名(如process_data),但是,命名只能在符號表中進(jìn)行。圖5.9給出了一個使用UDT定義數(shù)據(jù)塊(如DBl0)的例子,數(shù)據(jù)塊DBl0中定義兩個變量,一個為整型,另一個為用戶數(shù)據(jù)類型(UDT200)。從圖中可以看出,數(shù)據(jù)塊中UDT的用法與基本數(shù)據(jù)類型的用法類似。

用符號地址或物理地址兩種方式可以訪問UDT中的變量。例如,在DB10中定義了圖5.9格式的數(shù)據(jù),DB10的符號名為Process,訪問Amount變量可分別寫為DB10.DBW 2或Process.Stack_2.Amount。

建立用戶數(shù)據(jù)類型的目的是為了將UDT作為一種數(shù)據(jù)類型使用,以方便定義多個結(jié)構(gòu)相同的構(gòu)造變量。圖5.9建立的Stack_2與圖5.7建立的Stack_1相比,不僅大小結(jié)構(gòu)*相同,而且對Stack_1和Stack_2中元素的訪問方法也*相同。在建立DB10時,由于使用了UDT而使得數(shù)據(jù)塊建立過程方便快捷。在多處使用同樣的UDT時,這一優(yōu)點將更加突出。

程序結(jié)構(gòu)設(shè)計

STEP 7不僅從不同層次充分支持合理的程序結(jié)構(gòu)設(shè)計,而且也簡化了結(jié)構(gòu)設(shè)計的復(fù)雜程度。

一個復(fù)雜的自動化過程可以被分解并定義為一個或多個項目(PROJECT);而對于每個項目,又可以進(jìn)一步分解并定義給一個或多個CPU,每個CPU都有一個控制程序(CPU_PROGRAM)。圖5.10顯示了一個樣本過程,它分成4個不同的項目:項目1和項目2只有一個CPU,而項目3和項目4有多個CPU。這樣,一個很復(fù)雜的控制任務(wù)的結(jié)構(gòu)設(shè)計,就被簡化為各個CPU程序的結(jié)構(gòu)設(shè)計。項目間或項目中的各CPU程序之間,能以某種方式聯(lián)網(wǎng),實現(xiàn)信息共享。如在S7協(xié)議支持下,用MPI網(wǎng)以全局?jǐn)?shù)據(jù)通信的方式可方便地建立起聯(lián)系,實現(xiàn)一個項目中各CPU共享信息

典型的情況是一個過程控制任務(wù)只有一個項目,該項目下也僅有一個CPU程序,每一個CPU程序又可依據(jù)時間特性或事件觸發(fā)特性的差異分類編入不同的組織塊(OB)中。例如,需要以固定時間間隔循環(huán)執(zhí)行的那部分程序編入組織塊OB35中,為PLC正常運行而需進(jìn)行初始化的程序編入組織塊OBl00中。又如,由硬件觸發(fā)的中斷服務(wù)程序編入組織塊OB40中,對程序執(zhí)行中產(chǎn)生的同步錯誤的響應(yīng)處理程序編入組織塊OB121或OB122中。

-

對于各組織塊中的程序,可以根據(jù)其復(fù)雜程度分別選用線性、分部或結(jié)構(gòu)化等三種形式中的一種程序結(jié)構(gòu)。由于組織塊OB1(主程序循環(huán))中的程序是應(yīng)用程序中主要的也是復(fù)雜的部分,因此,對OB1中的程序設(shè)計合理的結(jié)構(gòu)是十分重要的。下面分別說明三種典型結(jié)構(gòu)的特點及選用原則。

1. 線性程序結(jié)構(gòu)

用“線性”結(jié)構(gòu)設(shè)計的程序連續(xù)放置在一個塊內(nèi)(通常為OB1),塊中的程序按順序執(zhí)行。這一結(jié)構(gòu)是初的PLC模擬的繼電器梯形邏輯的模型。線性程序具有簡單、直接的特點。編程時,不必考慮功能塊如何編程及如何調(diào)用,也不必考慮如何定義局部變量及如何使用背景數(shù)據(jù)塊。由于所有的指令在一個塊內(nèi),因此它適用于只需一個人編寫的、相對簡單的控制程序。

這是一種部分模塊化的程序結(jié)構(gòu),也稱為部分結(jié)構(gòu)化。程序被分成各部分放在若干功能塊中,每個功能塊含有用于一種設(shè)備的一系列控制邏輯。放置在組織塊OB1中的指令決定控制程序的各功能塊的執(zhí)行。比如說,一個分部程序可能包含以下內(nèi)容:

(1) 用于控制設(shè)備每一部分的FC;

(2) 用于控制設(shè)備每一工作狀態(tài)的FC;

(3) 用于控制操作員接口的FC;

(4) 用于進(jìn)行PLC自診斷的FC。

在分部程序中,既無數(shù)據(jù)交換也沒有重復(fù)利用的程序代碼。各功能塊收集并使用自己的數(shù)據(jù),功能塊不傳遞也不接收參數(shù),功能塊的編程與調(diào)用比較簡單。由于每個功能區(qū)分為不同的塊,因而使得多個程序員能夠同時編程而不發(fā)生沖突。分部程序結(jié)構(gòu)的編程效率比線性程序有所提高,程序測試也較方便,對程序員的要求也不太高。對不太復(fù)雜的控制程序可考慮采用這種程序結(jié)構(gòu)。

3. 結(jié)構(gòu)化程序結(jié)構(gòu)

*結(jié)構(gòu)化(模塊化)的程序結(jié)構(gòu)是PLC程序設(shè)計和編程較有效的結(jié)構(gòu)形式,它可用于復(fù)雜程度高、程序規(guī)模大的控制應(yīng)用程序設(shè)計。結(jié)構(gòu)化程序可以重復(fù)使用某些功能塊,只需要在使用功能塊時為其提供不同的環(huán)境變量(實參),就能完成對不同設(shè)備的控制。例如,在工業(yè)攪拌控制過程中有三臺泵,對它們的控制功能相似,可以編寫一個用于對泵進(jìn)行控制的功能塊,編程時先定義泵控制所需的變量(形參),并使用這些變量構(gòu)成一個稱為“泵控制”的一般功能塊。在調(diào)用該功能塊時,通過改變傳入功能塊中的參數(shù)(實參),可以分別對成分A、成分B和攪拌桶中的三臺泵進(jìn)行控制。

結(jié)構(gòu)化程序有高的編程和程序調(diào)試效率,應(yīng)用程序代碼量也小。結(jié)構(gòu)化程序也支持多個程序員協(xié)同編程。這種程序結(jié)構(gòu)建立在對PLC系統(tǒng)功能的合理分析、分解及綜合的基礎(chǔ)之上,程序具體結(jié)構(gòu)形式的確定與程序設(shè)計人員的水平及經(jīng)驗關(guān)系很大,對程序員的要求也較前兩種高。

1. 將過程分割為任務(wù)和區(qū)域

一個自動化過程包括許多單個的任務(wù),通過識別一個過程內(nèi)的相關(guān)任務(wù)組,然后將這些組再分解為更小的任務(wù),即使復(fù)雜的過程也能夠被定義。下面將這個工業(yè)攪拌過程構(gòu)造為四個功能區(qū)域:配料A區(qū)域、配料B區(qū)域、混合罐區(qū)域和排料區(qū)域。

2. 說明各個功能區(qū)域

1) 配料A和配料B區(qū)域

(1) 每種配料的管道都配備有一個入口和一個進(jìn)料閥以及進(jìn)料泵。

(2) 進(jìn)料管還有流量傳感器。

(3) 當(dāng)罐的液面?zhèn)鞲衅髦甘竟逎M時,進(jìn)料泵的接通必須被鎖定。

(4) 當(dāng)排料閥打開時,進(jìn)料泵的啟動必須被鎖定。

(5) 在啟動進(jìn)料泵后1 s內(nèi)必須打開入口閥和進(jìn)料閥。

(6) 在進(jìn)料泵停止后(來自流量傳感器的信號)閥門必須立即被關(guān)閉以防止配料從泵中泄露。

(7) 進(jìn)料泵的啟動與一個時間監(jiān)控功能相結(jié)合,換句話說,在泵啟動后的7 s之內(nèi),流量傳感器會報告溢出。

(8) 當(dāng)進(jìn)料泵運行時,如果流量傳感器沒有流量信號,進(jìn)料泵必須盡可能快地斷開。

(9) 必須對進(jìn)料泵啟動的次數(shù)進(jìn)行計數(shù)(維護(hù)間隔)。

2) 混合罐區(qū)域

(1) 當(dāng)罐的液面?zhèn)鞲衅髦甘?ldquo;液面低于低限”或排料閥打開時,攪拌電機的啟動必須被鎖定。

(2) 攪拌電機在達(dá)到額定速度時要發(fā)出一個響應(yīng)信號。如果在電機啟動后10 s內(nèi)還未接收到該信號,則電機必須被斷開。

(3) 必須對攪拌電機的啟動次數(shù)進(jìn)行計數(shù)(維護(hù)間隔)。

(4) 在混合罐中必須安裝三個傳感器。① 罐裝滿:一個常閉觸點。當(dāng)達(dá)到罐的高液面時,該觸點斷開。② 罐中液面高于低限:一個常開觸點。如果達(dá)到低限,該觸點關(guān)閉。③ 罐非空:一個常開觸點,如果罐不空,該觸點閉合。

3) 排料區(qū)域

(1) 罐內(nèi)產(chǎn)品的排出由一個螺線管閥門控制。

(2) 這個螺線管閥門由操作員控制,但是遲在“罐空”信號產(chǎn)生時,該閥必須被關(guān)閉。

(3) 當(dāng)攪拌電機在工作或罐空時打開排料閥必須被鎖定。

3. 定義邏輯塊

通過程序塊可以將用戶程序分布到不同的塊中并建立塊調(diào)用的分層結(jié)構(gòu)來組織程序。本例中用戶程序主要由組織塊OB1、功能塊FB1、功能FC1及三個數(shù)據(jù)塊DB1~DB3組成。圖5.12所示為結(jié)構(gòu)化編程的塊的分層調(diào)用結(jié)構(gòu)。

(1) OB1:與CPU操作系統(tǒng)的接口,包含主要程序。在OBl中調(diào)用塊FBl和FCl并傳送控制過程所需的特定參數(shù)。

(2) FB1:用于配料A的進(jìn)料泵、配料B的進(jìn)料泵和攪拌電機的控制。由于要求*(接通、斷開、計數(shù)應(yīng)用程序等),可以通過同一個功能塊實現(xiàn)。

(3) 背景DB1~DB3:用于控制配料A、配料B的進(jìn)料泵和攪拌電機的實參及靜態(tài)數(shù)據(jù)各不相同,因此分別存儲在與FBl相關(guān)的三個背景DB中。

(4) FC1:用于閥的控制。配料A和B的入口閥和進(jìn)料閥以及排料閥共同使用本邏輯塊。

符號名

如果在用戶程序中使用了符號,則必須用STEP 7在符號表中對這些符號進(jìn)行定義。表5.6所示為所用的程序組件的符號名及地址。

5. 生成電機的FB

電機的FB包括以下邏輯功能:

(1) 啟動和停止輸入。

(2) 允許設(shè)備操作的一系列互鎖(泵和攪拌電機)。互鎖狀態(tài)存儲在OB1的臨時局域數(shù)據(jù)(L堆棧)中(“Motor_enable”和“Valve_enable”),并且當(dāng)電機的FB被處理時與啟動和停止的輸入進(jìn)行邏輯組合。

(3) 來自設(shè)備的反饋必須在一個特定的時間內(nèi)出現(xiàn),否則就假定有故障或錯誤出現(xiàn),并使電機停止。

(4) 時間點和響應(yīng)時間或錯誤故障循環(huán)持續(xù)時間都必須被。

(5) 如果啟動按鈕被按下并且電機被使能,則設(shè)備自行接通并運行直至按下停機按鈕。

(6) 當(dāng)設(shè)備接通時,一個定時器啟動運行,如果在定時器的時間到達(dá)之前未接到來自設(shè)備的響應(yīng)信號,則停機。

滁州西門子PLC系列代理商

收藏該商鋪

登錄 后再收藏

提示

您的留言已提交成功!我們將在第一時間回復(fù)您~
二維碼 意見反饋
在線留言