小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

S7-300全教程內(nèi)容

 三槐堂 2012-01-15

 

第一章 S7-300/400的基本結(jié)構(gòu)
1、    S7-300/400屬于模塊式PLC,主要由機(jī)架、CPU模塊、信號(hào)模塊、功能模塊、接口模塊、通信處理器、電源模塊和編程設(shè)備(工程師、操作員站和操作屏)組成。

圖1-1  PLC控制系統(tǒng)示意圖
PLC的主要生產(chǎn)廠(chǎng)家:德國(guó)的西門(mén)子(Siemens)公司,美國(guó)Rockwell公司所屬的AB公司,GE-Fanuc公司,法國(guó)的施耐德(Schneider)公司,日本的三菱和歐姆龍(OMRON)公司。
PLC的工作過(guò)程
 


表1-1   邏輯運(yùn)算關(guān)系表
與    或    非
Q4.0=I0.0*I0.1    Q4.1 = I0.2+I0.3    Q4.2 =/I0.4
I0.0    I0.1    Q4.0    I0.2    I0.3    Q4.1    I0.4    Q4.2
0    0    0    0    0    0    0    1
0    1    0    0    1    1    1    0
1    0    0    1    0    1        
1    1    1    1    1    1        
在CPU模塊上有存儲(chǔ)器(用來(lái)存放系統(tǒng)程序、用戶(hù)程序、邏輯變量和其它一些信息),包括ROM和RAM。可通過(guò)擴(kuò)展槽擴(kuò)展用戶(hù)RAM。
l    RAM:主程序區(qū)OB1+子程序區(qū)(FB、FCB、定時(shí)中斷塊等)斷電時(shí)由鋰電池供電(幾年)以免RAM中信息丟失。鋰電池電壓< 規(guī)定值,燈報(bào)警,換電池(期間靠電容充電幾分鐘)。
l    PLC采用循環(huán)執(zhí)行用戶(hù)程序的方式。
OB1是用于循環(huán)處理的組織塊(主程序),它可以調(diào)用別的邏輯塊,或被中斷程序(組織塊)中斷。在起動(dòng)完成后,不斷地循環(huán)調(diào)用OB1,在OB1中可以調(diào)用其它邏輯塊(FB, SFB, FC或SFC)。
循環(huán)程序處理過(guò)程可以被某些事件中斷。
在循環(huán)程序處理過(guò)程中,CPU并不直接訪(fǎng)問(wèn)I/O模塊中的輸入地址區(qū)和輸出地址區(qū),而是訪(fǎng)問(wèn)CPU內(nèi)部的輸入/輸出過(guò)程映像區(qū)。批量輸入、批量輸出。
 
梯形圖中Q4.0的線(xiàn)圈(稱(chēng)為內(nèi)部線(xiàn)圈)“通電”時(shí),對(duì)應(yīng)的輸出過(guò)程映像位為1狀態(tài)。信號(hào)經(jīng)輸出模塊隔離和功率放大后,繼電器型輸出模塊中對(duì)應(yīng)的硬件繼電器的線(xiàn)圈(外部線(xiàn)圈)通電,其常開(kāi)觸點(diǎn)閉合,使外部負(fù)載通電工作。
外部輸入電路接通時(shí),對(duì)應(yīng)的輸入過(guò)程映像位(例如I0.0)為1狀態(tài),梯形圖中對(duì)應(yīng)的輸入位的常開(kāi)觸點(diǎn)接通,常閉觸點(diǎn)斷開(kāi)。
某一編程元件對(duì)應(yīng)的過(guò)程映像位為1狀態(tài)時(shí),稱(chēng)該編程元件為ON,過(guò)程映像位為0狀態(tài)時(shí),稱(chēng)該編程元件為OFF。
循環(huán)時(shí)間(Cycle time): 是指操作系統(tǒng)執(zhí)行一次圖1-4所示的循環(huán)操作所需的時(shí)間,又稱(chēng)為掃描循環(huán)時(shí)間(Scan Cycle Time)或掃描周期。如0.7ms、1.7ms等
l    性能指標(biāo):
I/O點(diǎn)數(shù)、掃描周期、指令數(shù)目、功能模塊多少、

 

A(
          O        I0.1    // 接在左側(cè)母線(xiàn)上的I0.1的常開(kāi)觸點(diǎn)
          O     Q4.0    // 與I0.1的常開(kāi)觸點(diǎn)并聯(lián)的Q4.0的常開(kāi)觸點(diǎn)
          ) 
          AN    I0.2        // 與并聯(lián)電路串聯(lián)的I0.2的常閉觸點(diǎn)
         =         Q4.0        // Q4.0的線(xiàn)圈
梯形圖對(duì)應(yīng)的邏輯表達(dá)式:  Q4.0 = (I0.1+Q4.0) 
l    PLC性能指標(biāo):
第二章 西門(mén)子PLC的分類(lèi)
1.S7系列:傳統(tǒng)意義的PLC產(chǎn)品, S7-200是針對(duì)低性能要求的小型PLC。S7-300是模塊式中小型PLC,最多可以擴(kuò)展32個(gè)模塊。S7-400是大型PLC,可以擴(kuò)展300多個(gè)模塊。S7-300/400可以組成MPI、PROFIBUS和工業(yè)以太網(wǎng)等。
2.M7-300/400:采用與S7-300/400相同的結(jié)構(gòu),它可以作為CPU或功能模塊使用。具有AT兼容計(jì)算機(jī)的功能,可以用C,C++或CFC等語(yǔ)言來(lái)編程。
3.C7由S7-300 PLC,HMI(人機(jī)接口)操作面板、I/O、通信和過(guò)程監(jiān)控系統(tǒng)組成。
4.WinAC基于Windows和標(biāo)準(zhǔn)的接口(ActiveX,OPC),提供軟件PLC或插槽PLC。 
S7-300系列PLC簡(jiǎn)介
S7-300的CPU模塊(簡(jiǎn)稱(chēng)為CPU)都有一個(gè)編程用的RS-485接口,有的有PROFIBUS-DP接口或PtP串行通信接口,可以建立一個(gè)MPI(多點(diǎn)接口)網(wǎng)絡(luò)或DP網(wǎng)絡(luò)。
 
1.電源模塊  2.后備電池  3. 24V DC 連接器  4.模式開(kāi)關(guān)      5.狀態(tài)和故障指示燈
6.存儲(chǔ)器卡(CPU 313 以上)      7. MPI多點(diǎn)接口      8.前連接器      9.前蓋
圖2-2  S7-300 PLC
功能最強(qiáng)的CPU的RAM為512KB,最大8192個(gè)存儲(chǔ)器位,512個(gè)定時(shí)器和512個(gè)計(jì)數(shù)器,數(shù)字量最大65536 I/O點(diǎn),模擬量通道最大為4096。有350多條指令。一個(gè)數(shù)字量為1點(diǎn),一個(gè)模擬量為16點(diǎn)。
計(jì)數(shù)器的計(jì)數(shù)范圍為1~999,定時(shí)器的定時(shí)范圍為10ms~9990s。
 
圖2-3  S7-300的安裝
 
圖2-4  多機(jī)架的S7-300 PLC
只需要擴(kuò)展一個(gè)機(jī)架,可以使用價(jià)格便宜的IM 365接口模塊對(duì)。
數(shù)字量模塊:從0號(hào)機(jī)架的4號(hào)槽開(kāi)始,每個(gè)槽位分配4個(gè)字節(jié)的地址,32個(gè)I/O點(diǎn)。
模擬量模塊:一個(gè)通道占一個(gè)字地址。從I B256開(kāi)始,給每一個(gè)模擬量模塊分配8個(gè)字。
1.模塊診斷功能
可以診斷出以下故障:失壓,熔斷器熔斷,看門(mén)狗故障,EPROM、RAM故障。
模擬量模塊共模故障、組態(tài)/參數(shù)錯(cuò)誤、斷線(xiàn)、上下溢出。
2.過(guò)程中斷
數(shù)字量輸入信號(hào)上升沿、下降沿中斷,模擬量輸入超限,CPU暫停當(dāng)前程序,處理OB40。
3.狀態(tài)與故障顯示LED
SF(系統(tǒng)出錯(cuò)/故障顯示,紅色):CPU硬件故障或軟件錯(cuò)誤時(shí)亮。
BATF(電池故障,紅色):電池電壓低或沒(méi)有電池時(shí)亮。
DC 5V(+5V電源指示,綠色): 5V電源正常時(shí)亮。
FRCE(強(qiáng)制,黃色):至少有一個(gè)I/O被強(qiáng)制時(shí)亮。
RUN(運(yùn)行方式,綠色):CPU處于RUN狀態(tài)時(shí)亮;重新啟動(dòng)時(shí)以2 Hz的頻率閃亮; HOLD(單步、斷點(diǎn))狀態(tài)時(shí)以0.5Hz的頻率閃亮。
STOP(停止方式,黃色):CPU處于STOP,HOLD狀態(tài)或重新啟動(dòng)時(shí)常亮。
BUSF(總線(xiàn)錯(cuò)誤,紅色)。
 
圖2-5  CPU 318-2的面板
4.模式選擇開(kāi)關(guān)
(1)RUN-P(運(yùn)行-編程)位置:運(yùn)行時(shí)還可以讀出和修改用戶(hù)程序,改變運(yùn)行方式。
(2)RUN (運(yùn)行)位置:CPU執(zhí)行、讀出用戶(hù)程序,但是不能修改用戶(hù)程序。
(3)STOP(停止)位置:不執(zhí)行用戶(hù)程序,可以讀出和修改用戶(hù)程序。
(4)MRES(清除存儲(chǔ)器):不能保持。將鑰匙開(kāi)關(guān)從STOP狀態(tài)搬到MRES位置,可復(fù)位存儲(chǔ)器,使CPU回到初始狀態(tài)。
復(fù)位存儲(chǔ)器操作:通電后從STOP位置扳到MRES位置,“STOP”LED熄滅1s,亮1s,再熄滅1s后保持亮。放開(kāi)開(kāi)關(guān),使它回到STOP位置,然后又回到MRES,“STOP”LED以2Hz的頻率至少閃動(dòng)3s,表示正在執(zhí)行復(fù)位,最后“STOP”LED一直亮。
某些CPU模塊上有集成I/O。
PLC使用的物理存儲(chǔ)器:RAM,ROM,快閃存儲(chǔ)器(Flash EPROM)和EEPROM。
S7-300 CPU的分類(lèi)
    1.緊湊型CPU:CPU 312C,313C,313C-PtP,313C-2DP,314C-PtP和314C-2DP。各CPU均有計(jì)數(shù)、頻率測(cè)量和脈沖寬度調(diào)制功能。有的有定位功能,有的帶有I/O。
2.標(biāo)準(zhǔn)型CPU:CPU 312,CPU 313,314,315,315-2DP和316-2DP。
3.戶(hù)外型CPU:CPU 312 IFM,314 IFM,314戶(hù)外型和315-2DP。在惡劣的環(huán)境下使用。
4.高端CPU:317-2DP和CPU 318-2DP。
5.故障安全型CPU:CPU 315F。
S7-300的輸入/輸出模塊
輸入/輸出模塊統(tǒng)稱(chēng)為信號(hào)模塊(SM)。
前連接器插在前蓋后面的凹槽內(nèi)。一個(gè)編碼元件與之嚙合,該連接器只能插入同類(lèi)模塊。
 
兩線(xiàn)式接近開(kāi)關(guān)的漏電流小于輸入模塊允許的靜態(tài)電流,匯點(diǎn)輸入的電流流進(jìn)輸入模塊,反之為源輸入電路。
 
 
SM323是S7-300的數(shù)字量輸入輸出模塊,8DI/8DO,16DI/16DO。
 
表2-13  SM331模擬量輸入模塊的模擬值
范圍    雙極性
    百分比    十進(jìn)制    十六進(jìn)制    ±5V    ±10 V    ±20 mA
上溢出    118.515%    32767    7FFFH    5.926 V    11.851V    23.70 mA
超出范圍    117.589%    32511    7EFFH    5.879 V    11.759V    23.52 mA
正常范圍    100.000%    27648    6C00H    5V    10 V    20 mA
    0 %    0    0H    0V    0 V    0mA
    -100.000%    - 27648    9400H    -5V    - 10 V    -20 mA
低于范圍    -117.593%    - 32512    8100H    -5.879 V    - 11.759 V    -23.52 mA
下溢出    -118.519%    - 32768    8000H    -5.926 V    - 11.851 V    -23.70 mA


范圍    單極性
    百分比    十進(jìn)制    十六進(jìn)制    0~10 V    0~20 mA    4~20 mA
上溢出    118.515%    32767    7FFFH    11.852 V    23.70 mA    22.96mA
超出范圍    117.589%    32511    7EFFH    11.759 V    23.52 mA    22.81mA
正常范圍    100.000%    27648    6C00H    10 V    20 mA    20 mA
    0 %    0    0H    0 V    0 mA    4 mA
低于范圍    - 17.593 %    - 4864    ED00H        - 3.52 mA    1.185mA

模擬值的精度小于15 位,則模擬值左移,左對(duì)齊。
【例2-2】壓力變送器的量程為0~10MPa,輸出信號(hào)為4~20mA,模擬量輸入模塊的量程為4~20mA,轉(zhuǎn)換后的數(shù)字量為0~27 648,設(shè)轉(zhuǎn)換后得到的數(shù)字為N,試求以kPa為單位的壓力值。
    解:0~10MPa(0~10 000kPa)對(duì)應(yīng)于轉(zhuǎn)換后的數(shù)字0~27 648,轉(zhuǎn)換公式為
P = 10 000 &acute; N / 27 648  (kPa)
注意:在運(yùn)算時(shí)一定要先乘后除,否則可能會(huì)損失原始數(shù)據(jù)的精度。

 
圖2-13  量程卡

    【例2-3】某發(fā)電機(jī)的電壓互感器的變比為10kV/100V(線(xiàn)電壓),電流互感器的變比為1000A/5A,功率變送器的額定輸入電壓和額定輸入電流分別為AC 100V和5A,額定輸出電壓為 DC ±10V,模擬量輸入模塊將DC ±10V輸入信號(hào)轉(zhuǎn)換為數(shù)字+27648和-27649。設(shè)轉(zhuǎn)換后得到的數(shù)字為N,求以kW為單位的有功功率值。
解:根據(jù)互感器額定值計(jì)算的原邊有功功率額定值為
 
由以上關(guān)系不難推算出互感器原邊的有功功率與轉(zhuǎn)換后的數(shù)字之間的關(guān)系為17321/ 27648 = 0.62648 kW / 字。轉(zhuǎn)換后的數(shù)字為N時(shí),對(duì)應(yīng)的有功功率為0.6265 N (kW),如果以kW為單位顯示功率P,使用定點(diǎn)數(shù)運(yùn)算時(shí)的計(jì)算公式為
    P = N &acute; 6 265 / 10 000  (kW)    
【例2-4】用于測(cè)量鍋爐爐膛壓力(&#8722;60 Pa~60 Pa)的變送器的輸出信號(hào)為4~20mA,模擬量輸入模塊將0~20mA轉(zhuǎn)換為數(shù)字0~27 648,設(shè)轉(zhuǎn)換后得到的數(shù)字為N,試求以0.1Pa為單位的壓力值。
    解:4~20mA的模擬量對(duì)應(yīng)于數(shù)字量5530~27648,即&#8722;600~600(0.1Pa)對(duì)應(yīng)于數(shù)字量5 530~27 648,壓力的計(jì)算公式應(yīng)為

 
1.EX系列數(shù)字量模擬量輸入/輸出模塊
EX模塊在化工等行業(yè)使用。將外部的本質(zhì)-安全設(shè)備(用于有爆炸危險(xiǎn)區(qū)域的傳感器和執(zhí)行器)與PLC非本質(zhì)-安全內(nèi)部回路隔離。
2.F系列數(shù)字量模擬量輸入/輸出模塊
    這些模塊具有故障安全運(yùn)行的集成安全功能,在ET 200M分布式I/O或S7-300F中使用。用于連接有爆炸危險(xiǎn)區(qū)域的設(shè)備。
S7-300的功能模塊
1.計(jì)數(shù)器模塊
模塊的計(jì)數(shù)器均為0~32位或 31位加減計(jì)數(shù)器,可以判斷脈沖的方向,模塊給編碼器供電。達(dá)到比較值時(shí)發(fā)出中斷??梢?倍頻和4倍頻計(jì)數(shù)。有集成的DI/DO。
FM 350-1是單通道計(jì)數(shù)器模塊,可以檢測(cè)最高達(dá)500kHz的脈沖,有連續(xù)計(jì)數(shù)、單向計(jì)數(shù)、循環(huán)計(jì)數(shù)3種工作模式。FM 350-2 和CM 35都是8通道智能型計(jì)數(shù)器模塊。
2.位置控制與位置檢測(cè)模塊
FM 351雙通道定位模塊用于控制變級(jí)調(diào)速電動(dòng)機(jī)或變頻器。FM 353是步進(jìn)電機(jī)定位模塊。FM 354伺服電機(jī)定位模塊。FM 357可以用于最多4個(gè)插補(bǔ)軸的協(xié)同定位。FM 352高速電子凸輪控制器,它有32個(gè)凸輪軌跡,13個(gè)集成的DO,采用增量式編碼器或絕對(duì)式編碼器。
SM 338超聲波傳感器檢測(cè)位置,無(wú)磨損、保護(hù)等級(jí)高、精度穩(wěn)定不變。
3.閉環(huán)控制模塊
FM 355閉環(huán)控制模塊有4個(gè)閉環(huán)控制通道,有自?xún)?yōu)化溫度控制算法和PID算法。
4.稱(chēng)重模塊
SIWAREX U稱(chēng)重模塊是緊湊型電子稱(chēng),測(cè)定料倉(cāng)和貯斗的料位,對(duì)吊車(chē)載荷進(jìn)行監(jiān)控,對(duì)傳送帶載荷進(jìn)行測(cè)量或?qū)I(yè)提升機(jī)、軋機(jī)超載進(jìn)行安全防護(hù)等。
SIWAREX M稱(chēng)重模塊是有校驗(yàn)?zāi)芰Φ碾娮臃Q(chēng)重和配料單元,可以組成多料稱(chēng)系統(tǒng),安裝在易爆區(qū)域。
5.電源模塊
PS 307電源模塊將120/230伏交流電壓轉(zhuǎn)換為24V直流電壓,為S7-300/400、傳感器和執(zhí)行器供電。輸出電流有2A、5A或10A 3種。電源模塊安裝在DIN導(dǎo)軌上的插槽1。
 
圖2-17  S7-300的浮動(dòng)參考電位
某些大型工廠(chǎng)(例如化工廠(chǎng)和發(fā)電廠(chǎng))為了監(jiān)視對(duì)地的短路電流,可能采用浮動(dòng)參考電位,可以將M點(diǎn)與接地點(diǎn)之間的短接片去掉。








2.5  S7-400系列PLC的硬件組成
模塊的尺寸為25(寬)×290(高)×210(深)mm。高 爐 噴 煤 工 程構(gòu)成圖。
 
 
集中式擴(kuò)展方式適用于小型配置或一個(gè)控制柜中的系統(tǒng)。CC和EU的最大距離為1.5m(帶5V電源)或3m(不帶5V電源)。
分布式擴(kuò)展適用于分布范圍廣的場(chǎng)合,CC與最后一個(gè)EU的最大距離為100m(S7 EU)或600m(S5 EU)。
用ET 200分布式I/O可以進(jìn)行遠(yuǎn)程擴(kuò)展,用于分布范圍很廣的系統(tǒng)。通過(guò)CPU中的PROFIBUS-DP接口,最多連接125個(gè)總線(xiàn)節(jié)點(diǎn)。使用光纜時(shí)CC和最后一個(gè)節(jié)點(diǎn)的距離為23km。
2.S7-400的特點(diǎn)
(1)運(yùn)行速度高,S7 416執(zhí)行一條二進(jìn)制指令只要0.08ms。
(2)存儲(chǔ)器容量大,例如CPU 417-4的RAM可以擴(kuò)展到16MB,裝載存儲(chǔ)器(FEPROM或RAM)可以擴(kuò)展到64MB。
(3)I/O擴(kuò)展功能強(qiáng),可以擴(kuò)展21個(gè)機(jī)架,S7 417-4最多可以擴(kuò)展262144個(gè)數(shù)字量I/O點(diǎn)和16384個(gè)模擬量I/O。
(4)有極強(qiáng)的通信能力,集成的MPI能建立最多32個(gè)站的簡(jiǎn)單網(wǎng)絡(luò)。大多數(shù)CPU集成有PROFIBUS-DP主站接口,用來(lái)建立高速的分布式系統(tǒng), 通信速率最高12M bit/s。鍋爐系統(tǒng)構(gòu)成圖
2.5.2  機(jī)架與接口模塊
(1)通用機(jī)架UR1/UR2
(2)中央機(jī)架,CR2是18槽,一個(gè)電源模塊和兩個(gè)CPU模塊。
CR3是4槽的中央機(jī)架,有I/O總線(xiàn)和通信總線(xiàn)。
 
圖2-17  機(jī)架與總線(xiàn)
(3)擴(kuò)展機(jī)架ER1/ER2
ER1和ER2是擴(kuò)展機(jī)架,分別有18槽和9槽,只有I/O總線(xiàn)。
(4)UR2-H機(jī)架
UR2-H機(jī)架用于在一個(gè)機(jī)架上配置一個(gè)完整的S7-400H冗余系統(tǒng),每個(gè)均有自己的I/O。兩個(gè)電源模塊和兩個(gè)冗余CPU模塊。
2.5.3  S7-400的通信功能
MPI、PROFIBUS-DP、工業(yè)以太網(wǎng)或AS-i現(xiàn)場(chǎng)總線(xiàn),周期性自動(dòng)交換I/O模塊的數(shù)據(jù)?;蚧谑录?qū)動(dòng),由用戶(hù)程序塊調(diào)用。
2.5.4  冗余設(shè)計(jì)的容錯(cuò)自動(dòng)化系統(tǒng)S7-400H
 
S7 Software Redundancy(軟件冗余性)可選軟件在S7-300和S7-400標(biāo)準(zhǔn)系統(tǒng)上運(yùn)行。生產(chǎn)過(guò)程出現(xiàn)故障時(shí),在幾秒內(nèi)切換到替代系統(tǒng)。
S7-400H主要器件都是雙重的:CPU、電源模塊以及連接兩個(gè)CPU的硬件……
3.S7-400H冗余控制PLC的工作原理
S7-400H采用“熱備用”模式的主動(dòng)冗余原理,在發(fā)生故障時(shí),無(wú)擾動(dòng)地自動(dòng)切換。
兩個(gè)控制器使用相同的用戶(hù)程序,接收相同數(shù)據(jù),兩個(gè)控制器同步地更新內(nèi)容,任意一個(gè)子系統(tǒng)有故障時(shí),另一個(gè)承擔(dān)全部控制任務(wù)。
2.5.5  安全型自動(dòng)化系統(tǒng)S7-400F/FH
S7-400F/FH使用標(biāo)準(zhǔn)模塊和安全型模塊,整個(gè)工廠(chǎng)用相同的標(biāo)準(zhǔn)工具軟件來(lái)配置和編程。
2.5.6  多CPU處理
S7-400中央機(jī)架上最多4個(gè)具有多CPU處理能力的CPU同時(shí)運(yùn)行。這些CPU自動(dòng)地、同步地變換其運(yùn)行模式。
適用場(chǎng)合:程序太長(zhǎng),存儲(chǔ)空間不夠,系統(tǒng)可以分。通過(guò)通信總線(xiàn),CPU彼此互連。
2.5.9  輸入/輸出模塊
S7-400的信號(hào)模塊地址在STEP 7中自動(dòng)生成。用戶(hù)可以修改。
S7-400的模擬量模塊起始地址從512開(kāi)始,同類(lèi)模塊的地址按順序連續(xù)排列。
表2-5  模塊地址舉例
0號(hào)機(jī)架    1號(hào)機(jī)架
槽號(hào)    模塊種類(lèi)    地址    槽號(hào)    模塊種類(lèi)    地址
1    PS 417 10A電源模塊        1    32點(diǎn)DI    IB4~I(xiàn)B7
2             2     16點(diǎn)DO    QB2,QB3
3    CPU 412-2DP        3    16點(diǎn)DO    QB4,QB5
4     16點(diǎn)DO    QB0,QB1    4     8點(diǎn)AO    QW528~QW543
5     16點(diǎn)DI    IB0,IB1    5     8點(diǎn)AI    IW544~I(xiàn)W559
6     8點(diǎn)AO  2個(gè)字節(jié)    QW512~QW527    6     16點(diǎn)DO    QB6,QB7
7     16點(diǎn)AI2 個(gè)字節(jié)    IW512~I(xiàn)W543    7     8點(diǎn)AI    IW560~I(xiàn)W575
8     16點(diǎn)DI    IB2,IB3    8     32點(diǎn)DI    IB8~I(xiàn)B11
9     IM460-1    4093    9     IM461-0    4092
表2-6  S7-300與S7-400性能比較接近的功能模塊
功能模塊    S7-300系列    S7-400系列
計(jì)數(shù)器模塊    FM 350-1    FM 450-1
定位模塊    FM 351,雙通道    FM 451,3通道
定位模塊    FM 353,雙通道    FM 453,3通道
電子凸輪控制器    FM 352,13個(gè)數(shù)字量輸出     FM 452,16個(gè)數(shù)字量輸出
閉環(huán)控制模塊    FM 355,4通道    FM 455,16通道
2.6  ET 200分布式I/O
基于PROFIBUS-DP現(xiàn)場(chǎng)總線(xiàn)的分布式I/O。I/O傳送信號(hào)到CPU只需ms級(jí)。
只需要很小的空間,能在非常嚴(yán)酷的環(huán)境(例如酷熱、嚴(yán)寒、強(qiáng)壓、潮濕或多粉塵)中使用。
(1)電機(jī)啟動(dòng)器:異步電機(jī)的單向或可逆啟動(dòng),7.5kW,最大電流40A,一個(gè)站可以帶6個(gè)電機(jī)啟動(dòng)器。
(2)氣動(dòng)系統(tǒng):ET 200X用于閥門(mén)控制。
(3)變頻器
(4)智能傳感器:光電式編碼器或光電開(kāi)關(guān)等與使用ET 200S進(jìn)行通信。
(5)安全技術(shù):在冗余設(shè)計(jì)的容錯(cuò)控制系統(tǒng)或安全自動(dòng)化系統(tǒng)中使用。包括緊急斷開(kāi)開(kāi)關(guān),安全門(mén)的監(jiān)控以及眾多與安全有關(guān)的電路。有ET 200S故障防止模塊、故障防止CPU和PROFISafe協(xié)議。

2.6.2  ET 200的分類(lèi)
(1) ET 200S是分布式I/O系統(tǒng)。
(2) ET 200M是模塊化的分布式I/O,采用S7-300全系列模塊,最多8個(gè)模塊。
ET 200M戶(hù)外型溫度范圍-25°C到+60°C。
(3) ET 200is是本質(zhì)安全系統(tǒng),適用于有爆炸危險(xiǎn)的區(qū)域。
(4) ET 200X:IP65/67的分布式I/O,相當(dāng)于CPU 314,可用于有粉末和水流噴濺的場(chǎng)合。
(5) ET 200eco是經(jīng)濟(jì)實(shí)用的I/O,IP67。
(6) ET 200R適用于機(jī)器人,能抗焊接火花的飛濺。
(7) ET 200L是小巧經(jīng)濟(jì)的分布式I/O,像明信片大小的I/O模塊。
    (8) ET 200B:整體式的一體化分布式I/O。

3.1  S7-300/400的編程語(yǔ)言
3.1.1  PLC編程語(yǔ)言的國(guó)際標(biāo)準(zhǔn)
IEC 61131是PLC的國(guó)際標(biāo)準(zhǔn),1992~1995年發(fā)布了IEC 61131標(biāo)準(zhǔn)中的1~4部分,我國(guó)在1995年11月發(fā)布了GB/T 15969-1/2/3/4(等同于IEC 61131-1/2/3/4)。
IEC 61131-3廣泛地應(yīng)用PLC、DCS和工控機(jī)、 “軟件PLC”、數(shù)控系統(tǒng)、RTU等產(chǎn)品。
定義了5種編程語(yǔ)言
1) 指令表IL(Instruction list):西門(mén)子稱(chēng)為語(yǔ)句表STL。
2) 結(jié)構(gòu)文本ST(Structured text):西門(mén)子稱(chēng)為結(jié)構(gòu)化控制語(yǔ)言(SCL)。
3) 梯形圖LD(Ladder diagram):西門(mén)子簡(jiǎn)稱(chēng)為L(zhǎng)AD。
4) 功能塊圖FBD (Function block diagram):標(biāo)準(zhǔn)中稱(chēng)為功能方框圖語(yǔ)言。
5) 順序功能圖SFC(Sequential function chart):對(duì)應(yīng)于西門(mén)子的S7 Graph。
 
3.1.2  STEP 7中的編程語(yǔ)言
梯形圖、語(yǔ)句表和功能塊圖是3種基本編程語(yǔ)言,可以相互轉(zhuǎn)換。
      1.順序功能圖(SFC) :STEP 7中的S7 Graph
    2.梯形圖(LAD)
直觀(guān)易懂,適合于數(shù)字量邏輯控制?!澳芰鳌?Power flow)與程序執(zhí)行的方向。
3. 語(yǔ)句表(STL):功能比梯形圖或功能塊圖強(qiáng)。
 
4.功能塊圖(FBD):“LOGO!”系列微型PLC使用功能塊圖編程。
5.結(jié)構(gòu)文本(ST):STEP 7的S7 SCL(結(jié)構(gòu)化控制語(yǔ)言)符合EN 61131-3標(biāo)準(zhǔn)。
SCL適合于復(fù)雜的公式計(jì)算、復(fù)雜的計(jì)算任務(wù)和最優(yōu)化算法,或管理大量的數(shù)據(jù)等。
6.S7 HiGraph 編程語(yǔ)言
圖形編程語(yǔ)言S7 HiGraph 屬于可選軟件包,它用狀態(tài)圖(state graphs)來(lái)描述異步、非順序過(guò)程的編程語(yǔ)言。
7.S7 CFC 編程語(yǔ)言
可選軟件包CFC(Continuous Function Chart,連續(xù)功能圖)用圖形方式連接程序庫(kù)中以塊的形式提供的各種功能。
8.編程語(yǔ)言的相互轉(zhuǎn)換與選用
在STEP 7編程軟件中,如果程序塊沒(méi)有錯(cuò)誤,并且被正確地劃分為網(wǎng)絡(luò),在梯形圖、功能塊圖和語(yǔ)句表之間可以轉(zhuǎn)換。如果部分網(wǎng)絡(luò)不能轉(zhuǎn)換,則用語(yǔ)句表表示。
語(yǔ)句表可供喜歡用匯編語(yǔ)言編程的用戶(hù)使用。語(yǔ)句表的輸入快,可以在每條語(yǔ)句后面加上注釋。設(shè)計(jì)高級(jí)應(yīng)用程序時(shí)建議使用語(yǔ)句表。
梯形圖適合于熟悉繼電器電路的人員使用。設(shè)計(jì)復(fù)雜的觸點(diǎn)電路時(shí)最好用梯形圖。
    功能塊圖適合于熟悉數(shù)字電路的人使用。
    S7 SCL編程語(yǔ)言適合于熟悉高級(jí)編程語(yǔ)言(例如PASCAL或C語(yǔ)言)的人使用。
    S7 Graph,HiGraph和CFC可供有技術(shù)背景,但是沒(méi)有PLC 編程經(jīng)驗(yàn)的用戶(hù)使用。S7 Graph對(duì)順序控制過(guò)程的編程非常方便,HiGraph適合于異步非順序過(guò)程的編程,CFC適合于連續(xù)過(guò)程控制的編程。
3.2  S7-300/400 CPU的存儲(chǔ)區(qū)
3.2.1 數(shù)制
    1.二進(jìn)制數(shù)
二進(jìn)制數(shù)的1位(bit)只能取0和1這兩個(gè)不同的值,用來(lái)表示開(kāi)關(guān)量的兩種不同的狀態(tài)。該位的值與線(xiàn)圈、觸點(diǎn)的關(guān)系。ON/OFF,TURE/FALSE。二進(jìn)制常數(shù):2#1111_0110_1001_0001。
2.十六進(jìn)制數(shù)
十六進(jìn)制的16個(gè)數(shù)字是0~9和A~F, 每個(gè)占二進(jìn)制數(shù)的4位。B#16#,W#16#,DW#16#, W#16#13AF(13AFH)。逢16進(jìn)1,例如B#16#3C=3×16+12=60。
3.BCD碼
    BCD碼用4位二進(jìn)制數(shù)表示一位十進(jìn)制數(shù),十進(jìn)制數(shù)9對(duì)應(yīng)的二進(jìn)制數(shù)為1001。
最高4位用來(lái)表示符號(hào),16/32位BCD碼的范圍。BCD碼實(shí)際上是十六進(jìn)制數(shù),但是各位之間逢十進(jìn)一。296對(duì)應(yīng)的BCD碼為W#16#296,或2#0000 0010 1001 0110。
2#0000 0001 0010 1000對(duì)應(yīng)的十進(jìn)制數(shù)也是296,對(duì)應(yīng)的十進(jìn)制數(shù)為
 。
3.2.2 基本數(shù)據(jù)類(lèi)型
 
1.位(bit):位數(shù)據(jù)的數(shù)據(jù)類(lèi)型為BOOL(布爾)型。I3.2的意義。
2.字節(jié)(Byte)
3.字(Word)表示無(wú)符號(hào)數(shù)。取值范圍為W#16#0000~W#16#FFFF。
4.雙字(Double Word)表示無(wú)符號(hào)數(shù)。范圍DW#16#0000_0000~DW#16#FFFF_FFFF。
5.16位整數(shù)(INT,Integer)是有符號(hào)數(shù),補(bǔ)碼。最高位為符號(hào)位,為0時(shí)為正數(shù),取值范圍為-32 768~32 767。
6.32位整數(shù)(DINT,Double Integer)最高位為符號(hào)位,取值范圍為  MB100     M表示內(nèi)部存儲(chǔ)區(qū)
-2 147 483 648~2 147 483 647。
 
圖3-6  字節(jié)、字和雙字

3.2.3 復(fù)合數(shù)據(jù)類(lèi)型與參數(shù)類(lèi)型
1.復(fù)合數(shù)據(jù)類(lèi)型
通過(guò)組合基本數(shù)據(jù)類(lèi)型和復(fù)合數(shù)據(jù)類(lèi)型可以生成下面的數(shù)據(jù)類(lèi)型:
(1)    數(shù)組(ARRAY)
(2)    結(jié)構(gòu)(STRUCT)
(3) 字符串(STRING)是最多有254個(gè)字符(CHAR)的一維數(shù)組。
(4) 日期和時(shí)間(DATE_AND_TIME)用于存儲(chǔ)年、月、日、時(shí)、分、秒、毫秒和星期,占用8個(gè)字節(jié),用BCD格式保存。星期天的代碼為1,星期一~星期六的代碼為2~7。
例如DT#2004-07-15-12:30:15.200為2004年7月15日12時(shí)30分15.2秒。
(5) 用戶(hù)定義的數(shù)據(jù)類(lèi)型UDT (user-defined data types)。
在數(shù)據(jù)塊DB和邏輯塊的變量聲明表中定義復(fù)合數(shù)據(jù)類(lèi)型。
2.參數(shù)類(lèi)型
為在邏輯塊之間傳遞參數(shù)的形參(formal parameter,形式參數(shù))定義的數(shù)據(jù)類(lèi)型:
(1) TIMER(定時(shí)器)和COUNTER(計(jì)數(shù)器):對(duì)應(yīng)的實(shí)參(actual parameter,實(shí)際參數(shù))應(yīng)為定時(shí)器或計(jì)數(shù)器的編號(hào),例如T3,C21。
(2) BLOCK(塊):指定一個(gè)塊用作輸入和輸出,實(shí)參應(yīng)為同類(lèi)型的塊。
3.2.5  系統(tǒng)存儲(chǔ)器   (存儲(chǔ)器RAM = 用戶(hù)RAM + 系統(tǒng)RAM)
1.過(guò)程映像輸入/輸出(I/Q)
在掃描循環(huán)開(kāi)始時(shí),CPU讀取數(shù)字量輸入模塊的輸入信號(hào)的狀態(tài),并將它們存入RAM中過(guò)程映像輸入(process image input,PII)中。
在掃描循環(huán)中,用戶(hù)程序計(jì)算輸出值,并將它們存入過(guò)程映像輸出表(process image output,PIQ)。在循環(huán)掃描結(jié)束時(shí)將過(guò)程映像輸出表的內(nèi)容寫(xiě)入數(shù)字量輸出模塊。
I和Q均以按位、字節(jié)、字和雙字來(lái)存取,例如I0.0,  Q4.0、IB0, IW0和ID0。
與直接訪(fǎng)問(wèn)I/O模塊相比的優(yōu)缺點(diǎn)。
 
2.內(nèi)部存儲(chǔ)器標(biāo)志位(M)存儲(chǔ)器區(qū)   MB1
3.定時(shí)器(T)存儲(chǔ)器區(qū)
時(shí)間值可以用二進(jìn)制或BCD碼方式讀取。
4.計(jì)數(shù)器(C)存儲(chǔ)器區(qū)
計(jì)數(shù)值(0~999)可以用二進(jìn)制或BCD碼方式讀取。
5.共享數(shù)據(jù)塊(DB)與背景數(shù)據(jù)塊(DI)
DB為共享數(shù)據(jù)塊,DBX2.3,DBB5,DBW10和DBD12。
DI為背景數(shù)據(jù)塊,DIX, DIB,DIW和DID。
6.外設(shè)I/O區(qū)(PI/PO)
    外設(shè)輸入(PI)和外設(shè)輸出(PQ)區(qū)允許直接訪(fǎng)問(wèn)本地的和分布式的輸入模塊和輸出模塊??梢园醋止?jié)(PIB或PQB)、字(PIW或PQW)或雙字(PID或PQD)存取,不能以位為單位存取PI和PO。
3.2.6  CPU中的寄存器
1.累加器(ACCUx)
累加器用于處理字節(jié)、字或雙字的寄存器。S7-300有兩個(gè)32位累加器(ACCU1和ACCU2),S7-400有4個(gè)累加器(ACCU1~ACCU4)。數(shù)據(jù)放在累加器的低端(右對(duì)齊)。
2.狀態(tài)字寄存器(16位)
首次檢測(cè)位/FC, 邏輯運(yùn)算結(jié)果(RLO);
狀態(tài)位STA不能用指令檢測(cè);
OR位暫存邏輯“與”的操作結(jié)果(先與后或);
算術(shù)運(yùn)算或比較指令執(zhí)行時(shí)出現(xiàn)錯(cuò)誤,溢出位OV被置1。
OV位被置1時(shí)溢出狀態(tài)保持位OS位也被置1,OV位被清0時(shí)OS仍保持為1,用于指明前面的指令執(zhí)行過(guò)程中是否產(chǎn)生過(guò)錯(cuò)誤。
條件碼 1(CC1)和條件碼0(CCO)綜合起來(lái)用于表示在累加器1中產(chǎn)生的算術(shù)運(yùn)算或邏輯運(yùn)算的結(jié)果與0的大小關(guān)系、比較指令的執(zhí)行結(jié)果或移位指令的移出位狀態(tài)。
二進(jìn)制結(jié)果位(BR)在一段既有位操作又有字操作的程序中,用于表示字操作結(jié)果是否正確。在梯形圖的方框指令中,BR位與ENO有對(duì)應(yīng)關(guān)系,用于表明方框指令是否被正確執(zhí)行:如果執(zhí)行出現(xiàn)了錯(cuò)誤,BR位為0,ENO也為 0;如果功能被正確執(zhí)行,BR位為 1,ENO也為 1。
 
圖3-9  狀態(tài)字的結(jié)構(gòu)
 
3.?dāng)?shù)據(jù)塊寄存器:DB和DI寄存器分別用來(lái)保存打開(kāi)的共享數(shù)據(jù)塊和背景數(shù)據(jù)塊的編號(hào)。
3.3  位邏輯指令
    位邏輯指令用于二進(jìn)制數(shù)的邏輯運(yùn)算。位邏輯運(yùn)算的結(jié)果簡(jiǎn)稱(chēng)為RLO。
3.3.1  觸點(diǎn)指令
1.    觸點(diǎn)與線(xiàn)圈
A(And,與)指令來(lái)表示串聯(lián)的常開(kāi)觸點(diǎn)。
O (Or,或)指令來(lái)表示并聯(lián)的常開(kāi)觸點(diǎn)。
AN (And Not,與非)來(lái)表示串聯(lián)的常閉觸點(diǎn),
ON (Or Not)來(lái)表示并聯(lián)的常閉觸點(diǎn)。
輸出指令“=”將RLO寫(xiě)入地址位,與線(xiàn)圈相對(duì)應(yīng)。L20.0是局域變量。將梯形圖轉(zhuǎn)換為語(yǔ)句表時(shí),局域變量L20.0是自動(dòng)分配的。
A(    
          A         I 0.0
          AN        I 0.1
          O         I 0.2
          )     
          A         I 0.3
          ON         C 5
          =         L 20.0
          A         L 20.0
          =         Q 4.3
          A         L 20.0
          =         Q 4.4
          A         L 20.0
          AN        I 3.4
=         Q 4.6
 
2.    取反觸點(diǎn) 
 
3.電路塊的串聯(lián)和并聯(lián)
 
4.中線(xiàn)輸出指令  下面是圖3-14(b)中第一行對(duì)應(yīng)的語(yǔ)句表。
        A        I0.0
      AN        I0.1
      =         M0.1
      A         M0.1
      A         I0.3
      =         Q4.3
 

 

 

 
 
Network 1:
A        I0.3
A        I0.0    
FP
=        Q4.5 
Network 2:           
A        I0.3
A        I0.0
FN
=        Q4.3
 
A         I0.3
A(    
A         I0.4
BLD      100  
FN        M0.1
       )     
   =         Q4.5
【例3-1】設(shè)計(jì)故障信息顯示電路,故障信號(hào)I0.0為1使Q4.0控制的指示燈以1Hz的頻率閃爍。操作人員按復(fù)位按鈕I0.1后,如果故障已經(jīng)消失,指示燈熄滅。如果沒(méi)有消失,指示燈轉(zhuǎn)為常亮,直至故障消失。
 
設(shè)置CPU的屬性時(shí),在“Cycle/Clock Memory”標(biāo)簽頁(yè)令M1為時(shí)鐘存儲(chǔ)器字節(jié),其中的M1.5提供周期為1s的時(shí)鐘脈沖。   
SET與CLR(Clear)指令將RLO(邏輯運(yùn)算結(jié)果)置位或復(fù)位,緊接在它們后面的賦值語(yǔ)句中的地址將變?yōu)?狀態(tài)或0狀態(tài)。
SET            //將RLO置位
= M0.2        //M0.2的線(xiàn)圈“通電”
CLR            //將RLO復(fù)位
= Q4.7        //Q4.7的線(xiàn)圈“斷電”
3.4.1  定時(shí)器指令
 

 
在CPU內(nèi)部,時(shí)間值以二進(jìn)制格式存放,占定時(shí)器字的0~9位。
可以按下列的形式將時(shí)間預(yù)置值裝入累加器的低位字:
(1) 十六進(jìn)制數(shù)W#16#wxyz,其中的w是時(shí)間基準(zhǔn),xyz是BCD碼形式的時(shí)間值。
(2) S5T#aH_bM_cS_Dms,例如S5T#18S。
時(shí)基代碼為二進(jìn)制數(shù)00,01,10和11時(shí),對(duì)應(yīng)的時(shí)基分別為10ms,100ms,1s和10s。
6.脈沖定時(shí)器
 
類(lèi)似于上升沿觸發(fā)的單穩(wěn)態(tài)電路。
S5脈沖定時(shí)器(Pulse S5 Timer),S為設(shè)置輸入端,TV為預(yù)置值輸入端,R為復(fù)位輸入端;Q為定時(shí)器位輸出端,BI輸出不帶時(shí)基的十六進(jìn)制格式,BCD輸出BCD格式的當(dāng)前時(shí)間值和時(shí)基。
定時(shí)器中的S,R,Q為BOOL(位)變量,BI和BCD為WORD(字)變量,TV為S5TIME量。各變量均可以使用I, Q, M, L, D存儲(chǔ)區(qū), TV也可以使用定時(shí)時(shí)間常數(shù)S5T#。
 
A         I 1.2
FR         T0        //允許定時(shí)器T1再起動(dòng)
A        I 0.0
L         S5T#2s     //預(yù)置值2s送入累加器1
SP         T0         //啟動(dòng)T0
A        I 0.1
R         T0         //復(fù)位T0
L         T0         //將T0的十六進(jìn)制時(shí)間當(dāng)前值裝入累加器1
T         MW10    //將累加器1的    內(nèi)容傳送到MW10
LC         T0         //將T0的BCD時(shí)間當(dāng)前值裝入累加器1.
T         MW12    //將累加器1的內(nèi)容傳送到MW12
A         T0         //檢查T(mén)0的信號(hào)狀態(tài)
=         Q 4.0    //T0的定時(shí)器位為1時(shí),Q4.0的線(xiàn)圈通電
僅在語(yǔ)句表中使用的FR指令允許定時(shí)器再起動(dòng),即控制FR的RLO(I1.2)由0變?yōu)?狀態(tài)時(shí),重新裝入定時(shí)時(shí)間,定時(shí)器又從預(yù)置值開(kāi)始定時(shí)。再起動(dòng)只是在定時(shí)器的起動(dòng)條件滿(mǎn)足(圖3-28中的I0.1=1)時(shí)起作用。該指令可以用于所有的定時(shí)器,但是它不是起動(dòng)定時(shí)器定時(shí)的必要條件。
8.?dāng)U展的脈沖定時(shí)器
 
 
10.接通延時(shí)定時(shí)器
 
 
 
12.保持型接通延時(shí)定時(shí)器
 
 
14.?dāng)嚅_(kāi)延時(shí)定時(shí)器線(xiàn)圈
 
 

3.4.2  計(jì)數(shù)器指令
1.計(jì)數(shù)器的存儲(chǔ)器區(qū)
每個(gè)計(jì)數(shù)器有一個(gè)16位的字和一個(gè)二進(jìn)制位。
 
    計(jì)數(shù)器字的0~11位是計(jì)數(shù)值的BCD碼,計(jì)數(shù)值的范圍為0~999。二進(jìn)制格式的計(jì)數(shù)值只占用計(jì)數(shù)器字的0~9位。
 
下面是圖3-44中左邊的電路對(duì)應(yīng)的語(yǔ)句表:   
A        I0.0         //在I0.0的上升沿
CU         C10         //加計(jì)數(shù)器C10的當(dāng)前值加1
BLD     101
A         I0.2         //在I0.2的上升沿
L         C#6             //計(jì)數(shù)器的預(yù)置值6被裝入累加器的低字
S         C10         //將預(yù)置值裝入計(jì)數(shù)器C10
A        I0.3         //如果I0.3為1
R         C10         //復(fù)位C10
L         C10         //將C10的二進(jìn)制計(jì)數(shù)當(dāng)前值裝入累加器1
T         MW0        //將累加器1的內(nèi)容傳送到MW0
LC         C10         //將C10的BCD計(jì)數(shù)當(dāng)前值裝入累加器1
T         MW8        //將累加器1的內(nèi)容傳送到MW8
A         C10         //如果C10的當(dāng)前值非0
=         Q 5.0         //Q 5.0為1狀態(tài)
設(shè)置計(jì)數(shù)值線(xiàn)圈SC(Set Counter Value)用來(lái)設(shè)置計(jì)數(shù)值,在RLO的上升沿預(yù)置值被送入指定的計(jì)數(shù)器。CU的線(xiàn)圈為加計(jì)數(shù)器線(xiàn)圈。在I0.0的上升沿,如果計(jì)數(shù)值小于999,計(jì)數(shù)值加1。復(fù)位輸入I0.3為1時(shí),計(jì)數(shù)器被復(fù)位,計(jì)數(shù)值被清0。
計(jì)數(shù)值大于0時(shí)計(jì)數(shù)器位(即輸出Q)為1;計(jì)數(shù)值為0時(shí),計(jì)數(shù)器位亦為0。
在減計(jì)數(shù)輸入信號(hào)CD的上升沿,如果計(jì)數(shù)值大于0,計(jì)數(shù)值減1。
        
3.5.1 裝入指令與傳送指令
1.裝入指令與傳送指令
裝入(L,Load)指令將源操作數(shù)裝入累加器1,而累加器1原有的數(shù)據(jù)移入累加器2。
裝入指令可以對(duì)字節(jié)(8位)、字(16位)、雙字(32位)數(shù)據(jù)迸行操作。
傳送(T,Transfer)指令將累加器1中的內(nèi)容寫(xiě)入目的存儲(chǔ)區(qū)中,累加器1的內(nèi)容不變。
2.立即尋址的裝入與傳送指令
立即尋址的操作數(shù)直接在指令中,下面是使用立即尋址的例子。
L   -35                //將16位十進(jìn)制常數(shù)-35裝入累加器1的低字ACCU1-L
L    L#5                    //將32位常數(shù)5裝入累加器1    
L    B#16#5A                //將8位十六進(jìn)制常數(shù)裝入累加器1最低字節(jié)ACCU1-LL
L    W#16#3E4F            //將16位十六進(jìn)制常數(shù)裝入累加器1的低字ACCU1-L
L    DW#16#567A3DC8    //將32位十六進(jìn)制常數(shù)裝入累加器1
L    2#0001_1001_1110_0010    //將16位二進(jìn)制常數(shù)裝入累加器1的低字ACCU1-L
L    25.38                //將32位浮點(diǎn)數(shù)常數(shù)(25.38)裝入累加器1
L    ‘ABCD’                //將4個(gè)字符裝入累加器1        
L    TOD#12:30:3.0        //將32位實(shí)時(shí)時(shí)間常數(shù)裝入累加器1
L   D#2004-2-3            //將16位日期常數(shù)裝入累加器1的低字ACCU1-L
L    C#50                //將16位計(jì)數(shù)器常數(shù)裝入累加器1的低字ACCU1-L
L    T#1M20S            //將16位定時(shí)器常數(shù)裝入累加器1的低字ACCU1-L
L    S5T#2S                //將16位定時(shí)器常數(shù)裝入累加器1的低字ACCU1-L
L    P#M5.6                //將指向M5.6的指針裝入累加器1
AW    W#16#3A12    //常數(shù)與累加器1的低字相“與”,運(yùn)算結(jié)果在累加器1的低字中
L      B#(100,12,50,8)        //裝入4字節(jié)無(wú)符號(hào)常數(shù)
3.直接尋址的裝入與傳送指令
直接尋址在指令中直接給出存儲(chǔ)器或寄存器的區(qū)域、長(zhǎng)度和位置,例如用MW200指定位存儲(chǔ)區(qū)中的字,地址為200;下面是直接尋址的程序?qū)嵗?BR>A        I0.0                //輸入位I0.0的“與”(AND)操作
     L         MB10             //將8位存儲(chǔ)器字節(jié)裝入累加器1最低的字節(jié)ACCU1-LL
L         DIW15             //將16位背景數(shù)據(jù)字裝入累加器1的低字ACCU1-L
L        LD22             //將32位局域數(shù)據(jù)雙字裝入累加器1
T         QB10             //將ACCU1-LL中的數(shù)據(jù)傳送到過(guò)程映像輸出字節(jié)QB10
T         MW14             //將ACCU1-L中的數(shù)據(jù)傳送到存儲(chǔ)器字MW14
T         DBD2             //將ACCU1中的數(shù)據(jù)傳送到數(shù)據(jù)雙字DBD2
3.存儲(chǔ)器間接尋址
在存儲(chǔ)器間接尋址指令中,給出一個(gè)作地址指針的存儲(chǔ)器,該存儲(chǔ)器的內(nèi)容是操作數(shù)所在存儲(chǔ)單元的地址。在循環(huán)程序中經(jīng)常使用存儲(chǔ)器間接尋址。
地址指針可以是字或雙字,定時(shí)器(T)、計(jì)數(shù)器(C)、數(shù)據(jù)塊(DB)、功能塊(FB)和功能(FC)的編號(hào)范圍小于65 535,使用字指針就夠了。
其它地址則要使用雙字指針,如果要用雙字格式的指針訪(fǎng)問(wèn)一個(gè)字、宇節(jié)或雙字存儲(chǔ)器,必須保證指針的位編號(hào)為0,例如P#Q20.0。
L    QB[DBD 10]       //將輸出字節(jié)裝入累加器1,輸出字節(jié)的地址指針在數(shù)據(jù)雙字DBD10中
    //如果DBD10的值為2#0000 0000 0000 0000 0000 0000 0010 0000,裝入的是QB4
A    M[LD 4]           //對(duì)存儲(chǔ)器位作“與”運(yùn)算,地址指針在數(shù)據(jù)雙字LD4中
//如果LD4的值為2#0000 0000 0000 0000 0000 0000 0010 0011,則是對(duì)M4.3進(jìn)行操作
 
4.寄存器間接尋址
地址寄存器AR1和AR2,的內(nèi)容加上偏移量形成地址指針,指向數(shù)值所在的存儲(chǔ)單元。
其中第0~2位(xxx)為被尋址地址中位的編號(hào)(0~7),第3~18位為被尋址地址的字節(jié)的編號(hào)(0~65535)。第24~26位(rrr)為被尋址地址的區(qū)域標(biāo)識(shí)號(hào),第31位x = 0為區(qū)域內(nèi)的間接尋址,第31位x = 1為區(qū)域間的間接尋址。
第一種地址指針格式存儲(chǔ)區(qū)的類(lèi)型在指令中給出,例如L  DBB[AR1, P#6.0]。在某一存儲(chǔ)區(qū)內(nèi)尋址。第24~26位(rrr)應(yīng)為0。
第二種地址指針格式的第24~26位還包含存儲(chǔ)區(qū)域標(biāo)識(shí)符rrr,區(qū)域間寄存器間接尋址。
如果要用寄存器指針訪(fǎng)問(wèn)一個(gè)字節(jié)、字或雙字,必須保證指針中的位地址編號(hào)為0。
指針常數(shù)#P5.0對(duì)應(yīng)的二進(jìn)制數(shù)為2#0000 0000 0000 0000 0000 0000 0010 1000。下面是區(qū)內(nèi)間接尋址的例子:
L        P#5.0            //將間接尋址的指針裝入累加器1
LAR1                    //將累加器1中的內(nèi)容送到地址寄存器1
A        M[AR1, P#2.3]    //AR1中的P#5.0加偏移量P#2.3, 實(shí)際上是對(duì)M7.3進(jìn)行操作
=        Q[AR1, P#0.2]    //邏輯運(yùn)算的結(jié)果送Q5.2
L        DBW[AR1, P#18.0]    //將DBW23裝入累加器1
下面是區(qū)域間間接尋址的例子:
L        P#M6.0            //將存儲(chǔ)器位M6.0的雙字指針裝入累加器1
LAR1                    //將累加器1中的內(nèi)容送到地址寄存器1
T        W[AR1, P#50.0]    //將累加器1的內(nèi)容傳送到存儲(chǔ)器字MW56 
P#M6.0對(duì)應(yīng)的二進(jìn)制數(shù)為2#1000 0011 0000 0000 0000 0000 0011 0000。因?yàn)榈刂分羔楶#M6.0中已經(jīng)包含有區(qū)域信息,使用間接尋址的指令T  W[AR1, P#50]中沒(méi)有必要再用地址標(biāo)識(shí)符M。

表3-6  寄存器間接尋址的區(qū)域標(biāo)識(shí)位
區(qū)域標(biāo)識(shí)符    存儲(chǔ)區(qū)    位26~24 
P    外設(shè)輸入輸出    000
I    輸入過(guò)程映像    001
Q    輸出過(guò)程映像    010
M    位存儲(chǔ)區(qū)    011
DBX    共享數(shù)據(jù)塊    100
DIX    背景數(shù)據(jù)塊    101
L    塊的局域數(shù)據(jù)    111
5.裝入時(shí)間值或計(jì)數(shù)值
L          T5            //將定時(shí)器T5中的二進(jìn)制時(shí)間值裝入累加器1的低字中
LC        T5             //將定時(shí)器T5中的BCD碼格式的時(shí)間值裝入累加器1低字中
L          C3            //將計(jì)數(shù)器C3中的二進(jìn)制計(jì)數(shù)值裝入累加器1的低字中
LC        C16         //將計(jì)數(shù)器C16中的BCD碼格式的值裝入累加器1的低字中
6.地址寄存器的裝入與傳送指令
可以不經(jīng)過(guò)累加器1,與地址寄存器AR1和AR2交換數(shù)據(jù)。下面是應(yīng)用實(shí)例:
LAR1     DBD20         //將數(shù)據(jù)雙字DBD20中的指針裝入AR1
LAR2     LD180         //將局域數(shù)據(jù)雙字LD180中的指針裝入AR2
LAR1      P#M10.2        //將帶存儲(chǔ)區(qū)標(biāo)識(shí)符的32位指針常數(shù)裝入AR1
LAR2      P#24.0        //將不帶存儲(chǔ)區(qū)標(biāo)識(shí)符32位指針常數(shù)裝入AR2
TAR1     DBD20         //AR1中的內(nèi)容傳送到數(shù)據(jù)雙字DBD20
TAR2     MD24         //AR2中的內(nèi)容傳送到存儲(chǔ)器雙字MD24
梯形圖中的傳送指令:
 
A         I1.0
      JNB          _001        //如果I1.0 = 0,則跳轉(zhuǎn)到標(biāo)號(hào)_001處
      L         MW2        //MW2的值裝入累加器1的低字
      T         MW4        //累加器1低字的內(nèi)容傳送到MW4        
      SET                   //將RLO置為1
      SAVE                  //將RLO保存到BR位
      CLR                   //將RLO置為0
_001:  A         BR            
      ……
如果功能被正確執(zhí)行,BR位為 1,ENO也為 1。
3.5.2 比較指令
比較指令用于比較累加器1與累加器2中的數(shù)據(jù)大小,被比較的兩個(gè)數(shù)的數(shù)據(jù)類(lèi)型應(yīng)該相同。如果比較的條件滿(mǎn)足,則RLO為1,否則為0。狀態(tài)字中的CC0和CC1位用來(lái)表示兩個(gè)數(shù)的大于、小于和等于關(guān)系(見(jiàn)表3-7)。
表3-7  指令執(zhí)行后的CC1和CC0
CC1    CC0    比較指令    移位和循環(huán)移位指令    字邏輯指令
0    0    累加器2=累加器1    移出位為0    結(jié)果為0
0    1    累加器2<累加器1    -    -
1    0    累加器2>累加器1    -    結(jié)果不為0
1    1    非法的浮點(diǎn)數(shù)    移出位為1    -

表3-8  比較指令
語(yǔ)句表指令    梯形圖中的符號(hào)    說(shuō)明
 I? D? R    CMP ? ICMP ? DCMP ? R    比較累加器2和累加器1低字中的整數(shù),如果條件滿(mǎn)足,RLO=1比較累加器2和累加器1中的雙整數(shù),如果條件滿(mǎn)足,RLO=1比較累加器2和累加器1中的浮點(diǎn)數(shù),如果條件滿(mǎn)足,RLO=1
?可以是==, <>, >, <, >=, <=。
下面是比較兩個(gè)浮點(diǎn)數(shù)的例子:
L     MD4            //MD4中的浮點(diǎn)數(shù)裝入累加器1
L     2.345E+02        //浮點(diǎn)數(shù)常數(shù)裝入累加器1,MD4裝入累加器2
>R                   //比較累加器1和累加器2的值
=     Q4.2            //如果MD4 > 2.345E+02,則Q4.2為1
梯形圖中的方框比較指令可以比較整數(shù)(I)、雙整數(shù)(D)和浮點(diǎn)數(shù)(R)。方框比較指令在梯形圖中相當(dāng)于一個(gè)常開(kāi)觸點(diǎn),可以與其他觸點(diǎn)串連和并聯(lián)。
 
表3-9  數(shù)據(jù)轉(zhuǎn)換指令
語(yǔ)句表    梯形圖    說(shuō)明
BTIITBBTDDTBDTRITDRNDRND+RND-TRUNC    BCD_II_BCDBCD_DIDI_BCDDI_RI_DIROUNDCEILFLOORTRUNC    將累加器1中的3位BCD碼轉(zhuǎn)換成整數(shù)將累加器1中的整數(shù)轉(zhuǎn)換成3位BCD碼將累加器1中的7位BCD碼轉(zhuǎn)換成雙整數(shù)將累加器1中的雙整數(shù)轉(zhuǎn)換成7位BCD碼將累加器1中的雙整數(shù)轉(zhuǎn)換成浮點(diǎn)數(shù)將累加器1中的整數(shù)轉(zhuǎn)換成雙整數(shù)將浮點(diǎn)數(shù)轉(zhuǎn)換為四舍五入的雙整數(shù)將浮點(diǎn)數(shù)轉(zhuǎn)換為大于等于它的最小雙整數(shù)將浮點(diǎn)數(shù)轉(zhuǎn)換為小于等于它的最大雙整數(shù)將浮點(diǎn)數(shù)轉(zhuǎn)換為截位取整的雙整數(shù)
CAWCAD    --    交換累加器1低字中兩個(gè)字節(jié)的位置交換累加器1中4個(gè)字節(jié)的順序

 
下面是雙整數(shù)轉(zhuǎn)換為BCD碼的例子:
A     I0.2             //如果I0.2為1
L     MD10             //將MD10中的雙整數(shù)裝入累加器1 
DTB                //將累加器1中的數(shù)據(jù)轉(zhuǎn)換為BCD碼,結(jié)果仍在累加器1中
JO    OVER             //運(yùn)算結(jié)果超出允許范圍(OV=1)則跳轉(zhuǎn)到標(biāo)號(hào)OVER處
T     MD20             //將轉(zhuǎn)換結(jié)果傳送到MD20
A    M4.0
R    M4.0             //復(fù)位溢出標(biāo)志
JU    NEXT            //無(wú)條件跳轉(zhuǎn)到標(biāo)號(hào)NEXT處 
OVER:    AN    M4.0         
        S    M4.0             //置位溢出標(biāo)志
NEXT:    ……
【例3-5】 將101英寸轉(zhuǎn)換為以厘米為單位的整數(shù),送到MW0中。  
L        101            //將16位常數(shù)101(65H)裝入累加器1
ITD                 //轉(zhuǎn)換為32位雙整數(shù)
DTR                //轉(zhuǎn)換為浮點(diǎn)數(shù)101.0
L        2.54        //浮點(diǎn)數(shù)常數(shù)2.54裝入累加器1,累加器1的內(nèi)容裝入累加器2     
*R                    //101.0乘以2.54,轉(zhuǎn)換為256.54厘米
RND                 //四舍五入轉(zhuǎn)換為整數(shù)257(101H)
T         MW30
    7.取反與求補(bǔ)指令
表3-12  取反與求補(bǔ)指令
語(yǔ)句表指令    梯形圖指令    說(shuō)明
INVIINVDNEGINEGDNEGR    INV_IINV_DINEG_INEG_DINEG_R    求累加器1低字中的16位整數(shù)的反碼求累加器1中雙整數(shù)的反碼求累加器1低字中的16位整數(shù)的補(bǔ)碼求累加器1中雙整數(shù)的補(bǔ)碼將累加器1中的浮點(diǎn)數(shù)的符號(hào)位取反
 
L        MD20        //將32位雙整數(shù)裝入累加器1
NEGD                //求補(bǔ)
T        MD30         //運(yùn)算結(jié)果傳送到MD30

表3-13 取反與求補(bǔ)
內(nèi)容    累加器1的低字
變換前的數(shù)    0101 1101 0011 1000
取反的結(jié)果    1010 0010 1100 0111
求補(bǔ)的結(jié)果    1010 0010 1100 1000
3.6.1  整數(shù)數(shù)學(xué)運(yùn)算指令
 
L     IW10         //IW10的內(nèi)容裝入累加器1的低字
L     MW14         //累加器1的內(nèi)容裝入累加器2,MW14的值裝入累加器1的低字
/I              //累加器2低字的值除以累加器1低字的值,結(jié)果在累加器1的低字
T     DB1.DBW2    //累加器1低字中的運(yùn)算結(jié)果傳送到數(shù)據(jù)塊DB1的DBW2中

表3-16  整數(shù)數(shù)學(xué)運(yùn)算指令
語(yǔ)句表    梯形圖    描   述
+I -I *I / I ++D -D *D / D MOD    ADD_ISUB_IMUL_IDIV_I——ADD_DISUB_DIMUL_DIDIV_DIMOD_DI    將累加器1,2低字中的整數(shù)相加,運(yùn)算結(jié)果在累加器1的低字中累加器2中的整數(shù)減去累加器1中的整數(shù),運(yùn)算結(jié)果在累加器1的低字將累加器1,2低字中的整數(shù)相乘,32位雙整數(shù)運(yùn)算結(jié)果在累加器1中累加器2的整數(shù)除以累加器1的整數(shù),商在累加器1的低字,余數(shù)在累加器1的高字累加器的內(nèi)容與16位或32位常數(shù)相加,運(yùn)算結(jié)果在累加器1中將累加器1,2中的雙整數(shù)相加,雙整數(shù)運(yùn)算結(jié)果在累加器1中累加器2中的雙整數(shù)減去累加器1中的雙整數(shù)運(yùn)算結(jié)果在累加器1中將累加器1,2中的雙整數(shù)相乘,32位雙整數(shù)運(yùn)算結(jié)果在累加器1中累加器2中的雙整數(shù)除以累加器1中的雙整數(shù),32位商在累加器1中, 累加器2中的雙整數(shù)除以累加器1中的雙整數(shù),32位余數(shù)在累加器1中
3.6.2  浮點(diǎn)數(shù)數(shù)學(xué)運(yùn)算指令
表3-17  浮點(diǎn)數(shù)數(shù)學(xué)指令
語(yǔ)句表    梯形圖    描述
+R-R*R/RABSSQRSQRTEXPLNSINCOSTANASINACOSATAN     ADD_RSUB_RMUL_RDIV_RABSSQRSQRTEXPLNSINCOSTANASINACOSATAN    將累加器1,2中的浮點(diǎn)數(shù)相加,浮點(diǎn)數(shù)運(yùn)算結(jié)果在累加器1中累加器2中的浮點(diǎn)數(shù)減去累加器1中的浮點(diǎn)數(shù),運(yùn)算結(jié)果在累加器1中將累加器1,2中的浮點(diǎn)數(shù)相乘,浮點(diǎn)數(shù)乘積在累加器1中累加器2中的浮點(diǎn)數(shù)除以累加器1中的浮點(diǎn)數(shù),商在累加器1,余數(shù)丟掉取累加器1中的浮點(diǎn)數(shù)的絕對(duì)值求浮點(diǎn)數(shù)的平方求浮點(diǎn)數(shù)的平方根求浮點(diǎn)數(shù)的自然指數(shù)求浮點(diǎn)數(shù)的自然對(duì)數(shù)求浮點(diǎn)數(shù)的正弦函數(shù)求浮點(diǎn)數(shù)的余弦函數(shù)求浮點(diǎn)數(shù)的正切函數(shù)求浮點(diǎn)數(shù)的反正弦函數(shù)求浮點(diǎn)數(shù)的反余弦函數(shù)求浮點(diǎn)數(shù)的反正切函數(shù)
OPN    DB17         //打開(kāi)數(shù)據(jù)塊DB17
L         DBD0 //數(shù)據(jù)塊DB17的DBD0中的浮點(diǎn)數(shù)裝入累加器1
SQR//求累加器1中的浮點(diǎn)數(shù)的平方,運(yùn)算結(jié)果在累加器1中
AN        OV            //如果運(yùn)算時(shí)沒(méi)有出錯(cuò)
JC        OK            //跳轉(zhuǎn)到標(biāo)號(hào)OK處
BEU                    //如果運(yùn)算時(shí)出錯(cuò),功能塊無(wú)條件結(jié)束
OK:    T         DBD4        //累加器1中的運(yùn)算結(jié)果傳送到數(shù)據(jù)塊DB17的DBD4中

求以10為底的對(duì)數(shù)時(shí),應(yīng)將自然對(duì)數(shù)值除以2.302585(10的自然對(duì)數(shù)值)。例如
lg100=ln100/2.302585=4.605170/2.302585=2
【例3-6】用浮點(diǎn)數(shù)對(duì)數(shù)指令和指數(shù)指令求5的立方。計(jì)算公式為:
 
L         L#5
DTR
LN
L        3.0
*R
EXP
RND
T        MW40
浮點(diǎn)數(shù)三角函數(shù)指令的輸入值為弧度,角度值乘以p/180,可轉(zhuǎn)換為弧度值。
 
【例3-7】壓力變送器的量程為0~10MPa,輸出信號(hào)為4~20mA,S7-300的模擬量輸入模塊的量程為4~20mA,轉(zhuǎn)換后的數(shù)字量為0~27 648,設(shè)轉(zhuǎn)換后的數(shù)字為N,試求以kPa為單位的壓力值。
    解:0~10MPa(0~10 000kPa)對(duì)應(yīng)于轉(zhuǎn)換后的數(shù)字0~27 648,轉(zhuǎn)換公式為
P =(10 000 &acute; N)/ 27 648  (kPa)                     (3-1)
值得注意的是在運(yùn)算時(shí)一定要先乘后除,否則會(huì)損失原始數(shù)據(jù)的精度。假設(shè)A/D轉(zhuǎn)換后的數(shù)據(jù)N在MD6中,以kPa為單位的運(yùn)算結(jié)果在MW10中。圖3-58是實(shí)現(xiàn)式(3-1)中的運(yùn)算的梯形圖程序。  
 
圖3-58  算術(shù)運(yùn)算指令
語(yǔ)句表中“*I”指令的運(yùn)算結(jié)果為32位整數(shù),梯形圖中MUL_I指令的運(yùn)算結(jié)果為16位整數(shù)。A/D轉(zhuǎn)換后的最大數(shù)字為27 648,所以要使用MUL_DI。雙字除法指令DIV_DI的運(yùn)算結(jié)果為雙字,運(yùn)算結(jié)果不會(huì)超過(guò)16位正整數(shù)的最大值(32 767)。
3.6.3  移位與循環(huán)移位指令
表3-20  移位指令(對(duì)累加器1中的數(shù)操作,結(jié)果在累加器1中)
名稱(chēng)    語(yǔ)句表    梯形圖    描述
有符號(hào)整數(shù)右移有符號(hào)雙整數(shù)右移16位字左移16位字右移16位雙字左移16位雙字右移    SSISSDSLWSRWSLDSRD    SHR_ISHR_DISHL_WSHR_W SHL_DWSHR_DW    整數(shù)逐位右移,空出的位添上符號(hào)位雙整數(shù)逐位右移,空出的位添上符號(hào)位字逐位左移,空出的位添0字逐位右移,空出的位添0雙字逐位左移,空出的位添0雙字逐位右移,空出的位添0
雙字循環(huán)左移雙字循環(huán)右移雙字+CC1循環(huán)左移雙字+CC1循環(huán)右移    RLDRRDRLDARRDA    ROL_DWROR_DW- -    雙字循環(huán)左移雙字循環(huán)右移雙字通過(guò)CC1(一共33位)循環(huán)左移雙字通過(guò)CC1(一共33位)循環(huán)右移
(1)用指令中的參數(shù)<number>來(lái)指定移位位數(shù),16位移位指令為0~15,32位移位指令為0~32。如果<number>等于0,移位指令被當(dāng)作NOP(空操作)指令來(lái)處理。
(2)指令沒(méi)有參數(shù)<number>,移位位數(shù)放在累加器2的最低字節(jié)中(0~255)。如果移位位數(shù)等于0,移位指令被當(dāng)作NOP(空操作)指令來(lái)處理。
有符號(hào)字的移位位數(shù)>16時(shí),移位后被移位的數(shù)的各位全部變成了符號(hào)位。
L         MW4      //將MW4的內(nèi)容裝入累加器1的低字
SSI        6         //累加器1低字中的有符號(hào)數(shù)右移6位,結(jié)果仍在累加器1的低字中
T         MW8    //累加器1低字中的運(yùn)算結(jié)果傳送到MW8中
表3-21  整數(shù)右移6位前后的數(shù)據(jù)
內(nèi)容    累加器1的高字    累加器1的低字
移位前    0101 1111 0110 0100     1001 1101 0011 1011
右移6位后    0101 1111 0110 0100     1111 1110 0111 0100
L         +3        //將+3裝入累加器1 
L        MW20        //將累加器1的內(nèi)容裝入累加器2,MW20的內(nèi)容裝入累加器1 
SSI                //累加器1低字中的有符號(hào)數(shù)右移3位 
JP        NEXT        //如果最后移入CC1的位為1,跳轉(zhuǎn)到標(biāo)號(hào)NEXT處
表3-23  字右移6位移位前后的數(shù)據(jù) 
內(nèi)容    累加器1的高字    累加器1的低字
移位前    0101 1111 0110 0100    0101 1101 0011 1011
右移6位后    0101 1111 0110 0100    0000 0001 0111 0100
表3-24  雙字循環(huán)左移4位前后累加器中的數(shù)據(jù)
內(nèi)容    累加器1的高字    累加器1的低字
移位前    0101 1111 0110 0100     0101 1101 0011 1011
右移4位后    1111 0110 0100 0101     1101 0011 1011 0101
表3-25  雙字通過(guò)CC1循環(huán)左移1位前后累加器中的數(shù)據(jù)
內(nèi)容    CC1    累加器1的高字    累加器1的低字
移位前    X    0101 1111 0110 0100     0101 1101 0011 1011
左移后    0    1011 1110 1100 1000    1011 1010 0111 011X
 
圖3-60  有符號(hào)數(shù)右移指令
3.6.4  字邏輯運(yùn)算指令
表3-26  字邏輯運(yùn)算指令
語(yǔ)句表    梯形圖    描   述
AWOWXOWADODXOD    WAND_WWOR_WWXOR_WWAND_DWWOR_DWWXOR_DW    字與字或字異或雙字與雙字或雙字異或
表3-27  字邏輯運(yùn)算的結(jié)果
位    15                 0
邏輯運(yùn)算前累加器1的低字    0101 1001 0011 1011
邏輯運(yùn)算前累加器2的低字或常數(shù)    1111 0110 1011 0101
“與”運(yùn)算后累加器1的低字    0101 0000 0011 0001
“或”運(yùn)算后累加器1的低字    1111 1111 1011 1111
“異或”運(yùn)算后累加器1低字    1010 1111 1000 1110
L     QW10         //QW10的內(nèi)容裝入累加器1的低字
L     W#16#000F     //累加器1的內(nèi)容裝入累加器2, W#16#000F裝入累加器1的低字
OW                //累加器1低字與W#16#000F逐位相或,結(jié)果在累加器1的低字中
T     QW10        //累加器1低字中的運(yùn)算結(jié)果傳送到QW10中
 
MB9是MW8中的低字節(jié),M9.1和M9.2對(duì)應(yīng)于輸入信號(hào)I0.1和I0.2。
3.6.5 累加器指令
表3-28  累加器指令
語(yǔ)句表    描  述
TAKPUSHPOPENTLEAVEINCDEC+AR1+AR2BLDNOP 0NOP 1    交換累加器1,2的內(nèi)容入棧出棧進(jìn)入ACCU堆棧離開(kāi)ACCU堆棧累加器1最低字節(jié)加上8位常數(shù)累加器1最低字節(jié)減去8位常數(shù)AR1的內(nèi)容加上地址偏移量AR2的內(nèi)容加上地址偏移量程序顯示指令(空指令)空操作指令空操作指令
 
【例3-9】用語(yǔ)句表程序?qū)崿F(xiàn)浮點(diǎn)數(shù)運(yùn)算(DBD0+DBD4)/(DBD8–DBD12)。
L     DBD0         //DBD0中的浮點(diǎn)數(shù)裝入累加器1 
L     DBD4         //累加器1的內(nèi)容裝入累加器2,DBD4中的浮點(diǎn)數(shù)裝入累加器1 
+R                //累加器1,2中的浮點(diǎn)數(shù)相加,結(jié)果保存在累加器1中
L    DBD8        //累加器1的內(nèi)容裝入累加器2,DBD8中的浮點(diǎn)數(shù)裝入累加器1
ENT                //累加器3的內(nèi)容裝入累加器4,累加器2的中間結(jié)果裝入累加器3     
L    DBD12        //累加器1的內(nèi)容裝入累加器2,DBD12中的浮點(diǎn)數(shù)裝入累加器1
–R                //累加器2的內(nèi)容減去累加器1的內(nèi)容,結(jié)果保存在累加器1中
LEAVE            //累加器3的內(nèi)容裝入累加器2,累加器4的中間結(jié)果裝入累加器3
/R                //累加器2的(DBD0+DBD4)除以累加器1的(DBD8–DBD12)
T    DBD16        //累加器1中的運(yùn)算結(jié)果傳送到DBD16
3.加、減8位整數(shù)指令
L     MB4         //MB4的內(nèi)容裝入累加器1的最低字節(jié)
INC 1            //累加器1最低字節(jié)的內(nèi)容加1,結(jié)果存放在累加器1的最低字節(jié)
T     MB4        //運(yùn)算結(jié)果傳回MB4
4.地址寄存器指令
+AR1 (Add to AR1) 指令將AR1的內(nèi)容加上累加器1中低字的內(nèi)容,或加上指令中的16位常數(shù),結(jié)果在A(yíng)R1中。地址寄存器中的存儲(chǔ)區(qū)域標(biāo)識(shí)符(第24~26位)保持不變。
 
3.7  邏輯控制指令
表3-29  邏輯控制指令與狀態(tài)位觸點(diǎn)指令
語(yǔ)句表中的邏輯控制指令    梯形圖中的狀態(tài)位觸點(diǎn)指令    說(shuō)明
JUJLJCJCNJCBJNBJBIJNBIJOJOSJZJNJPJMJPZJMZJUOLOOP    ------BR-OVOS==0<> 0> 0< 0>= 0<= 0UO-    無(wú)條件跳轉(zhuǎn)多分支跳轉(zhuǎn)RLO=1時(shí)跳轉(zhuǎn)RLO=0時(shí)跳轉(zhuǎn)RLO=1且BR=1時(shí)跳轉(zhuǎn)RLO=0且BR=1時(shí)跳轉(zhuǎn)BR=1時(shí)跳轉(zhuǎn)BR=0時(shí)跳轉(zhuǎn)OV=1時(shí)跳轉(zhuǎn)OS=1時(shí)跳轉(zhuǎn)運(yùn)算結(jié)果為0時(shí)跳轉(zhuǎn)運(yùn)算結(jié)果非0時(shí)跳轉(zhuǎn)運(yùn)算結(jié)果為正時(shí)跳轉(zhuǎn)運(yùn)算結(jié)果為負(fù)時(shí)跳轉(zhuǎn)運(yùn)算結(jié)果大于等于0時(shí)跳轉(zhuǎn)運(yùn)算結(jié)果小于等于0時(shí)跳轉(zhuǎn)指令出錯(cuò)時(shí)跳轉(zhuǎn)循環(huán)指令
只能在同一邏輯塊內(nèi)跳轉(zhuǎn)。同一個(gè)跳轉(zhuǎn)目的地址只能出現(xiàn)一次。跳轉(zhuǎn)或循環(huán)指令的操作數(shù)為地址標(biāo)號(hào),標(biāo)號(hào)由最多4個(gè)字符組成,第一個(gè)字符必須是字母,其余的可以是字母或數(shù)字。在梯形圖中,目標(biāo)標(biāo)號(hào)必須是一個(gè)網(wǎng)絡(luò)的開(kāi)始。
【例3-10】IW8與MW12的異或結(jié)果如果為0,將M4.0復(fù)位,非0則將M4.0置位。
        L         IW8             //IW8的內(nèi)容裝入累加器1的低字
L         MW12         //累加器1的內(nèi)容裝入累加器2,MW12的內(nèi)容裝入累加器1 
XOW                //累加器1,2低字的內(nèi)容逐位異或
JN        NOZE        //如果累加器1的內(nèi)容非0,則跳轉(zhuǎn)到標(biāo)號(hào)NOZE處
R        M4.0
JU        NEXT
NOZE:    AN        M4.0
        S        M4.0
NEXT:    NOP    0        

 
 
3.7.3  循環(huán)指令
    循環(huán)指令LOOP <jump label>用ACCU 1-L作循環(huán)計(jì)數(shù)器,每次執(zhí)行LOOP指令時(shí)ACCU 1-L的值減1,若減1后ACCU 1-L非0,將跳轉(zhuǎn)到<jump label>指定的標(biāo)號(hào)處。
【例3-11】用循環(huán)指令求5!(5的階乘)。
L         L#1         //32位整數(shù)常數(shù)裝入累加器1,置階乘的初值
T        MD20    //累加器1的內(nèi)容傳送到MD20,保存階乘的初值
L         5             //循環(huán)次數(shù)裝入累加器的低字
BACK:    T        MW10        //累加器1低字的內(nèi)容保存到循環(huán)計(jì)數(shù)器MW10 
L        MD20        //取階乘值    
*D                    //MD20與MW10的內(nèi)容相乘
T        MD20        //乘積送MD20
L        MW10        //循環(huán)計(jì)數(shù)器內(nèi)容裝入累加器1
LOOP    BACK        //累加器1低字的內(nèi)容減1,減1后非0,跳到標(biāo)號(hào)BACK
        ……                //循環(huán)結(jié)束后,恢復(fù)線(xiàn)性?huà)呙?BR>3.8  程序控制指令
表3-30  程序控制指令
語(yǔ)句表指令    梯形圖指令    描述
BEBEUBECCALL FCnCALL SFCn CALL FBn1,DBn2CALL SFBn1,DBn2CC FCn或SFCnUC FCn或SFCnRETMCRAMCRDMCR()MCR    -------CALLCALLRETMCRAMCRDMCR<MCR>    塊結(jié)束塊無(wú)條件結(jié)束塊條件結(jié)束調(diào)用功能調(diào)用系統(tǒng)功能調(diào)用功能塊調(diào)用系統(tǒng)功能塊RLO=1時(shí)條件調(diào)用無(wú)條件調(diào)用條件返回起動(dòng)主控繼電器功能取消主控繼電器功能打開(kāi)主控繼電器區(qū)關(guān)閉主控繼電器區(qū)
 
 
OPN        DB10    //打開(kāi)數(shù)據(jù)塊DB10作為共享數(shù)據(jù)塊
L        DBW35    //將打開(kāi)的DB10中的數(shù)據(jù)字DBW35裝入累加器1的低字
T        MW12    //累加器1低字的內(nèi)容裝入MW12
OPN    DI20    //打開(kāi)作為背景數(shù)據(jù)塊的數(shù)據(jù)塊DB20    
L        DIB35    // DB20.DIB35裝入累加器1的最低字節(jié)
T        DBB27    //累加器1最低字節(jié)傳送到DB10.DBB27

表3-31  數(shù)據(jù)塊指令
指令    描述
OPNCDBL DBLGL DBNOL DILGL DINO    打開(kāi)數(shù)據(jù)塊交換共享數(shù)據(jù)塊和背景數(shù)據(jù)共享數(shù)據(jù)塊的長(zhǎng)度裝入累加器1共享數(shù)據(jù)塊的編號(hào)裝入累加器1背景數(shù)據(jù)塊的長(zhǎng)度裝入累加器1背景數(shù)據(jù)塊的編號(hào)裝入累加器1


第四章  STEP 7編程軟件的使用方法

4.1.1  STEP 7概述
STEP 7用于S7,M7,C7,WinAC的編程、監(jiān)控和參數(shù)設(shè)置,基于STEP 7 V5.2版。
STEP 7具有以下功能:硬件配置和參數(shù)設(shè)置、通信組態(tài)、編程、測(cè)試、啟動(dòng)和維護(hù)、文件建檔、運(yùn)行和診斷功能等。
4.1.2  STEP 7的硬件接口
PC./MPI適配器+RS-232C通信電纜。
計(jì)算機(jī)的通信卡CP 5611(PCI卡)、CP 5511或CP 5512(PCMCIA卡)將計(jì)算機(jī)連接到MPI或PROFIBUS網(wǎng)絡(luò)。計(jì)算機(jī)的工業(yè)以太網(wǎng)通信卡CP 1512(PCMCIA卡)或CP 1612(PCI卡),通過(guò)工業(yè)以太網(wǎng)實(shí)現(xiàn)計(jì)算機(jī)與PLC的通信。
    STEP 7的授權(quán)在軟盤(pán)中。STEP 7光盤(pán)上的程序AuthorsW用于顯示、安裝和取出授權(quán)。
4.1.4  STEP 7的編程功能
1.編程語(yǔ)言
3種基本的編程語(yǔ)言:梯形圖(LAD)、功能塊圖(FBD) 和語(yǔ)句表(STL)。
S7-SCL (結(jié)構(gòu)化控制語(yǔ)言) ,S7-GRAPH(順序功能圖語(yǔ)言),S7 HiGraph和CFC。
2.符號(hào)表編輯器
3.增強(qiáng)的測(cè)試和服務(wù)功能
設(shè)置斷點(diǎn)、強(qiáng)制輸入和輸出、多CPU運(yùn)行(僅限于S7-400),重新布線(xiàn)、顯示交叉參考表、狀態(tài)功能、&#61472;直接下載和調(diào)試塊、&#61472;同時(shí)監(jiān)測(cè)幾個(gè)塊的狀態(tài)等。
程序中的特殊點(diǎn)可以通過(guò)輸入符號(hào)名或地址快速查找。
4.STEP 7的幫助功能
按F1鍵便可以得到與它們有關(guān)的在線(xiàn)幫助。菜單命令“Help→contents”進(jìn)入幫助窗口。
4.1.5  STEP 7的硬件組態(tài)與診斷功能
1.硬件組態(tài)
(1)系統(tǒng)組態(tài):選擇硬件機(jī)架,模塊分配給機(jī)架中希望的插槽。
(2)CPU的參數(shù)設(shè)置。
(3)模塊的參數(shù)設(shè)置??梢苑乐馆斎脲e(cuò)誤的數(shù)據(jù)。
2.通信組態(tài)
(1)網(wǎng)絡(luò)連接的組態(tài)和顯示;
(2)設(shè)置用MPI 或PROFIBUS-DP連接的設(shè)備之間的周期性數(shù)據(jù)傳送的參數(shù)。
(3)設(shè)置用MPI、PROFIBUS或工業(yè)以太網(wǎng)實(shí)現(xiàn)的事件驅(qū)動(dòng)的數(shù)據(jù)傳輸,用通信塊編程。
3.系統(tǒng)診斷
(1)快速瀏覽CPU的數(shù)據(jù)和用戶(hù)程序在運(yùn)行中的故障原因。
(2)用圖形方式顯示硬件配置、模塊故障;顯示診斷緩沖區(qū)的信息等。
4.2  硬件組態(tài)與參數(shù)設(shè)置
4.2.1 項(xiàng)目的創(chuàng)建與項(xiàng)目的結(jié)構(gòu)
    插入新的對(duì)象的方法。
4.2.2 硬件組態(tài)
 
圖4-2  S7-300的硬件組態(tài)窗口
4.2.3  CPU模塊的參數(shù)設(shè)置
 
圖4-3  CPU屬性設(shè)置對(duì)話(huà)框
表4-1  時(shí)鐘存儲(chǔ)器各位對(duì)應(yīng)的時(shí)鐘脈沖周期與頻率
位    7    6    5    4    3    2    1    0
周期(s)    2    1.6    1    0.8    0.5    0.4    0.2    0.1
頻率(Hz)    0.5    0.625    1    1.25    2    2.5    5    10
4.2.4  數(shù)字量輸入模塊的參數(shù)設(shè)置
在CPU處于STOP模式下進(jìn)行。設(shè)置完后下載到CPU中。當(dāng)CPU從STOP模式轉(zhuǎn)換為RUN模式時(shí),CPU將參數(shù)傳送到每個(gè)模塊。
 
圖4-4  數(shù)字量輸入模塊的參數(shù)設(shè)置
4.2.5  數(shù)字量輸出模塊的參數(shù)設(shè)置
 
圖4-5  數(shù)字量輸出模塊的參數(shù)設(shè)置
4.2.6 模擬量輸入模塊的參數(shù)設(shè)置
1.模塊診斷與中斷的設(shè)置
8通道12位模擬量輸入模塊(訂貨號(hào)為6ES7 331-7KF02-0AB0)的參數(shù)設(shè)置。
 
圖4-6  模擬量輸入模塊的參數(shù)設(shè)置
2.模塊測(cè)量范圍的選擇
“4DMU”是4線(xiàn)式傳感器電流測(cè)量,“R-4L”是4線(xiàn)式熱電阻,“TC-I”是熱電偶,“E”表示測(cè)量種類(lèi)為電壓。
未使用某一組的通道應(yīng)選擇測(cè)量種類(lèi)中的“Deactivated”(禁止使用)。
    3.模塊測(cè)量精度與轉(zhuǎn)換時(shí)間的設(shè)置
    SM 331采用積分式A/D轉(zhuǎn)換器,積分時(shí)間直接影響到A/D轉(zhuǎn)換時(shí)間、轉(zhuǎn)換精度和干擾抑制頻率。為了抑制工頻頻率,一般選用20ms的積分時(shí)間。
表4-2  6ES7 331-7KF02模擬量輸入模塊的參數(shù)關(guān)系
積分時(shí)間(ms)    2.5     16.7     20     100
基本轉(zhuǎn)換時(shí)間(ms,包括積分時(shí)間)    3     17     22     102
附加測(cè)量電阻轉(zhuǎn)換時(shí)間(ms)    1    1    1    1
附加開(kāi)路監(jiān)控轉(zhuǎn)換時(shí)間(ms)    10    10    10    10
附加測(cè)量電阻和開(kāi)路監(jiān)控轉(zhuǎn)換時(shí)間(ms)    16    16    16    16
精度(位,包括符號(hào)位)    9    12    12    14
干擾抑制頻率(Hz)    400    60    50     10
模塊的基本響應(yīng)時(shí)間(ms,所有通道使能)    24     136     176     816

4.設(shè)置模擬值的平滑等級(jí)
在平滑參數(shù)的四個(gè)等級(jí)(無(wú),低,平均,高)中進(jìn)行選擇。
4.2.7 模擬量輸出模塊的參數(shù)設(shè)置
CPU進(jìn)入STOP時(shí)的響應(yīng):不輸出電流電壓(0CV)、保持最后的輸出值(KLV)和采用替代值(SV)。
4.3.1  符號(hào)表
共享符號(hào)(全局符號(hào))在符號(hào)表中定義,可供程序中所有的塊使用。
在程序編輯器中用 “View→Display with→Symbolic Representation”選擇顯示方式。
2.生成與編輯符號(hào)表
CPU將自動(dòng)地為程序中的全局符號(hào)加雙引號(hào),在局部變量的前面自動(dòng)加“#”號(hào)。生成符號(hào)表和塊的局域變量表時(shí)不用為變量添加引號(hào)和#號(hào)。
 
圖4-7  符號(hào)表
數(shù)據(jù)塊中的地址(DBD,DBW,DBB和DBX)不能在符號(hào)表中定義。應(yīng)在數(shù)據(jù)塊的聲明表中定義。
用菜單命令“View→Columns R, O, M, C, CC”可以選擇是否顯示表中的“R, O, M, C, CC”列,它們分別表示監(jiān)視屬性、在WinCC里是否被控制和監(jiān)視、信息屬性、通信屬性和觸點(diǎn)控制。可以用菜單命令“View→Sort”選擇符號(hào)表中變量的排序方法。
3.共享符號(hào)與局域符號(hào),后者不能用漢字。
4.過(guò)濾器(Filter)
在符號(hào)表中執(zhí)行菜單命令“View→Filter”,“I*”表示顯示所有的輸入,“I*.*”表示所有的輸入位,“I2.*”表示IB2中的位等。
4.3.2  邏輯塊
邏輯塊包括組織塊OB、功能塊FB和功能FC。
1.程序的輸入方式:增量輸入方式或源代碼方式(或稱(chēng)文本方式、自由編輯方式)。
2.生成邏輯塊
 
圖4-8  梯形圖編輯器
6.網(wǎng)絡(luò)
執(zhí)行菜單命令“Insert→Network”,或點(diǎn)擊工具條中相應(yīng)的圖標(biāo),在當(dāng)前網(wǎng)絡(luò)的下面生成一個(gè)新的網(wǎng)絡(luò)。菜單命令“View→Display→Comments”用來(lái)激活或取消塊注釋和網(wǎng)絡(luò)注釋。
可以用剪貼板在塊內(nèi)部和塊之間復(fù)制和粘貼網(wǎng)絡(luò),可用Ctrl鍵。
7.打開(kāi)和編輯塊的屬性
菜單命令“File→Properties”來(lái)查看和編輯塊屬性。
8.程序編輯器的設(shè)置
進(jìn)入程序編輯器后用菜單命令“Option→Customize”打開(kāi)對(duì)話(huà)框,可以進(jìn)行下列設(shè)置:
(1)在“General”標(biāo)簽頁(yè)的“Font”設(shè)置編輯器使用的字體和字符的大小。
(2)在“STL”和“LAD/FDB”標(biāo)簽頁(yè)中選擇這些程序編輯器的顯示特性。
(3)在“Block”(塊)標(biāo)簽頁(yè)中,可以選擇生成功能塊時(shí)是否同時(shí)生成背景數(shù)據(jù)塊、功能塊是否有多重背景功能。
(4)在“View”選項(xiàng)卡中的“View after Open Block”區(qū),選擇在塊打開(kāi)時(shí)顯示的方式。
9.顯示方式的設(shè)置
執(zhí)行View菜單中命令,放大、縮小梯形圖或功能塊圖的顯示比例。
菜單命令“View→Display→Symbolic Representation”,切換絕對(duì)地址和符號(hào)地址方式。
菜單命令“View→Display→Symbol information”用來(lái)打開(kāi)或關(guān)閉符號(hào)信息。
 
圖4-9  符號(hào)信息
4.4  S7-PLCSIM仿真軟件在程序調(diào)試中的應(yīng)用
4.4.1  S7-PLCSIM的主要功能
在計(jì)算機(jī)上對(duì)S7-300/400 PLC的用戶(hù)程序進(jìn)行離線(xiàn)仿真與調(diào)試。
模擬PLC的輸入/輸出存儲(chǔ)器區(qū),來(lái)控制程序的運(yùn)行,觀(guān)察有關(guān)輸出變量的狀態(tài)。
在運(yùn)行仿真PLC時(shí)可以使用變量表和程序狀態(tài)等方法來(lái)監(jiān)視和修改變量。
可以對(duì)大部分組織塊(OB)、系統(tǒng)功能塊(SFB)和系統(tǒng)功能(SFC)仿真。
4.4.2  使用S7-PLCSIM仿真軟件調(diào)試程序的步驟
(1)在STEP 7編程軟件中生成項(xiàng)目,編寫(xiě)用戶(hù)程序。
(2)打開(kāi)S7-PLCSIM窗口,自動(dòng)建立了STEP 7與仿真CPU的連接。
仿真PLC的電源處于接通狀態(tài),CPU處于STOP模式,掃描方式為連續(xù)掃描。
(3)在管理器中打開(kāi)要仿真的項(xiàng)目,選中“Blocks”對(duì)象,將所有的塊下載到仿真PLC。
(4)生成視圖對(duì)象。
(5)用視圖對(duì)象來(lái)模擬實(shí)際PLC的輸入/輸出信號(hào),檢查下載的用戶(hù)程序是否正確。
4.4.3  應(yīng)用舉例
電動(dòng)機(jī)串電阻降壓起動(dòng)。速度監(jiān)視。
 
 
圖4-11  S7-PLCSIM仿真窗口
4.4.4  視圖對(duì)象與仿真軟件的設(shè)置與存檔
1.CPU視圖對(duì)象
2.其他視圖對(duì)象
通用變量(Generic Variable)視圖對(duì)象用于訪(fǎng)問(wèn)仿真PLC所有的存儲(chǔ)區(qū)(包括數(shù)據(jù)塊)。垂直位(Vertical Bits)視圖對(duì)象可以用絕對(duì)地址或符號(hào)地址來(lái)監(jiān)視和修改I,Q,M等存儲(chǔ)區(qū)。
累加器與狀態(tài)字視圖對(duì)象用來(lái)監(jiān)視CPU中的累加器、狀態(tài)字和地址寄存器AR1和AR2。
塊寄存器視圖對(duì)象用來(lái)監(jiān)視數(shù)據(jù)塊地址寄存器的內(nèi)容,當(dāng)前和上一次打開(kāi)的邏輯塊的編號(hào),以及塊中的步地址計(jì)數(shù)器SAC的值。
嵌套堆棧(Nesting Stacks)視圖對(duì)象用來(lái)監(jiān)視嵌套堆棧和MCR(主控繼電器)堆棧。
定時(shí)器視圖對(duì)象標(biāo)有“T=0”的按鈕用來(lái)復(fù)位指定的定時(shí)器。
3.設(shè)置掃描方式
用“Execute”菜單中的命令選擇單次掃描或連續(xù)掃描。
4.設(shè)置MPI地址
菜單命令“PLC→MPI Address…”設(shè)置仿真PLC在指定的網(wǎng)絡(luò)中的節(jié)點(diǎn)地址。
5.LAY文件和PLC文件
LAY文件用于保存仿真時(shí)各視圖對(duì)象的信息;PLC文件用于保存上次仿真運(yùn)行時(shí)設(shè)置的數(shù)據(jù)和動(dòng)作等。退出仿真軟件時(shí)將會(huì)詢(xún)問(wèn)是否保存LAY文件或PLC文件。一般選擇不保存。
4.5  STEP 7與PLC的在線(xiàn)連接與在線(xiàn)操作
4.5.1 裝載存儲(chǔ)器與工作存儲(chǔ)器
 
系統(tǒng)數(shù)據(jù)(System Data)包括硬件組態(tài)、網(wǎng)絡(luò)組態(tài)和連接表,也應(yīng)下載到CPU。
下載的用戶(hù)程序保存在裝載存儲(chǔ)器的快閃存儲(chǔ)器(FEPROM)中。CPU電源掉電又重新恢復(fù)時(shí),F(xiàn)EPROM中的內(nèi)容被重新復(fù)制到CPU存儲(chǔ)器的RAM區(qū)。
4.5.2 在線(xiàn)連接的建立與在線(xiàn)操作
1.建立在線(xiàn)連接
通過(guò)硬件接口連接計(jì)算機(jī)和PLC必須,然后通過(guò)在線(xiàn)的項(xiàng)目窗口訪(fǎng)問(wèn)PLC。
管理器中執(zhí)行菜單命令“View→Online”、“View→Offline”進(jìn)入離線(xiàn)狀態(tài)。
在線(xiàn)窗口顯示的是PLC中的內(nèi)容,離線(xiàn)窗口顯示的是計(jì)算機(jī)中的內(nèi)容。
如果PLC與STEP 7中的程序和組態(tài)數(shù)據(jù)是一致的,在線(xiàn)窗口顯示的是PLC與STEP 7中的數(shù)據(jù)的組合。
2.處理模式與測(cè)試模式
在設(shè)置CPU屬性的對(duì)話(huà)框中的“Protection”(保護(hù))標(biāo)簽頁(yè)選擇處理(Process)模式或測(cè)試(Test)模式。
3.在線(xiàn)操作
進(jìn)入在線(xiàn)狀態(tài)后,執(zhí)行菜單命令“PLC →Diagnostics/Settings”中不同的子命令。
進(jìn)入在線(xiàn)狀態(tài)后,“PLC”主菜單中的命令功能。
設(shè)置了口令后,執(zhí)行在線(xiàn)功能時(shí),會(huì)顯示出“Enter Password”對(duì)話(huà)框。若輸入的口令正確,就可以訪(fǎng)問(wèn)該模塊。用菜單命令“PLC→Access Rights→ Setup”輸入口令。
4.5.3 下載與上載
1.下載的準(zhǔn)備工作
計(jì)算機(jī)與CPU之間必須建立起連接,要下載的程序已編譯好;在RUN-P模式一次只能下載一個(gè)塊,建議在STOP模式下載。
在保存塊或下載塊時(shí),STEP 7首先進(jìn)行語(yǔ)法檢查,應(yīng)改正檢查出來(lái)的錯(cuò)誤。下載前應(yīng)將CPU中的用戶(hù)存儲(chǔ)器復(fù)位??梢杂媚J竭x擇開(kāi)關(guān)復(fù)位,CPU進(jìn)入STOP模式,再用菜單命令“PLC→Clear/Reset”復(fù)位存儲(chǔ)器。
2.下載的方法
(1)在離線(xiàn)模式下載
在管理器的塊工作區(qū)選擇塊,可用Ctrl鍵和Shift鍵選擇多個(gè)塊,用菜單命令“PLC→Download”將被選擇的塊下載到CPU。在管理器左邊的目錄窗口中選擇Blocks對(duì)象,下載所有的塊和系統(tǒng)數(shù)據(jù)。
對(duì)塊編程或組態(tài)硬件和網(wǎng)絡(luò)時(shí),在當(dāng)時(shí)主窗口,用菜單命令“PLC→Download”下載當(dāng)前正在編輯的對(duì)象。
 (4) 上載程序
可以用“PLC→Upload”命令從CPU的RAM裝載存儲(chǔ)器中,把塊的當(dāng)前內(nèi)容上載到計(jì)算機(jī)打開(kāi)的項(xiàng)目中。
4.6  用變量表調(diào)試程序
4.6.1 系統(tǒng)調(diào)試的基本步驟   
首先進(jìn)行硬件調(diào)試,可以用變量表來(lái)測(cè)試硬件,通過(guò)觀(guān)察CPU模塊上的故障指示燈,或使用4.8節(jié)介紹的故障診斷工具來(lái)診斷故障。
下載程序之前應(yīng)將CPU的存儲(chǔ)器復(fù)位,將CPU切換到STOP模式,下載用戶(hù)程序時(shí)應(yīng)同時(shí)下載硬件組態(tài)數(shù)據(jù)。
 
可以在OB1中逐一調(diào)用各程序塊,一步一步地調(diào)試程序。
最先調(diào)試起動(dòng)組織塊OB100,然后調(diào)試FB和FC。應(yīng)先調(diào)試嵌套調(diào)用最深的塊,例如首先調(diào)試圖4-13中的FB1。調(diào)試時(shí)可以在完整的OB1的中間臨時(shí)插入BEU(塊無(wú)條件結(jié)束)指令,只執(zhí)行BUE指令之前的部分,調(diào)試好后將它刪除掉。
最后調(diào)試不影響OB1的循環(huán)執(zhí)行的中斷處理程序,或者在調(diào)試OB1時(shí)調(diào)試它們。
4.6.2 變量表的基本功能
變量表可以在一個(gè)畫(huà)面中同時(shí)監(jiān)視、修改和強(qiáng)制用戶(hù)感興趣的全部變量。一個(gè)項(xiàng)目可以生成多個(gè)變量表。變量表的功能:
監(jiān)視(Monitor)變量、修改(Modify)變量、對(duì)外設(shè)輸出賦值、強(qiáng)制變量、定義變量被監(jiān)視或賦予新值的觸發(fā)點(diǎn)和觸發(fā)條件。
4.6.3  變量表的生成
1.生成變量表的幾種方法
(1)在管理器中用生成新的變量表。
(3)在變量表編輯器中,可以用主菜單“Table”生成一個(gè)新的變量表。
2.在變量表中輸入變量
可以從符號(hào)表中拷貝地址,將它粘貼到變量表。
IW2用二進(jìn)制數(shù)(BIN)可以同時(shí)顯示和分別修改 I 2.0~I(xiàn) 3.7這十六點(diǎn)數(shù)字量輸入變量。
 
圖4-14  變量表
4.6.4  變量表的使用
1.建立與CPU的連接
2.定義變量表的觸發(fā)方式
 
圖4-15  定義變量表的觸發(fā)方式
用菜單命令“Variable→Trigger”打開(kāi)圖4-15中的對(duì)話(huà)框選擇觸發(fā)方式。
3.監(jiān)視變量
用菜單命令“Variable→Update Monitor Values”對(duì)所選變量的數(shù)值作一次立即刷新。
4.修改變量
在STOP模式修改變量時(shí),各變量的狀態(tài)不會(huì)互相影響,并且有保持功能。
在RUN模式修改變量時(shí),各變量同時(shí)又受到用戶(hù)程序的控制。
5.強(qiáng)制變量
強(qiáng)制變量操作給用戶(hù)程序中的變量賦一個(gè)固定的值,不會(huì)因?yàn)橛脩?hù)程序的執(zhí)行而改變。
 
圖4-16  強(qiáng)制數(shù)值窗口
強(qiáng)制作業(yè)只能用菜單命令“Variable→Stop Forcing”來(lái)刪除或終止。
4.7  用程序狀態(tài)功能調(diào)試程序
4.7.1  程序狀態(tài)功能的起動(dòng)與顯示
1.起動(dòng)程序狀態(tài)
進(jìn)入程序狀態(tài)的條件:經(jīng)過(guò)編譯的程序下載到CPU;打開(kāi)邏輯塊,用菜單命令“Debug→Monitor”進(jìn)入在線(xiàn)監(jiān)控狀態(tài);將CPU切換到RUN或RUN-P模式。
2.語(yǔ)句表程序狀態(tài)的顯示
 
圖4-17  用程序狀態(tài)監(jiān)視語(yǔ)句表程序
從光標(biāo)選擇的網(wǎng)絡(luò)開(kāi)始監(jiān)視程序狀態(tài)。右邊窗口顯示每條指令執(zhí)行后的邏輯運(yùn)算結(jié)果(RLO)和狀態(tài)位STA(Status)、累加器1(STANDARD)、累加器2(ACCU 2)和狀態(tài)字(STATUS…)。用菜單命令“Options→Customize”打開(kāi)的對(duì)話(huà)框分STL標(biāo)簽頁(yè)選擇需要監(jiān)視的內(nèi)容,用LAD/FBD標(biāo)簽頁(yè)可以設(shè)置梯形圖(LAD)和功能塊圖(SFB)程序狀態(tài)的顯示方式。
3.梯形圖程序狀態(tài)的顯示
LAD和FBD中用綠色連續(xù)線(xiàn)來(lái)表示狀態(tài)滿(mǎn)足,即有“能流”流過(guò),見(jiàn)圖4-18左邊較粗較淺的線(xiàn);用蘭色點(diǎn)狀線(xiàn)細(xì)表示狀態(tài)不滿(mǎn)足,沒(méi)有能流流過(guò);用黑色連續(xù)線(xiàn)表示狀態(tài)未知。
 
圖4-18  梯形圖程序狀態(tài)的顯示
梯形圖中加粗的字體顯示的參數(shù)值是當(dāng)前值,細(xì)體字顯示的參數(shù)值來(lái)自以前的循環(huán)。
4.使用程序狀態(tài)功能監(jiān)視數(shù)據(jù)塊
4.7.2  單步與斷點(diǎn)功能的使用
進(jìn)入RUN或RUN-P模式后將停留在第一個(gè)斷點(diǎn)處。單步模式一次只執(zhí)行一條指令。
程序編輯器的“Debug(調(diào)試)”菜單中的命令用來(lái)設(shè)置、激活或刪除斷點(diǎn)。執(zhí)行菜單命令“View>Breakpoint Bar”后,在工具條中將出現(xiàn)一組與斷點(diǎn)有關(guān)的圖標(biāo)。
    1.設(shè)置斷點(diǎn)與進(jìn)入單步模式的條件
(1)只能在語(yǔ)句表中使用單步和斷點(diǎn)功能。
(2) 執(zhí)行菜單命令“Options → Customize”,在對(duì)話(huà)框中選擇STL標(biāo)簽頁(yè),激活“Activate new breakpoints immediately(立即激活新斷點(diǎn))”選項(xiàng)。
(3)必須用菜單命令“Debug>Operation”使CPU工作在測(cè)試(Test)模式。
(4)在SIMATIC管理器中進(jìn)入在線(xiàn)模式,在線(xiàn)打開(kāi)被調(diào)試的塊。
(5)設(shè)置斷點(diǎn)時(shí)不能起動(dòng)程序狀態(tài)(Monitor)功能。
(6)STL程序中有斷點(diǎn)的行、調(diào)用塊的參數(shù)所在的行、空的行或注釋行不能設(shè)置斷點(diǎn)。
2.設(shè)置斷點(diǎn)與單步操作
在菜單命令“Debug →Breakpoints Active”前有一個(gè)“√”(默認(rèn)的狀態(tài)),表示斷點(diǎn)的小圓是實(shí)心的。執(zhí)行該菜單命令后“√”消失,表示斷點(diǎn)的小圓變?yōu)榭招牡?。要使斷點(diǎn)起作用,應(yīng)執(zhí)行該命令來(lái)激活斷點(diǎn)。 
 
圖4-19  斷點(diǎn)與斷點(diǎn)處CPU寄存器和狀態(tài)字的內(nèi)容
將CPU切換到RUN或RUN-P模式,將在第一個(gè)表示斷點(diǎn)的紫色圓球內(nèi)出現(xiàn)一個(gè)向右的黃色的箭頭(見(jiàn)圖4-19),表示程序的執(zhí)行在該點(diǎn)中斷,同時(shí)小窗口中出現(xiàn)斷點(diǎn)處的狀態(tài)字等。執(zhí)行菜單命令“Debug→Execute Next Statement”,黃色箭頭移動(dòng)到下一條語(yǔ)句,表示用單步功能執(zhí)行下一條語(yǔ)句。執(zhí)行菜單命令“Debug→ Execute Call(執(zhí)行調(diào)用)”將進(jìn)入調(diào)用的塊。塊結(jié)束時(shí)將返回塊調(diào)用語(yǔ)句的下一條語(yǔ)句。
為使程序繼續(xù)運(yùn)行至下一個(gè)斷點(diǎn),執(zhí)行菜單命令“Debug → Resume(繼續(xù))”。
菜單命令“Debug→Delete Breakpoint”刪除一個(gè)斷點(diǎn),菜單命令“Debug→Delete All Breakpoint”刪除所有的斷點(diǎn)。執(zhí)行菜單命令“Show Next Breakpoint”,光標(biāo)跳到下一個(gè)斷點(diǎn)。

4.8 故障診斷
4.8.1  故障診斷的基本方法
 
    圖4-20  診斷符號(hào)
在管理器中用 “View→Online”打開(kāi)在線(xiàn)窗口。查看是否有CPU顯示診斷符號(hào)。
4.8.2  模塊信息在故障診斷中的應(yīng)用
1.打開(kāi)模塊信息窗口
建立在線(xiàn)連接后,在管理器中選擇要檢查的站,執(zhí)行菜單命令“PLC→Diagnostics/ Settings→Module Information”,顯示該站中CPU模塊的信息。診斷緩沖區(qū)(Diagnostic Buffer)標(biāo)簽頁(yè)中,給出了CPU中發(fā)生的事件一覽表。
 
圖4-21  CPU模塊的在線(xiàn)模塊信息窗口
最上面的事件是最近發(fā)生的事件。因編程錯(cuò)誤造成CPU進(jìn)入STOP模式,選擇該事件,并點(diǎn)擊“Open Block”按鈕,將在程序編輯器中打開(kāi)與錯(cuò)誤有關(guān)的塊,顯示出錯(cuò)的程序段。
4.8.3  用快速視窗和診斷視窗診斷故障
1.用快速視窗診斷故障

管理器中選擇要檢查的站,用命令“PLC→Diagnostics/Settings→Hardware Diagnose”打開(kāi)CPU的硬件診斷快速視窗(Quick View),顯示該站中的故障模塊。用命令“Option→Customize”,在打開(kāi)的對(duì)話(huà)框的“View”標(biāo)簽頁(yè)中,應(yīng)激活“診斷時(shí)顯示快速視窗”。
 
圖4-22  快速視窗
2.打開(kāi)診斷視窗
診斷視窗實(shí)際上就是在線(xiàn)的硬件組態(tài)窗口。在快速視窗中點(diǎn)擊“Open Station Online”(在線(xiàn)打開(kāi)站)按鍵,打開(kāi)硬件組態(tài)的在線(xiàn)診斷視窗。
在管理器中與PLC建立在線(xiàn)連接。打開(kāi)一個(gè)站的“Hardware”對(duì)象,可以打開(kāi)診斷視窗。
3.診斷視窗的信息功能
診斷視窗顯示整個(gè)站在線(xiàn)的組態(tài)。用命令“PLC>Module Information”查看其模塊狀態(tài)。

第五章  數(shù)字量控制系統(tǒng)梯形圖設(shè)計(jì)方法
5.1.2  用經(jīng)驗(yàn)法設(shè)計(jì)梯形圖
1.起動(dòng)、保持與停止電路

 
經(jīng)驗(yàn)設(shè)計(jì)法。
2.三相異步電動(dòng)機(jī)的正反轉(zhuǎn)控制
 
 
Network 1:
A     I 1.0               
=     L20.0
A     L20.0
A     I 1.1
=     Q4.3
A     L20.0
A     I 1.2
=     Q4.4
//圖5-5 (b)中的程序
Network 1
A     I 1.0
A     I 1.1
=     Q4.3
Network 2
A     I 1.0
A     I 1.2
=     Q4.4
 
3.常閉觸點(diǎn)輸入信號(hào)的處理
4.小車(chē)控制程序的設(shè)計(jì)
 
按下右行起動(dòng)按鈕SB2,小車(chē)右行。暫停,左行,停止。

 
5.1.2  根據(jù)繼電器電路圖設(shè)計(jì)梯形圖
 

液壓動(dòng)力滑臺(tái)開(kāi)始停在最左邊,在自動(dòng)模式開(kāi)關(guān)SA閉合。按下起動(dòng)按鈕SB1(I0.0), YV11和YV2的線(xiàn)圈通電,快進(jìn);碰到中限位開(kāi)關(guān)變?yōu)楣みM(jìn), YV2的線(xiàn)圈斷電;碰到右限位開(kāi)關(guān)暫停8sYV11的線(xiàn)圈斷電;時(shí)間到時(shí)快退, YV12的線(xiàn)圈通電;返回初始位置時(shí)YV12的線(xiàn)圈斷電,停止運(yùn)動(dòng)。
5.2  順序控制設(shè)計(jì)法與順序功能圖
5.2.1  順序控制設(shè)計(jì)法
順序控制設(shè)計(jì)法將系統(tǒng)的一個(gè)工作周期劃分為若干個(gè)順序相連的階段(步,Step),用編程元件(例如M)來(lái)代表各步。在任何一步內(nèi)輸出量的狀態(tài)不變,相鄰兩步輸出量總的狀態(tài)是不同的,步與各輸出量有著極為簡(jiǎn)單的邏輯關(guān)系。
    使系統(tǒng)由當(dāng)前步進(jìn)入下一步的信號(hào)稱(chēng)為轉(zhuǎn)換條件。順序控制設(shè)計(jì)法用轉(zhuǎn)換條件控制代表各步的編程元件,讓它們的狀態(tài)按一定的順序變化,然后用代表各步的編程元件去控制輸出。
 
 
 
當(dāng)系統(tǒng)正處于某一步所在的階段時(shí),該步處于活動(dòng)狀態(tài),稱(chēng)該步為“活動(dòng)步”。
非存儲(chǔ)型動(dòng)作與存儲(chǔ)型動(dòng)作。
5.2.4  順序功能圖的基本結(jié)構(gòu)
 
    4.復(fù)雜的順序功能圖舉例
 

5.2.5  順序功能圖中轉(zhuǎn)換實(shí)現(xiàn)的基本規(guī)則
    1.轉(zhuǎn)換實(shí)現(xiàn)的條件
    在順序功能圖中,步的活動(dòng)狀態(tài)的進(jìn)展是由轉(zhuǎn)換的實(shí)現(xiàn)來(lái)完成的。轉(zhuǎn)換實(shí)現(xiàn)必須同時(shí)滿(mǎn)足兩個(gè)條件:
(1) 該轉(zhuǎn)換所有的前級(jí)步都是活動(dòng)步;
(2) 相應(yīng)的轉(zhuǎn)換條件得到滿(mǎn)足。
    如果轉(zhuǎn)換的前級(jí)步或后續(xù)步不止一個(gè),轉(zhuǎn)換的實(shí)現(xiàn)稱(chēng)為同步實(shí)現(xiàn)(見(jiàn)圖5-18)。為了強(qiáng)調(diào)同步實(shí)現(xiàn),有向連線(xiàn)的水平部分用雙線(xiàn)表示。
  2. 轉(zhuǎn)換實(shí)現(xiàn)應(yīng)完成的操作
    轉(zhuǎn)換實(shí)現(xiàn)時(shí)應(yīng)完成以下兩個(gè)操作:
    (1)使所有由有向連線(xiàn)與相應(yīng)轉(zhuǎn)換符號(hào)相連的后續(xù)步都變?yōu)榛顒?dòng)步;
(2)使所有由有向連線(xiàn)與相應(yīng)轉(zhuǎn)換符號(hào)相連的前級(jí)步都變?yōu)椴换顒?dòng)步。
 
5.2.6  繪制順序功能圖的注意事項(xiàng)
    (1) 兩個(gè)步絕對(duì)不能直接相連,必須用一個(gè)轉(zhuǎn)換將它們隔開(kāi)。
    (2) 兩個(gè)轉(zhuǎn)換也不能直接相連,必須用一個(gè)步將它們隔開(kāi)。
    (3) 順序功能圖中的初始步對(duì)應(yīng)于系統(tǒng)等待起動(dòng)的初始狀態(tài),初始步是必不可少的。
    (4) 順序功能圖中一般應(yīng)有由步和有向連線(xiàn)組成的閉環(huán)。
5.2.7  順序控制設(shè)計(jì)法的本質(zhì)
 


5.3  使用起保停電路的順序控制梯形圖編程方法
5.3.1  設(shè)計(jì)順序控制梯形圖的一些基本問(wèn)題
    1.程序的基本結(jié)構(gòu)
2.執(zhí)行自動(dòng)程序的初始狀態(tài)
    3.雙線(xiàn)圈問(wèn)題
4.設(shè)計(jì)順序控制程序的基本方法
用存儲(chǔ)器位M來(lái)代表步。順序控制程序分為控制電路和輸出電路兩部分。
 
5.3.2  單序列的編程方法
1.控制電路的編程方法
起保停電路的起動(dòng)電路只能接通一個(gè)掃描周期,必須用有記憶功能的電路來(lái)控制M。
 
2.輸出電路的編程方法

 
5.3.3  選擇序列的編程方法
5.3.4  并行序列的編程方法

 
5.3.5  僅有兩步的閉環(huán)的處理
 
5.3.6  應(yīng)用舉例
圖5-25中的物料混合裝置用來(lái)將粉末狀的固體物料(粉料)和液體物料(液料)按一定的比例混合在一起,經(jīng)過(guò)一定時(shí)間的攪拌后便得到成品。粉料和液料都用電子稱(chēng)來(lái)計(jì)量。
初始狀態(tài)時(shí)粉料稱(chēng)料斗、液料稱(chēng)料斗和攪拌器都是空的,它們底部的排料閥關(guān)閉;液料倉(cāng)的放料閥關(guān)閉,粉料倉(cāng)下部的螺旋輸送機(jī)的電機(jī)和攪拌機(jī)的電機(jī)停轉(zhuǎn);Q4.0~Q4.4均為0狀態(tài)。
PLC開(kāi)機(jī)后用OB100將初始步對(duì)應(yīng)的M0.0置為1狀態(tài),將其余各步對(duì)應(yīng)的存儲(chǔ)器位復(fù)位為0狀態(tài),并將MW10和MW12中的計(jì)數(shù)預(yù)置值分別送給減計(jì)數(shù)器C0和C1。
按下起動(dòng)按鈕I0.0,Q4.0, Q4.1變?yōu)?狀態(tài),開(kāi)始進(jìn)料。電子稱(chēng)的光電碼盤(pán)輸出與稱(chēng)斗內(nèi)物料重量成正比的脈沖信號(hào)。減計(jì)數(shù)器C0和C1分別對(duì)粉料稱(chēng)和液料稱(chēng)產(chǎn)生的脈沖計(jì)數(shù)。脈沖計(jì)數(shù)值減至0時(shí),其常閉觸點(diǎn)閉合,稱(chēng)斗內(nèi)的物料等于預(yù)置值。Q4.0, Q4.1變?yōu)?狀態(tài),停止進(jìn)料。進(jìn)入等待步后預(yù)置計(jì)數(shù)器。
 
 
5.4  使用置位復(fù)位指令的順序控制梯形圖編程方法
 


5.4.1  單序列的編程方法
 
5.4.2  選擇序列的編程方法
5.4.3  并行序列的編程方法
 

 



 
圖5-32  組合鉆床控制系統(tǒng)的梯形圖

值得注意的是標(biāo)有“CD”的C0的減計(jì)數(shù)線(xiàn)圈必須“緊跟”在圖5-32中使M0.7置位的指令后面。這是因?yàn)槿绻鸐0.4先變?yōu)榛顒?dòng)步,M0.7的“生存周期”非常短,M0.7變?yōu)榛顒?dòng)步后,在本次循環(huán)掃描周期內(nèi)的下一個(gè)網(wǎng)絡(luò)就被復(fù)位了。如果將C0的減計(jì)數(shù)線(xiàn)圈放在使M0.7復(fù)位的指令的后面,C0還沒(méi)有計(jì)數(shù)M0.7就被復(fù)位了,將不能執(zhí)行計(jì)數(shù)操作。
5.5  具有多種工作方式的系統(tǒng)的順序控制梯形圖編程方法
 
 
 


 
 
 



 



 
 
5.6  順序功能圖語(yǔ)言S7 Graph的應(yīng)用
5.6.1  S7 Graph語(yǔ)言概述
       S7 Graph語(yǔ)言是S7-300/400的順序功能圖語(yǔ)言,遵從IEC 61131-3標(biāo)準(zhǔn)的規(guī)定。
1.順序控制程序的結(jié)構(gòu)
一個(gè)順序控制項(xiàng)目至少需要一個(gè)調(diào)用S7 Graph FB的塊,一個(gè)S7 Graph FB和它的背景數(shù)據(jù)塊。
 
圖5-45  順序控制系統(tǒng)中的塊
 
圖5-46  S7 Graph編輯器
 
圖5-49  順序控制器工具條與移動(dòng)的圖形
3.S7 Graph的顯示模式
在View菜單中選擇顯示順序控制器(Sequencer)、單步和永久性指令。
    (1)在順序控制器顯示方式,執(zhí)行菜單命令“View>Display with”,可以選擇:
Symbols:顯示符號(hào)表中的符號(hào)地址;
Comments:顯示塊和步的注釋?zhuān)?BR>Conditions and Actions:顯示轉(zhuǎn)換條件和動(dòng)作;
Symbol List:在輸入地址時(shí)顯示下拉式符號(hào)地址表。
    (2)單步顯示模式
    只顯示一個(gè)步和轉(zhuǎn)換的組合,還可以顯示Supervision:監(jiān)控被顯示的步的條件;Interlock:對(duì)被顯示的步互鎖的條件;執(zhí)行命令“View>Display with> comments”顯示和編輯步的注釋。
    用“↑”鍵或“↓”鍵可以顯示上一個(gè)或下一個(gè)步與轉(zhuǎn)換的組合。
(3)在“permanent instructions”(永久性指令)顯示方式,可以對(duì)順序控制器之前或之后的永久性指令編程。每個(gè)掃描循環(huán)執(zhí)行一次永久性指令??梢哉{(diào)用塊。
     
圖5-50 運(yùn)輸帶控制系統(tǒng)示意圖與順序功能圖
1.    創(chuàng)建使用S7 Graph語(yǔ)言的功能塊FB
執(zhí)行菜單命令“Insert → Direct”將進(jìn)入“Direct”編輯模式。
執(zhí)行菜單命令“Insert → Drag-and-Drop”,進(jìn)入“Drag and Drop(拖放)”編輯模式。
執(zhí)行菜單命令“View→Display with→Conditions and Actions”,顯示或關(guān)閉各步的動(dòng)作和轉(zhuǎn)換條件。
 
圖5-51  運(yùn)輸帶控制系統(tǒng)的順序功能圖
(1)命令S;當(dāng)步為活動(dòng)步時(shí),使輸出置位為1狀態(tài)并保持。
(2)命令R:當(dāng)步為活動(dòng)步時(shí),使輸出復(fù)位為0狀態(tài)并保持。
(3)命令N:當(dāng)步為活動(dòng)步時(shí),輸出被置為1;該步變?yōu)椴换顒?dòng)步時(shí),輸出被復(fù)位為0。
(4)命令L:用來(lái)產(chǎn)生寬度受限的脈沖,相當(dāng)于脈沖定時(shí)器。
(5)命令CALL:用來(lái)調(diào)用塊,當(dāng)該步為活動(dòng)步時(shí),調(diào)用命令中指定的塊。
(6)命令D:使某一動(dòng)作的執(zhí)行延時(shí),延時(shí)時(shí)間在該命令右下方的方框中設(shè)置。   
在“直接”模式用鼠標(biāo)右鍵點(diǎn)擊動(dòng)作框,在彈出的菜單中選擇插入動(dòng)作行。
6.對(duì)監(jiān)控功能編程
雙擊步S3后,切換到單步視圖,選中Supervision(監(jiān)控)線(xiàn)圈左邊的水平線(xiàn)的缺口處,插入比較器圖標(biāo),設(shè)置的監(jiān)視時(shí)間為2小時(shí)。
8.在主程序中調(diào)用S7 Graph FB
9.用S7-PLCSIM仿真軟件調(diào)試S7 Graph程序

 
圖5-52  單步顯示模式中的監(jiān)控與互鎖條件
5.6.3  順序控制器的運(yùn)行模式與監(jiān)控操作
執(zhí)行菜單命令“Debug→Control Sequencer”,對(duì)順序控制器進(jìn)行各種監(jiān)控操作。
 
圖5-54  順序控制器監(jiān)控對(duì)話(huà)框
1.自動(dòng)模式
 “Acknowledge”按鈕確認(rèn)被掛起的錯(cuò)誤信息。
點(diǎn)擊“初始化(Initialize)”按鈕,將重新起動(dòng)順序控制器,使之返回初始步。
點(diǎn)擊“禁止(Disable)”按鈕,使順序控制器中所有的步變?yōu)椴换顒?dòng)步。
2.手動(dòng)模式
    選擇“Manual”模式后,用“Disable”按鈕關(guān)閉當(dāng)前的活動(dòng)步。在“Step Number”輸入框中輸入希望控制的步的編號(hào),用激活(Activate)按鈕或去活(Unactivate)按鈕來(lái)使該步變?yōu)榛顒?dòng)步或不活動(dòng)步。同時(shí)只能有1步是活動(dòng)步。
    3.單步(Inching)模式
在單步模式轉(zhuǎn)換條件滿(mǎn)足時(shí),需要點(diǎn)擊“Continue”按鈕,才能使轉(zhuǎn)換到下一步。
    4.Automatic or switch to next模式
轉(zhuǎn)換條件未滿(mǎn)足,用“Continue”按鈕也能轉(zhuǎn)換到后續(xù)步。轉(zhuǎn)換條件滿(mǎn)足將自動(dòng)轉(zhuǎn)換。
5.錯(cuò)誤顯示
有互鎖(Interlock)錯(cuò)誤或監(jiān)控(Supervision)錯(cuò)誤時(shí),相應(yīng)的檢查框?yàn)榧t色。
 

5.6.4  順序控制器中的動(dòng)作
1.標(biāo)準(zhǔn)動(dòng)作中的命令:S, R, N, L, D, CALL
標(biāo)準(zhǔn)動(dòng)作可以設(shè)置互鎖(在命令的后面加“C”),僅在步處于活動(dòng)狀態(tài)和互鎖條件滿(mǎn)足時(shí),有互鎖的動(dòng)作才被執(zhí)行。沒(méi)有互鎖的動(dòng)作在步處于活動(dòng)狀態(tài)時(shí)就會(huì)被執(zhí)行。
2.與事件有關(guān)的動(dòng)作
 
表5-2 控制動(dòng)作的事件
名稱(chēng)    事件意義
S1    步變?yōu)榛顒?dòng)步
S0    步變?yōu)椴换顒?dòng)步
V1    發(fā)生監(jiān)控錯(cuò)誤(有干擾)
V0    監(jiān)控錯(cuò)誤消失(無(wú)干擾)
L1    互鎖條件解除
L0    互鎖條件變?yōu)?
A1    報(bào)文被確認(rèn)
R1    注冊(cè)信號(hào)被置位,在輸入信號(hào)REG_EF/REG_S的上升沿

ON命令或OFF命令分別使命令所在的步之外的其他步變?yōu)榛顒?dòng)步或不活動(dòng)步。
如果命令OFF的地址標(biāo)識(shí)符為S _ALL,將除了命令“S1(V1, L1) OFF”所在的步之外其他的步變?yōu)椴换顒?dòng)步。
 
一旦S3變?yōu)榛顒?dòng)步和互鎖條件滿(mǎn)足,指令“S1 RC”使輸出Q2.1復(fù)位為0并保持為0。
    一旦監(jiān)控錯(cuò)誤發(fā)生(出現(xiàn)V1事件),除了動(dòng)作中的命令“V1 OFF”所在的步S3,其他的活動(dòng)步變?yōu)椴换顒?dòng)步。
    S3變?yōu)椴换顒?dòng)步時(shí)(出現(xiàn)事件S0),將步S7變?yōu)榛顒?dòng)步。
只要互鎖條件滿(mǎn)足(出現(xiàn)L0事件),就調(diào)用指定的功能塊FB 2。
4.動(dòng)作中的計(jì)數(shù)器
有互鎖功能的計(jì)數(shù)器在互鎖條件滿(mǎn)足和指定的事件出現(xiàn)時(shí),動(dòng)作中的計(jì)數(shù)器才會(huì)計(jì)數(shù)。
    事件發(fā)生時(shí),計(jì)數(shù)器指令CS將初值裝入計(jì)數(shù)器。CS指令下面一行是要裝入的初值。
    事件發(fā)生時(shí),CU,CD,CR指令使計(jì)數(shù)值分別加1、減1或?qū)⒂?jì)數(shù)值復(fù)位為0。
    5.動(dòng)作中的定時(shí)器
    事件出現(xiàn)時(shí)定時(shí)器被執(zhí)行。互鎖功能也可以用于定時(shí)器。
TL為擴(kuò)展的脈沖定時(shí)器命令,一旦事件發(fā)生,定時(shí)器被起動(dòng)。
TD命令用來(lái)實(shí)現(xiàn)定時(shí)器位有閉鎖功能的延遲。一旦事件發(fā)生,定時(shí)器被起動(dòng)。互鎖條件C僅僅在定時(shí)器被起動(dòng)的那一時(shí)刻起作用。
 
(4)TR是復(fù)位定時(shí)器命令,一旦事件發(fā)生,定時(shí)器位與定時(shí)值被復(fù)位為0。
當(dāng)圖5-57中的步S4變?yōu)榛顒?dòng)步,事件S1使計(jì)數(shù)器C4的值加1。C4可以用來(lái)計(jì)步S4變?yōu)榛顒?dòng)步的次數(shù)。只要步S4變?yōu)榛顒?dòng)步,事件S1使A的值加1。
    S4變?yōu)榛顒?dòng)步后,T3開(kāi)始定時(shí),4s后T3的定時(shí)器位變?yōu)?狀態(tài)。
5.動(dòng)作中的算術(shù)運(yùn)算
    在動(dòng)作中可以使用:A:=B;A:=函數(shù)(B) ;A:=B<運(yùn)算符號(hào)>C。A:=函數(shù)(B);
5.6.5  順序控制器中的條件
1.轉(zhuǎn)換條件
2.    互鎖條件:如果互鎖條件的邏輯滿(mǎn)足,受互鎖控制的動(dòng)作被執(zhí)行。
3.監(jiān)控條件:如果監(jiān)控條件的邏輯運(yùn)算滿(mǎn)足,表示有干擾事件V1發(fā)生。順序控制器不會(huì)轉(zhuǎn)換到下一步,保持當(dāng)前步為活動(dòng)步。如果監(jiān)控條件的邏輯運(yùn)算不滿(mǎn)足,表示沒(méi)有干擾,如果轉(zhuǎn)換條件滿(mǎn)足,轉(zhuǎn)換到下一步。只有活動(dòng)步被監(jiān)控。
4.S7 Graph地址在條件中的應(yīng)用
    可以在轉(zhuǎn)換、監(jiān)控、互鎖、動(dòng)作和永久性的指令中,以地址的方式使用關(guān)于步的系統(tǒng)信息(見(jiàn)表5-3)。
表5-3  S7 Graph地址
地址    意義    應(yīng)用于
Si.T    步i當(dāng)前或前一次處于活動(dòng)狀態(tài)的時(shí)間    比較器,設(shè)置
Si.U    步i處于活動(dòng)狀態(tài)的總時(shí)間,不包括干擾的時(shí)間    比較器,設(shè)置
Si.X    指示步i是否是活動(dòng)的    常開(kāi)觸點(diǎn)、常閉觸點(diǎn)
Transi.TT    檢查轉(zhuǎn)換i所有的條件是否滿(mǎn)足    常開(kāi)觸點(diǎn)、常閉觸點(diǎn)





表5-4  FB的參數(shù)集
名稱(chēng)    任務(wù)
Minimum    最小參數(shù)集,只用于自動(dòng)模式,不需要其他控制和監(jiān)視功能
Standard    標(biāo)準(zhǔn)參數(shù)集,有多種操作方式,需要反饋信息,可選擇確認(rèn)報(bào)文
Definable/Maximum(V5)    可定義最大參數(shù)集,需要更多的操作員控制和用于服務(wù)和調(diào)試的監(jiān)視功能,它們由V5的塊提供

5.6.7  用S7 Graph 編寫(xiě)具有多種工作方式的控制程序
1.初始化程序、手動(dòng)程序與自動(dòng)回原點(diǎn)程序
OB100中的初始化程序與5.5節(jié)中的圖5-37完全相同。手動(dòng)程序FC 2與5.5節(jié)中的圖5-39完全相同。自動(dòng)返回原點(diǎn)的梯形圖程序FC 3與5.5節(jié)圖5-42(b)中的相同。
 
圖5-61  主程序OB1
S7 Graph FB的參數(shù)有好幾十個(gè),圖5-61中的FB1使用的是標(biāo)準(zhǔn)參數(shù)級(jí),下面介紹圖中使用的參數(shù):
連續(xù)、單周期或單步時(shí)“自動(dòng)方式”M0.3為1,調(diào)用FB1。
    參數(shù)INIT_SQ(“自動(dòng)允許”M0.0)為1:原點(diǎn)條件滿(mǎn)足,激活初始步,復(fù)位順序控制器。
    參數(shù)OFF_SQ為1(“自動(dòng)允許”M0.0=0):復(fù)位順序控制器,所有的步變?yōu)椴换顒?dòng)步。
    參數(shù)ACK_EF(“確認(rèn)故障”I1.3)為1:確認(rèn)錯(cuò)誤和故障,強(qiáng)制切換到下一步。
    參數(shù)SW_AUTO(“單周連續(xù)”M0.2)為1:切換到自動(dòng)模式。
    參數(shù)SW_TAP(“單步”I2.2)為1:切換到Inching(單步)模式。
    參數(shù)T_PUSH(“起動(dòng)按鈕”I2.6):條件滿(mǎn)足并且在T_PUSH的上升沿時(shí),轉(zhuǎn)換實(shí)現(xiàn)。
    參數(shù)ERR_FLT(“錯(cuò)誤報(bào)警”Q4.5)為1:組故障。
表5-9  符號(hào)表
符號(hào)    地址    符號(hào)    地址    符號(hào)    地址    符號(hào)    地址    符號(hào)    地址
自動(dòng)數(shù)據(jù)塊    DB1    松開(kāi)按鈕    I0.7    單步    I2.2    自動(dòng)方式    M0.3    下降閥    Q4.0
下限位    I0.1    下降按鈕    I1.0    單周期    I2.3    原點(diǎn)條件    M0.5    夾緊閥    Q4.1
上限位    I0.2    右行按鈕    I1.1    連續(xù)    I2.4    轉(zhuǎn)換允許    M0.6    上升閥    Q4.2
右限位    I0.3    夾緊按鈕    I1.2    起動(dòng)按鈕    I2.6    連續(xù)標(biāo)志    M0.7    右行閥    Q4.3
左限位    I0.4    確認(rèn)故障    I1.3    停止按鈕    I2.7    回原點(diǎn)上升    M1.0    左行閥    Q4.4
上升按鈕    I0.5    手動(dòng)    I2.0    自動(dòng)允許    M0.0    回原點(diǎn)左行    M1.1    錯(cuò)誤報(bào)警    Q4.5
左行按鈕    I0.6    回原點(diǎn)    I2.1    單周連續(xù)    M0.2    夾緊延時(shí)    M1.2        
 
圖5-62  公用程序
連續(xù)標(biāo)志M0.7的控制電路放在FB1的順序控制器之前的永久性指令中。
 
圖5-63  順序控制器之前的永久性指令
2.初始化程序、手動(dòng)程序與自動(dòng)回原點(diǎn)程序
OB100中的初始化程序與5.5節(jié)中的圖5-37完全相同。手動(dòng)程序FC 2與5.5節(jié)中的圖5-39完全相同。自動(dòng)返回原點(diǎn)的梯形圖程序FC 3與5.5節(jié)圖5-42(b)中的相同。
 
FB1是自動(dòng)程序(單步、單周期、連續(xù))。
單步I2.2=SW_TAP=1時(shí)有單步功能。
單周連續(xù)M0.2=SW_AUTO=1時(shí)順序控制器正常運(yùn)行。
在順序控制器中,用永久性指令中的M0.7(連續(xù)標(biāo)志)區(qū)分單周期和連續(xù)模式。

第六章  S7-300/400的用戶(hù)程序結(jié)構(gòu)
6.1  用戶(hù)程序的基本結(jié)構(gòu)
6.1.1  用戶(hù)程序中的塊
操作系統(tǒng)處理起動(dòng)、刷新過(guò)程映像表、調(diào)用用戶(hù)程序、處理中斷和錯(cuò)誤、管理存儲(chǔ)區(qū)和處理通信等。用戶(hù)程序包含處理用戶(hù)特定的自動(dòng)化任務(wù)所需要的所有功能。
用戶(hù)程序和所需的數(shù)據(jù)放置在塊中,使程序部件標(biāo)準(zhǔn)化,用戶(hù)程序結(jié)構(gòu)化,可以簡(jiǎn)化程序組織,使程序易于修改、查錯(cuò)和調(diào)試。塊結(jié)構(gòu)顯著地增加了PLC程序的組織透明性、可理解性和易維護(hù)性。
表6-1  用戶(hù)程序中的塊
塊    簡(jiǎn)要描述
組織塊(OB)    操作系統(tǒng)與用戶(hù)程序的接口,決定用戶(hù)程序的結(jié)構(gòu)
系統(tǒng)功能塊(SFB)    集成在CPU模塊中,通過(guò)SFB調(diào)用一些重要的系統(tǒng)功能,有存儲(chǔ)區(qū)
系統(tǒng)功能(SFC)    集成在CPU模塊中,通過(guò)SFC調(diào)用一些重要的系統(tǒng)功能,無(wú)存儲(chǔ)區(qū)
功能塊(FB)    用戶(hù)編寫(xiě)的包含經(jīng)常使用的功能的子程序,有存儲(chǔ)區(qū)
功能(FC)    用戶(hù)編寫(xiě)的包含經(jīng)常使用的功能的子程序,無(wú)存儲(chǔ)區(qū)
背景數(shù)據(jù)塊(DI)    調(diào)用FB和SFB時(shí)用于傳遞參數(shù)的數(shù)據(jù)塊,在編譯過(guò)程中自動(dòng)生成數(shù)據(jù)
共享數(shù)據(jù)塊(DB)    存儲(chǔ)用戶(hù)數(shù)據(jù)的數(shù)據(jù)區(qū)域,供所有的塊共享
1.組織塊(OB) 
控制掃描循環(huán)和中斷程序的執(zhí)行、PLC的啟動(dòng)和錯(cuò)誤處理等。
(1)OB1用于循環(huán)處理,用戶(hù)程序中的主程序。
(2)事件中斷處理,需要時(shí)才被及時(shí)地處理。
(3)中斷的優(yōu)先級(jí),高優(yōu)先級(jí)的OB可以中斷低優(yōu)先級(jí)的OB。
2.臨時(shí)局域數(shù)據(jù)
生成邏輯塊(OB、FC、FB)時(shí)可以聲明臨時(shí)局域數(shù)據(jù)。這些數(shù)據(jù)是臨時(shí)的,局域(Local)數(shù)據(jù),只能在生成它們的邏輯塊內(nèi)使用。所有的邏輯塊都可以使用共享數(shù)據(jù)塊中的共享數(shù)據(jù)。
3.功能(FC)
沒(méi)有固定的存儲(chǔ)區(qū)的塊,其臨時(shí)變量存儲(chǔ)在局域數(shù)據(jù)堆棧中,功能執(zhí)行結(jié)束后,這些數(shù)據(jù)就丟失了。用共享數(shù)據(jù)區(qū)來(lái)存儲(chǔ)那些在功能執(zhí)行結(jié)束后需要保存的數(shù)據(jù)。
調(diào)用功能和功能塊時(shí)用實(shí)參(實(shí)際參數(shù))代替形參(形式參數(shù))。形參是實(shí)參在邏輯塊中的名稱(chēng),功能不需要背景數(shù)據(jù)塊。功能和功能塊用IN、OUT和IN_OUT參數(shù)做指針,指向調(diào)用它的邏輯塊提供的實(shí)參。功能可以為調(diào)用它的塊提供數(shù)據(jù)類(lèi)型為RETURN的返回值。
4.功能塊(FB)
功能塊是用戶(hù)編寫(xiě)的有自己的存儲(chǔ)區(qū)(背景數(shù)據(jù)塊)的塊,每次調(diào)用功能塊時(shí)需要提供各種類(lèi)型的數(shù)據(jù)給功能塊,功能塊也要返回變量給調(diào)用它的塊。這些數(shù)據(jù)以靜態(tài)變量(STAT)的形式存放在指定的背景數(shù)據(jù)塊 (DI) 中,臨時(shí)變量TEMP存儲(chǔ)在局域數(shù)據(jù)堆棧中。
調(diào)用FB或SFB時(shí),必須指定DI的編號(hào)。在編譯FB或SFB時(shí)自動(dòng)生成背景數(shù)據(jù)塊中的數(shù)據(jù)。一個(gè)功能塊可以有多個(gè)背景數(shù)據(jù)塊,用于不同的被控對(duì)象。
可以在FB的變量聲明表中給形參賦初值。如果調(diào)用塊時(shí)沒(méi)有提供實(shí)參,將使用上一次存儲(chǔ)在DI中的參數(shù)。
5.?dāng)?shù)據(jù)塊
數(shù)據(jù)塊中沒(méi)有STEP 7的指令,STEP 7按數(shù)據(jù)生成的順序自動(dòng)地為數(shù)據(jù)塊中的變量分配地址。數(shù)據(jù)塊分為共享數(shù)據(jù)塊和背景數(shù)據(jù)塊。
應(yīng)首先生成功能塊,然后生成它的背景數(shù)據(jù)塊。在生成背景數(shù)據(jù)塊時(shí)指明它的類(lèi)型為背景數(shù)據(jù)塊(Instance)和它的功能塊的編號(hào)。
 
6.系統(tǒng)功能塊SFB和系統(tǒng)功能SFC
系統(tǒng)功能塊和系統(tǒng)功能是為用戶(hù)提供的已經(jīng)編好程序的塊,可以調(diào)用不能修改。操作系統(tǒng)的一部分,不占用戶(hù)程序空間。SFB有存儲(chǔ)功能,其變量保存在指定給它的背景數(shù)據(jù)塊中。
7.系統(tǒng)數(shù)據(jù)塊(SDB)包含系統(tǒng)組態(tài)數(shù)據(jù),例如硬件模塊參數(shù)和通信連接參數(shù)等。
CALL、CU(無(wú)條件調(diào)用)和CC(RLO = 1時(shí)調(diào)用)指令調(diào)用沒(méi)有參數(shù)的FC和FB。
6.1.2  用戶(hù)程序使用的堆棧
  
            
堆棧采用“先入后出”的規(guī)則存入和取出數(shù)據(jù)。最上面的存儲(chǔ)單元稱(chēng)為棧頂。
1.局域數(shù)據(jù)堆棧(L)
存儲(chǔ)塊的局域數(shù)據(jù)區(qū)的臨時(shí)變量、組織塊的啟動(dòng)信息、塊傳遞參數(shù)的信息和梯形圖程序的中間結(jié)果??梢园次弧⒆止?jié)、字和雙字來(lái)存取,例如L 0.0,LB9,LW4和LD52。各邏輯塊均有自己的局域變量表,局域變量?jī)H在它被創(chuàng)建的邏輯塊中有效。
2.塊堆棧(B堆棧)
存儲(chǔ)被中斷的塊的類(lèi)型、編號(hào)和返回地址;從DB和DI寄存器中獲得的塊被中斷時(shí)打開(kāi)的共享數(shù)據(jù)塊和背景數(shù)據(jù)塊的編號(hào);局域數(shù)據(jù)堆棧的指針。
3.中斷堆棧(I堆棧)
當(dāng)前的累加器和地址寄存器的內(nèi)容、數(shù)據(jù)塊寄存器DB和DI的內(nèi)容、局域數(shù)據(jù)的指針、狀態(tài)字、MCR(主控繼電器)寄存器和B堆棧的指針。

6.1.3  線(xiàn)性化編程與結(jié)構(gòu)化編程
1.線(xiàn)性化編程:整個(gè)用戶(hù)程序放在循環(huán)控制組織塊OB1(主程序)中。
2.模塊化編程:程序被分為不同的邏輯塊,每個(gè)塊包含完成某些任務(wù)的邏輯指令。
3.結(jié)構(gòu)化編程:將復(fù)雜的自動(dòng)化任務(wù)分解為小任務(wù),這些任務(wù)由相應(yīng)的邏輯塊來(lái)表示,程序運(yùn)行時(shí)所需的大量數(shù)據(jù)和變量存儲(chǔ)在數(shù)據(jù)塊中。調(diào)用時(shí)將“實(shí)參”賦值給形參。
 
創(chuàng)建順序:FC1→FB1及其背景數(shù)據(jù)塊→OB1,被調(diào)用的塊應(yīng)該是已經(jīng)存在的。
6.2.1 發(fā)動(dòng)機(jī)控制系統(tǒng)的用戶(hù)程序結(jié)構(gòu)

 
 
 
3.局域變量的類(lèi)型
(1)IN(輸入變量):由調(diào)用它的塊提供的輸入?yún)?shù)。
(2)OUT(輸出變量):返回給調(diào)用它的塊的輸出參數(shù)。
(3)IN_OUT:初值由調(diào)用它的塊提供,被子程序修改后返回給調(diào)用它的塊。
(4)TEMP (臨時(shí)變量):暫時(shí)保存在局域數(shù)據(jù)區(qū)中的變量。
(5)STAT(靜態(tài)變量):在功能塊的背景數(shù)據(jù)塊中使用。關(guān)閉功能塊后,其靜態(tài)數(shù)據(jù)保持不變。功能(FC)沒(méi)有靜態(tài)變量。
表6-3  FB1的變量聲明表
Name    Data Type    Address    Declare    Initial Value    Comment
Switch_On    Bool    0.0    IN    FALSE    起動(dòng)按鈕
Switch_Off     Bool    0.1    IN    FALSE    停車(chē)按鈕
Failure    Bool    0.2    IN    FALSE    故障信號(hào)
Actual_Speed    Int    2.0    IN    0    實(shí)際轉(zhuǎn)速
Engine_On    Bool    4.0    OUT    FALSE    控制發(fā)動(dòng)機(jī)的輸出信號(hào)
Preset_Speed_Reached    Bool     4.1    OUT    FALSE    達(dá)到預(yù)置轉(zhuǎn)速
Preset_Speed    Int    6.0    STAT    1500    預(yù)置轉(zhuǎn)速

5.程序庫(kù)
6.2.3  功能塊與功能
表6-4  FC1的變量聲明表
Name    Data Type    Declare    Comment
Engine_On    Bool    IN    輸入信號(hào),發(fā)動(dòng)機(jī)運(yùn)行
Timer_Function    Timer    IN    停機(jī)延時(shí)的定時(shí)器功能
Fan_On    Bool    OUT    控制風(fēng)扇的輸出信號(hào)
 
6.2.4  功能塊與功能的調(diào)用
 
為了能全部轉(zhuǎn)換為圖6-10中的梯形圖,下面的語(yǔ)句表還需要增加一些語(yǔ)句。
Network1:自動(dòng)手動(dòng)切換
A         "自動(dòng)"
          S         "自動(dòng)模式"
          A         "手動(dòng)"
          R         "自動(dòng)模式"
Network2:汽油機(jī)控制
CALL  "發(fā)動(dòng)機(jī)控制" , "汽油機(jī)數(shù)據(jù)"
   Switch_On           := "起動(dòng)汽油機(jī)"
   Switch_Off            := "關(guān)閉汽油機(jī)"
   Failure               := "汽油機(jī)故障"
   Actual_Speed          := "汽油機(jī)轉(zhuǎn)速"
   Engine_On             := "汽油機(jī)運(yùn)行"
   Preset_Speed_Reached := "汽油機(jī)到達(dá)設(shè)置轉(zhuǎn)速"
Network3:汽油機(jī)風(fēng)扇控制
          CALL  "風(fēng)扇控制"
            Engine_On         := "汽油機(jī)運(yùn)行"
            Timer_Function      := "汽油機(jī)風(fēng)扇延時(shí)"
            Fan_On            := "汽油機(jī)風(fēng)扇運(yùn)行"

6.3  數(shù)據(jù)塊
6.3.1 數(shù)據(jù)塊中的數(shù)據(jù)類(lèi)型
1.基本數(shù)據(jù)類(lèi)型
基本數(shù)據(jù)類(lèi)型包括位(Bool),字節(jié)(Byte)、字(Word)、雙字(Dword)、整數(shù)(INT)、雙整數(shù)(DINT)和浮點(diǎn)數(shù)(Float,或稱(chēng)實(shí)數(shù)Real)等。
2.復(fù)合數(shù)據(jù)類(lèi)型
日期和時(shí)間用8個(gè)字節(jié)的BCD碼來(lái)存儲(chǔ)。第0~5號(hào)字節(jié)分別存儲(chǔ)年、月、日、時(shí)、分和秒,毫秒存儲(chǔ)在字節(jié)6和字節(jié)7的高4位,星期存放在字節(jié)7的低4位。例如2004年7月27日12點(diǎn)30分25.123秒可以表示為DT#04-07-27-12:30:25.123。
字符串(STRING)由最多254個(gè)字符(CHAR)和2字節(jié)的頭部組成。字符串的默認(rèn)長(zhǎng)度為254,通過(guò)定義字符串的長(zhǎng)度可以減少它占用的存儲(chǔ)空間。
3.?dāng)?shù)組
數(shù)組(ARRAY)是同一類(lèi)型的數(shù)據(jù)組合而成的一個(gè)單元。ARRAY[1..2,1..3]是一個(gè)二維數(shù)組,共有6個(gè)整數(shù)元素。最多為6維。
    數(shù)組元素”TANK”.PRESS[2,1]:TANK是數(shù)據(jù)塊的符號(hào)名,PRESS是數(shù)組的名稱(chēng)。方括號(hào)中是數(shù)組元素的下標(biāo)。如果在塊的變量聲明表中聲明形參的類(lèi)型為ARRAY,可以將整個(gè)數(shù)組而不是某些元素作為參數(shù)來(lái)傳遞。
 
4.結(jié)構(gòu)
結(jié)構(gòu)(STRUCT)是不同類(lèi)型的數(shù)據(jù)的組合??梢杂没緮?shù)據(jù)類(lèi)型、復(fù)雜數(shù)據(jù)類(lèi)型,和,UDT作為結(jié)構(gòu)中的元素,可以嵌套8層。
數(shù)據(jù)塊TANK內(nèi)結(jié)構(gòu)STACK的元素AMOUNT應(yīng)表示為”TANK”.STACK.AMOUNT。
將結(jié)構(gòu)作為參數(shù)傳遞時(shí),作為形參和實(shí)參的兩個(gè)結(jié)構(gòu)必須有相同的數(shù)據(jù)結(jié)構(gòu),即相同數(shù)據(jù)類(lèi)型的結(jié)構(gòu)元素和相同的排列順序。
5.用戶(hù)定義數(shù)據(jù)類(lèi)型
用戶(hù)定義數(shù)據(jù)類(lèi)型(UDT)是一種特殊的數(shù)據(jù)結(jié)構(gòu),由用戶(hù)自己生成,定義好后可以在用戶(hù)程序中多次使用。
例如可以生成用于顏料混合配方的UDT,然后用它生成用于不同顏色配方的數(shù)據(jù)組合。
6.3.2 數(shù)據(jù)塊的生成與使用
菜單命令“View→Declaration View”和“View→Data View”分別指定聲明表顯示方式和數(shù)據(jù)顯示方式。聲明表顯示狀態(tài)用于定義和修改共享數(shù)據(jù)塊中的變量。
6.4 多重背景
 
6.4.1 多重背景功能塊
生成FB10時(shí)應(yīng)激活“Multiple Instance FB”(多重背景功能塊)選項(xiàng)。應(yīng)首先生成FB1。為調(diào)用FB1,在FB10的變量聲明表中聲明了兩個(gè)名為“Petrol_Engine(汽油機(jī))”和“Diesel_Engine(柴油機(jī))”的靜態(tài)變量(STAT),其數(shù)據(jù)類(lèi)型為FB1。生成FB10后,“Petrol_Engine”和“Diesel_Engine”將出現(xiàn)在管理器編程元件目錄的“Multiple Instances(多重背景)”文件夾內(nèi)??梢詫⑺鼈儭巴戏拧钡紽B 10中,然后指定它們的輸入?yún)?shù)和輸出參數(shù)。
6.4.2  多重背景數(shù)據(jù)塊 其中的數(shù)據(jù)自動(dòng)產(chǎn)生。
6.4.3  在OB1中調(diào)用多重背景
圖6-21中調(diào)用FB10(符號(hào)名為“發(fā)動(dòng)機(jī)”)的語(yǔ)句表為:
Network4:調(diào)用多重背景
CALL  "發(fā)動(dòng)機(jī)" , "多重背景數(shù)據(jù)塊"
            Preset_Speed_Reached :="兩臺(tái)都達(dá)到設(shè)置轉(zhuǎn)速"
 
圖6-17  FB10的變量聲明表
 
圖6-18  多重背景功能塊FB10
使用多重背景時(shí)應(yīng)注意以下問(wèn)題:
    (1)首先應(yīng)生成需要多次調(diào)用的功能塊(例如上例中的FB1)。
(2)管理多重背景的功能塊(例如上例中的FB10)必須設(shè)置為有多重背景功能。
(3)在管理多重背景的功能塊的變量聲明表中,為被調(diào)用的功能塊的每一次調(diào)用定義一個(gè)靜態(tài)(STAT)變量,以被調(diào)用的功能塊的名稱(chēng)(例如FB1)作為靜態(tài)變量的數(shù)據(jù)類(lèi)型。
(4)必須有一個(gè)背景數(shù)據(jù)塊(例如上例中的DB10)分配給管理多重背景的功能塊。背景數(shù)據(jù)塊中的數(shù)據(jù)是自動(dòng)生成的。
(5)多重背景只能聲明為靜態(tài)變量(聲明類(lèi)型為“STAT”)。

6.5  組織塊與中斷處理
組織塊是操作系統(tǒng)與用戶(hù)程序之間的接口。用組織塊可以響應(yīng)延時(shí)中斷、外部硬件中斷和錯(cuò)誤處理等。
6.5.1 中斷的基本概念
1.中斷過(guò)程
中斷處理用來(lái)實(shí)現(xiàn)對(duì)特殊內(nèi)部事件或外部事件的快速響應(yīng)。CPU檢測(cè)到中斷請(qǐng)求時(shí),立即響應(yīng)中斷,調(diào)用中斷源對(duì)應(yīng)的中斷程序(OB)。執(zhí)行完中斷程序后,返回被中斷的程序。
中斷源:I/O模塊的硬件中斷,軟件中斷,例如日期時(shí)間中斷、延時(shí)中斷、循環(huán)中斷和編程錯(cuò)誤引起的中斷。
中斷源的中斷優(yōu)先級(jí)與中斷程序的嵌套調(diào)用。操作系統(tǒng)對(duì)現(xiàn)場(chǎng)進(jìn)行保護(hù)。被中斷的OB的局域數(shù)據(jù)壓入L堆棧、I堆棧(中斷堆棧)、B堆棧(塊堆棧)。
2.組織塊的分類(lèi)
組織塊只能由操作系統(tǒng)起動(dòng),它由變量聲明表和用戶(hù)編寫(xiě)的控制程序組成。
(1)起動(dòng)組織塊OB100~OB102
(2)循環(huán)執(zhí)行的組織塊
(3)定期執(zhí)行的組織塊
(4)事件驅(qū)動(dòng)的組織塊
延時(shí)中斷、硬件中斷、異步錯(cuò)誤中斷OB80~OB87,同步錯(cuò)誤中斷OB121和OB122。
3.中斷的優(yōu)先級(jí)
下面是優(yōu)先級(jí)的順序(后面的比前面的優(yōu)先):背景循環(huán)、主程序掃描循環(huán)、日期時(shí)間中斷、時(shí)間延時(shí)中斷、循環(huán)中斷、硬件中斷、多處理器中斷、I/O冗余錯(cuò)誤、異步故障(OB80~87)、啟動(dòng)和CPU冗余,背景循環(huán)的優(yōu)先級(jí)最低。
4.對(duì)中斷的控制
日期時(shí)間中斷和延時(shí)中斷有專(zhuān)用的允許處理中斷和禁止中斷的系統(tǒng)功能(SFC)。
SFC 39“DIS_INT”用來(lái)禁止所有的中斷、某些優(yōu)先級(jí)范圍的中斷、或指定的某個(gè)中斷。SFC 40“EN_INT”用來(lái)激活(使能)新的中斷和異步錯(cuò)誤處理。如果用戶(hù)希望忽略中斷,可以下載一個(gè)只有塊結(jié)束指令BEU的空的OB。
SFC 41“DIS_AIRT”延遲處理比當(dāng)前優(yōu)先級(jí)高的中斷和異步錯(cuò)誤。SFC 42“EN_ AIRT”允許立即處理被SFC 41暫時(shí)禁止的中斷和異步錯(cuò)誤。
6.5.2  組織塊的變量聲明表
OB沒(méi)有背景數(shù)據(jù)塊和靜態(tài)變量,只有20個(gè)字節(jié)組成的包含OB的起動(dòng)信息的變量聲明表(臨時(shí)變量)。
表6-6  OB的變量聲明表
字節(jié)地址    內(nèi)容
0    事件級(jí)別與標(biāo)識(shí)符,例如OB40為B#16#11,表示硬件中斷被激活
1    用代碼表示與起動(dòng)OB的事件有關(guān)的信息
2    優(yōu)先級(jí),例如OB40的優(yōu)先級(jí)為16
3    OB塊號(hào),例如OB40的塊號(hào)為40
4~11    附加信息,例如OB40的第5字節(jié)為產(chǎn)生中斷的模塊的類(lèi)型,16#54為輸入模塊,16#55為輸出模塊;第6,7字節(jié)組成的字為產(chǎn)生中斷的模塊的起始地址;第8~11字節(jié)組成的雙字為產(chǎn)生中斷的通道號(hào)
12~19    OB被起動(dòng)的日期和時(shí)間(年、月、日、時(shí)、分、秒、毫秒與星期)
6.5.3 日期時(shí)間中斷組織塊(OB10~OB17)
CPU可以使用的日期時(shí)間中斷OB的個(gè)數(shù)與CPU的型號(hào)有關(guān)。S7-300只能用OB10。
可以在某一特定的日期和時(shí)間執(zhí)行一次,也可以從設(shè)定的日期時(shí)間開(kāi)始,周期性地重復(fù)執(zhí)行,例如每分鐘、每小時(shí)、每天、甚至每年執(zhí)行一次??梢杂肧FC 28~SFC 30取消、重新設(shè)置或激活日期時(shí)間中斷。
1.設(shè)置和起動(dòng)日期時(shí)間中斷
(1)用SFC 28“SET_TINT”和SFC 30“ACT_TINT”設(shè)置和激活日期時(shí)間中斷。
(2)在硬件組態(tài)工具中設(shè)置和激活。
(3)在硬件組態(tài)工具中設(shè)置,用SFC 30“ACT_TINT”激活日期時(shí)間中斷。
2.調(diào)用SFC 31 “QRY_TINT”查詢(xún)?nèi)掌跁r(shí)間中斷
3.禁止與激活日期時(shí)間中斷
用SFC 29“CAN_TINT”取消(禁止)日期時(shí)間中斷,用SFC 28“SET_TINT”重新設(shè)置那些被禁止的日期時(shí)間中斷,用SFC 30“ACT_TINT”重新激活日期時(shí)間中斷。
在調(diào)用SFC 28時(shí),如果參數(shù)“OB10_PERIOD_EXE”為十六進(jìn)制數(shù)W#16#0000,W#16#0201,W#16#0401, W#16#1001, W#16#1201, W#16#1401, W#16#1801和W#16#2001,分別表示執(zhí)行一次、每分鐘、每小時(shí)、每天、每周、每月、每年和月末執(zhí)行一次。
6.5.4 延時(shí)中斷組織塊
延時(shí)中斷以ms為單位定時(shí)。CPU可以使用的延時(shí)中斷OB的個(gè)數(shù)與CPU的型號(hào)有關(guān)。
用SFC 32“SRT_DINT”起動(dòng),經(jīng)過(guò)設(shè)定的時(shí)間觸發(fā)中斷,調(diào)用SFC 32指定的OB。延時(shí)中斷可以用SFC 33“CAN_DINT”取消。用SFC 34“QRY_DINT”查詢(xún)延時(shí)中斷的狀態(tài)。
6.5.5 循環(huán)中斷組織塊
CPU可以使用的日期時(shí)間中斷OB的個(gè)數(shù)與CPU的型號(hào)有關(guān)。
設(shè)OB38和OB37的時(shí)間間隔分別為10ms和20ms,它們的相位偏移分別為0ms和3ms。OB38分別在10 ms,20ms,……,60ms時(shí)產(chǎn)生中斷,而OB37分別在t = 23ms,43ms,63ms時(shí)產(chǎn)生中斷。可以用SFC 40和SFC 39來(lái)激活和禁止循環(huán)中斷。
表6-7 循環(huán)OB默認(rèn)參數(shù)
OB號(hào)    時(shí)間間隔    優(yōu)先級(jí)    OB號(hào)    時(shí)間間隔    優(yōu)先級(jí)
OB30    5s    7    OB35    100ms    12
OB31    2s    8    OB36    50ms    13
OB32    1s    9    OB37    20ms    14
OB33    500ms    10    OB38    10ms    15
OB34    200ns    11            
6.5.6  硬件中斷組織塊
硬件中斷組織塊(OB40~OB47)用于快速響應(yīng)信號(hào)模塊(SM,即輸入/輸出模塊)、通信處理器(CP)和功能模塊(FM)的信號(hào)變化。
硬件中斷被模塊觸發(fā)后,操作系統(tǒng)將自動(dòng)識(shí)別是哪一個(gè)槽的模塊和模塊中哪一個(gè)通道產(chǎn)生的硬件中斷。硬件中斷OB執(zhí)行完后,將發(fā)送通道確認(rèn)信號(hào)。
 
如果正在處理某一中斷事件,又出現(xiàn)了同一模塊同一通道產(chǎn)生的完全相同的中斷事件,新的中斷事件將丟失。
如果正在處理某一中斷信號(hào)時(shí)同一模塊中其他通道或其它模塊產(chǎn)生了中斷事件,當(dāng)前已激活的硬件中斷執(zhí)行完后,再處理暫存的中斷。
用PLCSIM的菜單命令“Execute→Trigger Error OB→Hardware Interrupt (OB40-OB47)…”打開(kāi)“Hardware Interrupt (OB40-OB47)”對(duì)話(huà)框,輸入模塊的起始地址和位地址0。按“Apply”鍵觸發(fā)指定的硬件中斷,按“OK”鍵將執(zhí)行與“Apply”鍵同樣的操作,同時(shí)退出對(duì)話(huà)框。
6.5.7 起動(dòng)時(shí)使用的組織塊
1.CPU模塊的啟動(dòng)方式
(1)暖啟動(dòng)(Warm Restart)
S7-300 CPU(不包括CPU 318)只有暖起動(dòng)。過(guò)程映像數(shù)據(jù)以及非保持的M/T/C。有保持功能的M/T/C/DB將保留原數(shù)值。模式開(kāi)關(guān)扳由STOP板到RUN位置。
(2)熱起動(dòng)(Hot Restart僅S7-400有)
在RUN狀態(tài)時(shí)如果電源突然丟失,然后又重新上電,從上次RUN模式結(jié)束時(shí)程序被中斷之處繼續(xù)執(zhí)行,不對(duì)計(jì)數(shù)器等復(fù)位。 
(3)冷啟動(dòng)(Cold Restart,CPU 417和CPU 417H)
冷啟動(dòng)時(shí),過(guò)程數(shù)據(jù)區(qū)的I, Q, M, T, C, DB等被復(fù)位為零。模式開(kāi)關(guān)扳到MRES位置。
2.啟動(dòng)組織塊(OB100~OB102)
在暖起動(dòng)、熱起動(dòng)或冷起動(dòng)時(shí),操作系統(tǒng)分別調(diào)用OB100,OB101或OB102。
6.5.8 異步錯(cuò)誤組織塊
1.錯(cuò)誤處理概述
S7-300/400有很強(qiáng)的錯(cuò)誤(或稱(chēng)故障)檢測(cè)和處理能力。PLC內(nèi)部的功能性錯(cuò)誤或編程錯(cuò)誤,而不是外部設(shè)備的故障。CPU檢測(cè)到錯(cuò)誤后,操作系統(tǒng)調(diào)用對(duì)應(yīng)的組織塊,用戶(hù)可以在組織塊中編程,對(duì)發(fā)生的錯(cuò)誤采取相應(yīng)的措施。對(duì)于大多數(shù)錯(cuò)誤,如果沒(méi)有給組織塊編程,出現(xiàn)錯(cuò)誤時(shí)CPU將進(jìn)入STOP模式。
表6-8  錯(cuò)誤處理組織塊
OB號(hào)    錯(cuò)誤類(lèi)型    優(yōu)先級(jí)
OB 70    I/O 冗余錯(cuò)誤(僅H系列CPU)    25
OB 72    CPU 冗余錯(cuò)誤(僅H系列CPU)    28
OB 73    通信冗余錯(cuò)誤(僅H系列CPU)    25
OB 80    時(shí)間錯(cuò)誤    26
OB 81    電源故障    26/28
OB 82    診斷中斷    
OB 83    插入/取出模塊中斷    
OB 84    CPU硬件故障    
OB 85    優(yōu)先級(jí)錯(cuò)誤    
OB 86    機(jī)架故障或分布式I/O 的站故障    
OB 87    通信錯(cuò)誤    
OB 121    編程錯(cuò)誤    引起錯(cuò)誤的OB的優(yōu)先級(jí)
OB 122    I/O 訪(fǎng)問(wèn)錯(cuò)誤    

為避免發(fā)生某種錯(cuò)誤時(shí)CPU進(jìn)入停機(jī)狀態(tài),可以在CPU中建立一個(gè)對(duì)應(yīng)的空的組織塊。
2.錯(cuò)誤的分類(lèi)
被S7 CPU檢測(cè)到并且用戶(hù)可以通過(guò)組織塊對(duì)其進(jìn)行處理的錯(cuò)誤分為兩個(gè)基本類(lèi)型:
(1)異步錯(cuò)誤
異步錯(cuò)誤是與PLC的硬件或操作系統(tǒng)密切相關(guān)的錯(cuò)誤,與程序執(zhí)行無(wú)關(guān)。后果嚴(yán)重。異步錯(cuò)誤OB具有最高等級(jí)的優(yōu)先級(jí),其他OB不能中斷它們。同時(shí)有多個(gè)相同優(yōu)先級(jí)的異步錯(cuò)誤OB出現(xiàn),將按出現(xiàn)的順序處理。
(2)同步錯(cuò)誤(OB121和OB122)
同步錯(cuò)誤是與程序執(zhí)行有關(guān)的錯(cuò)誤, 其OB的優(yōu)先級(jí)與出現(xiàn)錯(cuò)誤時(shí)被中斷的塊的優(yōu)先級(jí)相同,即同步錯(cuò)誤OB中的程序可以訪(fǎng)問(wèn)塊被中斷時(shí)累加器和狀態(tài)寄存器中的內(nèi)容。對(duì)錯(cuò)誤進(jìn)行處理后,可以將處理結(jié)果返回被中斷的塊。
3.電源故障處理組織塊(OB81)
電源故障包括后備電池失效或未安裝,S7-400的CPU機(jī)架或擴(kuò)展機(jī)架上的DC 24V電源故障。電源故障出現(xiàn)和消失時(shí)操作系統(tǒng)都要調(diào)用OB81。
4.時(shí)間錯(cuò)誤處理組織塊(OB80)
循環(huán)監(jiān)控時(shí)間的默認(rèn)值為150ms,時(shí)間錯(cuò)誤包括實(shí)際循環(huán)時(shí)間超過(guò)設(shè)置的循環(huán)時(shí)間、因?yàn)橄蚯靶薷臅r(shí)間而跳過(guò)日期時(shí)間中斷、處理優(yōu)先級(jí)時(shí)延遲太多等。
5.診斷中斷處理組織塊(OB82)
OB82在下列情況時(shí)被調(diào)用:有診斷功能的模塊的斷線(xiàn)故障,模擬量輸入模塊的電源故障,輸入信號(hào)超過(guò)模擬量模塊的測(cè)量范圍等。錯(cuò)誤出現(xiàn)和消失時(shí),操作系統(tǒng)都會(huì)調(diào)用OB82。用SFC 51“RDSYSST”可以讀出模塊的診斷數(shù)據(jù)。
6.插入/拔出模塊中斷組織塊(OB83)
S7-400可以在RUN,STOP或STARTUP模式下帶電拔出和插入模塊,但是不包括CPU模塊、電源模塊、接口模塊和帶適配器的S5模塊,上述操作將會(huì)產(chǎn)生插入/拔出模塊中斷。
7.CPU硬件故障處理組織塊(OB84)
當(dāng)CPU 檢測(cè)到MPI網(wǎng)絡(luò)的接口故障、通信總線(xiàn)的接口故障或分布式I/O網(wǎng)卡的接口故障時(shí),操作系統(tǒng)調(diào)用OB84。故障消除時(shí)也會(huì)調(diào)用該OB塊。
8.優(yōu)先級(jí)錯(cuò)誤處理組織塊(OB85)
在以下情況下將會(huì)觸發(fā)優(yōu)先級(jí)錯(cuò)誤中斷:
(1)產(chǎn)生了一個(gè)中斷事件,但是對(duì)應(yīng)的OB塊沒(méi)有下載到CPU;
(2)訪(fǎng)問(wèn)一個(gè)系統(tǒng)功能塊的背景數(shù)據(jù)塊時(shí)出錯(cuò)。
(3)刷新過(guò)程映像表時(shí)I/O訪(fǎng)問(wèn)出錯(cuò),模塊不存在或有故障。
9.機(jī)架故障組織塊(OB86)
(1)機(jī)架故障,例如找不到接口模塊或接口模塊損壞,或者連接電纜斷線(xiàn);
(2)機(jī)架上的分布式電源故障;
(3)在SINEC L2-DP總線(xiàn)系統(tǒng)的主系統(tǒng)中有一個(gè)DP從站有故障。
10.通信錯(cuò)誤組織塊(OB87)
(1)接收全局?jǐn)?shù)據(jù)時(shí),檢測(cè)到不正確的幀標(biāo)識(shí)符(ID);
(2)全局?jǐn)?shù)據(jù)通信的狀態(tài)信息數(shù)據(jù)塊不存在或太短;
(3)接收到非法的全局?jǐn)?shù)據(jù)包編號(hào)。
6.5.9 同步錯(cuò)誤組織塊
1.同步錯(cuò)誤
同步錯(cuò)誤是與執(zhí)行用戶(hù)程序有關(guān)的錯(cuò)誤,OB121用于對(duì)程序錯(cuò)誤的處理;OB122用于處理模塊訪(fǎng)問(wèn)錯(cuò)誤。
同步錯(cuò)誤OB的優(yōu)先級(jí)與檢測(cè)到出錯(cuò)的塊的優(yōu)先級(jí)一致。
同步錯(cuò)誤可以用SFC 36“MASK_FLT”來(lái)屏蔽,用錯(cuò)誤過(guò)濾器中的一位用來(lái)表示某種同步錯(cuò)誤是否被屏蔽。錯(cuò)誤過(guò)濾器分為程序錯(cuò)誤過(guò)濾器和訪(fǎng)問(wèn)錯(cuò)誤過(guò)濾器,分別占一個(gè)雙字。屏蔽后的錯(cuò)誤過(guò)濾器可以讀出。
表6-9  SFC 36“MSK_FLT”的局域變量表
參數(shù)    聲明    數(shù)據(jù)類(lèi)型    存儲(chǔ)區(qū)    描述
PRGFLT_SET_MASK    INPUT    DWORD    I,Q,M,D,L,常數(shù)    要屏蔽的程序錯(cuò)誤
ACCFLT_SET_MASK    INPUT    DWORD    I,Q,M,D,L,常數(shù)    要屏蔽的訪(fǎng)問(wèn)錯(cuò)誤
RET_VAL    OUTPUT    INT    I,Q,M,D,L    錯(cuò)誤信息返回值
PRGFLT_MASKED    OUTPUT    DWORD    I,Q,M,D,L    被屏蔽的程序錯(cuò)誤
ACCFLT_MASKED    OUTPUT    DWORD    I,Q,M,D,L    被屏蔽的訪(fǎng)問(wèn)錯(cuò)誤
調(diào)用SFC 37“DMSK_FLT”并且在當(dāng)前優(yōu)先級(jí)被執(zhí)行完后,將解除被屏蔽的錯(cuò)誤。
可以用SFC 38“READ_ERR”讀出已經(jīng)發(fā)生的被屏蔽的錯(cuò)誤。
2.編程錯(cuò)誤組織塊(OB121)
出現(xiàn)編程錯(cuò)誤時(shí),CPU 的操作系統(tǒng)將調(diào)用OB121。局域變量OB121_SW_FLT給出了錯(cuò)誤代碼,可以查看《S7-300/400的系統(tǒng)軟件和標(biāo)準(zhǔn)功能》中OB121部分的錯(cuò)誤代碼表。
3.I/O訪(fǎng)問(wèn)錯(cuò)誤組織塊(OB122)
    STEP 7指令訪(fǎng)問(wèn)有故障的模塊,例如直接訪(fǎng)問(wèn)I/O錯(cuò)誤(模塊損壞或找不到),或者訪(fǎng)問(wèn)了一個(gè)CPU不能識(shí)別的I/O地址,此時(shí)CPU的操作系統(tǒng)將會(huì)調(diào)用OB122。 
6.5.10 背景組織塊
CPU可以保證設(shè)置的最小掃描循環(huán)時(shí)間,如果它比實(shí)際的掃描循環(huán)時(shí)間長(zhǎng),在循環(huán)程序結(jié)束后CPU處于空閑的時(shí)間內(nèi)可以執(zhí)行背景組織塊(OB90)。背景OB的優(yōu)先級(jí)為29(最低)。

第七章  計(jì)算機(jī)通信網(wǎng)絡(luò)與S7-300/400的通信功能
7.1  計(jì)算機(jī)通信方式與串行通信接口
7.1.1  計(jì)算機(jī)的通信方式    

        1.并行通信與串行通信
2.異步通信與同步通信
 
某字符中包含以下8個(gè)數(shù)據(jù)位:
 1 0 1 0 0 0 1 1 
如果選擇了偶校驗(yàn),奇偶校驗(yàn)位將是0。如果選擇了奇校驗(yàn),奇偶校驗(yàn)位將是1。如果選擇不進(jìn)行奇偶校驗(yàn),傳輸時(shí)沒(méi)有校驗(yàn)位,也不進(jìn)行奇偶校驗(yàn)檢測(cè)。
同步通信以字節(jié)為單位,每次傳送1~2個(gè)同步字符、若干個(gè)數(shù)據(jù)字節(jié)和校驗(yàn)字符。通過(guò)調(diào)制解調(diào)的方式在數(shù)據(jù)流中提取出同步信號(hào),使接收方得到與發(fā)送方同步的接收時(shí)鐘信號(hào)。
單工通信方式只能沿單一方向傳輸數(shù)據(jù),雙工通信方式的信息可以沿兩個(gè)方向傳送,每一個(gè)站既可以發(fā)送數(shù)據(jù),也可以接收數(shù)據(jù)。雙工方式又分為全雙工和半雙工。
 
4.傳輸速率
傳輸速率(又稱(chēng)波特率)的單位是波特,其符號(hào)為bit/s或bps。
7.1.2  串行通信接口的標(biāo)準(zhǔn)
    1.RS-232C
 
最大通信距離為15m,最高傳輸速度速率為20kbit/s,只能進(jìn)行一對(duì)一的通信。
2.RS-422A與RS-485
RS-422A采用平衡驅(qū)動(dòng)、差分接收電路(見(jiàn)圖7-6),共模信號(hào)可以互相抵消。
RS-422A在最大傳輸速率 (10 Mbit/s) 時(shí),允許的最大通信距離為12m。傳輸速率為100 kbit/s時(shí),最大通信距離為1 200m,一臺(tái)驅(qū)動(dòng)器可以連接10臺(tái)接收器。
3.RS-485
RS-485為半雙工,只有一對(duì)平衡差分信號(hào)線(xiàn),最多可以有128個(gè)站。
 
7.2  計(jì)算機(jī)通信的國(guó)際標(biāo)準(zhǔn)
7.2.1  開(kāi)放系統(tǒng)互連模型
 
1.物理層
物理層為用戶(hù)提供建立、保持和斷開(kāi)物理連接的功能,RS-232C,RS-422A / RS-485。
2.?dāng)?shù)據(jù)鏈路層
數(shù)據(jù)以幀(frame)為單位傳送,每一幀包含一定數(shù)量的數(shù)據(jù)和必要的控制信息,例如同步信息、地址信息、差錯(cuò)控制和流量控制信息。數(shù)據(jù)鏈路層負(fù)責(zé)在兩個(gè)相鄰節(jié)點(diǎn)間的鏈路上,實(shí)現(xiàn)差錯(cuò)控制、數(shù)據(jù)成幀、同步控制等。
7.應(yīng)用層
應(yīng)用層作為OSI的最高層,為用戶(hù)的應(yīng)用服務(wù)提供信息交換,為應(yīng)用接口提供操作標(biāo)準(zhǔn)。
7.2.2  IEEE 802通信標(biāo)準(zhǔn)
數(shù)據(jù)鏈路層分解為邏輯鏈路控制層(LLC)、媒體訪(fǎng)問(wèn)層(MAC),數(shù)據(jù)鏈路層是一條鏈路(Link)兩端的兩臺(tái)設(shè)備進(jìn)行通信時(shí)所共同遵守的規(guī)則和約定。
    1.CSMA/CD
競(jìng)爭(zhēng)發(fā)送、廣播式傳送、載體監(jiān)聽(tīng)、沖突檢測(cè)、沖突后退和再試發(fā)送。
    2.令牌總線(xiàn)
    3.令牌環(huán)
7.2.3  現(xiàn)場(chǎng)總線(xiàn)及其國(guó)際標(biāo)準(zhǔn)
IEC (國(guó)際電工委員會(huì)) 對(duì)現(xiàn)場(chǎng)總線(xiàn)(Fieldbus)的定義是“安裝在制造和過(guò)程區(qū)域的現(xiàn)場(chǎng)裝置與控制室內(nèi)的自動(dòng)控制裝置之間的數(shù)字式、串行、多點(diǎn)通信的數(shù)據(jù)總線(xiàn)稱(chēng)為現(xiàn)場(chǎng)總線(xiàn)”。
IEC 61158是迄今為止制訂時(shí)間最長(zhǎng)、意見(jiàn)分歧最大的國(guó)際標(biāo)準(zhǔn)之一。制訂時(shí)間超過(guò)12年,先后經(jīng)過(guò)9次投票,在1999年底獲得通過(guò)。IEC 61158最后容納了8種互不兼容的協(xié)議:
類(lèi)型1:原IEC61158技術(shù)報(bào)告,即現(xiàn)場(chǎng)總線(xiàn)基金會(huì)(FF)的H1;
類(lèi)型2:Control Net(美國(guó)Rockwell公司支持);
類(lèi)型3:PROFIBUS(德國(guó)西門(mén)子公司支持);
類(lèi)型4:P-Net(丹麥Process Data公司支持);
類(lèi)型5:FF的HSE(原FF的 H2,高速以太網(wǎng),美國(guó)Fisher Rosemount 公司支持);
類(lèi)型6:Swift Net(美國(guó)波音公司支持);
類(lèi)型7:WorldFIP(法國(guó)Alstom公司支持);
類(lèi)型8:Interbus(德國(guó)Phoenix contact公司支持)。
各類(lèi)型將自己的行規(guī)納入IEC 61158,且遵循兩個(gè)原則:
    (1) 不改變IEC 61158技術(shù)報(bào)告的內(nèi)容。
(2)八種類(lèi)型都是平等的,類(lèi)型2~8都對(duì)類(lèi)型1提供接口,標(biāo)準(zhǔn)并不要求類(lèi)型2~8之間提供接口。
IEC 62026是供低壓開(kāi)關(guān)設(shè)備與控制設(shè)備使用的控制器電氣接口標(biāo)準(zhǔn),于2000年6月通過(guò)。它包括:
(1)    IEC 62026-1:一般要求;
(2) IEC 62026-2:執(zhí)行器傳感器接口A(yíng)S-i (Actuator Sensor Interface);
(3) IEC 62026-3:設(shè)備網(wǎng)絡(luò)DN (Device Network);
(4) IEC 62026-4:Lonworks(Local Operating Networks)總線(xiàn)的通信協(xié)議LonTalk;
(5) IEC 62026-5:靈巧配電(智能分布式)系統(tǒng)SDS (Smart Distributed System);
(6) IEC 62026-6:串行多路控制總線(xiàn)SMCB(Serial Multiplexed Control Bus )。
7.3  S7-300/400的通信功能
7.3.1  工廠(chǎng)自動(dòng)化網(wǎng)絡(luò)結(jié)構(gòu)
1.現(xiàn)場(chǎng)設(shè)備層
主要功能是連接現(xiàn)場(chǎng)設(shè)備,例如分布式I/O、傳感器、驅(qū)動(dòng)器、執(zhí)行機(jī)構(gòu)和開(kāi)關(guān)設(shè)備等,完成現(xiàn)場(chǎng)設(shè)備控制及設(shè)備間連鎖控制。
 
2.車(chē)間監(jiān)控層
車(chē)間監(jiān)控層又稱(chēng)為單元層,用來(lái)完成車(chē)間主生產(chǎn)設(shè)備之間的連接,包括生產(chǎn)設(shè)備狀態(tài)的在線(xiàn)監(jiān)控、設(shè)備故障報(bào)警及維護(hù)等。還有生產(chǎn)統(tǒng)計(jì)、生產(chǎn)調(diào)度等功能。傳輸速度不是最重要的,但是應(yīng)能傳送大容量的信息。
3.工廠(chǎng)管理層
車(chē)間操作員工作站通過(guò)集線(xiàn)器與車(chē)間辦公管理網(wǎng)連接,將車(chē)間生產(chǎn)數(shù)據(jù)送到車(chē)間管理層。車(chē)間管理網(wǎng)作為工廠(chǎng)主網(wǎng)的一個(gè)子網(wǎng),連接到廠(chǎng)區(qū)骨干網(wǎng),將車(chē)間數(shù)據(jù)集成到工廠(chǎng)管理層。
7.3.2  S7-300/400的通信網(wǎng)絡(luò)
1.通過(guò)多點(diǎn)接口(MPI)協(xié)議的數(shù)據(jù)通信
MPI是多點(diǎn)接口(Multi Point Interface)的簡(jiǎn)稱(chēng),MPI的物理層是RS-485,通過(guò)MPI能同時(shí)連接運(yùn)行STEP 7的編程器、計(jì)算機(jī)、人機(jī)界面(HMI)及其他SIMATIC S7,M7和C7。
通過(guò)MPI接口實(shí)現(xiàn)全局?jǐn)?shù)據(jù)(GD)服務(wù),周期性地相互進(jìn)行數(shù)據(jù)交換。
2.PROFIBUS
用于車(chē)間級(jí)監(jiān)控和現(xiàn)場(chǎng)層的通信系統(tǒng),開(kāi)放性。PROFIBUS-DP與分布式I/O。最多可以與127個(gè)網(wǎng)絡(luò)上的節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交換。網(wǎng)絡(luò)中最多可以串接10個(gè)中繼器來(lái)延長(zhǎng)通信距離。使用光纖作通信介質(zhì),通信距離可達(dá)90 km。 
3.工業(yè)以太網(wǎng)
西門(mén)子的工業(yè)以太網(wǎng)符合IEEE 802.3國(guó)際標(biāo)準(zhǔn),通過(guò)網(wǎng)關(guān)來(lái)連接遠(yuǎn)程網(wǎng)絡(luò)。10M/100M bit/s,最多1024個(gè)網(wǎng)絡(luò)節(jié)點(diǎn),網(wǎng)絡(luò)的最大范圍為150km。
采用交換式局域網(wǎng),每個(gè)網(wǎng)段都能達(dá)到網(wǎng)絡(luò)的整體性能和數(shù)據(jù)傳輸速率,電氣交換模塊與光纖交換模塊將網(wǎng)絡(luò)劃分為若干個(gè)網(wǎng)段,在多個(gè)網(wǎng)段中可以同時(shí)傳輸多個(gè)報(bào)文。本地?cái)?shù)據(jù)通信在本網(wǎng)段進(jìn)行,只有指定的數(shù)據(jù)包可以超出本地網(wǎng)段的范圍。
全雙工模式使一個(gè)站能同時(shí)發(fā)送和接收數(shù)據(jù),不會(huì)發(fā)生沖突。傳輸速率到20 Mbit/s和200 Mbit/s??梢詷?gòu)建環(huán)形冗余工業(yè)以太網(wǎng)。最大的網(wǎng)絡(luò)重構(gòu)時(shí)間為0.3秒。
自適應(yīng)功能自動(dòng)檢測(cè)出信號(hào)傳輸速率(10 M或100 Mbit/s)。
自協(xié)商是高速以太網(wǎng)的配置協(xié)議,通過(guò)協(xié)商確定數(shù)據(jù)傳輸速率和工作方式。
使用SNMP-OPC服務(wù)器對(duì)支持SNMP協(xié)議的網(wǎng)絡(luò)設(shè)備進(jìn)行遠(yuǎn)程管理。
4.點(diǎn)對(duì)點(diǎn)連接
點(diǎn)對(duì)點(diǎn)連接(Point-to-Point Connections)可以連接&#61472;S7 PLC和其他串口設(shè)備。使用CP 340,CP 341、CP 440、CP 441通信處理模塊,或CPU 31xC-2PtP集成的通信接口。
接口有20mA(TTY),RS-232C和RS-422A/RS-485。通信協(xié)議有ASCII驅(qū)動(dòng)器、3964(R)和RK 512(只適用于部分CPU)。
使用通信軟件PRODAVE和編程用的PC/MPI適配器,通過(guò)PLC的MPI編程接口,可以實(shí)現(xiàn)計(jì)算機(jī)與S7-300/400的通信。
5.通過(guò)AS-i網(wǎng)絡(luò)的過(guò)程通信
AS-i是執(zhí)行器-傳感器接口(Actuator Sensor Interface)的簡(jiǎn)稱(chēng),位于最底層。
AS-i每個(gè)網(wǎng)段只能有一個(gè)主站。AS-i所有分支電路的最大總長(zhǎng)度為100m,可以用中繼器延長(zhǎng)??梢杂闷帘蔚幕蚍瞧帘蔚膬尚倦娎|,支持總線(xiàn)供電。
DP/AS-i網(wǎng)關(guān)(Gateway)用來(lái)連接PROFIBUS-DP和AS-i網(wǎng)絡(luò)。
CP 342-2最多可以連接62個(gè)數(shù)字量或31個(gè)模擬量AS-i從站。最多可以訪(fǎng)問(wèn)248個(gè)DI和186個(gè)DO??梢蕴幚砟M量值。
西門(mén)子的“LOGO!”微型控制器可以接入AS-i網(wǎng)絡(luò),西門(mén)子提供各種各樣的AS-i產(chǎn)品。
7.4  MPI網(wǎng)絡(luò)與全局?jǐn)?shù)據(jù)通信
7.4.1  MPI網(wǎng)絡(luò)
周期性地相互交換少量的數(shù)據(jù),最多15個(gè)CPU。編程設(shè)備、人機(jī)接口和CPU的默認(rèn)地址分別為0,1,2。
MPI默認(rèn)的傳輸速率為187.5 k bit/s或1.5 M bit/s,與S7-200通信19.2 k bit/s。相鄰節(jié)點(diǎn)間的最大傳送距離為50m,加中繼器后為1000m,使用光纖和星形連接時(shí)為23.8 km。
7.4.2 全局?jǐn)?shù)據(jù)包
參與全局?jǐn)?shù)據(jù)包交換的CPU構(gòu)成了全局?jǐn)?shù)據(jù)環(huán)(GD circle)??梢越⒍鄠€(gè)GD環(huán)。
具有相同的發(fā)送者和接收者的全局?jǐn)?shù)據(jù)集合成一個(gè)全局?jǐn)?shù)據(jù)包。數(shù)據(jù)包中的變量有變量號(hào)。例如GD1.2.3是1號(hào)GD環(huán)、2號(hào)GD包中的3號(hào)數(shù)據(jù)。
S7-300 CPU可以建立4個(gè)全局?jǐn)?shù)據(jù)環(huán),每個(gè)環(huán)中一個(gè)CPU只能發(fā)送和接收一個(gè)數(shù)據(jù)包,每個(gè)數(shù)據(jù)包最多包含22個(gè)數(shù)據(jù)字節(jié)。
S7-400 CPU可以建立的全局?jǐn)?shù)據(jù)環(huán)個(gè)數(shù)與CPU的型號(hào)有關(guān)(16~64個(gè)),每個(gè)環(huán)中一個(gè)CPU只能發(fā)送一個(gè)數(shù)據(jù)包和接收兩個(gè)數(shù)據(jù)包,每個(gè)數(shù)據(jù)包最多包含54個(gè)數(shù)據(jù)字節(jié)。
7.4.3  MPI網(wǎng)絡(luò)的組態(tài)
在SMATIC管理器中生成3個(gè)站,它們的CPU分別為CPU 413-1, CPU 313C和CPU 312C。
雙擊MPI圖標(biāo),打開(kāi)NetPro工具,打開(kāi)CPU的屬性設(shè)置對(duì)話(huà)框,設(shè)置MPI站地址。
將CPU就被連接到MPI(1)子網(wǎng)上。
保存CPU的配置參數(shù),用點(diǎn)對(duì)點(diǎn)的方式將它們分別下載到各CPU中。
用PROFIBUS電纜連接MPI節(jié)點(diǎn)可以用管理器的“Accessible Nodes”功能來(lái)測(cè)試可以訪(fǎng)問(wèn)的節(jié)點(diǎn)。
 
圖7-13  MPI網(wǎng)絡(luò)的組態(tài)
7.4.4  全局?jǐn)?shù)據(jù)表
1.生成和填寫(xiě)GD表
在“NetPro”窗口中用右鍵點(diǎn)擊MPI網(wǎng)絡(luò)線(xiàn),在彈出的窗口中執(zhí)行執(zhí)行菜單命令“Options →Define Global Data(定義全局?jǐn)?shù)據(jù))”同樣的命令。
在表的第一行輸入3個(gè)CPU的名稱(chēng)。
鼠標(biāo)右鍵點(diǎn)擊CPU 413-1下面的單元(方格),在出現(xiàn)的菜單中選擇“Sender”(發(fā)送者),輸入要發(fā)送的全局?jǐn)?shù)據(jù)的地址MW0。在每一行中只能有一個(gè)CPU發(fā)送方。同一行中各個(gè)單元的字節(jié)數(shù)應(yīng)相同。
點(diǎn)擊CPU 313C下面的單元,輸入QW0,該格的背景為白色,表示CPU 313C是接收站。
 
圖7-14  全局?jǐn)?shù)據(jù)表
MB20:4表示MB20開(kāi)始的4個(gè)字節(jié)。如果GD包由若干個(gè)連續(xù)的數(shù)據(jù)區(qū)組成,一個(gè)連續(xù)的數(shù)據(jù)區(qū)占用的空間為數(shù)據(jù)區(qū)內(nèi)的字節(jié)數(shù)加上兩個(gè)頭部說(shuō)明字節(jié)。一個(gè)單獨(dú)的雙字占6個(gè)字節(jié),一個(gè)單獨(dú)的字占4個(gè)字節(jié),一個(gè)單獨(dú)的字節(jié)占3個(gè)字節(jié),一個(gè)單獨(dú)的位也占3個(gè)字節(jié),例如DB2.DBB0:10和QW0:5一共占用22個(gè)字節(jié)。
發(fā)送方CPU自動(dòng)地周期性地將指定地址中的數(shù)據(jù)發(fā)送到接收方指定的地址區(qū)中。完成全局?jǐn)?shù)據(jù)表的輸入后,應(yīng)執(zhí)行菜單命令“GD Table→Compile…”,對(duì)它進(jìn)行第一次編譯。
2.設(shè)置掃描速率和狀態(tài)雙字的地址
執(zhí)行菜單命令“View→Scan Rates”,每個(gè)數(shù)據(jù)包將增加標(biāo)有“SR”的行,掃描速率單位是CPU的循環(huán)掃描周期,S7-300默認(rèn)的掃描速率為8,S7-400的為22,用戶(hù)可以修改。S7-400的掃描速率為0,表示是事件驅(qū)動(dòng)的GD發(fā)送和接收。
 
圖7-15  第一次編譯后的全局?jǐn)?shù)據(jù)表
GD數(shù)據(jù)傳輸?shù)臓顟B(tài)雙字用來(lái)檢查數(shù)據(jù)是否被正確地傳送,執(zhí)行菜單命令“View→Status”,在出現(xiàn)的GDS行中可以給每個(gè)數(shù)據(jù)包指定一個(gè)用于狀態(tài)雙字的地址。最上面一行的全局狀態(tài)雙字GST是各GDS行中的狀態(tài)雙字相“與”的結(jié)果。
    設(shè)置好掃描速率和狀態(tài)字的地址后,應(yīng)對(duì)全局?jǐn)?shù)據(jù)表進(jìn)行第二次編譯。將配置數(shù)據(jù)下載到CPU中,以后可以自動(dòng)交換數(shù)據(jù)
 
 
 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多