S7-200 PLC的指令系統(tǒng)ppt課件
《S7-200 PLC的指令系統(tǒng)ppt課件》由會員分享,可在線閱讀,更多相關(guān)《S7-200 PLC的指令系統(tǒng)ppt課件(146頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第5章S7 200PLC的指令系統(tǒng) 1 第5章S7 200PLC的指令系統(tǒng) 學(xué)習(xí)目標(biāo) 熟練掌握梯形圖和語句表的編程方法 掌握基本指令和功能指令中的常用指令 了解和會用其他指令 通過對本章的學(xué)習(xí) 做到可以根據(jù)需要編制出結(jié)構(gòu)較復(fù)雜的控制程序 2 第5章S7 200PLC的指令系統(tǒng) 教學(xué)內(nèi)容 5 1S7 200PLC編程基礎(chǔ)5 2S7 200PLC的基本指令及編程方法5 3S7 200PLC的功能指令及編程方法 3 5 2S7 200PLC的基本指令及編程方法 S7 200PLC的基本指令多屬于邏輯指令 用于開關(guān)量的邏輯控制 本節(jié)著重介紹梯形圖指令和語句表指令 并討論基本指令的功能及編程方法 編程時 應(yīng)注意各操作數(shù)的數(shù)據(jù)類型及數(shù)值范圍 對每個操作指令來說 只能對某些指定數(shù)據(jù)類型進(jìn)行操作 即便允許使用某種操作數(shù)據(jù)類型 也不是所有此類數(shù)據(jù)類型的單元都可以訪問和使用 否則CPU對非法操作數(shù)將生成編譯錯誤代碼 有關(guān)S7 200CPU模塊操作數(shù)的范圍如表5 5所示 返回 操作數(shù)的數(shù)據(jù)類型 如 位操作指令只能對位變量處理 bit型 操作數(shù)的數(shù)值范圍 如 累加器 只能訪問有權(quán)訪問的字或字節(jié)單元 4 5 2 1基本邏輯指令 基本邏輯指令 在語句表語言中是指對位存儲單元的簡單邏輯運算 在梯形圖中是指對觸點的簡單連接和對標(biāo)準(zhǔn)線圈的輸出 S7 200PLC使用一個邏輯堆棧來分析控制邏輯 用語句表編程時 對位存儲單元數(shù)據(jù)的存取 邏輯運算都是在堆棧中進(jìn)行的 所以選擇語句表編程時 進(jìn)行位運算要考慮主機內(nèi)部存儲結(jié)構(gòu) 用梯形圖和功能框圖時 程序員不必考慮主機的這一邏輯 這兩種編程工具自動地插入必要的指令來處理各種堆棧邏輯操作 LAD編程的方便之處 返回 梯形圖中的并聯(lián)連接 對應(yīng) 語句表中的或邏輯運算梯形圖中的串聯(lián)連接 對應(yīng) 語句表中的與邏輯運算梯形圖中的線圈輸出 對應(yīng) 語句表中的 號 5 5 2 1基本邏輯指令 邏輯堆棧結(jié)構(gòu) 由九個堆棧存儲器位串聯(lián)組成 堆棧存取特點 后進(jìn)先出 進(jìn)棧時 數(shù)據(jù)由堆棧頂部壓入 堆棧中原來所存的數(shù)據(jù)被串行下移一格 如果原來STACK8中存有數(shù)據(jù) 則這數(shù)據(jù)被推出堆棧而自動丟失 出棧時 數(shù)據(jù)從棧頂部被取出 所有數(shù)據(jù)串行上移一格 STACK8中隨機地裝入一個數(shù)值 表5 6S7 200的主機邏輯堆棧結(jié)構(gòu) 棧頂 堆疊 棧頂是數(shù)據(jù)進(jìn)出堆棧的必由之路 6 5 2 1基本邏輯指令 棧頂?shù)睦奂悠髯饔?棧頂STACK0在此邏輯堆棧的位運算中兼有累加器的作用 存放第一操作數(shù) 對于簡單邏輯指令 通常是進(jìn)棧操作和一些最簡單的位運算 這些運算是棧頂與第二個堆棧的內(nèi)容進(jìn)行與 或 非等邏輯運算 對于復(fù)雜邏輯指令 可以在堆棧中的其他數(shù)據(jù)位直接進(jìn)行運算 結(jié)果經(jīng)棧頂彈出 基本邏輯指令包括 標(biāo)準(zhǔn)觸點指令 正負(fù)跳變指令 置位和復(fù)位指令等 主要是與位相關(guān)的輸入輸出及觸點的簡單連接 7 1 標(biāo)準(zhǔn)觸點指令 1 標(biāo)準(zhǔn)觸點指令1 LDbit 裝入常開觸點 LoaD 2 LDNbit 裝入常閉觸點 LoaDNot 3 Abit 與常開觸點 And 4 ANbit 與常閉觸點 AndNot 5 Obit 或常閉觸點 Or 6 ONbit 或常閉觸點 OrNot 7 NOT 觸點取非 Not 8 bit 輸出指令 標(biāo)準(zhǔn)觸點指令 在邏輯堆棧中對存儲器位 bit 進(jìn)行操作 8 5 2 1基本邏輯指令 LDI0 0 裝入常開觸點 網(wǎng)絡(luò)的起始點 OI0 1 或常開觸點 并聯(lián)常開觸點 AI0 2 與常開觸點 串聯(lián)常開觸點 Q0 0 輸出觸點 如果本梯級中將I0 1的觸點改 為Q0 0的常開觸點 則成為電 機起動停止控制環(huán)節(jié)的梯形圖LDNI0 0 裝入常閉觸點 網(wǎng)絡(luò)的起始點 ONI0 1 或常閉觸點 并聯(lián)常閉觸點 ANI0 2 與常閉觸點 串聯(lián)常閉觸點 Q0 1 輸出觸點LDI0 0 OI0 1 AI0 2 NOT 取非 即輸出反相 使用反邏輯 Q0 3 標(biāo)準(zhǔn)觸點LAD和STL例 梯形圖中的并聯(lián)連接 對應(yīng) 語句表中的或邏輯運算梯形圖中的串聯(lián)連接 對應(yīng) 語句表中的與邏輯運算梯形圖中的線圈輸出 對應(yīng) 語句表中的 號 9 5 2 1基本邏輯指令 LDI0 0 OI0 1 AI0 2 Q0 0 LDNI0 0 ONI0 1 ANI0 2 Q0 1 LDI0 0 OI0 1 AI0 2 NOT Q0 3 圖5 10標(biāo)準(zhǔn)觸點FBD例 在功能圖中 常閉觸點的裝入或串并聯(lián) 用指令模塊的對應(yīng)輸入端加圓圈來表示 10 5 2 1基本邏輯指令 LD LDN A AN O ON指令的執(zhí)行對邏輯堆棧的影響 指令LDI0 1 假設(shè)I0 1 1 執(zhí)行情況如表所示 如果是LDN指令 則將操作數(shù)取反后再裝入棧頂 其他操作相同 原值S0串行下移一個單元 其余以此類推 原S8自動丟失 11 5 2 1基本邏輯指令 指令A(yù)I0 2 假設(shè)I0 2 0 執(zhí)行情況如表5 8所示 如果是AN指令 則將操作數(shù)取反后再和棧頂值相與 結(jié)果放回棧頂 即 1 1 1 S0 除S0值外 其他各值不變 12 5 2 1基本邏輯指令 1 標(biāo)準(zhǔn)觸點指令由于堆棧存儲單元數(shù)的限制 所以梯形圖中 最多一次串聯(lián)或并聯(lián)的觸點數(shù)有一定限制 語句表中 A O AN ON指令最多可以連用有限次 功能框圖中 AND和OR指令模塊中輸入的個數(shù)也有限制標(biāo)準(zhǔn)觸點指令中如果有操作數(shù) 則為BOOL型 操作數(shù)的編址范圍可以是 I Q M SM T C S V L 返回 13 5 2 1基本邏輯指令 程序執(zhí)行的時序圖如圖5 11所示 圖5 11時序圖 由于取非指令NOT緣故 Q0 0與Q0 3反相 LDI0 0 OI0 1 AI0 2 Q0 0 LDNI0 0 ONI0 1 ANI0 2 Q0 1 LDI0 0 OI0 1 AI0 2 NOT Q0 3 14 5 2 1基本邏輯指令 2 負(fù)跳變指令 ED 負(fù)跳變觸點檢測到脈沖的每一次負(fù)跳變后 產(chǎn)生一個掃描周期寬度的微分脈沖 指令格式 ED 無操作數(shù) 圖5 12正 負(fù)跳變觸點指令編程 一個掃描周期長度 正跳變觸點檢測到脈沖的每一次正跳變后 產(chǎn)生一個掃描周期寬度的微分脈沖 指令格式 EU 無操作數(shù) 1 正跳變指令 EU 2 正負(fù)跳變指令 用于檢測脈沖的正或負(fù)跳變 上升或下降沿 并產(chǎn)生一個掃描周期寬度脈沖 觸發(fā)內(nèi)部繼電器線圈 15 5 2 1基本邏輯指令 3 置位和復(fù)位指令置位即置1 復(fù)位即置0 置位和復(fù)位指令可以將位存儲區(qū)的某一位開始的一個或多個 最多可達(dá)255個 同類存儲器位置1或置0 這兩條指令在使用時需指明三點 操作性質(zhì) 開始位和位的數(shù)量 各操作數(shù)類型及范圍如表5 9所示 表5 9置位和復(fù)位指令操作數(shù)類型及范圍 16 5 2 1基本邏輯指令 1 置位指令 S 將位存儲區(qū)的指定位 bit 開始的N個同類存儲器位置位 指令格式 Sbit N 例 SQ0 0 1 2 復(fù)位指令 R 將位存儲區(qū)的指定位 bit 開始的N個同類存儲器位復(fù)位 指令格式 Rbit N 例 RQ0 2 3 返回 17 5 2 1基本邏輯指令 在語句表 STL 中 當(dāng)棧頂值為1時 才能執(zhí)行置位指令S或復(fù)位指令R 置位后即使棧頂值變?yōu)? 仍保持置位 復(fù)位后即使棧頂值變?yōu)? 仍保持復(fù)位 可見這兩條指令均有 記憶 功能 置位和復(fù)位指令應(yīng)用編程序舉例 電動機啟動 停止控制 圖5 13置位 復(fù)位指令 18 5 2 2立即操作指令 立即指令允許對輸入和輸出點進(jìn)行快速和直接存取 當(dāng)用立即指令讀取輸入點的狀態(tài)時 相應(yīng)的輸入映像寄存器中的值并未發(fā)生更新 用立即指令訪問輸出點時 訪問的同時 相應(yīng)的輸出寄存器的內(nèi)容也被刷新 只有輸入繼電器I和輸出繼電器Q可以使用立即指令 返回 1 LDI LDNI AI ANI OI和ONI立即觸點指令 2 I 立即輸出指令 3 SI 立即置位指令 4 RI 立即復(fù)位指令 在每個標(biāo)準(zhǔn)觸點指令的后面加 I 19 表5 10立即置位和立即復(fù)位指令的操作數(shù)類型及范圍 20 5 2 2立即操作指令 應(yīng)用舉例 LDI0 0 裝入常開觸點 Q0 0 輸出觸點 非立即 IQ0 1 立即輸出觸點SIQ0 2 1 從Q0 2開始的1個觸點被立即置1LDII0 0 立即輸入觸點指令 Q0 3 輸出觸點 非立即 圖5 14立即指令程序 21 5 2 2立即操作指令 Q0 3在上一周期n立即指令執(zhí)行時置1 I0 0在上一掃描周期n某時跳變 Q0 0在本周期n 1輸出刷新時置1 Q0 1與Q0 2在本周期n 1立即指令執(zhí)行時置1 LDI0 0 Q0 0 IQ0 1SIQ0 2 1LDII0 0 Q0 3 立即指令時序圖 一般輸入 輸出指令 只有等到輸入掃描 輸出刷新時才得到執(zhí)行 立即操作指令 是該程序語句執(zhí)行的那一刻立即得到執(zhí)行 22 5 2 3復(fù)雜邏輯指令 基本邏輯指令涉及可編程元件的觸點和線圈的簡單連接 不能表達(dá)在梯形圖中觸點的復(fù)雜連接結(jié)構(gòu) 復(fù)雜邏輯指令主要用來描述對觸點進(jìn)行的復(fù)雜連接 同時 它們對邏輯堆棧也可以實現(xiàn)非常復(fù)雜的操作 簡單連接 復(fù)雜連接 23 5 2 3復(fù)雜邏輯指令 1 棧裝載與指令A(yù)LD2 棧裝載或指令OLD3 邏輯推入棧指令LPS4 邏輯彈出棧指令LPP5 邏輯讀棧指令LRD6 裝入堆棧指令LDSN 返回 這些指令中除LDS外 其余指令都無操作數(shù) 24 5 2 3復(fù)雜邏輯指令 1 棧裝載與指令 與塊 ALD 在梯形圖中 用于將并聯(lián)電路塊進(jìn)行串聯(lián)連接 在語句表中 執(zhí)行ALD指令 將堆棧中的第一級和第二級的值進(jìn)行邏輯 與 操作 結(jié)果置于棧頂 堆棧第一級 并將堆棧中的第三級至第九級的值依次上彈一級 25 5 2 3復(fù)雜邏輯指令 2 棧裝載或指令OLD 在梯形圖中 用于將串聯(lián)電路塊進(jìn)行并聯(lián)連接 在語句表中 執(zhí)行OLD指令 將堆棧中的第一級和第二級的值進(jìn)行邏輯 或 操作 結(jié)果置于棧頂 堆棧第一級 并將堆棧中其余各級的內(nèi)容依次上彈一級 26 5 2 3復(fù)雜邏輯指令 棧裝載與指令A(yù)LD和棧裝載或指令OLD的操作過程如圖5 16所示 圖中 x 表示不確定值 圖5 16棧裝載與指令和棧裝載或指令的操作過程 27 圖5 17LPS LRD LPP LDS指令的操作過程 這里n 3 LPS與LPP必須配對使用 LPS 亦稱 分支或主控指令 用于復(fù)制棧頂?shù)闹挡⑦@個值推入棧頂 原堆棧中各級棧值依次下壓一級 在梯形圖中的分支結(jié)構(gòu)中 用于生成一條新的母線 左側(cè)為主控邏輯塊時 第一個完整的從邏輯行從此處開始 LPP 亦稱 分支結(jié)束或主控復(fù)位指令 將棧頂值彈出 原堆棧中各級棧值依次上彈一級 堆棧第二級的值成為新的棧頂值 在梯形圖中的分支結(jié)構(gòu)中 用于將LPS指令生成的一條新母線進(jìn)行恢復(fù) LRD 把堆棧中第二級的值復(fù)制到棧頂 堆棧沒有推入?;驈棾鰲2僮?在梯形圖中的分支結(jié)構(gòu)中 當(dāng)左側(cè)為主控邏輯塊時 開始第二個和后邊更多的從邏輯塊 應(yīng)注意 LPS后第一個和最后一個從邏輯塊不用本指令 LDS 復(fù)制棧中的第n級的值到棧頂 原棧中各級棧值依次下壓一級 棧底值丟失 28 5 2 3復(fù)雜邏輯指令 應(yīng)用舉例 LDI0 0 裝入常開觸點OI2 2 或常開觸點LDI0 1 被串的塊開始LDI2 0 被并路開始AI2 1 與常開觸點OLD 棧裝載或 并路結(jié)束ALD 棧裝載與 串路結(jié)束 Q5 0 輸出觸點LDI0 0 裝入常開觸點LPS 邏輯推入棧 主控觸點AI0 5 與常開觸點 Q7 0 輸出觸點LRD 邏輯讀棧 新母線LDI2 1 裝入常開觸點OI1 3 或常開觸點ALD 棧裝載與 Q6 0 輸出觸點LPP 邏輯彈出棧 母線復(fù)原LDI3 1 裝入常開出觸點OI2 0 或常開觸點ALD 棧裝載與 Q1 3 輸出觸點 圖5 18復(fù)雜邏輯指令的應(yīng)用 返回 LPS后第一和最后一個從邏輯塊不用LRD指令 29 5 2 4取非觸點指令和空操作指令 1 取非觸點指令NOT 用來改變能流的狀態(tài) 能流到達(dá)取非觸點時 能流就停止 能流未到達(dá)取非觸點時 能流就通過 在語句表中 取非觸點指令對堆棧的棧頂作取反操作 改變棧頂值 棧頂值由0變?yōu)? 或者由1變?yōu)? 取非觸點指令無操作數(shù) 圖5 19取非觸點指令編程 返回 30 5 2 4取非觸點指令和空操作指令 2 空操作指令 NOP 空操做指令 使能輸入有效時 執(zhí)行空操作指令 空操做指令不影響用戶程序的執(zhí)行 操作數(shù)N是標(biāo)號 是一個0 225的常數(shù) LDI0 0 使能輸入NOP30 空操作指令 標(biāo)號為30 圖5 20空操作指令編程 31 5 2 5定時器和計數(shù)器指令 1 定時器指令 系統(tǒng)提供3種定時指令 TON 通電延時 TONR 有記憶通電延時 和TOF 斷電延時 S7 200定時器的分辨率 時間增量 時間單位 分辨率 有3個等級 1ms 10ms和100ms 分辨率等級和定時器號關(guān)系如表5 11所示 返回 32 5 2 5定時器和計數(shù)器指令 表5 11定時器號和分辨率 定時時間的計算 T PT S T為實際定時時間 PT為預(yù)設(shè)值 S為分辨率等級 例如 TON指令用定時器T33 預(yù)設(shè)值為125 則實際定時時間T 125 10 1250ms 33 5 2 5定時器和計數(shù)器指令 定時器指令操作數(shù)有3個 編號 預(yù)設(shè)值和使能輸入 1 編號 用定時器的名稱和它的常數(shù)編號 最大255 來表示 即 Txxx 如 T4 含義 T4編號 還包含兩方面的變量信息 定時器位和定時器當(dāng)前值 定時器位 定時器位與時間繼電器的輸出相似 當(dāng)定時器的當(dāng)前值達(dá)到預(yù)設(shè)值PT時 該位被置為 1 定時器當(dāng)前值 存儲定時器當(dāng)前所累計的時間 它用16位有符號整數(shù)來表示 故最大計數(shù)值為32767 2 預(yù)設(shè)值PT 數(shù)據(jù)類型為INT型 尋址范圍可以是VW IW QW MW SW SMW LW AIW T C AC VD AC LD和常數(shù) 3 使能輸入 只對LAD和FBD BOOL型 可以是I Q M SM T C V S L和能流 可以用復(fù)位指令來對3種定時器復(fù)位 復(fù)位指令的執(zhí)行結(jié)果是 使定時器位變?yōu)镺FF 定時器當(dāng)前值變?yōu)? 34 5 2 5定時器和計數(shù)器指令 1 接通延時定時器指令 TON 該指令用于單一間隔定時 上電周期或首次掃描 定時器位OFF 定時器當(dāng)前值為0 載入預(yù)設(shè)值 使能輸入接通時 定時器位為OFF 當(dāng)前值從0開始計數(shù)時間 當(dāng)前值達(dá)到預(yù)設(shè)值時 定時器位為ON 當(dāng)前值連續(xù)計數(shù)到32767 使能輸入斷開 定時器自動復(fù)位 即定時器位OFF 當(dāng)前值為0 填 計定時器號 如 T35 填 預(yù)設(shè)值 如 100 指令格式 TONTxxx PT例 TONT35 4 返回 IN 4 4 T35當(dāng)前值 T35定時器位 最大值 35 5 2 5定時器和計數(shù)器指令 2 有記憶接通延時定時器指令 該指令用于對許多間隔的累計定時 上電周期或首次掃描 定時器位OFF 當(dāng)前值保持 使能輸入接通時 定時器位為OFF 當(dāng)前值從0開始累計計數(shù)時間 使能輸入斷開 定時器位和當(dāng)前值保持最后狀態(tài) 使能輸入再次接通時 當(dāng)前值從上次的保持值繼續(xù)計數(shù) 當(dāng)累計當(dāng)前值達(dá)到預(yù)設(shè)值時 定時器位ON 當(dāng)前值連續(xù)計數(shù)到32767 填 計定時器號 如 T2 填 預(yù)設(shè)值 如 10 TONR定時器只能用復(fù)位指令進(jìn)行復(fù)位操作 使當(dāng)前值清零 指令格式 TONRTxxx PT例 TONRT2 10 IN 4 10 T2當(dāng)前值 T2位 最大值 36 5 2 5定時器和計數(shù)器指令 3 斷開延時定時器指令 該指令用于斷開后的單一間隔定時 上電周期或首次掃描 定時器當(dāng)前值為0 定時器位OFF 載入預(yù)置值PT 使能輸入接通時 當(dāng)前值為0 定時器位為ON 當(dāng)使能輸入由接通到斷開時 定時器開始計數(shù) 當(dāng)前值達(dá)到預(yù)設(shè)值時 定時器位OFF 當(dāng)前值等于預(yù)設(shè)值 停止計數(shù) TOF復(fù)位后 如果使能輸入再有從ON到OFF的負(fù)跳變 則可實現(xiàn)再次啟動 填 計定時器號 如 T36 填 預(yù)設(shè)值 如 3 指令格式 TOFTxxx PT例 TOFT36 3 IN 3 T36當(dāng)前值 T36位 最大值 37 5 2 5定時器和計數(shù)器指令 LDI0 0 使能輸入TONT35 4 通電延時定時器 延時時間為40msLDI0 0 使能輸入TONRT2 10 有記憶通電延時定時器 延時時間為100msLDI0 0 使能輸入TOFT36 3 斷電延時定時器 延時時間為30ms 4 應(yīng)用舉例 圖5 21定時器特性 T35為通電延時定時器 T2為有記憶通電延時定時器 T36為斷電延時定時器 38 5 2 5定時器和計數(shù)器指令 上述梯形圖程序中輸入輸出執(zhí)行時序關(guān)系如圖5 22所示 圖5 22定時器時序 返回 使能輸入接通時 定時器位為ON 當(dāng)前值為0 預(yù)啟動 TONT35 4 TONRT2 10 TOFT36 3 使能輸入 39 5 2 5定時器和計數(shù)器指令 5 應(yīng)用定時器指令應(yīng)注意的幾個問題 不能把一個定時器號同時用作斷開延時定時器 TOF 和接通延時定時器 TON 使用復(fù)位 R 指令對定時器復(fù)位后 定時器位為 0 定時器當(dāng)前值為 0 有記憶接通延時定時器 TONR 只能通過復(fù)位指令進(jìn)行復(fù)位 對于斷開延時定時器 TOF 需要輸入端有一個負(fù)跳變 由on到off 的輸入信號啟動計時 40 5 2 5定時器和計數(shù)器指令 1 1ms分辨率定時器1ms分辨率定時器啟動后 定時器對1ms的時間間隔 時基信號 進(jìn)行計時 定時器當(dāng)前值每隔1ms刷新一次 在一個掃描周期中要刷新多次 而不和掃描周期同步 2 10ms分辨率定時器10ms分辨率定時器啟動后 定時器對10ms的時間間隔進(jìn)行計時 程序執(zhí)行時 在每次掃描周期開始對10ms定時器刷新 在一個掃描周期內(nèi)定時器當(dāng)前值保持不變 3 100ms分辨率定時器100ms分辨率定時器啟動后 定時器對100ms的時間間隔進(jìn)行計時 只有在定時器指令執(zhí)行時 100ms定時器的當(dāng)前值才被刷新 不同精度的定時器 它們當(dāng)前值的刷新周期是不同的 具體情況如下 41 5 2 5定時器和計數(shù)器指令 舉例說明 在圖5 23a中 T32定時器1ms更新一次 當(dāng)定時器當(dāng)前值100在圖示A處刷新 Q0 0可以接通一個掃描周期 若在其他位置刷新 Q0 0則用永遠(yuǎn)不會接通 而在A處刷新的概率是很小的 若改為圖5 23b 就可保證當(dāng)定時器當(dāng)前值達(dá)到設(shè)定值時 Q0 0會接通一個掃描周期 圖5 23a同樣不適合10ms分辨率定時器 圖5 231ms定時器編程 42 5 2 5定時器和計數(shù)器指令 在子程序和中斷程序中不易使用100ms定時器 子程序和中斷程序不是每個掃描周期都執(zhí)行的 那么在子程序和中斷程序中的100ms定時器的當(dāng)前值就不能及時刷新 造成時基脈沖丟失 致使計時失準(zhǔn) 在主程序中 不能重復(fù)使用同一個100ms的定時器號 否則該定時器指令在一個掃描周期中多次被執(zhí)行 定時器的當(dāng)前值在一個掃描周期中多次被刷新 這樣 定時器就會多計了時基脈沖 也造成計時失準(zhǔn) 因而 100ms定時器只能用于每個掃描周期內(nèi)同一定時器指令執(zhí)行一次 且僅執(zhí)行一次的場合 100ms定時器的編程例子如圖5 24a所示 a b 圖5 24100ms定時器的應(yīng)用 返回 與圖5 23a相比較 該定時器確保在此處刷新當(dāng)前值 43 5 2 5定時器和計數(shù)器指令 2 計數(shù)器指令 計數(shù)器用來累計輸入脈沖的次數(shù) 計數(shù)器也是由集成電路構(gòu)成 是應(yīng)用非常廣泛的編程元件 經(jīng)常用來對產(chǎn)品進(jìn)行計數(shù) 計數(shù)器與定時器的結(jié)構(gòu)和使用基本相似 編程時輸入它的預(yù)設(shè)值PV 計數(shù)的次數(shù) 計數(shù)器累計它的脈沖輸入端電位上升沿 正跳變 個數(shù) 當(dāng)計數(shù)器達(dá)到預(yù)設(shè)值PV時 發(fā)出中斷請求信號 以便PLC作出相應(yīng)的處理 計數(shù)器指令有3種 增計數(shù)CTU 增減計數(shù)CTUD和減計數(shù)CTD 指令操作數(shù)有4方面 編號 預(yù)設(shè)值 脈沖輸入和復(fù)位輸入 44 5 2 5定時器和計數(shù)器指令 1 編號 用計數(shù)器名稱和它的常數(shù)編號 最大255 來表示 即Cxxx 如 C6 C6不僅僅是計數(shù)器的編號 它還包含兩方面的變量信息 計數(shù)器位和計數(shù)器當(dāng)前值 計數(shù)器位 表示計數(shù)器是否發(fā)生動作的狀態(tài) 當(dāng)計數(shù)器的當(dāng)前值達(dá)到預(yù)設(shè)值PV時 該位被置為 1 計數(shù)器當(dāng)前值 存儲計數(shù)器當(dāng)前所累計的脈沖個數(shù) 它用16位符號整數(shù) INT 來表示 故最大計數(shù)值為32767 2 預(yù)設(shè)值PV 數(shù)據(jù)類型為INT型 尋址范圍可以是VW IW QW MW SW SMW LW AIW T C AC VD AC LD和常數(shù) 3 脈沖輸入 BOOL型 可以是I Q M SM T C V S L和能流 4 復(fù)位輸入 與脈沖輸入同類型和范圍 45 5 2 5定時器和計數(shù)器指令 1 增計數(shù)器指令 CTU 首次掃描 定時器位OFF 當(dāng)前值為0 在增計數(shù)器的計數(shù)輸入端 CU 脈沖輸入的每個上升沿 計數(shù)器加1 當(dāng)前值增加1個單位 當(dāng)前值達(dá)到預(yù)設(shè)值時 計數(shù)器位ON 當(dāng)前值繼續(xù)計數(shù)到32767停止計數(shù) 復(fù)位輸入有效或執(zhí)行復(fù)位指令 計數(shù)器自動復(fù)位 即計數(shù)器位OFF 當(dāng)前值為0 格式 CTUCxxx PV例 CTUC20 3 填 計數(shù)器器號 如 C30 填 預(yù)設(shè)值 如 3 脈沖輸入 復(fù)位輸入 46 5 2 5定時器和計數(shù)器指令 應(yīng)用舉例 LDI0 0 計數(shù)脈沖信號輸入端LDI0 1 復(fù)位信號輸入端CTUC20 3 增計數(shù) 計數(shù)設(shè)定值為3個脈沖LDC20 裝入計數(shù)器觸點 Q0 0 輸出觸點 圖5 25增計數(shù)程序及時序 復(fù)位與計數(shù)脈沖同時有效時 優(yōu)先執(zhí)行復(fù)位 47 5 2 5定時器和計數(shù)器指令 2 增減計數(shù)器指令 該指令有兩個脈沖輸入端 CU輸入端用于遞增計數(shù) CD輸入端用于遞減計數(shù) 首次掃描 定時器位OFF 當(dāng)前值為0 CU輸入的每個上升沿 計數(shù)器當(dāng)前值增加1個單位 CD輸入的每個上升沿 都使計數(shù)器當(dāng)前值減小1個單位 當(dāng)前值達(dá)到預(yù)設(shè)值時 計數(shù)器位ON 增減計數(shù)器計數(shù)到32767 最大值 后 下一個CU輸入的上升沿將使當(dāng)前值跳變?yōu)樽钚≈?32768 反之 當(dāng)前值達(dá)到最小值 32768 時 下一個CD輸入的上升沿將使當(dāng)前值跳變?yōu)樽畲笾?32767 復(fù)位輸入有效或執(zhí)行復(fù)位指令 計數(shù)器自動復(fù)位 即計數(shù)器位OFF 當(dāng)前值為0 格式 CTUDx PV例 CTUDC30 5 返回 48 5 2 5定時器和計數(shù)器指令 LDI0 0 增計數(shù)輸入端LDI0 1 減計數(shù)輸入端LDI0 2 復(fù)位端CTUDC30 5 增減計數(shù) 設(shè)定脈沖數(shù)為5LDC30 裝入計數(shù)器觸點 Q0 0 輸出觸點 應(yīng)用舉例 圖5 26增減計數(shù)程序及時序 當(dāng)前值大于 或小于 設(shè)定值后 仍然隨計數(shù)脈沖而變化 而計數(shù)器位保持 49 5 2 5定時器和計數(shù)器指令 3 減計數(shù)器指令 CTD 首次掃描 定時器位OFF 當(dāng)前值為預(yù)設(shè)值PV 計數(shù)器檢測到CD輸入的每個上升沿時 計數(shù)器當(dāng)前值減小1個單位 當(dāng)前值減到0時 計數(shù)器位ON 復(fù)位輸入有效或執(zhí)行復(fù)位指令 計數(shù)器自動復(fù)位 即計數(shù)器位OFF 當(dāng)前值復(fù)位為預(yù)設(shè)值 而不是0 指令格式 CTDCxxx PV例 CTDC40 4 50 5 2 5定時器和計數(shù)器指令 應(yīng)用舉例 LDI0 0 減計數(shù)脈沖輸入端LDI0 1 復(fù)位輸入端CTDC40 4 減計數(shù)器 設(shè)定計數(shù)脈沖 數(shù)為4LDC40 裝入計數(shù)器觸點 Q0 0 輸出觸點 圖5 27減計數(shù)程序及時序 當(dāng)前值減到0后 計數(shù)脈沖對當(dāng)前值和位都不起作用 0 4 4 2 2 3 3 4 4 1 51 5 2 5定時器和計數(shù)器指令 4 應(yīng)用舉例 用計數(shù)器和定時器配合增加延時時間 如圖5 28所示 通過分析可知以下程序中實際延時時間為100ms 30000 10 30000s 圖5 28計數(shù)器應(yīng)用例 LDI0 0 啟動通電延時ANM0 0 重新啟動延時TONT50 30000 延時時間設(shè)定為3000sLDT50 延時時間到 M0 0 關(guān)定時器 產(chǎn)生一脈沖LDM0 0 每隔3000s輸入一脈沖LDNI0 0 復(fù)位輸入CTUC20 10 增計數(shù) 累計脈沖總數(shù) 52 5 2 5定時器和計數(shù)器指令 5 應(yīng)用計數(shù)器指令應(yīng)注意的問題 可以用復(fù)位指令來對3種計數(shù)器復(fù)位 復(fù)位指令的執(zhí)行結(jié)果是 使計數(shù)器位變?yōu)镺FF 計數(shù)器當(dāng)前值變?yōu)? CTD變?yōu)轭A(yù)設(shè)值PV 在一個程序中 同一個計數(shù)器編號只能使用一次 脈沖輸入和復(fù)位輸入同時有效時 優(yōu)先執(zhí)行復(fù)位操作 53 5 2 6順序控制繼電器指令 S7 200CPU含有256個順序控制繼電器 SCR 用于順序控制 S7 200包含順序控制指令 可以模仿控制進(jìn)程的步驟 對程序邏輯分段 可以將程序分成單個流程的順序步驟 也可同時激活多個流程 可以使單個流程有條件地分成多支單個流程 也可以使多個流程有條件地重新匯集成單個流程 從而對一個復(fù)雜的工程可以十分方便地編制控制程序 系統(tǒng)提供3個順序控制指令 順序控制開始指令 LSCR 順序控制轉(zhuǎn)移指令 SCRT 和順序控制結(jié)束指令 SCRE 返回 54 5 2 6順序控制繼電器指令 1 順序繼電器指令 1 段開始指令 LSCR 2 段結(jié)束指令 SCRE 3 段轉(zhuǎn)移指令 SCRT 定義一個順序控制繼電器段的開始 操作數(shù)為順序控制繼電器位Sx y Sx y作為本段的段標(biāo)志位 當(dāng)Sx y位為1時 允許該SCR段工作 該指令用來實現(xiàn)本段與另一段之間的切換 操作數(shù)為順序控制繼電器位Sx y Sx y是下一個SCR段的標(biāo)志位 當(dāng)使能輸入有效時 一方面對Sx y置位 以便讓下一個SCR段開始工作 另一方面同時對本SCR段的標(biāo)志位復(fù)位 以便本段停止工作 一個SCR段必須用該指令來結(jié)束 返回 55 5 2 6順序控制繼電器指令 2 使用順序繼電器指令的限制 只能使用順序控制繼電器位作為段標(biāo)志位 一個順序控制繼電器位Sx y在程序中只能使用一次 在一個SCR段中不能出現(xiàn)跳入 跳出或段內(nèi)跳轉(zhuǎn)等程序結(jié)構(gòu) 即在段中不能使用JMP和LBL指令 同樣 在一個SCR段中不允許出現(xiàn)循環(huán)程序結(jié)構(gòu)和條件結(jié)束 即禁止使用FOR NEXT和END指令 指令格式 LSCRbit 段開始指令 bit為本段標(biāo)志位 SCRTbit 段轉(zhuǎn)移指令 bit為下段標(biāo)志位 SCRE 段結(jié)束指令 無操作數(shù) 56 5 2 6順序控制繼電器指令 3 順序結(jié)構(gòu)4 程序?qū)嵗?根據(jù)舞臺燈光效果的要求 控制紅 綠 黃三色燈 要求 紅燈先亮 2s后綠燈亮 再過3s后黃燈亮 待紅 綠 黃燈全亮3min后 全部熄滅 程序如圖5 29所示 說明 每一個SCR程序段中均包含三個要素 1 輸出對象 在這一步序中應(yīng)完成的動作 2 轉(zhuǎn)移條件 滿足轉(zhuǎn)移條件后 實現(xiàn)SCR段的轉(zhuǎn)移 3 轉(zhuǎn)移目標(biāo) 轉(zhuǎn)移到下一個步序 一個SCR段必須用該指令來結(jié)束 57 5 2 6順序控制繼電器指令 LDI0 1ANQ0 0ANQ0 1ANQ0 2 在初始狀態(tài)下起動 置SS0 1 1 S0 1 1LSCRS0 1 S0 1 1 激活第一SCR程序段 進(jìn)入第一步序LDSM0 0SQ0 0 1 紅燈亮 并保持TONT37 20 啟動2s定時器LDT37 2s后程序轉(zhuǎn)移到第二SCR段 SCRTS0 2 S0 2 1 S0 1 0 SCRE 第一SCR段結(jié)束LSCRS0 2 S0 2 1 激活第二SCR程序段 進(jìn)入第二步序LDSM0 0SQ1 1 綠燈亮 并保持TONT38 30 啟動3s定時器 LDI0 1 58 5 2 6順序控制繼電器指令 LDT38 3s后程序轉(zhuǎn)移到第三SCR段 SCRTS0 3 S0 3 1 S0 2 0 SCRE 第二SCR段結(jié)束LSCRS0 3 S0 3 1 激活第三SCR程序段 進(jìn)入第三步序LDSM0 0SQ0 2 1 黃燈亮 并保持TONT39 1800 啟動3min定時器LDT39 3min后程序轉(zhuǎn)移到第四SCR段 SCRTS0 4 S0 4 1 S0 3 0 SCRE 第三SCR段結(jié)束LSCRS0 4 S0 4 1 激活第四SCR程序段 進(jìn)入第四步序LDSM0 0RS0 1 4RQ0 0 3 紅 綠 黃燈全滅SCRE 第四SCR段結(jié)束 圖5 29SCR指令編程 返回 59 5 2 7移位寄存器指令 移位指令都是對無符號數(shù)進(jìn)行的處理 執(zhí)行時只考慮要移位的存儲單元的每一位數(shù)字狀態(tài) 而不管數(shù)據(jù)的值的大小 本類指令在一個數(shù)字量輸出點對應(yīng)多個相對固定狀態(tài)的情況下有廣泛的應(yīng)用 返回 60 5 2 7移位寄存器指令 1 左移和右移 左移和右移根據(jù)所移位的數(shù)的長度分別又可分為字節(jié)型 字型 雙字型 移位特點 移位數(shù)據(jù)存儲單元的移出端與SM1 1 溢出 相連 所以最后被移出的位被放到SM1 1位存儲單元 移位時 移出位進(jìn)入SM1 1 另一端自動補0 SM1 1始終存放最后一次被移出的位 移位次數(shù)與移位數(shù)據(jù)的長度有關(guān) 如果所需移位次數(shù)大于移位數(shù)據(jù)的位數(shù) 則超出的次數(shù)無效 如果移位操作使數(shù)據(jù)變?yōu)? 則零存儲器位 SM1 0 自動置位 移位指令影響的特殊存儲器位 SM1 0 零 SM1 1 溢出 使能流輸出ENO斷開的出錯條件 SM4 3 運行時間 0006 間接尋址 移位次數(shù)N為字節(jié)型數(shù)據(jù) 61 5 2 7移位寄存器指令 1 字節(jié)左移和字節(jié)右移指令 SLB SRB 使能輸入有效時 把字節(jié)輸入數(shù)據(jù)IN左移或右移N位后 再將結(jié)果輸出到OUT所指的字節(jié)存儲單元 在語句表中 IN與OUT使用同一個單元 最大實際可移位次數(shù)為8 指令格式 SLBOUT N 字節(jié)左移 SRBOUT N 字節(jié)右移 例 SLBMB0 2SRBLB0 3 62 5 2 7移位寄存器指令 以第一條指令為例 指令執(zhí)行情況如表5 12所示 表5 12左移指令SLB執(zhí)行結(jié)果 2 字左移和字右移指令 SLW SRW 指令模塊與字節(jié)移位比較 只有名稱變?yōu)镾HLW和SHRW 最大實際可移位次數(shù)為16 指令格式 SLWOUT N 字左移 SRWOUT N 字右移 例 SLWMW0 2SRWLW0 3 返回 63 5 2 7移位寄存器指令 以第二條指令為例 指令執(zhí)行情況如表5 13所示 表5 13右移指令SRW執(zhí)行結(jié)果 64 5 2 7移位寄存器指令 指令格式 SLDOUT N 雙字左移 SRDOUT N 雙字右移 例 SLDMD0 2SRDLD0 3 3 雙字左移和雙字右移指令 SLD SRD 指令模塊與字節(jié)移位比較 只有名稱變?yōu)镾HLDW和SHRDW 其他部分完全相同 最大實際可移位次數(shù)為32 65 5 2 7移位寄存器指令 2 循環(huán)左移 循環(huán)右移 循環(huán)移位特點 移位數(shù)據(jù)存儲單元的移出端與另一端相連 同時又與SM1 1 溢出 相連 所以最后被移出的位被移到另一端的同時 也被放到SM1 1位存儲單元 移位次數(shù)與移位數(shù)據(jù)的長度有關(guān) 如果移位次數(shù)設(shè)定值大于移位數(shù)據(jù)的位數(shù) 則執(zhí)行循環(huán)移位之前 系統(tǒng)先對設(shè)定值取以數(shù)據(jù)長度為底的模 用小于數(shù)據(jù)長度的結(jié)果作為實際循環(huán)移位的次數(shù) 如字左移時 若移位次數(shù)設(shè)定為36 則先對36取以16為底的模 得到小于16的結(jié)果4 故指令實際循環(huán)移位4次 如果移位操作使數(shù)據(jù)變?yōu)? 則零存儲器位 SM1 0 自動置位 移位指令影響的特殊存儲器位 SM1 0 零 SM1 1 溢出 使能流輸出ENO斷開的出錯條件 SM4 3 運行時間 0006 間接尋址 移位次數(shù)N為字節(jié)型數(shù)據(jù) 返回 66 5 2 7移位寄存器指令 1 字節(jié)循環(huán)左移和字節(jié)循環(huán)右移指令 RLB RRB 使能輸入有效時 把字節(jié)型輸入數(shù)據(jù)IN循環(huán)左移或循環(huán)右移N位后 再將結(jié)果輸出到OUT所指的字節(jié)存儲單元 在語句表中 IN與OUT使用同一個單元 實際移位次數(shù)為設(shè)定值取以8為底的模所得的結(jié)果 指令格式 RLBOUT N 字節(jié)循環(huán)左移 RRBOUT N 字節(jié)循環(huán)右移 例 RLBMB0 2RRBLB0 3 67 5 2 7移位寄存器指令 2 字循環(huán)左移和字循環(huán)右移指令 RLW RRW 指令模塊與字節(jié)循環(huán)移位只有名稱變?yōu)镽OLW和RORW 其他部分完全相同 使能輸入有效時 把字型輸入數(shù)據(jù)IN循環(huán)左移或循環(huán)右移N位后 再將結(jié)果輸出到OUT所指的字存儲單元 在語句表中 IN與OUT使用同一個單元 實際移位次數(shù)為設(shè)定值取以16為底的模所得的結(jié)果 指令格式 RLWOUT N 字循環(huán)左移 RRWOUT N 字循環(huán)右移 例 RLWMD0 2RRWLD0 3 68 5 2 7移位寄存器指令 3 雙字循環(huán)左移和雙字循環(huán)右移指令 RLD RRD 指令模塊與字節(jié)循環(huán)移位只有名稱變?yōu)镽OLDW和RORDW 其他部分完全相同 使能輸入有效時 把雙字型輸入數(shù)據(jù)IN循環(huán)左移或循環(huán)右移N位后 再將結(jié)果輸出到OUT所指的雙字存儲單元 在語句表中 IN與OUT使用同一個單元 實際移位次數(shù)為設(shè)定值取以32為底的模所得的結(jié)果 指令格式 RLDOUT N 雙字循環(huán)左移 RRDOUT N 雙字循環(huán)右移 例 RLDMD0 2RRDLD0 3 返回 69 5 2 7移位寄存器指令 以指令RRWLW0 3為例 指令執(zhí)行情況如表5 14所示 表5 14指令RRW執(zhí)行結(jié)果 70 5 2 7移位寄存器指令 3 寄存器移位 SHRB 寄存器移位指令 該指令在梯形圖中有3個數(shù)據(jù)輸入端 DATA為數(shù)值輸入 將該位的值移入移位寄存器 SBIT為移位寄存器的最低位端 N指定移位寄存器的長度 每次使能輸入有效時 整個移位寄存器移動1位 移位特點 移位寄存器長度在指令中指定 沒有字節(jié)型 字型 雙字型之分 可指定的最大長度為64位 可正也可負(fù) 移位數(shù)據(jù)存儲單元的移出端與SM1 1 溢出 相連 所以最后被移出的位被放到SM1 1位存儲單元 71 5 2 7移位寄存器指令 移位時 移出位進(jìn)入SM1 1 另一端自動補以DATA移入位的值 正向移位時長度N為正值 移位是從最低字節(jié)的最低位SBIT移入 從最高字節(jié)的最高位MSB b移出 反向移位時 長度N為負(fù)值 移位是從最高字節(jié)的最高位移入 從最低字節(jié)的最低位SBIT移出 最高位的計算方法 N的絕對值 1 SBIT的位號 8 相除結(jié)果中 余數(shù)即是最高位的位號 商與SBIT的字節(jié)號之和即是最高位的字節(jié)號 例如 如果SBIT是V22 5 N是8 那么MSB b是V23 4 具體計算如下 MSB b V22 8 1 5 8 V22 12 8 V22 1 余數(shù)為4 V23 4 返回 72 5 2 7移位寄存器指令 指令格式 SHRBDATA SBIT N例 SHRBI0 5 V20 0 5以本條指令為例 指令執(zhí)行情況如表5 15所示 表5 15指令SHRB執(zhí)行結(jié)果 73 5 2 8比較操作指令 比較指令是一種比較判斷 用于比較兩個符號數(shù)或無符號數(shù) 在梯形圖中以帶參數(shù)和運算符號的觸點的形式編程 當(dāng)這兩數(shù)比較式的結(jié)果為真時 該觸點閉合 在功能框圖中以指令模塊的形式編程 當(dāng)比較式結(jié)果為真時 輸出接通 在語句表中使用LD指令進(jìn)行編程時 當(dāng)比較式為真時 主機將棧頂置1 使用A O指令進(jìn)行編程時 當(dāng)比較式為真時 則在棧頂執(zhí)行A O操作 并將結(jié)果放入棧頂 比較指令的類型有 字節(jié)比較 整數(shù)比較 雙字整數(shù)比較和實數(shù)比較 比較運算符有 表示不等于 返回 74 5 2 8比較操作指令 1 字節(jié)比較 字節(jié)比較用于比較兩個字節(jié)型整數(shù)值IN1和IN2的大小 字節(jié)比較是無符號的 比較式可以是LDB AB或OB后直接加比較運算符構(gòu)成 如 LDB AB OB 等 整數(shù)IN1和IN2的尋址范圍 VB IB QB MB SB SMB LB VD AC LD和常數(shù) 指令格式例 LDB VB10 VB12ABMB0 MB1OB AC1 116 75 5 2 8比較操作指令 2 整數(shù)比較 整數(shù)比較用于比較兩個一字長整數(shù)值IN1和IN2的大小 整數(shù)比較是有符號的 整數(shù)范圍為16 8000和16 7FFF之間 比較式可以是LDW AW或OW后直接加比較運算符構(gòu)成 如 LDW AW OW 等 整數(shù)IN1和IN2的尋址范圍 VW IW QW MW SW SMW LW AIW T C AC VD AC LD和常數(shù) 指令格式例 LDW VW10 VW12AWMW0 MW4OW AC2 1160 76 5 2 8比較操作指令 3 雙字整數(shù)比較 雙字整數(shù)比較用于比較兩個雙字長整數(shù)值IN1和IN2的大小 雙字整數(shù)比較是有符號的 雙字整數(shù)范圍為16 80000000和16 7FFFFFFF之間 比較式可以是LDD AD或OD后直接加比較運算符構(gòu)成 如 LDD AD OD 等 雙字整數(shù)IN1和IN2的尋址范圍 VD ID QD MD SD SMD LD HC AC VD AC LD和常數(shù) 指令格式例 LDD VD10 VD14ADMD0 MD8OD AC0 1160000 返回 77 5 2 8比較操作指令 4 實數(shù)比較 實數(shù)比較用于比較兩個雙字長實數(shù)值IN1和IN2的大小 實數(shù)比較是有符號的 負(fù)實數(shù)范圍為 1 175495E 38和 3 402823E 38 正實數(shù)范圍為 1 175495E 38和 3 402823E 38 比較式可以是LDR AR或OR后直接加比較運算符構(gòu)成 如 LDR AR OR 等 整數(shù)IN1和IN2的尋址范圍 VD ID QD MD SD SMD LD AC VD AC LD和常數(shù) 指令格式例 LDR VD10 VD18ARMD0 MD12OR AC1 1160 478 78 5 2 8比較操作指令 5 應(yīng)用舉例 一自動倉庫存放某種貨物 最多6000箱 需對所存的貨物進(jìn)出計數(shù) 貨物多于1000箱 燈L1亮 貨物多于5000箱 燈L2亮 其中 L1和L2分別受Q0 0和Q0 1控制 數(shù)值1000和5000分別存儲在VW20和VW30字存儲單元中 本控制系統(tǒng)的程序如圖5 30所示 程序執(zhí)行時序如圖5 31所示 79 5 2 8比較操作指令 LDI0 0 增計數(shù)出入端LDI0 1 減計數(shù)出入端LDI0 2 復(fù)位出入端CTUDC30 10000 增減計數(shù) 設(shè)定脈沖數(shù)為10000LDW C30 VW20 比較計數(shù)器 當(dāng)前值是否大于等 于VW20中的值 1000 Q0 0 輸出觸點LDW C30 VW30 比較計數(shù)器 當(dāng)前值是否大于等 于VW30中的值 5000 Q0 1 輸出觸點 圖5 30程序舉例 返回 80 時序圖 圖5 31時序圖 81 5 3S7 200PLC的功能指令及編程方法 PLC實際上就是工業(yè)控制計算機 它具有計算機控制系統(tǒng)的功能 例如算術(shù)邏輯運算 程序流控制 通信等等極為強大的功能 這些功能通常是通過功能指令的形式來實現(xiàn)的 功能指令 FunctionInstruction 又稱為應(yīng)用指令 它是指令系統(tǒng)中應(yīng)用于復(fù)雜控制的指令 功能指令包括 數(shù)據(jù)處理指令 算術(shù)邏輯運算指令 表功能指令 轉(zhuǎn)換指令 中斷指令 高速處理指令等等 這些功能指令實際上是廠商為滿足各種客戶的特殊需要而開發(fā)的通用子程序 返回 82 5 3 1數(shù)學(xué)運算指令 1 加法運算指令加法指令是對有符號數(shù)進(jìn)行相加操作 包括 整數(shù)加法 雙整數(shù)加法和實數(shù)加法 加法指令影響的特殊存儲器位 SM1 0 零 SM1 1 溢出 SM1 2 負(fù) 使能流輸出ENO斷開的出錯條件 0006 間接尋址 SM1 1 溢出 SM4 3 運行時間 1 整數(shù)加法指令 I 使能輸入有效時 將兩個單字長 16位 的符號整數(shù)IN1和IN2相加 產(chǎn)生一個16位整數(shù)結(jié)果OUT 返回 83 5 3 1數(shù)學(xué)運算指令 在LAD和FBD中 以指令模塊形式編程 執(zhí)行結(jié)果 IN1 IN2 OUT 在STL中 通常將IN2與OUT共用一個地址單元 執(zhí)行結(jié)果 IN1 OUT OUT 指令格式 IIN1 OUT 程序?qū)嵗?LDI0 1 使能輸入端MOVWVW0 VW4 VW0 VW4 IVW2 VW4 VW2 VW4 VW4 LAD中IN2和OUT可用同一單元 圖5 33整數(shù)加法例b 84 5 3 1數(shù)學(xué)運算指令 2 雙整數(shù)加法指令 D 3 實數(shù)加法指令 R 使能輸入有效時 將兩個雙字長 32位 的符號整數(shù)IN1和IN2相加 產(chǎn)生一個32位整數(shù)結(jié)果OUT 指令格式 DIN1 OUT 使能輸入有效時 將兩個雙字長 32位 的實數(shù)IN1和IN2相加 產(chǎn)生一個32位實數(shù)結(jié)果OUT 指令格式 RIN1 OUT 85 5 3 1數(shù)學(xué)運算指令 2 減法運算指令減法指令是對有符號數(shù)進(jìn)行相減操作 包括 整數(shù)減法 雙整數(shù)減法和實數(shù)減法 這三種減法指令與所對應(yīng)的加法指令除運算法則不同之外 其他方面基本相同 減法指令影響的特殊存儲器位 SM1 0 零 SM1 1 溢出 SM1 2 負(fù) 使能流輸出ENO斷開的出錯條件 0006 間接尋址 SM1 1 溢出 SM4 3 運行時間 整數(shù)減法 雙整數(shù)減法 實數(shù)減法 86 5 3 1數(shù)學(xué)運算指令 程序?qū)嵗?指令格式 IIN2 OUT 整數(shù)減法 OUT IN2 OUT DIN2 OUT 雙整數(shù)減法 RIN2 OUT 實數(shù)減法 LDI0 0 使能輸入端 IVW2 VW0 整數(shù)減法 VW0 VW2 VW0 表5 16操作數(shù)執(zhí)行前后的結(jié)果 87 5 3 1數(shù)學(xué)運算指令 3 乘法運算指令乘法運算指令是對有符號數(shù)進(jìn)行相乘運算 包括 整數(shù)乘法 完全整數(shù)乘法 雙整數(shù)乘法和實數(shù)乘法 乘法指令影響的特殊存儲器位 SM1 0 零 SM1 1 溢出 SM1 2 負(fù) SM1 3 除數(shù)為0 使能流輸出ENO斷開的出錯條件 0006 間接尋址 SM1 1 溢出 SM1 3 除數(shù)為0 SM4 3 運行時間 1 整數(shù)乘法指令 I 使能輸入有效時 將兩個單字長 16位 的符號整數(shù)IN1和IN2相乘 產(chǎn)生一個16位整數(shù)結(jié)果OUT 指令格式 IIN1 OUT 返回 88 5 3 1數(shù)學(xué)運算指令 程序?qū)嵗?2 完全整數(shù)乘法指令 MUL LDI0 0 使能輸入端 IVW0 VW2 整數(shù)乘法 VW0 VW2 VW2 使能輸入有效時 將兩個單字長 16位 的符號整數(shù)IN1和IN2相乘 產(chǎn)生一個32位雙整數(shù)結(jié)果OUT 指令格式 IIN1 OUT 32位OUT的低位字 16位 被用作乘數(shù) 89 5 3 1數(shù)學(xué)運算指令 3 雙整數(shù)乘法指令 D程序?qū)嵗?IN2與OUT不是公用一個地址單元時 使能輸入有效時 將兩個雙字長 32位 的符號整數(shù)IN1和IN2相乘 產(chǎn)生一個32位整數(shù)結(jié)果OUT 指令格式 DIN1 OUT LDI0 0 使能輸入端MOVDVD0 VD6 VD0 VD6 DVD2 VD6 雙整數(shù)乘法 圖5 36雙整數(shù)乘法例 90 5 3 1數(shù)學(xué)運算指令 使能輸入有效時 將兩個雙字長 32位 的符號整數(shù)IN1和IN2相乘 產(chǎn)生一個32位整數(shù)結(jié)果OUT 指令格式 RIN1 OUT 4 實數(shù)乘法指令 R4 除法運算指令除法運算指令是對有符號數(shù)進(jìn)行相除操作 包括 整數(shù)除法 完全整數(shù)除法 雙整數(shù)除法和實數(shù)除法 這四種除法指令與所對應(yīng)的乘法指令除運算法則不同之外 其他方面基本相同 除法指令影響的特殊存儲器位 SM1 0 零 SM1 1 溢出 SM1 2 負(fù) SM1 3 除數(shù)為0 91 5 3 1數(shù)學(xué)運算指令 使能流輸出ENO斷開的出錯條件 0006 間接尋址 SM1 1 溢出 SM1 3 除數(shù)為0 SM4 3 運行時間 指令格式 IIN2 OUT 整數(shù)除法 OUT IN2 OUT DIVIN2 OUT 整數(shù)完全除法 DIN2 OUT 雙整數(shù)除法 RIN2 OUT 實數(shù)除法 返回 92 5 3 1數(shù)學(xué)運算指令 程序?qū)嵗?在整數(shù)除法中 兩個16位的整數(shù)相除 產(chǎn)生一個16位的整數(shù)商 不保留余數(shù) 雙整數(shù)除法也同樣過程 只是位數(shù)變?yōu)?2位 在整數(shù)完全除法中 兩個16位的符號整數(shù)相除 產(chǎn)生一個32位結(jié)果 其中 低16位為商 高16位為余數(shù) 32位結(jié)果的低16位運算前期被兼用存放被除數(shù) LDI0 0 使能輸入端MOVW 12345 VW12 12345 VW12MOVW 100 VW20 100 VW20LDI0 1 使能輸入端DIVVW20 VD10 VW12 VW20 VD10 圖5 37整數(shù)完全除法例 指令執(zhí)行結(jié)果 VW10 45 為余數(shù) VW12 123 為商 VD10 45123 93 5 3 1數(shù)學(xué)運算指令 5 增減指令增 減指令 又稱自增和自減 是對無符號或有符號整數(shù)進(jìn)行自動增加或減少一個單位的操作 數(shù)據(jù)長度可以是字節(jié) 字或雙字 使能流輸出ENO斷開的出錯條件 0006 間接尋址 SM1 1 溢出 SM4 3 運行時間 在LAD和FBD中 以指令模塊形式編程 執(zhí)行結(jié)果 IN 1 OUT和IN 1 OUT 在STL中 執(zhí)行結(jié)果 OUT 1 OUT和OUT 1 OUT 94 5 3 1數(shù)學(xué)運算指令 1 字節(jié)增和字節(jié)減指令 INCB DECB 2 字增和字減指令 INCW DECW 3 雙字增和雙字減指令 INCD DECD 使能輸入有效時 把一雙字長的有符號輸入數(shù)IN加1或減1 得到一個雙字長的有符號輸出結(jié)果OUT 指令格式 INCDOUT DECDOUT 使能輸入有效時 把一字節(jié)長的無符號輸入數(shù)IN加1或減1 得到一個字節(jié)的無符號輸出結(jié)果OUT 指令格式 INCBOUT DECBOUT 使能輸入有效時 把一字長的有符號輸入數(shù)IN加1或減1 得到一個字長的有符號輸出結(jié)果OUT 指令格式 INCWOUT DECWOUT 95 5 3 1數(shù)學(xué)運算指令 6 數(shù)學(xué)函數(shù)指令數(shù)學(xué)函數(shù)指令包括平方根 自然對數(shù) 指數(shù) 三角函數(shù)等幾個常用的函數(shù)指令 運算輸入輸出數(shù)據(jù)都為實數(shù) 結(jié)果如果大于32位二進(jìn)制表示的范圍 則產(chǎn)生溢出 1 平方根指令 SQRT 把一個雙字長 32位 的實數(shù)IN開方 得到32位的實數(shù)結(jié)果OUT 指令格式 SQRTIN OUT 返回 96 5 3 1數(shù)學(xué)運算指令 2 自然對數(shù)指令 LN 3 指數(shù)指令 EXP 把一個雙字長 32位 的實數(shù)IN取以e為底的指數(shù) 得到32位的實數(shù)結(jié)果OUT 指令格式 EXPIN OUT 把一個雙字長 32位 的實數(shù)IN取自然對數(shù) 得到32位的實數(shù)結(jié)果OUT 指令格式 LNIN OUT 97 5 3 1數(shù)學(xué)運算指令 4 三角函數(shù)指令 SIN COS TAN程序?qū)嵗?求65 的正切值 即正弦 余弦 正切指令 將把一個雙字長 32位 的實數(shù)弧度值IN分別取正弦 余弦 正切 各得到32位的實數(shù)結(jié)果OUT 指令格式 SININ OUT COSIN OUT TANIN OUT 98 5 3 1數(shù)學(xué)運算指令 LDI0 0 使能輸入端MOVR3 14159 AC0 3 14159 AC0 R180 0 AC0 3 14159 180 0 AC0 R65 0 AC0 65 0 AC0 AC0TANAC0 AC1 TAN AC0 AC1 計算結(jié)果為TAN 65 2 1445 AC1 AC1 2 1445 圖5 38求三角函數(shù)例 返回 99 5 3 2邏輯運算指令 邏輯運算是對無符號數(shù)進(jìn)行的邏輯處理 主要包括邏輯與 邏輯或 邏輯異或和取反等運算指令 按操作數(shù)長度可分為字節(jié) 字和雙字邏輯運算 IN1 IN2 OUT操作數(shù)的數(shù)據(jù)類型分別為 B W DW 邏輯運算指令影響的特殊存儲器位 SM1 0 零 使能流輸出ENO斷開的出錯條件 0006 間接尋址 SM4 3 運行時間 返回 100 5 3 2邏輯運算指令 1 邏輯與運算指令 ANDB 字節(jié)邏輯與指令 使能輸入有效時 把兩個字節(jié)的邏輯數(shù)按位求與 得到一個字節(jié)長的邏輯輸出結(jié)果OUT ANDW 字邏輯與指令 使能輸入有效時 把兩個字的邏輯數(shù)按位求與 得到一個字長的邏輯輸出結(jié)果OUT ANDD 雙字邏輯與指令 使能輸入有效時 把兩個雙字的邏輯數(shù)按位求與 得到一個雙字長的邏輯輸出結(jié)果OUT 指令格式 ANDBIN1 OUT ANDWIN1 OUT ANDDIN1 OUT 101 5 3 2邏輯運算指令 2 邏輯或運算指令 ORB 字節(jié)邏輯或指令 使能輸入有效時 把兩個字節(jié)的邏輯數(shù)按位求或 得到一個字節(jié)長的邏輯輸出結(jié)果OUT ORW 字邏輯或指令 使能輸入有效時 把兩個字的邏輯數(shù)按位求或 得到一個字長的邏輯輸出結(jié)果OUT ORD 雙字邏輯或指令 使能輸入有效時 把兩個雙字的邏輯數(shù)按位求或 得到一個雙字長的邏輯輸出結(jié)果OUT 指令格式 ORBIN1 OUT ORWIN1 OUT ORDIN1 OUT 102 5 3 2邏輯運算指令 3 邏輯異或運算指令 XORB 字節(jié)邏輯異或指令 使能輸入有效時 把兩個字節(jié)的邏輯數(shù)按位求異或 得到一個字節(jié)長的邏輯輸出結(jié)果OUT XORW 字邏輯異或指令 使能輸入有效時 把兩個字的邏輯數(shù)按位求異或 得到一個字長的邏輯輸出結(jié)果OUT XORD 雙字邏輯異或指令 使能輸入有效時 把兩個雙字的邏輯數(shù)按位求異或 得到一個雙字長的邏輯輸出結(jié)果OUT 指令格式 XORBIN1 OUT XORWIN1 OUT XORDIN1 OUT 103 5 3- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
30 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- S7-200 PLC的指令系統(tǒng)ppt課件 S7 200 PLC 指令系統(tǒng) ppt 課件
鏈接地址:http://m.zhongcaozhi.com.cn/p-5843082.html