SIMATICS7-300PLC及指令系統(tǒng)
四、SIMATIC S7-300 PLC及指令系統(tǒng),4.1系統(tǒng)組成 4.2 系統(tǒng)配置 4.3指令系統(tǒng)簡介 4.4程序結(jié)構(gòu) 4.5 S7 PLC的網(wǎng)絡(luò)通信,4.1 S7-300 PLC的系統(tǒng)組成,S7-300 PLC的硬件構(gòu)成 :CPU模塊 接口模塊(IM) I/O模塊(SM) 功能模塊(FM) 電源模塊(PS) 導(dǎo)軌(RACK)等,4.1.1 CPU單元,SIMATIC S7-300有多種性能級(jí)別的CPU: 1. 各種CPU均封裝在一個(gè)緊湊的塑料殼體內(nèi) 2. CPU上集成有MPI多點(diǎn)接口, MPI接口可以使PLC與其它PLC、OS、PG、OP等建立通信聯(lián)系,可建立由多個(gè)站點(diǎn)組成的簡單網(wǎng)絡(luò)。 3. CPU31x 2集成Profibus-DP接口,適用于大范圍分布式自動(dòng)化結(jié)構(gòu)。 4. 通過模塊擴(kuò)展,可以實(shí)現(xiàn)EtherNet通信 5. 執(zhí)行速率、存儲(chǔ)器容量、可擴(kuò)展I/O點(diǎn)數(shù)等都隨著CPU序號(hào)的遞增而增加。,CPU單元1,4.1.2 模擬量輸入模塊(SM331),模擬量值的表示方法,SM331的輸入測(cè)量范圍很寬,可直接輸入電壓、電流、電阻、mV等信號(hào),單極性電壓、電流輸入的數(shù)字化表示:,雙極性是什么意思?,L PIW 400/從端口地址(例如:400)讀入十進(jìn)制轉(zhuǎn)換結(jié)果 T # Dec_in/存入臨時(shí)變量Dec_in,表示臨時(shí)變量 CALL SCALE/直接調(diào)用系統(tǒng)提供的轉(zhuǎn)換函數(shù),以下是輸入輸出參數(shù) IN : =# Dec_in/入口參數(shù):十進(jìn)制轉(zhuǎn)換結(jié)果 HI_LIM : =2.000000e+002/入口參數(shù):工程量上限200,kPa(PLC本身沒有單位概念) LO_LIM : =0.000000e+000/入口參數(shù):工程量下限0 BIPOLAR : =FALSE/入口參數(shù):TRUE為雙極性,F(xiàn)ALSE為單極性 RET_VAL : =#ret/出口參數(shù):返回值(準(zhǔn)確0,錯(cuò)誤其它值) OUT : =#In_result/出口參數(shù):工程量轉(zhuǎn)換結(jié)果,420mA 15VDC 010mA 020mA ,數(shù)字量 027648 -2764827648,工程量,如: 0200kPa ,變送器:把(0200kPa)轉(zhuǎn)換為(420mA) 模 塊:把(420mA)轉(zhuǎn)換為(0,27648) 程 序:把(0,27648)轉(zhuǎn)換為(0200kPa)的值( In_result ),共程序調(diào)用,SM331模塊的硬件設(shè)置,2種規(guī)格型號(hào):8通道、2通道, 模擬量模塊裝有量程塊,調(diào)整量程塊的方位可改變模塊內(nèi)部的硬件結(jié)構(gòu) 每兩個(gè)相鄰輸入通道共用一個(gè)量程塊,構(gòu)成一個(gè)通道組。 量程塊是一個(gè)正方體的短接塊,在上方有“A”,“B”,“C”,“D”四個(gè)標(biāo)記 不同的量程塊位置,適用于不同的測(cè)量方法和測(cè)量范圍。,SM331量程塊設(shè)置對(duì)應(yīng)關(guān)系 :,SM331模塊的軟件設(shè)置,SM331模塊的信號(hào)連接,電壓信號(hào),電流信號(hào),毫伏信號(hào),電阻信號(hào),輸入信號(hào)類型:,電壓信號(hào)連接,模塊配置成電壓輸入(B),電流信號(hào)連接,兩線制儀表與四線制儀表?,模塊配置成四線制電流輸入(C),只接收420mA電流,四線制儀表,四線制輸入,電流信號(hào)連接,模塊配置成四線制電流輸入(C),只接收420mA電流,二線制儀表,四線制輸入,電流信號(hào)連接,模塊配置成二線制電流輸入(D),帶配電接收420mA電流,二線制儀表,二線制輸入,內(nèi)部原理示意,毫伏信號(hào)連接,一般什么儀表輸出mV信號(hào)? 該儀表在使用時(shí)需要注意什么?,補(bǔ)償導(dǎo)線,外部補(bǔ)償,內(nèi)部補(bǔ)償,電阻信號(hào)連接,一般什么儀表輸出信號(hào)? 該儀表在使用時(shí)需要注意什么?,四線制連接方式,三線制連接方式,二線制連接方式,P,4.1.3 模擬量輸出模塊(SM332),模擬量值的表示方法,SM332模塊可以輸出電壓和電流兩種類型的信號(hào),CALL UNSCALE/直接調(diào)用系統(tǒng)提供的轉(zhuǎn)換函數(shù),以下是輸入輸出參數(shù) IN :=#Out/入口參數(shù):閥位值0100浮點(diǎn)數(shù) HI_LIM :=1.000000e+002/入口參數(shù):閥位上限100 LO_LIM :=0.000000e+000/入口參數(shù):閥位下限0 BIPOLAR :=FALSE/入口參數(shù):TRUE為雙極性輸出,F(xiàn)ALSE單極性輸出 RET_VAL :=#Err/出口參數(shù):返回值 OUT :=#Out_result/出口參數(shù):十進(jìn)制轉(zhuǎn)換結(jié)果存入臨時(shí)變量 L #Out_result T PQW 416/十進(jìn)制轉(zhuǎn)換結(jié)果輸出到過程輸出緩沖區(qū),如416,程 序:把(0100)轉(zhuǎn)換為(027648) 模 塊:把(027648 )轉(zhuǎn)換為(420mA) 執(zhí)行器:把(420mA)轉(zhuǎn)換為相應(yīng)的閥位,SM332模塊的軟件設(shè)置(不需要硬件設(shè)置),SM332有212、412、812位等AO模塊,其特性、參數(shù)、工作原理完全相同。,SM332模塊的信號(hào)連接,電壓信號(hào),電流信號(hào),輸出信號(hào)類型:,每通道有4個(gè)端子,電壓輸出,RL,RL,電壓輸出(4線)電壓輸出(2線),電流輸出,RL,Io,4.1.4 開關(guān)量輸入模塊 (SM321),開關(guān)量輸入模塊SM321主要有直流信號(hào)輸入和交流信號(hào)輸入二大類,4.1.5 開關(guān)量輸出模塊(SM322),SM322模塊有晶體管、可控硅和繼電器3種輸出類型,4.2 系統(tǒng)配置,根據(jù)自動(dòng)化系統(tǒng)的實(shí)際規(guī)模和要求,配置PLC硬件系統(tǒng)。,S7系列PLC采用的是模塊化的結(jié)構(gòu)形式,根據(jù)系統(tǒng)規(guī)模用戶可選擇不同型號(hào)和不同數(shù)量的模塊,并把這些模塊安裝在一個(gè)或多個(gè)機(jī)架上。 除了CPU模塊、電源模塊、通信接口模塊之外,它規(guī)定每一個(gè)機(jī)架最多可以安裝8個(gè)I/O信號(hào)模塊。 一個(gè)PLC系統(tǒng)的最大配置能力(包括I/O點(diǎn)數(shù)、機(jī)架數(shù)等)與CPU的型號(hào)相關(guān),常用的模塊: CPU:312、313、314、315-2DP、316-2 電源:PS-307(2A、5A、10A)、SITOP(5A、10A、20A、40A) 接口模塊(連接機(jī)架):IM365(CR,最多1)/IM365(ER,最多1) IM360(CR,最多1)/IM361(ER,最多3) IM153(ER,最多127,DP總線) AI:SM331(I、V、mV、;2通道、8通道) SM331 RTD( ;2通道、8通道) AO:SM332(I、V;2通道、4通道,8通道) DI:SM321(8/16/32通道) DO:SM322 (8/16/32通道),某系統(tǒng)需要,輸入:46路420mA信號(hào) 輸入:4路PT100信號(hào) 輸出:32路420mA信號(hào),要求配置S7 PLC的I/O模塊并選擇合適的CPU單元,每路420mA占1個(gè)A/D通道 需46個(gè)A/D通道,需7塊8通道SM331,每路420mA占1個(gè)D/A通道 需32個(gè)D/A通道,需4塊8通道SM332,示例:,電阻信號(hào)可以配置RTD模塊 需4個(gè)RTD通道,需1塊8通道SM331 RTD,(1) IO模塊配置一,冗余10個(gè)通道,冗余4個(gè)RTD通道,過多的冗余是浪費(fèi),但適當(dāng)?shù)娜哂噙€是必要的,總計(jì)12塊SM模塊,需要2個(gè)機(jī)架,每路420mA占1個(gè)A/D通道 需46個(gè)A/D通道,每路420mA占1個(gè)D/A通道 需32個(gè)D/A通道,需4塊8通道SM332,示例:,每路電阻信號(hào)占2個(gè)A/D通道 需8個(gè)A/D通道,需7塊8通道SM331,(2) IO模塊配置二,冗余2個(gè)A/D通道,總計(jì)11塊SM模塊,需要2個(gè)機(jī)架,(3) CPU配置,該系統(tǒng)需要12個(gè)SM模塊,必須安裝到2的機(jī)架,如果單純從I/O配置的角度分析(暫不考慮內(nèi)存、速度需求),根據(jù)表7.1中的性能參數(shù),該系統(tǒng)可以選用CPU314或CPU314以上的型號(hào)均可。,有三種選擇:,示例:,(3) 接口模塊,(4) 電源模塊,模塊供電,外部儀表供電(確定合適的電源模塊的功率) 盡管理論上可以集中供電,即兩個(gè)機(jī)架用同一個(gè)電源,但實(shí)際系統(tǒng)建議每個(gè)機(jī)架分別配置電源模塊 2塊,第一種:IM365/IM365,最經(jīng)濟(jì) 第二種:IM360/IM361,有一定擴(kuò)展 能力,可以擴(kuò)到4個(gè)機(jī)架 第三章:IM153,CPU上需要有DP口(或者通過模塊擴(kuò)展DP口),有很大的擴(kuò)展能力,可方便地和其他系統(tǒng)組網(wǎng),示例:,(5) 其它附設(shè),導(dǎo)軌:安裝各種模塊(幾個(gè)機(jī)架至少幾塊) 與上位機(jī)通信的接口卡:板卡式MPI網(wǎng)卡CP5611 編程電纜(外置,USB或者串口連接) 內(nèi)存卡:新CPU必須,有不同容量,如64KB、128KB、512KB、2MB、4MB 總線連接器:DP總線連接、上下位機(jī)采用網(wǎng)卡連接時(shí)需要,每點(diǎn)1個(gè) 通信電纜(屏蔽雙絞線):DP總線連接、上下位機(jī)采用網(wǎng)卡連接時(shí)需要 下位機(jī)開發(fā)軟件:STEP7 5.x(很貴的?。?上位機(jī)組態(tài)軟件:WINCC(和系統(tǒng)點(diǎn)數(shù)有關(guān)系,可以自主開發(fā)) ,4.2.1 硬件結(jié)構(gòu)配置,PLC模塊的安裝是有順序要求的,每個(gè)機(jī)架從左到右分為11個(gè)邏輯槽號(hào) 電源模塊安裝在最左邊的1#槽,2#槽安裝CPU模塊,3#槽安裝通信接口模塊,411#槽可自由分配I/O信號(hào)模塊、功能模塊或擴(kuò)展通信模塊。 需要注意的是,槽號(hào)是相對(duì)的,機(jī)架上并不存在物理上的槽位限制。,電源模塊,CPU模塊,通信模塊,I/O模塊,1 2 3 4 5 6 7 8 9 10 11,邏輯槽號(hào),電源 1,CPU2,IO 4,IO 5,IO 6,IO 7,IO 8,IO 9,電源 1,接口2,IO 4,IO 5,IO 6,IO 7,IO 8,IO 9,機(jī)架的連接(1),如果:機(jī)架數(shù)量=2 and 機(jī)架之間的距離1米,方式一:,機(jī)架的連接(2),如果:機(jī)架數(shù)量4 and 機(jī)架之間的距離10米,方式二:,機(jī)架的連接(3),如果:機(jī)架數(shù)量4 or 機(jī)架之間的距離10米 要求:CPU上集成DP口或在CR上擴(kuò)展DP口(ProfibusDP),方式三:,CR:安裝在控制室,連接到DP接口,IM153,Profibus-DP總線,總結(jié),硬件配置部分 【一個(gè)機(jī)架】 8個(gè)SM/FM模塊 電源 CPU SM/FMSM/FMSM/FM 【兩個(gè)機(jī)架,間距 10米/1米】 8個(gè)SM/FM模塊 電源 CPU IM360/365 SM/FMSM/FMSM/FM 8個(gè)SM/FM模塊 電源 IM361/365 SM/FMSM/FMSM/FM,【34個(gè)機(jī)架,間距 10米】 8個(gè)SM/FM模塊 電源 CPU IM360 SM/FMSM/FMSM/FM,電源 電源 電源,IM361 SM/FMSM/FMSM/FM IM361 SM/FMSM/FMSM/FM IM361 SM/FMSM/FMSM/FM,【多個(gè)機(jī)架,間距“不限”】,電源 電源 電源 電源 電源,IM153 SM/FMSM/FMSM/FM IM153 SM/FMSM/FMSM/FM IM153 SM/FMSM/FMSM/FM IM153 SM/FMSM/FMSM/FM IM153 SM/FMSM/FMSM/FM,電源 CPU,SM/FMSM/FMSM/FM,Profibus DP總線,PLC系統(tǒng)開發(fā)的基本流程,根據(jù)工藝要求,確定I/O參數(shù)數(shù)量,1. 進(jìn)入Step 7 2-1.硬件配置 2-2.地址配置:網(wǎng)絡(luò)地址 IO端口地址 3. 軟件編程(針對(duì)工藝要求),4.2.2 IO地址配置,系統(tǒng)的I/O模塊分為:模擬量和數(shù)字量二種類型, 每個(gè)模塊包含若干個(gè)通道。 模塊上任何通道均配置獨(dú)立的地址 應(yīng)用程序則根據(jù)地址實(shí)現(xiàn)對(duì)它們的操作。,每個(gè)通道的地址占用一位(bit) 數(shù)字量模塊最大為 32 通道 模塊地址最多占 4 字節(jié),數(shù)字量I/O模塊,每個(gè)模擬量地址為一個(gè)字地址(2byte) 模擬量模塊最大為 8 通道 模擬地址最多占 16 字節(jié),模擬量I/O模塊,I/O地址的生成,I/O地址的配置注意事項(xiàng):,配置IO模塊地址時(shí),可以是系統(tǒng)提供缺省地址(初學(xué)者推薦使用),也可以是手工自主配置(部分CPU不支持該功能; 不同CPU的最大IO尋址能力是不同的,如CPU3152DP可達(dá)2KB; 輸入、輸出的地址是不同的,即CPU3152DP最大輸入地址2KB,最大輸出地址也是2KB,實(shí)際可尋址4KB 0127字節(jié)留給開關(guān)量模塊使用,例子:,某8通道SM331模塊,配置地址為256271,第07通道的地址分別為:256、258、260、262、264、266、268、270 讀取第0個(gè)通道的模擬量轉(zhuǎn)換結(jié)果:L PIW256 讀取第7個(gè)通道的模擬量轉(zhuǎn)換結(jié)果:L PIW270,L PIW256就是把十進(jìn)制轉(zhuǎn)換結(jié)果,讀入到累加器。 如420mA輸入信號(hào)的轉(zhuǎn)換結(jié)果式027648 用scale函數(shù)可以在PLC內(nèi)部把027648還原到與變送器量程對(duì)于的工程量,某8通道SM332模塊,配置地址為272287,把一個(gè)輸出送到第0個(gè)輸出通道:T PQW272 把一個(gè)輸出送到第7個(gè)輸出通道: T PQW286,輸出過程: (1)控制策略運(yùn)算結(jié)果,一般為0100的閥位 (2)調(diào)用unscale函數(shù)把0100轉(zhuǎn)換為027648(十進(jìn)制數(shù)) (3)T PQW272 / 274,例子:,例子:,某32通道SM321模塊,配置地址為03,讀入第0個(gè)通道的二進(jìn)制值:A I 0.0 讀入第7個(gè)通道的二進(jìn)制值: A I 0.7 讀入第8個(gè)通道的二進(jìn)制值: A I 1.0 讀入第22個(gè)通道的二進(jìn)制值: ,A I 2.6,某16通道SM322模塊,配置地址為45,輸出一個(gè)二進(jìn)制值到第0通道: Q 4.0 輸出一個(gè)二進(jìn)制值到第7通道: Q 4.7 輸出一個(gè)二進(jìn)制值到第12通道: , Q 5.4,4.2.3 內(nèi)部寄存器,S7 CPU的寄存器有(7個(gè)):,4.2.4 存儲(chǔ)區(qū),CPU能訪問的存儲(chǔ)區(qū):P、Q、I、M、T、C、DB塊、L堆棧,主要關(guān)心哪些存儲(chǔ)區(qū)能夠按“位”方位,哪些不能。,外設(shè)I/O與存儲(chǔ)區(qū)的映像,外設(shè)IO模塊與存儲(chǔ)區(qū)有二種映射關(guān)系: 外設(shè)輸入輸出存儲(chǔ)區(qū)(PI、PQ) 輸入輸出映像區(qū)(I、Q),外設(shè)輸入輸出存儲(chǔ)區(qū):包括外設(shè)輸入(PI)和外設(shè)輸出(PQ) 不能逐位訪問,其它都可以,輸入輸出映像表:包括輸入過程映像表(I)和輸出過程映像表(Q) 輸入映像表為128Byte,是對(duì)PI首128Byte的映像, 輸出映像表為128Byte,是對(duì)PQ的首128Byte的映像 這兩段地址一般作為開關(guān)量輸入、輸出模塊的IO地址 能夠逐位方式訪問,其它也可以,輸入映像示例,開關(guān)量輸入模塊缺省地址,模擬量輸入模塊地址,輸出映像示例,4.3 指令系統(tǒng)簡介,SIMATIC S7系列PLC用戶程序的開發(fā)軟件包:STEP 7 S7系列PLC的編程語言:LAD(梯形圖)、STL(語句表)*、 SCL(標(biāo)準(zhǔn)控制語言)、C for S7(C語言)等, 用戶可以選擇一種語言編程,也可混合使用幾種語言編程。 常用的編程語言: LAD(梯形圖)、STL(語句表)*,4.3.1STL指令及其結(jié)構(gòu),語句指令: 操作碼 操作數(shù),A I 0.1 /對(duì)輸入繼電器 I 0.1 進(jìn)行與操作,L MW10 /將字MW10裝入累加器1,定義要執(zhí)行的功能,執(zhí)行該操作所需要的信息, 有些語句指令不帶操作數(shù),它們操作的對(duì)象是唯一的。 NOT /對(duì)邏輯操作結(jié)果(RLO)取反。,MB10,MB11,MB12,MB13,MB14,M 10.3,MW10,MD10,位存儲(chǔ)區(qū)的操作數(shù)表示方式,存儲(chǔ)區(qū)及其操作數(shù)表示方法,4.3.2 尋址方式,操 作 數(shù)指令的操作或運(yùn)算對(duì)象 尋址方式指令得到操作數(shù)的方式。 尋址方式立即尋址 存儲(chǔ)器直接尋址 存儲(chǔ)器間接尋址 寄存器間接尋址,尋址方式一:立即尋址,SET /把RLO (Result of Logic Operation)置“1” L 27 /把整數(shù)27裝入累加器1 L C#0100 /把 BCD碼常數(shù)0100裝入累加器1,立即尋址:對(duì)常數(shù)或常量的尋址方式,操作數(shù)本身包含在指令中,尋址方式二:直接尋址,A I0 . 0 /對(duì)輸入位I0.0進(jìn)行“與”邏輯操作 S L20 . 0/把本地?cái)?shù)據(jù)位L20.0置1 = M115 . 4 / 將RLO的內(nèi)容傳給位存儲(chǔ)區(qū)中的位M115.4 L DB1 . DBD12 /把數(shù)據(jù)塊DB1雙字DBD12中的內(nèi)容傳送給累加器1 /雙字表示32位,如浮點(diǎn)數(shù)為32為雙字,直接尋址:在指令中直接給出操作數(shù)的存儲(chǔ)單元地址,尋址方式三:存儲(chǔ)器間接尋址,(用得不是很多),存儲(chǔ)器間接尋址 :標(biāo)識(shí)參數(shù)由一個(gè)存儲(chǔ)器給出,存儲(chǔ)器的內(nèi)容對(duì)應(yīng)該標(biāo)識(shí)參數(shù)的值(該值又稱為地址指針) 該尋址方式能動(dòng)態(tài)改變操作數(shù)存儲(chǔ)器的地址,常用于程序循環(huán),A IMD 2/對(duì)由MD 2指出的輸入位進(jìn)行“與”邏輯操作,如: MD 2值為 /20000 0000 0000 0000 0000 0000 0101 0110表示I 10. 6 L IBDBD 4 /將由雙字DBD 4指出的輸入字節(jié)裝入累加器1,如DBD 4值為 /20000 0000 0000 0000 0000 0000 0101 0000表示對(duì)IB10操作 OPN DBMW 2 /打開由字MW2指出的數(shù)據(jù)塊,如MW2為3,則打開DB3,地址的兩種表述方式, 標(biāo)識(shí)參數(shù):1.2 標(biāo)識(shí)參數(shù):10 標(biāo)識(shí)參數(shù):12, DB1.DBD0=P#1.2 MD16=P#10.0 MW20=12,字地址指針,雙字地址指針,字地址指針的描述:MW20,15 8 7 0 XXXX XXXX XXXX XXXX,表示065535,雙字地址指針的描述:MD16、DB1.DBD0,31 24 23 16 15 8 7 0 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0000 0000 0000 0bbb bbbb bbbb bbbb bxxx 字節(jié)編號(hào) 位編號(hào) 0000 0000 0000 0000 0000 0000 0000 1010 1.2 0000 0000 0000 0000 0000 0000 0110 0000 12,用雙字格式訪問字節(jié)、字、雙字存儲(chǔ)器,必須保證位編號(hào)為0。,地址指針的描述,實(shí)例,L +5/將整數(shù)+5裝入累加器1 T MW0/將累加器1的內(nèi)容傳送給存儲(chǔ)字MW0,此時(shí)MW0內(nèi)容為5 OPN DBMW0/打開由MW0指出的數(shù)據(jù)塊,即打開數(shù)據(jù)塊5(DB5) L P#8.7 /將地址指針2#0000 0000 0000 0000 0000 0000 0100 0111裝入A1 T MD2/將累加器1的內(nèi)容P#8.7傳送給位存儲(chǔ)區(qū)中的MD2 L P#4.0/將2#0000 0000 0000 0000 0000 0000 0010 0000裝入A1 累加器1原內(nèi)容P#8.7被裝入累加器2 +I/將累加器1和累加器2內(nèi)容整數(shù)相加,在累加器1中得到的“和”為 2#0000 0000 0000 0000 0000 0000 0110 0111(P#12.7) T MD6/將累加器1的當(dāng)前內(nèi)容傳送MD6(12.7) AIMD2/對(duì)輸入位I8.7進(jìn)行“與”邏輯操作,結(jié)果存放在RLO中 = QMD6/將RLO賦值給輸出位Q12.7,尋址方式四:寄存器間接尋址,在S7中有兩個(gè)地址寄存器(AR1和AR2) 地址寄存器的內(nèi)容 偏移量 地址指針,LP#8.6 LAR1 L P#10.0 LAR2 A IAR1,P#1.0 = QAR2,P#4.1,這是區(qū)域內(nèi)寄存器間接尋址指令中給出存儲(chǔ)區(qū)域標(biāo)識(shí),LP#I8.6 LAR1 L P#Q10.0 LAR2 A AR1,P#1.0 = AR2,P#4.1,這是區(qū)域間寄存器間接尋址存儲(chǔ)區(qū)域的信息包含在地址指針中,/將P#8.6裝入A 1 /將累加器1的內(nèi)容傳送至地址寄存器1 /將P#10.0裝入A1 /將累加器1的內(nèi)容傳送至地址寄存器2 /AR1+偏移量(9.6) /AR2+偏移量(14.1),/將指向I8.6的地址指針裝入A 1 /將累加器1的內(nèi)容傳送至地址寄存器1 /將指向Q8.6的地址指針裝入A 1 /將累加器1的內(nèi)容傳送至地址寄存器2 /AR1+偏移量(9.6) /AR2+偏移量(14.1),等以后熟悉了再用,存儲(chǔ)器地址指針的描述,31 24 23 16 15 8 7 0 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX z000 0rrr 0000 0bbb bbbb bbbb bbbb bxxx 字節(jié)編號(hào) 位編號(hào),0:區(qū)域內(nèi)間接尋址 1:區(qū)域間間接尋址,存儲(chǔ)區(qū)域標(biāo)識(shí)符P.255,31 24 23 16 15 8 7 0 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX z000 0rrr 0000 0bbb bbbb bbbb bbbb bxxx 字節(jié)編號(hào) 位編號(hào) 0000 0000 0000 0000 0000 0000 0100 0110 P#8.6 1000 0001 0000 0000 0000 0000 0100 0110 P#I8.6 1000 0010 0000 0000 0000 0000 0100 0110 P#Q8.6,實(shí)例1,L P#0.0 LAR1 L P#10.0 LAR2 L 64 n1: T #loopcounter OPN DB1 CLR A I AR1,P#0.0 = DBX AR2,P#0.0 L P#0.1 +AR1 L P#0.1 +AR2 L #loopcounter LOOP n1,作用: 把地址為0.0開始的64個(gè)開關(guān)量輸入信號(hào)采用循環(huán)方式逐個(gè)轉(zhuǎn)存到DB1,存放位置由DB1.DBX10.0開始的64個(gè)位。 Loopcounter為整形臨時(shí)變量,累加器A1減1,A1不為0,則循環(huán)到n1,實(shí)例2,L P#256.0 LAR1 L P#200.0 LAR2 L 32 n1: T #loopcounter OPN DB2 L PIW AR1,P#0.0 T # Dec _In CALL SCALE IN : =# Dec_in HI_LIM : =2.000000e+002 LO_LIM : =0.000000e+000 BIPOLAR : =FALSE RET_VAL : =#ret OUT : =#In_result L#In_result TDBDAR2,P#0.0 L P#2.0 +AR1 LP#4.0 +AR2 L #loopjsq LOOP n1,作用: 把地址為256.0開始的32個(gè)模擬量輸入信號(hào)采用循環(huán)方式逐個(gè)轉(zhuǎn)存到DB2,存放位置由DB2.DBD200開始的32個(gè)浮點(diǎn)數(shù)。 如果不同量程如何處理?,4.3.3 狀態(tài)字,首次檢測(cè)位 *,邏輯操作結(jié)果*,狀態(tài)位,或位,溢出位,溢出狀態(tài)保持位,條件碼0,條件碼1,二進(jìn)制結(jié)果位,狀態(tài)字表示CPU執(zhí)行指令時(shí)所具有的狀態(tài),用戶程序可以訪問和檢測(cè)狀態(tài)字,并可以根據(jù)狀態(tài)字中的某些位決定程序的走向和進(jìn)程。,首次檢測(cè)位(FC),位置:狀態(tài)字位 “0” 作用:首次檢測(cè)位FC 決定了對(duì)其接點(diǎn)信號(hào)的存放位置。 在邏輯串指令執(zhí)行過程中 : 若 FC 0,表明一個(gè)梯形邏輯網(wǎng)絡(luò)的開始(或?yàn)槭讞l邏輯串指令),CPU對(duì)操作數(shù)的檢測(cè)結(jié)果(首次檢測(cè)結(jié)果)直接保存在狀態(tài)字的RLO位中,F(xiàn)C 位置1; 若FC 1,檢測(cè)結(jié)果與RLO相運(yùn)算,并把運(yùn)算結(jié)果存于RLO 清除:執(zhí)行輸出指令(S、R、=)或與邏輯運(yùn)算有關(guān)的轉(zhuǎn)移指令時(shí) FC被清0(表示邏輯串結(jié)束) OMRON PLC沒有這個(gè)位,因?yàn)?OMRON有 LD 和 LD NOT,邏輯操作結(jié)果(RLO),Result of Logic Operation, RLO,位置:狀態(tài)字位 “1” 作用:存儲(chǔ)位邏輯指令或算術(shù)比較指令的結(jié)果。,所有的邏輯運(yùn)算結(jié)果均放在此處!,RLO、FC的變化示例,4.3.4 位邏輯運(yùn)算指令,PLC中的觸點(diǎn)包括常開觸點(diǎn)(動(dòng)合觸點(diǎn))和常閉觸點(diǎn)(動(dòng)斷觸點(diǎn))兩種形式。 常開(動(dòng)合)觸點(diǎn): “1”“動(dòng)作”“閉合” “0”“不動(dòng)作”“斷開” 常閉(動(dòng)斷)觸點(diǎn): “1”“動(dòng)作”“斷開” “0”“不動(dòng)作”“閉合”,位邏輯運(yùn)算指令主要包括:與 A 與非AN 或 O 或非ON 異或XOR 賦值 置位 S 復(fù)位 R,串聯(lián)邏輯A、AN,A I 0.0 A I1.0 AN M2.1 = Q4.0,I0.0為“1” 且 I1.0為“1” 且 M2.1為“0” Q4.0為“1”,并聯(lián)邏輯 O、ON,I0.0為“1” 或 I1.0為“1” 或 M2.1為“0” Q4.0為“1”,O I 0.0 O I1.0 ON M2.1 = Q4.0, 串并聯(lián)的復(fù)合達(dá)式和先“與”后“或”,當(dāng)邏輯串是串并聯(lián)的復(fù)合組合時(shí),CPU的掃描順序是先“與”后“或”。,A( A I0.0 A I0.1 O AN I0.3 AN I0.4 ) A I0.2 = Q1.2,A( O I0.0 ON I0.3 ) A( O I0.1 ON I0.4 ) A I0.2 = Q1.2, 輸出指令(), 該操作把狀態(tài)字中RLO的值賦給指定的操作數(shù)(位地址) 把首次檢測(cè)位(FC位)置0,來結(jié)束一個(gè)邏輯串 一個(gè)RLO可以驅(qū)動(dòng)多個(gè)輸出元件,A I 0.0 = Q 1.2 = Q 1.3,置位復(fù)位指令, 置位復(fù)位指令根據(jù)RLO的值,來決定被尋址位的信號(hào)狀態(tài)是否需要改變。 若RLO的值為1,被尋址位的信號(hào)狀態(tài)被置l或清0; 若RLO是0,則被尋址位的信號(hào)保持原狀態(tài)不變, 又被稱為靜態(tài)置位復(fù)位【賦值輸出()被稱為動(dòng)態(tài)賦值輸出】,4.4 程序結(jié)構(gòu),STEP7 有二種編程方法: 線性編程、結(jié)構(gòu)化編程,結(jié)構(gòu)化編程的“塊”,STEP 7,C語言,main(),中斷函數(shù),組織塊OB,程 序 代 碼,功能塊,DB塊,全局變量,數(shù) 據(jù),數(shù)據(jù)塊,SFB、SFC,庫函數(shù),系統(tǒng)函數(shù),FC塊,用戶定義函數(shù),FB塊,類似于子程序/過程,4.4.1 數(shù)據(jù)塊,PLC可定義的數(shù)據(jù)類型:bool、byte、int、dint、real、date、time等基本數(shù)據(jù)類型,以及數(shù)組、結(jié)構(gòu)等復(fù)式數(shù)據(jù)類型,數(shù)據(jù)塊定義的原則: 先定義后訪問 S7 CPU允許建立不同大小的數(shù)據(jù)塊,以序號(hào)區(qū)分 不同的CPU對(duì)允許定義的數(shù)據(jù)塊數(shù)量及數(shù)據(jù)總量有限制 例如:CPU 314允許定義用作數(shù)據(jù)塊的存儲(chǔ)器最多8KByte, 用戶定義的數(shù)據(jù)總量不能超過8K,否則將造成系統(tǒng)錯(cuò)誤。, 數(shù)據(jù)塊定義,用STEP 7開發(fā)軟件包定義,使用前作為用戶程序的一部分下載到CPU,程序運(yùn)行過程中通過系統(tǒng)函數(shù)動(dòng)態(tài)定義數(shù)據(jù)塊 (慎用,定義不當(dāng)易崩潰),有2種定義方式:, 數(shù)據(jù)塊訪問,直接訪問,指令中寫明數(shù)據(jù)塊號(hào)、類型、位置 L DB1.DBD2 /塊號(hào)1,雙字,數(shù)據(jù)塊中25字節(jié) A DB1.DBX2.2 /塊號(hào)1,位, 2字節(jié)第2位 L “Temp”T0 /符號(hào)地址, “先打開后訪問” OPN DB 1 L DBD 2 /訪問DB1.DBD2 OPN DI2 T DBD 4 /訪問DI2.DBD4,注:數(shù)據(jù)塊沒有專門的關(guān)閉指令,在打開一個(gè)新塊時(shí),先前打開的塊自動(dòng)關(guān)閉 因CPU只有DB和DI兩個(gè)數(shù)據(jù)塊地址寄存器,所以最多可同時(shí)打開兩個(gè)塊, 背景數(shù)據(jù)塊和共享數(shù)據(jù)塊,背景數(shù)據(jù)塊:附屬于某個(gè)FB塊,數(shù)據(jù)塊與某FB所要求的輸入輸出數(shù)據(jù)格式完全相符。背景數(shù)據(jù)庫可以理解為某FB的輸入實(shí)參體。 共享數(shù)據(jù)塊:定義的數(shù)據(jù)可以被任何塊讀寫訪問 數(shù)據(jù)塊在CPU的存儲(chǔ)器中是沒有區(qū)別的,只是由于打開方式不同,才在打開時(shí)有背景數(shù)據(jù)塊和共享數(shù)據(jù)塊之分。原則上,數(shù)據(jù)塊都可以當(dāng)作共享數(shù)據(jù)塊使用。 數(shù)據(jù)塊可以定義多個(gè),以序號(hào)加以區(qū)分,4.4.2 邏輯功能塊,S7 PLC程序可以放在任何OB、FB、FC中 FB、FC可以被OB調(diào)用,也可以被其它FB、FC調(diào)用。,OB,FB FC SFB SFC,OB塊不可以被調(diào)用,應(yīng)用程序,應(yīng)用程序,其它 FB/FC/ SFB/SFC, 不超過8級(jí),(1)FC塊,FC功能塊由兩個(gè)主要部分組成:一是變量聲明表;二是應(yīng)用程序,變量申明表,應(yīng)用程序,包括:in、out、in_out、temp,FB功能塊由兩個(gè)主要部分組成:一是變量聲明表;二是應(yīng)用程序,變量申明表,應(yīng)用程序,(2)FB塊,包括:in、out、in_out、temp、stat,(3)變量說明,臨時(shí)變量僅在邏輯塊運(yùn)行時(shí)有效,邏輯塊結(jié)束時(shí)存儲(chǔ)臨時(shí)變量的內(nèi)存被操作系統(tǒng)另行分配。,in out in_out,實(shí)現(xiàn)調(diào)用塊和被調(diào)用塊間的數(shù)據(jù)傳遞。 在調(diào)用功能塊時(shí)給出,實(shí)參的數(shù)據(jù)類型必須與形參一致。,stat,靜態(tài)變量定義在背景數(shù)據(jù)塊中 當(dāng)被調(diào)用塊運(yùn)行時(shí),能讀出或修改背景數(shù)據(jù)塊中的靜態(tài)變量;被調(diào)用塊運(yùn)行結(jié)束后,靜態(tài)變量保留在背景數(shù)據(jù)塊中。,temp,(4)FC、FB的調(diào)用,CALL FB4 , DB33 a1:= a2:= b1:= c1:=,FB塊的調(diào)用:,DB33中的數(shù)據(jù)結(jié)構(gòu)應(yīng)與FB4中的變量申明表結(jié)構(gòu)(除temp變量)完全相同,FC功能塊沒有背景數(shù)據(jù)塊,調(diào)用時(shí)賦實(shí)參(數(shù)據(jù)類型相同):,CALL FC1 a1:= DB1.DBD0.0 a2:= DB2.DBW6.0 b1:= DB10.DBX5.6 c1:= MW12,(5)其它, FB、FC可以定義多個(gè),以序號(hào)區(qū)分。 S7CPU中可使用的B堆棧大小是有限制的,對(duì)于S7300 CPU可在B堆棧中存儲(chǔ)8個(gè)塊的信息,因此在控制程序中最多可同時(shí)激活8個(gè)塊。,4.4.3 組織塊及中斷優(yōu)先級(jí),DB/FB/FC可以根據(jù)需要定義,以序號(hào)區(qū)分 同一類的塊沒有“貴賤”之別,OB塊也可以根據(jù)需要定義,以序號(hào)區(qū)分 但不同的塊功能不同,且有“優(yōu)先級(jí)”之別,1.每一個(gè)OB可以對(duì)應(yīng)為一種中斷,不同的OB對(duì)應(yīng)有不同的優(yōu)先級(jí) 2. OB1是主循環(huán)塊,任何S7PLC系統(tǒng)都需要OB1,所以優(yōu)先級(jí)最低 問題:從過程控制的角度看,除了OB1之外,通常還需要哪些中斷?,部分OB塊的優(yōu)先級(jí):,注意事項(xiàng),一個(gè)OB塊可以形成一個(gè)程序鏈(OB調(diào)用FB/FC,F(xiàn)B/FC調(diào)其它FB/FC) 所有程序的臨時(shí)變量存放在L堆棧中,L堆棧是有限的,如:CPU 314的L堆棧為1536Byte,供程序中的所有優(yōu)先級(jí)劃分使用。 對(duì)于CPU 314,允許每個(gè)優(yōu)先級(jí)及所有嵌套調(diào)用中激活塊的自定義臨時(shí)變量總數(shù)不能超過236Byte(有20B被OB自己占用了),否則L堆棧會(huì)溢出,導(dǎo)致CPU有RUN模式變?yōu)镾TOP模式。,問題:如果臨時(shí)變量不夠用怎么辦?,3個(gè)常用組織塊,(1) 初始化塊(OB100),當(dāng)PLC從STOP狀態(tài)切換到RUN狀態(tài)后,CPU首先調(diào)用OB100一次,OB100調(diào)用結(jié)束后,操作系統(tǒng)開始進(jìn)入程序運(yùn)行; 如沒有OB100,則系統(tǒng)不對(duì)任何參數(shù)進(jìn)行初始化。,(2) 主循環(huán)塊(OB1),OB1是最基本的組織塊,當(dāng)OB100調(diào)用結(jié)束后,操作系統(tǒng)開始周而復(fù)始地調(diào)用OB1,這稱為掃描循環(huán)。 調(diào)用OB1的時(shí)間間隔稱為掃描周期,掃描周期的長短,主要由 OBI中的程序執(zhí)行所需時(shí)間決定。 OB1必須存在,但OB1中不一定需要放置代碼。 為防止程序陷入死循環(huán),可以設(shè)置確定主循環(huán)的最長時(shí)間。正常情況下,掃描周期小于該時(shí)間,如果掃描周期大于設(shè)定主程序最大允許循環(huán)行時(shí)間,操作系統(tǒng)調(diào)用OB80(循環(huán)時(shí)間超時(shí)),若OB 80中未編寫程序,CPU將轉(zhuǎn)入停止(STOP)狀態(tài)。,S7300 PLC允許設(shè)計(jì)一個(gè)以固定間隔運(yùn)行的定時(shí)中斷組織塊OB35,定時(shí)時(shí)間間隔可以在lmslmin的范圍內(nèi)設(shè)置,當(dāng)允許循環(huán)中斷時(shí),OB35以固定的間隔循環(huán)運(yùn)行,但要求確保設(shè)置的定時(shí)時(shí)間間隔大于OB35的執(zhí)行時(shí)間,否則將造成系統(tǒng)異常,操作系統(tǒng)將調(diào)用異步錯(cuò)誤OB 80。,(3)循環(huán)中斷(OB 35),4.4.4 邏輯塊的調(diào)用關(guān)系,4.5 S7 PLC的網(wǎng)絡(luò)通信,現(xiàn)代計(jì)算機(jī)控制系統(tǒng)已不再是自動(dòng)化的“孤島”,而是集過程控制、生產(chǎn)管理、網(wǎng)絡(luò)通信、IT技術(shù)等為一體的綜合自動(dòng)化系統(tǒng),系統(tǒng)最主要的結(jié)構(gòu)特征表現(xiàn)為一個(gè)多層次的網(wǎng)絡(luò)體系。,S7 PLC的網(wǎng)絡(luò)功能很強(qiáng),它可以適應(yīng)不同控制需要的網(wǎng)絡(luò)體系,也為各個(gè)網(wǎng)絡(luò)層次提供互聯(lián)模塊或接口裝置,通過通信子網(wǎng)把PLC、PG、PC、OP及其它控制設(shè)備互聯(lián)起來。,S7 PLC可以提供:MPIMultipoint Interface PROFIBUSDP Industrial Ethernet 這3種通信方式都有各自的技術(shù)特點(diǎn)和不同的適應(yīng)面。,(1)PLC機(jī)架的三種通信(集成)方式,IM365/IM365本地集成一 IM360/IM361本地集成二 IM153分布式IO,控制室,現(xiàn)場(chǎng),優(yōu)先考慮,(2)PLC與上位機(jī)的三種通信方式,MPI通信,物理層符合RS485標(biāo)準(zhǔn),是一種低成本的網(wǎng)絡(luò)系統(tǒng),用于連接多個(gè)不同的CPU或設(shè)備。 多數(shù)SIMATIC產(chǎn)品都集成有MPI接口,一個(gè)MPI網(wǎng)最多允許連接32個(gè)網(wǎng)絡(luò)站點(diǎn),它的傳輸速率是187.5Kbps,因此,MPI子網(wǎng)主要適用于站點(diǎn)數(shù)不多、數(shù)據(jù)傳輸量不大的應(yīng)用場(chǎng)合。,MPI連接距離有限,從第一個(gè)節(jié)點(diǎn)到最后一個(gè)節(jié)點(diǎn)最長距離僅為50m。對(duì)于一個(gè)要求較大區(qū)域的信號(hào)傳輸,采用兩個(gè)中繼器可以將MPI通信電纜最大長度延伸到1100m。,適用于多數(shù)中小系統(tǒng),MPI通信,ProfibusDP通信,說明: 1.CPU上需要有DP接口,可以是集成的,也可以式擴(kuò)展的(如CP3425) 2.最大站點(diǎn)數(shù)127 3.最大通信距離(不加中繼器)1200米,與通信波特率有關(guān) 4.OS需要配置接口卡(如CP5611等) 5.OS需要軟件支持,Ethernet通信,說明: 1.PLC上需要配置以太網(wǎng)擴(kuò)展接口模塊(如CP3431等,P.271) 2.OS上可以用普通網(wǎng)卡 3.OS需要軟件支持(如基于OPC的通信支持軟件包),(3)PLC與PLC的三種通信方式,MPI通信,物理層符合RS485標(biāo)準(zhǔn),是一種低成本的網(wǎng)絡(luò)系統(tǒng),用于連接多個(gè)不同的CPU或設(shè)備。 多數(shù)SIMATIC產(chǎn)品都集成有MPI接口,MPI通信,GD通信,參見P268,ProfibusDP通信,S7函數(shù)通信 CALL AG_RECV“ CALL AG_SEND 左邊發(fā)送的數(shù)據(jù)即是右邊接收的數(shù)據(jù),發(fā)送方和接收方的數(shù)據(jù)長度要統(tǒng)一,DP coupler通信,定義通信,需要通信的數(shù)據(jù)只需要在DP coupler上配置,即可實(shí)現(xiàn)自動(dòng)通信 發(fā)送方和接收方的數(shù)據(jù)長度要統(tǒng)一,(4)PLC與其它協(xié)議的通信,與RS232之間的通信,CP340(6ES7 340-1AH02-0AE0)或 CP341(6ES7 341-1AH01-0AE0),與RS422/RS485之間的通信,CP340(6ES7 340-1CH02-0AE0)或 CP341(6ES7 341-1CH01-0AE0),作業(yè):閱讀以下程序,寫出程序功能(文字描述或框圖均可),CLR /清除RLO,使RLO0 A #Po_Ne JCN z1/RLO=“0”,跳轉(zhuǎn)至z1 L #in_sp L #in_Vn -R T #en0 JU f1/無條件跳轉(zhuǎn)至f1 z1: L #in_Vn L #in_sp -R T #en0 f1: L #en1 -R L #A1 *R T #zc1 L 5.000000e-001 L #A2 /R L #en0 *R L #A1 *R T #zc2 L #A3 L 5.000000e-001 /R L#A1 *R T #zc3,L 2.000000e+000 L #en1 *R T #zc4 L #en0 L #zc4 -R L #en2 +R L #zc3 *R L #zc2 +R L #zc1 +R T#d_Vout L#Vout +R T#Vout L #Vout L 0.000000e+000 R JCN n3 L 1.000000e+002 T #Vout n3: L #en1 T #en2 L #en0 T #en1 BEU /本段程序結(jié)束,6月7日作業(yè),教材P281、P282中7-11、7-12兩題,