




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五章
S7-1200PLC擴(kuò)展指令(LAD)日期和時(shí)間1字符串+字符2中斷3思考與練習(xí)4理論課程第五章
S7-1200PLC擴(kuò)展指令(LAD)定時(shí)啟停水泵及保養(yǎng)提醒服務(wù)1將PLC當(dāng)前日期和時(shí)間內(nèi)容發(fā)送給上位機(jī)2流水線檢測(cè)與統(tǒng)計(jì)裝置3第五章
S7-1200PLC擴(kuò)展指令(LAD)實(shí)踐操作5.1日期和時(shí)間S7-1200PLC可以通過相應(yīng)的時(shí)間功能指令可實(shí)現(xiàn)對(duì)其系統(tǒng)或本地時(shí)間的操作,大致可以完成以下功能:1、讀取CPU的系統(tǒng)/本地時(shí)鐘。2、設(shè)置的系統(tǒng)/本地時(shí)鐘。3、設(shè)置的時(shí)區(qū)。4、設(shè)置、啟動(dòng)、停止和讀取CPU的32位運(yùn)行小時(shí)計(jì)數(shù)器。系統(tǒng)/本地時(shí)間的區(qū)別:1、系統(tǒng)時(shí)間(SystemTime):UTC標(biāo)準(zhǔn)時(shí)間(一般指國(guó)際標(biāo)準(zhǔn)時(shí)間)。2、本地時(shí)間(LocalTime):根據(jù)S7-1200CPU所處時(shí)區(qū)設(shè)置的本地標(biāo)準(zhǔn)時(shí)間(一般我們?cè)O(shè)置為北京時(shí)間)。3、夏令時(shí):我國(guó)在1992年就開始停止實(shí)行,所以一般國(guó)內(nèi)使用不需要勾選,如果出口到個(gè)別國(guó)家時(shí)要主要是否需要夏令時(shí)。5.1日期和時(shí)間T_CONV:轉(zhuǎn)換時(shí)間并提取使用指令“T_CONV”將IN輸入?yún)?shù)的數(shù)據(jù)類型轉(zhuǎn)換為OUT輸出上輸出的數(shù)據(jù)類型。從輸入和輸出的指令框中選擇進(jìn)行轉(zhuǎn)換的數(shù)據(jù)格式。在3.2.6時(shí)間和日期數(shù)據(jù)類型中我們學(xué)習(xí)了關(guān)于時(shí)間的數(shù)據(jù)類型,其中DTL數(shù)據(jù)類型它是一個(gè)組合時(shí)間長(zhǎng)型,其中包含了年、月、日、星期、時(shí)、分、秒、納秒。Byte組件名稱數(shù)據(jù)類型取值范圍0YEARUInt1970到255412MONTHUSInt1到123DAYUSInt1到314WEEKDAYUSInt1(星期日)到7(星期六)5HOURUSInt0到236MINUTEUSInt0到597SECONDUSInt0到598NANOSECONDUDInt0到999999999910115.1日期和時(shí)間T_CONV:轉(zhuǎn)換時(shí)間并提取【例5-1】當(dāng)M0.0觸點(diǎn)接通后,提取DB1數(shù)據(jù)塊中DTL1變量中的年月日數(shù)據(jù)內(nèi)容放入DATE1變量中,同時(shí)也提取DB1數(shù)據(jù)塊中DTL1變量中的時(shí)分秒數(shù)據(jù)內(nèi)容放入TOD1變量中。5.1日期和時(shí)間T_COMBINE:組合時(shí)間使用指令“T_COMBINE”將合并日期值和時(shí)間值,并生成一個(gè)合并日期時(shí)間值。日期在輸入?yún)?shù)IN1中輸入。對(duì)于數(shù)據(jù)類型DATE,值的取值范圍請(qǐng)使用1990-01-01至2089-12-31之間的值(系統(tǒng)不會(huì)對(duì)此進(jìn)行檢查)。此時(shí)間在IN2輸入值(TOD數(shù)據(jù)類型)中輸入。合并后的日期和時(shí)間值數(shù)據(jù)類型在OUT輸出值中輸出。5.1日期和時(shí)間T_COMBINE:組合時(shí)間【例5-2】當(dāng)M0.1觸點(diǎn)接通后,將DB1數(shù)據(jù)塊中DATE1變量中的數(shù)據(jù)與DB1數(shù)據(jù)塊中TOD1變量中的數(shù)據(jù)進(jìn)行數(shù)據(jù)整合,整合到DB1數(shù)據(jù)塊中的DTL2變量中。5.1日期和時(shí)間T_ADD:時(shí)間加運(yùn)算使用指令“T_ADD”將IN1輸入中的時(shí)間信息加到IN2輸入中的時(shí)間信息上??梢栽贠UT輸出參數(shù)中查詢結(jié)果。它有兩種格式的相加操作:1、將一個(gè)時(shí)間段加到另一個(gè)時(shí)間段上。將一個(gè)TIME數(shù)據(jù)類型加到另一個(gè)TIME數(shù)據(jù)類型上。2、將一個(gè)時(shí)間段加到某個(gè)時(shí)間上。將一個(gè)TIME數(shù)據(jù)類型加到DTL數(shù)據(jù)類型上。在指令框中可以選擇輸入IN1的數(shù)據(jù)類型,輸出參數(shù)OUT中的值將對(duì)應(yīng)IN1的數(shù)據(jù)類型。在IN2輸入?yún)?shù)中,只能指定TIME格式的時(shí)間信息。5.1日期和時(shí)間T_ADD:時(shí)間加運(yùn)算【例5-3】設(shè)備系統(tǒng)時(shí)間實(shí)時(shí)傳送至DB1數(shù)據(jù)塊DTL1變量中,隨著時(shí)間的推移,用戶發(fā)現(xiàn)系統(tǒng)時(shí)間與當(dāng)前實(shí)際時(shí)間有慢5秒鐘,請(qǐng)?jiān)O(shè)計(jì)一個(gè)程序讓其校正時(shí)間。5.1日期和時(shí)間T_SUB:時(shí)間相減使用指令“T_SUB”將IN1輸入?yún)?shù)中的時(shí)間值減去IN2輸入?yún)?shù)中的時(shí)間值??赏ㄟ^輸出參數(shù)OUT查詢差值。它有兩種格式的相加操作:1、將時(shí)間段減去另一個(gè)時(shí)間段。將數(shù)據(jù)類型為TIME的時(shí)間段減去數(shù)據(jù)類型為TIME的另一個(gè)時(shí)間段。結(jié)果可輸出到TIME格式的變量中。2、從某個(gè)時(shí)間中減去時(shí)間段:將數(shù)據(jù)類型為TIME的時(shí)間段減去數(shù)據(jù)類型為DTL的時(shí)間。結(jié)果可輸出到DTL格式的變量中。在指令框中可以選擇輸入IN1的數(shù)據(jù)類型,輸出參數(shù)OUT中的值將對(duì)應(yīng)IN1的數(shù)據(jù)類型。在IN2輸入?yún)?shù)中,只能指定TIME格式的時(shí)間信息。5.1日期和時(shí)間T_SUB:時(shí)間相減【例5-4】設(shè)備系統(tǒng)時(shí)間實(shí)時(shí)傳送至DB1數(shù)據(jù)塊DTL2變量中,隨著時(shí)間的推移,用戶發(fā)現(xiàn)系統(tǒng)時(shí)間與當(dāng)前實(shí)際時(shí)間有快3秒鐘,請(qǐng)?jiān)O(shè)計(jì)一個(gè)程序讓其校正時(shí)間。5.1日期和時(shí)間T_DIFF:時(shí)間值相減使用指令“T_DIFF”將IN1輸入?yún)?shù)中的時(shí)間值減去IN2輸入?yún)?shù)中的時(shí)間值。結(jié)果將發(fā)送到輸出參數(shù)OUT中。如果IN2輸入?yún)?shù)中的時(shí)間值大于IN1輸入?yún)?shù)中的時(shí)間值,則OUT輸出參數(shù)中將輸出一個(gè)負(fù)數(shù)結(jié)果。如果減法運(yùn)算的結(jié)果超出TIME值范圍,則使能輸出ENO的值為“0”。根據(jù)所用的數(shù)據(jù)類型,獲得的結(jié)果值截?cái)嗷驗(yàn)椤?”(0:00)。如果選擇DTL數(shù)據(jù)類型的被減數(shù)和減數(shù),則計(jì)算結(jié)果的數(shù)據(jù)類型為TIME。不能大于24天,否則使能輸出ENO的值為“0”,且結(jié)果為“0”。在指令框中可以選擇輸入IN1的數(shù)據(jù)類型,輸出參數(shù)OUT中的值將對(duì)應(yīng)IN1的數(shù)據(jù)類型。在IN2輸入?yún)?shù)中,只能指定TIME格式的時(shí)間信息。5.1日期和時(shí)間T_DIFF:時(shí)間值相減【例5-5】計(jì)算當(dāng)前時(shí)間與夜間0點(diǎn)還有多少時(shí)間,將結(jié)果傳送至DB1數(shù)據(jù)塊Time1中,請(qǐng)?jiān)O(shè)計(jì)一個(gè)程序。5.1日期和時(shí)間WR_SYS_T:設(shè)置時(shí)間使用指令“WR_SYS_T”,可設(shè)置CPU時(shí)鐘的日期和時(shí)間(模塊時(shí)間)。在輸入?yún)?shù)IN中輸入日期和時(shí)間。輸入DTL值必須介于以下范圍內(nèi):最小為DTL#1970-01-01-00:00:00.0,最大為DTL#2200-12-31-23:59:59.999999999。可以在RET_VAL輸出參數(shù)中查詢?cè)趫?zhí)行該指令期間是否發(fā)生了錯(cuò)誤。5.1日期和時(shí)間RD_SYS_T:讀取時(shí)間使用指令“RD_SYS_T”,可以讀取CPU時(shí)鐘的當(dāng)前日期和當(dāng)前時(shí)間(模塊時(shí)間)。在此指令的OUT輸出參數(shù)中輸出讀取的日期。可以在RET_VAL輸出參數(shù)中查詢?cè)趫?zhí)行該指令期間是否發(fā)生了錯(cuò)誤。5.1日期和時(shí)間WR_LOC_T:寫入本地時(shí)間使用指令“WR_LOC_T”,可設(shè)置CPU時(shí)鐘的日期和時(shí)間。在輸入?yún)?shù)LOCTIME中,輸入日期和時(shí)間作為本地時(shí)間。輸入DTL值必須介于以下范圍內(nèi):最小值為DTL#1970-01-01-00:00:00.0,最大值為DTL#2200-12-3123:59:59.999999999。可以在RET_VAL輸出參數(shù)中查詢?cè)趫?zhí)行該指令期間是否發(fā)生了錯(cuò)誤。5.1日期和時(shí)間RD_LOC_T:讀取本地時(shí)間使用指令“RD_LOC_T”,可以從CPU時(shí)鐘讀取當(dāng)前本地時(shí)間,并將此時(shí)間在OUT輸出中輸出。在輸出本地時(shí)間時(shí),會(huì)用到夏令時(shí)和標(biāo)準(zhǔn)時(shí)間的時(shí)區(qū)和開始時(shí)間(已在CPU時(shí)鐘的組態(tài)中設(shè)置)的相關(guān)信息??梢栽赗ET_VAL輸出參數(shù)中查詢?cè)趫?zhí)行該指令期間是否發(fā)生了錯(cuò)誤。5.1.10實(shí)操案例11:定時(shí)啟停水泵及保養(yǎng)提醒服務(wù)任務(wù):使用S7-1200PLC實(shí)現(xiàn)水泵定時(shí)啟停及保養(yǎng)提醒功能控制。每周一至周五的08:30-11:30和14:30-17:00啟動(dòng)水泵,其它時(shí)間水泵停止工作;每周六至周日的08:00-20:00啟動(dòng)水泵,其它時(shí)間水泵停止工作;每月的5日工作時(shí)間08:00-12:00提醒指示燈以1Hz進(jìn)行閃爍,若工人維修保養(yǎng)設(shè)備可人工復(fù)位指示燈。5.1.10實(shí)操案例11:定時(shí)啟停水泵及保養(yǎng)提醒服務(wù)根據(jù)PLC控制要求,根據(jù)S7-1200硬件輸入/輸出點(diǎn)分配如表所示。輸入點(diǎn)輸出點(diǎn)輸入繼電器名稱輸出繼電器名稱I0.0啟動(dòng)按鈕Q0.0水泵設(shè)備I0.1停止按鈕Q0.1保養(yǎng)指示燈I0.2復(fù)位按鈕
5.1.10實(shí)操案例11:定時(shí)啟停水泵及保養(yǎng)提醒服務(wù)根據(jù)控制要求及I/O分配表,結(jié)合實(shí)際情況,停止按鈕用常閉,輸入點(diǎn)并沒有熱過載元件,所以該元件將硬件接入輸出點(diǎn)設(shè)備上,其接線圖如圖所示。5.1.10實(shí)操案例11:定時(shí)啟停水泵及保養(yǎng)提醒服務(wù)編寫程序5.1.10實(shí)操案例11:定時(shí)啟停水泵及保養(yǎng)提醒服務(wù)5.1.10實(shí)操案例11:定時(shí)啟停水泵及保養(yǎng)提醒服務(wù)調(diào)試程序由于條件時(shí)間等待過于長(zhǎng)久,我們?cè)贒B1數(shù)據(jù)塊中新建一個(gè)DTL數(shù)據(jù)類型和錯(cuò)誤顯示1的INT數(shù)據(jù)類型,可以通過“WR_LOC_T”指令對(duì)系統(tǒng)進(jìn)行人為設(shè)定時(shí)間,例如設(shè)定DTL#2024-04-05-07:59:50,等待10秒鐘看其跳入8點(diǎn)正,水泵保養(yǎng)提醒服務(wù)是否會(huì)接通。也可以設(shè)定一個(gè)離開水泵運(yùn)行時(shí)間值,看水泵是否會(huì)從運(yùn)行自動(dòng)切換為停止工作。5.2字符串+字符S_MOVE:移動(dòng)字符串使用指令“S_MOVE”將參數(shù)IN中字符串(W)STRING的內(nèi)容寫入在參數(shù)OUT中指定的數(shù)據(jù)區(qū)域。要復(fù)制數(shù)據(jù)類型為ARRAY的變量時(shí),可使用指令“MOVE_BLK”和“UMOVE_BLK”。當(dāng)“Start”開關(guān)接通時(shí),IN引腳的內(nèi)容未傳送給OUT;當(dāng)“Start”開關(guān)接通時(shí),“DB1”.StringValueOUT存儲(chǔ)了’我愛你,中國(guó)!’字符串;當(dāng)“Start”開關(guān)再次斷開,“DB1”.StringValueOUT依舊存儲(chǔ)了’我愛你,中國(guó)!’字符串。5.2字符串+字符S_CONV:轉(zhuǎn)換字符串(轉(zhuǎn)換為數(shù)值)使用指令“S_CONV”將IN輸入中的值轉(zhuǎn)換為OUT輸出中指定的數(shù)據(jù)格式。通過為OUT輸出參數(shù)選擇數(shù)據(jù)類型,確定轉(zhuǎn)換的輸出格式。5.2字符串+字符S_CONV:轉(zhuǎn)換字符串(轉(zhuǎn)換為字符串)使用指令“S_CONV”將IN輸入中的值轉(zhuǎn)換為OUT輸出中指定的數(shù)據(jù)格式。通過為OUT輸出參數(shù)選擇數(shù)據(jù)類型,確定轉(zhuǎn)換的輸出格式。5.2字符串+字符STRG_VAL:將字符串轉(zhuǎn)換為數(shù)字值使用指令“STRG_VAL”將將字符串轉(zhuǎn)換為整數(shù)或浮點(diǎn)數(shù)。在IN輸入?yún)?shù)中指定要轉(zhuǎn)換的字符串,通過為OUT輸出參數(shù)選擇數(shù)據(jù)類型,確定輸出值的格式。轉(zhuǎn)換從字符串IN中的字符偏移量P位置開始,并一直進(jìn)行到字符串的結(jié)尾,或者一直進(jìn)行到遇到第一個(gè)不是“+”、“-”、“.”、“,”、“e”、“E”或“0”到“9”的字符為止。結(jié)果放置在參數(shù)OUT中指定的位置。如果發(fā)現(xiàn)無(wú)效字符,將取消轉(zhuǎn)換過程即ENO狀態(tài)為0。5.2字符串+字符STRG_VAL:將字符串轉(zhuǎn)換為數(shù)字值FORMATPOUT(值)ENO狀態(tài)FORMATPOUT(值)ENO狀態(tài)000000.00000100.001-12345.011-12.3451212345.01212.345132345.0132.34514345.0140.34515345.015345.01645.01645.0175.0175.0180.0080.005.2字符串+字符VAL_STRG:將數(shù)字值轉(zhuǎn)換為字符串使用指令“VAL_STRG”將數(shù)字值轉(zhuǎn)換為字符串。在IN輸入?yún)?shù)中指定要轉(zhuǎn)換的值。通過選擇數(shù)據(jù)類型來決定數(shù)字值的格式??梢栽贠UT輸出參數(shù)中查詢轉(zhuǎn)換結(jié)果。轉(zhuǎn)換允許的字符包括數(shù)字“0”到“9”、小數(shù)點(diǎn)、小數(shù)撇、計(jì)數(shù)制“E”和“e”,以及加減號(hào)字符。無(wú)效字符將中斷轉(zhuǎn)換過程。使用P參數(shù)指定從字符串中的哪個(gè)字符開始寫入結(jié)果。例如,如果P參數(shù)中指定值“2”,則從字符串的第二個(gè)字符開始保存轉(zhuǎn)換值。使用SIZE參數(shù)指定待寫入字符串的字符數(shù)。這從P參數(shù)中指定的字符開始計(jì)數(shù)。如果輸出值比指定長(zhǎng)度短,則結(jié)果將以右對(duì)齊方式寫入字符串??兆址恢脤⑻钊肟崭?。使用FORMAT參數(shù),指定轉(zhuǎn)換期間如何解釋數(shù)字值以及如何將其寫入字符串。只能在USINT參數(shù)中指定FORMAT數(shù)據(jù)類型的變量。5.2字符串+字符VAL_STRG:將數(shù)字值轉(zhuǎn)換為字符串5.2字符串+字符VAL_STRG:將數(shù)字值轉(zhuǎn)換為字符串5.2字符串+字符Strg_TO_Chars:將字符串轉(zhuǎn)換為ArrayofCHAR使用指令“Strg_TO_Chars”,可將數(shù)據(jù)類型為STRING的字符串復(fù)制到ArrayofCHAR或ArrayofBYTE中;或?qū)?shù)據(jù)類型為WSTRING的字符串復(fù)制到ArrayofWCHAR或ArrayofWORD中。該操作只能復(fù)制ASCII字符。引腳聲明數(shù)據(jù)類型存儲(chǔ)區(qū)說明STRGInputString,WStringD、L或常量復(fù)制操作的源PCHARSInputDIntI、Q、M、D、L、P或常量Arrayof(W)CHAR/BYTE/WORD結(jié)構(gòu)中的位置,從該位置處開始寫入字符串的相應(yīng)字符。CHARSInOutVariantD、L復(fù)制操作的目標(biāo),將字符復(fù)制到Arrayof(W)CHAR/BYTE/WORD數(shù)據(jù)類型的結(jié)構(gòu)中。CNTOutputUIntI、Q、M、D、L、P移動(dòng)的字符數(shù)量5.2字符串+字符Strg_TO_Chars:將字符串轉(zhuǎn)換為ArrayofCHAR5.2字符串+字符Chars_TO_Strg:將ArrayofCHAR轉(zhuǎn)換為字符串使用指令“Chars_TO_Strg”,可將字符串從ArrayofCHAR或ArrayofBYTE復(fù)制到數(shù)據(jù)類型為STRING的字符串中;或?qū)⒆址畯腁RRAYofWCHAR或ArrayofWORD復(fù)制到數(shù)據(jù)類型為WSTRING的字符串中。復(fù)制操作僅支持ASCII字符。引腳聲明數(shù)據(jù)類型存儲(chǔ)區(qū)說明CHARSInputVariantD、L復(fù)制操作的源從Arrayof(W)CHAR/BYTE/WORD處開始復(fù)制字符。PCHARSInputDIntI、Q、M、D、L、P或常量Arrayof(W)CHAR/BYTE/WORD中的位置,從該位置處開始復(fù)制字符。CNTInputUIntI、Q、M、D、L、P或常量要復(fù)制的字符數(shù)。使用值“0”將復(fù)制所有字符。STRGOutputString,WStringD、L復(fù)制操作的目標(biāo)(W)STRING數(shù)據(jù)類型的字符串。遵守?cái)?shù)據(jù)類型的最大長(zhǎng)度:STRING:254個(gè)字符WSTRING:254個(gè)字符(默認(rèn))/16382個(gè)字符(最大)5.2字符串+字符Chars_TO_Strg:將ArrayofCHAR轉(zhuǎn)換為字符串5.2字符串+字符MAX_LEN:確定字符串的最大長(zhǎng)度使用指令“MAX_LEN”,可確定輸入?yún)?shù)IN中所指定字符串的最大長(zhǎng)度,并將其作為數(shù)字值輸出到輸出參數(shù)OUT中。目標(biāo)源數(shù)據(jù)為(W)STRING關(guān)鍵字中的每個(gè)變量指定字符串的最大長(zhǎng)度。字符串占用的字節(jié)數(shù)為最大長(zhǎng)度加2。當(dāng)前長(zhǎng)度表示實(shí)際使用的字符位置數(shù)。當(dāng)前長(zhǎng)度必須小于或等于最大長(zhǎng)度。如果該指令在執(zhí)行過程中出錯(cuò),則參數(shù)OUT處將輸出值“0”。5.2字符串+字符LEN:確定字符串的當(dāng)前長(zhǎng)度使用指令“LEN”,可查詢IN輸入?yún)?shù)中指定的字符串當(dāng)前長(zhǎng)度。并將其作為數(shù)值輸出到輸出參數(shù)OUT中。空字符串('')的長(zhǎng)度為零。5.2字符串+字符LEFT:讀取字符串左邊的字符使用“LEFT”指令,提取以IN輸入?yún)?shù)中字符串的第一個(gè)字符開頭的部分字符串??稍贚參數(shù)中指定要提取的字符數(shù)。提取的字符以(W)STRING格式通過OUT輸出參數(shù)輸出。如果要提取的字符數(shù)大于字符串的當(dāng)前長(zhǎng)度,則OUT輸出參數(shù)會(huì)將輸入字符串作為結(jié)果返回。如果L參數(shù)值小于或等于0則將返回空字符串,如果輸入值為空字符串,則將返回空字符串。如果在指令的執(zhí)行過程中發(fā)生錯(cuò)誤而且可寫入OUT輸出參數(shù)中,則將輸出空字符串。5.2字符串+字符RIGHT:讀取字符串右邊的字符使用“RIGHT”指令,提取以IN輸入?yún)?shù)中字符串的最后一個(gè)L長(zhǎng)度的字符串??稍贚參數(shù)中指定要提取的字符長(zhǎng)度。提取的字符以(W)STRING格式通過OUT輸出參數(shù)輸出。如果要提取的字符數(shù)大于字符串的當(dāng)前長(zhǎng)度,則OUT輸出參數(shù)會(huì)將輸入字符串作為結(jié)果返回。如果L參數(shù)值小于或等于0則將返回空字符串,如果輸入值為空字符串,則將返回空字符串。如果在指令的執(zhí)行過程中發(fā)生錯(cuò)誤而且可寫入OUT輸出參數(shù)中,則將輸出空字符串。5.2字符串+字符MID:讀取字符串的中間字符使用“MID”指令,提取IN輸入?yún)?shù)中字符串的一部分。使用P參數(shù)指定要提取的第一個(gè)字符的位置。使用L參數(shù)定義要提取的字符串的長(zhǎng)度。OUT輸出參數(shù)中輸出提取的部分字符串。如果在指令的執(zhí)行過程中發(fā)生錯(cuò)誤而且可寫入OUT輸出參數(shù)中,則將輸出空字符串。在使用“MID”指令時(shí),應(yīng)遵循以下規(guī)則:1、如果待提取的字符數(shù)量超過IN輸入?yún)?shù)中字符串的當(dāng)前長(zhǎng)度,則輸出部分字符串。部分字符串從P字符串開始,到字符串結(jié)尾處結(jié)束。2、如果P參數(shù)中指定的字符位置超出IN輸入?yún)?shù)中字符串的當(dāng)前長(zhǎng)度,則OUT輸出參數(shù)中將輸出空字符串。3、如果P或L參數(shù)的值小于或等于0,則OUT輸出參數(shù)中將輸出空字符串。5.2字符串+字符MID:讀取字符串的中間字符5.2字符串+字符DELETE:刪除字符串中的字符使用“DELETE”指令,刪除IN輸入?yún)?shù)中字符串的一部分。使用P參數(shù)指定要?jiǎng)h除的第一個(gè)字符的位置。在L參數(shù)中指定要?jiǎng)h除的字符數(shù)。剩余的部分字符串以(W)STRING格式通過OUT輸出參數(shù)輸出。如果在指令的執(zhí)行過程中發(fā)生錯(cuò)誤而且可寫入OUT輸出參數(shù)中,則將輸出空字符串。5.2字符串+字符INSERT:在字符串中插入字符使用“INSERT”指令,將IN2輸入?yún)?shù)中的字符串插入到IN1輸入?yún)?shù)中的字符串中。使用P參數(shù)指定開始插入字符的位置。結(jié)果以(W)STRING格式通過OUT輸出參數(shù)輸出。5.2字符串+字符REPLACE:替換字符使用“REPLACE”指令,將IN1輸入中字符串的一部分替換為IN2輸入?yún)?shù)中的字符串。使用P參數(shù)指定要替換的第一個(gè)字符的位置。使用L參數(shù)指定要替換的字符數(shù)。結(jié)果以(W)STRING格式通過OUT輸出參數(shù)輸出。5.2字符串+字符FIND:查找字符使用“FIND”指令,可在IN1輸入?yún)?shù)中的字符串內(nèi)搜索特定的字符串。IN2輸入?yún)?shù)指定要搜索的值,指令將IN1從左向右進(jìn)行搜索,將找到的IN2第一個(gè)字符在IN1所第一次出現(xiàn)的位置值輸出給OUT參數(shù)。如果搜索返回沒有匹配項(xiàng),則OUT輸出參數(shù)中將輸出值“0”。5.2字符串+字符CONCAT:合并字符串使用“CONCAT”指令,將IN1輸入?yún)?shù)中的字符串與IN2輸入?yún)?shù)中的字符串合并在一起。結(jié)果以(W)STRING格式通過OUT參數(shù)輸出。如果生成的字符串長(zhǎng)度大于OUT參數(shù)中指定的變量長(zhǎng)度,則將生成的字符串限制到可用長(zhǎng)度。如果在指令的執(zhí)行過程中發(fā)生錯(cuò)誤而且可寫入OUT輸出參數(shù)中,則將輸出空字符串。5.2字符串+字符ATH:將ASCII字符串轉(zhuǎn)換為十六進(jìn)制數(shù)使用“ATH”指令,將IN輸入?yún)?shù)中指定的ASCII字符串轉(zhuǎn)換為十六進(jìn)制數(shù)。轉(zhuǎn)換結(jié)果輸出到OUT輸出參數(shù)中。使用IN參數(shù)(ASCII)處的指針,可引用以下數(shù)據(jù)類型:STRING,WSTRING,CHAR,BYTE,ArrayofCHAR,ArrayofBYTE,WCHAR,ArrayofWCHAR,ArrayofWORD。使用OUT參數(shù)(十六進(jìn)制)處的指針,可引用以下數(shù)據(jù)類型:ArrayofCHAR,ArrayofBYTE,ArrayofWORD,STRING,BYTE,CHAR,WORD,INT,DWORD,DINT,SINT,USINT,UINT,UDINT。通過參數(shù)N,可指定待轉(zhuǎn)換ASCII字符的數(shù)量。最多可轉(zhuǎn)換32767個(gè)有效ASCII字符?!癆TH”指令只能解釋數(shù)字“0”到“9”、大寫字母“A”到“F”以及小寫字母“a”到“f”,所有其它字符都將轉(zhuǎn)換為0。5.2字符串+字符ATH:將ASCII字符串轉(zhuǎn)換為十六進(jìn)制數(shù)5.2字符串+字符HTA:將十六進(jìn)制數(shù)轉(zhuǎn)換為ASCII字符串使用“HTA”指令,將IN輸入中指定的十六進(jìn)制數(shù)轉(zhuǎn)換為ASCII字符串。轉(zhuǎn)換結(jié)果存儲(chǔ)在OUT參數(shù)指定的地址中。IN參數(shù)與OUT參數(shù)正好是“ATH”指令參數(shù)相反。不同之處是“HTA”指令只能轉(zhuǎn)換結(jié)果由數(shù)字“0”到“9”以及大寫字母“A”到“F”表示。5.2字符串+字符HTA:將十六進(jìn)制數(shù)轉(zhuǎn)換為ASCII字符串5.2.19實(shí)操案例12:將PLC當(dāng)前日期和時(shí)間內(nèi)容發(fā)送給上位機(jī)任務(wù):實(shí)現(xiàn)上位機(jī)HMI內(nèi)顯示PLC內(nèi)的當(dāng)前時(shí)間,PLC采用S7-12001214CAC\DC\RLY。根據(jù)上一小節(jié)日期和時(shí)間所學(xué)指令,我們可以通過指令“”讀取PLC當(dāng)前日期和時(shí)間的DTL數(shù)據(jù)內(nèi)容,然后通過DTL數(shù)據(jù)里的信息進(jìn)行字符串的提取、轉(zhuǎn)換、替換、合并等操作,最終得到想要的“××××年××月××日星期×××?xí)r××分××秒”的信息。因?yàn)槭桥c上位機(jī)連接所以本案例無(wú)I/O分配和PLC外部接線圖。5.2.19實(shí)操案例12:將PLC當(dāng)前日期和時(shí)間內(nèi)容發(fā)送給上位機(jī)編寫程序5.2.19實(shí)操案例12:將PLC當(dāng)前日期和時(shí)間內(nèi)容發(fā)送給上位機(jī)5.2.19實(shí)操案例12:將PLC當(dāng)前日期和時(shí)間內(nèi)容發(fā)送給上位機(jī)5.2.19實(shí)操案例12:將PLC當(dāng)前日期和時(shí)間內(nèi)容發(fā)送給上位機(jī)5.2.19實(shí)操案例12:將PLC當(dāng)前日期和時(shí)間內(nèi)容發(fā)送給上位機(jī)調(diào)試程序由于本書不涉及到上位機(jī)講解,故此該內(nèi)容不做詳細(xì)闡述,讀者可以通過PLC監(jiān)控表來實(shí)現(xiàn)數(shù)據(jù)準(zhǔn)確情況檢驗(yàn)。PLC監(jiān)控表及上位機(jī)HMI界面如圖所示。5.3中斷中斷是CPU停止當(dāng)前的任務(wù)轉(zhuǎn)而去執(zhí)行其他任務(wù)的過程。中斷執(zhí)行前CPU會(huì)對(duì)當(dāng)前的執(zhí)行環(huán)境進(jìn)行保留(保存現(xiàn)場(chǎng)),當(dāng)中斷處理完成后,會(huì)恢復(fù)現(xiàn)場(chǎng)以繼續(xù)執(zhí)行之前的任務(wù)。能夠引發(fā)中斷的事件稱為中斷事件。中斷事件的類型很多,比如硬件中斷、循環(huán)中斷、時(shí)間中斷、延時(shí)中斷等。如果事件的響應(yīng)時(shí)間很短,則可使用硬件中斷。在運(yùn)行過程中,硬件中斷將對(duì)這些事件做出響應(yīng)。每個(gè)硬件中斷可以分配給一個(gè)或多個(gè)硬件中斷OB。這些OB包含對(duì)特定事件的響應(yīng)??梢詾椴煌氖录?chuàng)建硬件中斷。5.3中斷檢測(cè)數(shù)字量輸入上升沿或下降沿的硬件中斷5.3中斷超出模擬量輸入既定下限和上限的硬件中斷5.3中斷高速計(jì)數(shù)器的方向反轉(zhuǎn)、外部重置、上溢/下溢等硬件中斷5.3中斷ATTACH:將OB附加到中斷事件使用指令“ATTACH”為硬件中斷事件指定一個(gè)組織塊(OB)。在OB_NR參數(shù)中輸入組織塊的符號(hào)或數(shù)字名稱。隨后將其分配給EVENT參數(shù)中指定的事件。在EVENT參數(shù)處選擇硬件中斷事件。已經(jīng)生成的硬件中斷事件列在“系統(tǒng)常量”(Systemconstants)下的PLC變量中。如果在成功執(zhí)行“ATTACH”指令后發(fā)生了EVENT參數(shù)中的事件,則將調(diào)用OB_NR參數(shù)中的組織塊并執(zhí)行其程序。5.3中斷硬件組態(tài)并沒有綁定硬件中斷OB組織塊。再通過圖可以看到,當(dāng)%M0.0觸點(diǎn)接通后,%MW10和%MW20的返回值來看,“上升沿2”事件替換綁定到了OB40原有的事件,“下降沿2”事件替換綁定到了OB41原有的事件。5.3中斷DETACH:將OB與中斷事件脫離使用指令“DETACH”將取消組織塊到一個(gè)或多個(gè)硬件中斷事件的現(xiàn)有分配。在OB_NR參數(shù)中輸入組織塊的符號(hào)或數(shù)字名稱。將取消EVENT參數(shù)中指定的事件分配。如果在EVENT參數(shù)處選擇了單個(gè)硬件中斷事件,則將取消OB到該硬件中斷事件的分配。當(dāng)前存在的所有其它分配仍保持激活狀態(tài)??梢允褂貌僮鲾?shù)占位符下拉列表選擇一個(gè)單獨(dú)的硬件中斷事件。如果未選擇硬件中斷事件,則當(dāng)前分配給此OB_NR組織塊的所有事件都會(huì)被分開。5.3中斷DETACH:將OB與中斷事件脫離5.3中斷SET_CINT:設(shè)置循環(huán)中斷參數(shù)使用指令“SET_CINT”將可置位循環(huán)中斷OB的參數(shù)。根據(jù)OB的具體時(shí)間間隔和相位偏移,生成循環(huán)中斷OB的開始時(shí)間。OB的時(shí)間間隔是指周期調(diào)用該OB的時(shí)間間隔。5.3中斷5.3中斷QRY_CINT:查詢循環(huán)中斷參數(shù)使用指令“QRY_CINT”將返回循環(huán)中斷OB的循環(huán)時(shí)間參數(shù)、相位偏移參數(shù)、循環(huán)中斷的狀態(tài)(已啟用、已延遲、已過期等)。5.3中斷SET_TINTL:設(shè)置時(shí)間中斷使用指令“SET_TINTL”用于在用戶程序中設(shè)置時(shí)間中斷組織塊的開始日期和時(shí)間,而不是在硬件配置中進(jìn)行設(shè)置。通過參數(shù)OB_NR輸入待設(shè)置開始日期和時(shí)間的時(shí)間中斷OB編號(hào)。通過參數(shù)SDT可指定調(diào)用時(shí)間中斷OB的開始日期和時(shí)間,通過PERIOD可以調(diào)用時(shí)間中斷OB的重復(fù)調(diào)用頻率周期。5.3中斷CAN_TINT:取消時(shí)間中斷使用指令“CAN_TINT”可用于刪除指定時(shí)間中斷組織塊的開始日期和時(shí)間。這會(huì)取消激活時(shí)間中斷,并且不再調(diào)用該組織塊。如果要重復(fù)調(diào)用時(shí)間中斷,則必須使用指令“SET_TINTL”復(fù)位開始時(shí)間,如果使用帶有參數(shù)ACTIVE=false的指令“SET_TINTL”對(duì)時(shí)間中斷進(jìn)行設(shè)置,則將調(diào)用指令“ACT_TINT”進(jìn)行激活時(shí)間中斷。使用指令“SET_TINTL”時(shí),也可通過參數(shù)ACTIVE=true直接激活時(shí)間中斷。該指令的運(yùn)用一般是配合上位機(jī)進(jìn)行的,它查詢的結(jié)果,可以讓上位機(jī)去獲取,并匹配具體信息。5.3中斷ACT_TINT:?jiǎn)⒂脮r(shí)間中斷使用指令“ACT_TINT”可用于從用戶程序中激活時(shí)間中斷組織塊。在執(zhí)行該指令之前,時(shí)間中斷OB必須已設(shè)置了開始日期和時(shí)間。5.3中斷QRY_TINT:查詢時(shí)間中斷的狀態(tài)使用指令“QRY_TINT”可在STATUS輸出參數(shù)中顯示時(shí)間中斷組織塊的狀態(tài)。該指令的運(yùn)用一般是配合上位機(jī)進(jìn)行的,它查詢的結(jié)果,可以讓上位機(jī)去獲取,并匹配具體信息。位值含義00未使用(始終為“0”)10已啟用時(shí)間中斷1已延遲時(shí)間中斷20時(shí)間中斷未激活或者已過去1已激活時(shí)間中斷40具有在參數(shù)OB_NR中指定的OB編號(hào)的OB不存在1存在編號(hào)如OB_NR參數(shù)所指定的OB60時(shí)間中斷基于系統(tǒng)時(shí)間1時(shí)間中斷基于本地時(shí)間其它未使用(始終為“0”)5.3中斷SRT_DINT:?jiǎn)?dòng)延時(shí)中斷使用指令“SRT_DINT”用于啟動(dòng)延時(shí)中斷,該中斷在超過參數(shù)DTIME指定的延時(shí)時(shí)間后調(diào)用延時(shí)中斷OB。延時(shí)中斷與“TOF”延時(shí)定時(shí)器的功能有些相像,他的“EN”使能接通后只是啟動(dòng)延時(shí)中斷指令,當(dāng)使能斷開時(shí),延時(shí)中斷開始計(jì)時(shí),當(dāng)時(shí)間到了延時(shí)中斷OB將執(zhí)行一次。5.3中斷CAN_DINT:取消延時(shí)中斷使用指令“CAN_DINT”可用于取消啟動(dòng)的延時(shí)中斷,因此也可在組態(tài)的延時(shí)時(shí)間后取消延時(shí)中斷OB的調(diào)用。在OB_NR參數(shù)中,可以指定將取消調(diào)用的組織塊編號(hào)。5.3中斷QRY_DINT:查詢延時(shí)中斷狀態(tài)使用指令“QRY_DINT”可在STATUS輸出參數(shù)中顯示延時(shí)中斷組織塊的狀態(tài)。該指令的運(yùn)用一般是配合上位機(jī)進(jìn)行的,它查詢的結(jié)果,可以讓上位機(jī)去獲取,并匹配具體信息。位值含義00不相關(guān)10由操作系統(tǒng)啟用延時(shí)中斷1禁用延時(shí)中斷20延時(shí)中斷未激活或已完成1激活延時(shí)中斷40指定編號(hào)的延時(shí)中斷OB不存在1指定編號(hào)的延時(shí)中斷OB存在。其它未使用(始終為“0”)5.3.12實(shí)操案例13:流水線檢測(cè)與統(tǒng)計(jì)裝置任務(wù):PLC采用S7-12001214CAC\DC\RLY編寫一臺(tái)流水線檢測(cè)與統(tǒng)計(jì)裝置。具體控制要求如下:(1)當(dāng)設(shè)備連續(xù)30秒內(nèi)連續(xù)未檢測(cè)到流水線上無(wú)工件經(jīng)過傳感器,指示燈以1000ms閃爍;(2)當(dāng)設(shè)備連續(xù)40秒內(nèi)連續(xù)未檢測(cè)到流水線上無(wú)工件經(jīng)過傳感器,指示燈改為以500ms閃爍;(3)當(dāng)設(shè)備連續(xù)50秒內(nèi)連續(xù)未檢測(cè)到流水線上無(wú)工件經(jīng)過傳感器,指示燈改為以3
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版高端定制家具油漆工服務(wù)協(xié)議
- 2025版旅游景區(qū)停車場(chǎng)車位租賃及旅游服務(wù)合作協(xié)議
- 二零二五版體育賽事運(yùn)營(yíng)勞務(wù)派遣與贊助權(quán)益合作協(xié)議
- 二零二五年度房屋過戶稅費(fèi)代理結(jié)算合同
- 二零二五年度建筑工程勞務(wù)作業(yè)人員勞動(dòng)合同范本與解讀
- 二零二五年度農(nóng)產(chǎn)品供應(yīng)商食品安全質(zhì)量保證合同
- 二零二五年度企業(yè)員工培訓(xùn)與人力資源優(yōu)化服務(wù)合同
- 2025版彩鋼結(jié)構(gòu)防火涂料施工與檢測(cè)合同
- 二零二五年區(qū)塊鏈技術(shù)應(yīng)用股東合作協(xié)議范本
- 二零二五年度古建筑修繕監(jiān)理服務(wù)合同范本
- 2025司機(jī)勞務(wù)合同范文
- 河南省2025年全省機(jī)關(guān)事業(yè)單位工勤技能崗位等級(jí)行政事務(wù)人員練習(xí)題及答案
- 心之所向·素履以往+課件-2025-2026學(xué)年高三上學(xué)期開學(xué)第一課主題班會(huì)
- 2025年富士康入職線上測(cè)試題及答案
- 2025興業(yè)銀行宜賓分行社會(huì)招聘(7月)筆試備考試題及答案解析
- 2019-2025年中國(guó)馬養(yǎng)殖行業(yè)市場(chǎng)運(yùn)營(yíng)現(xiàn)狀及投資前景預(yù)測(cè)報(bào)告
- 河南省2020-2024年中考滿分作文136篇
- cems運(yùn)行管理制度
- 中國(guó)上海餐飲市場(chǎng)全面調(diào)研及行業(yè)投資潛力預(yù)測(cè)報(bào)告
- 美容美發(fā)衛(wèi)生知識(shí)培訓(xùn)
- 國(guó)際合作電影項(xiàng)目融資-洞察闡釋
評(píng)論
0/150
提交評(píng)論