西門子S7-1200PLC編程及應(yīng)用教程 課件 第5章 S7-1200 PLC擴展指令(LAD)_第1頁
西門子S7-1200PLC編程及應(yīng)用教程 課件 第5章 S7-1200 PLC擴展指令(LAD)_第2頁
西門子S7-1200PLC編程及應(yīng)用教程 課件 第5章 S7-1200 PLC擴展指令(LAD)_第3頁
西門子S7-1200PLC編程及應(yīng)用教程 課件 第5章 S7-1200 PLC擴展指令(LAD)_第4頁
西門子S7-1200PLC編程及應(yīng)用教程 課件 第5章 S7-1200 PLC擴展指令(LAD)_第5頁
已閱讀5頁,還剩84頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第五章

S7-1200PLC擴展指令(LAD)日期和時間1字符串+字符2中斷3思考與練習(xí)4理論課程第五章

S7-1200PLC擴展指令(LAD)定時啟停水泵及保養(yǎng)提醒服務(wù)1將PLC當(dāng)前日期和時間內(nèi)容發(fā)送給上位機2流水線檢測與統(tǒng)計裝置3第五章

S7-1200PLC擴展指令(LAD)實踐操作5.1日期和時間S7-1200PLC可以通過相應(yīng)的時間功能指令可實現(xiàn)對其系統(tǒng)或本地時間的操作,大致可以完成以下功能:1、讀取CPU的系統(tǒng)/本地時鐘。2、設(shè)置的系統(tǒng)/本地時鐘。3、設(shè)置的時區(qū)。4、設(shè)置、啟動、停止和讀取CPU的32位運行小時計數(shù)器。系統(tǒng)/本地時間的區(qū)別:1、系統(tǒng)時間(SystemTime):UTC標(biāo)準時間(一般指國際標(biāo)準時間)。2、本地時間(LocalTime):根據(jù)S7-1200CPU所處時區(qū)設(shè)置的本地標(biāo)準時間(一般我們設(shè)置為北京時間)。3、夏令時:我國在1992年就開始停止實行,所以一般國內(nèi)使用不需要勾選,如果出口到個別國家時要主要是否需要夏令時。5.1日期和時間T_CONV:轉(zhuǎn)換時間并提取使用指令“T_CONV”將IN輸入?yún)?shù)的數(shù)據(jù)類型轉(zhuǎn)換為OUT輸出上輸出的數(shù)據(jù)類型。從輸入和輸出的指令框中選擇進行轉(zhuǎn)換的數(shù)據(jù)格式。在3.2.6時間和日期數(shù)據(jù)類型中我們學(xué)習(xí)了關(guān)于時間的數(shù)據(jù)類型,其中DTL數(shù)據(jù)類型它是一個組合時間長型,其中包含了年、月、日、星期、時、分、秒、納秒。Byte組件名稱數(shù)據(jù)類型取值范圍0YEARUInt1970到255412MONTHUSInt1到123DAYUSInt1到314WEEKDAYUSInt1(星期日)到7(星期六)5HOURUSInt0到236MINUTEUSInt0到597SECONDUSInt0到598NANOSECONDUDInt0到999999999910115.1日期和時間T_CONV:轉(zhuǎn)換時間并提取【例5-1】當(dāng)M0.0觸點接通后,提取DB1數(shù)據(jù)塊中DTL1變量中的年月日數(shù)據(jù)內(nèi)容放入DATE1變量中,同時也提取DB1數(shù)據(jù)塊中DTL1變量中的時分秒數(shù)據(jù)內(nèi)容放入TOD1變量中。5.1日期和時間T_COMBINE:組合時間使用指令“T_COMBINE”將合并日期值和時間值,并生成一個合并日期時間值。日期在輸入?yún)?shù)IN1中輸入。對于數(shù)據(jù)類型DATE,值的取值范圍請使用1990-01-01至2089-12-31之間的值(系統(tǒng)不會對此進行檢查)。此時間在IN2輸入值(TOD數(shù)據(jù)類型)中輸入。合并后的日期和時間值數(shù)據(jù)類型在OUT輸出值中輸出。5.1日期和時間T_COMBINE:組合時間【例5-2】當(dāng)M0.1觸點接通后,將DB1數(shù)據(jù)塊中DATE1變量中的數(shù)據(jù)與DB1數(shù)據(jù)塊中TOD1變量中的數(shù)據(jù)進行數(shù)據(jù)整合,整合到DB1數(shù)據(jù)塊中的DTL2變量中。5.1日期和時間T_ADD:時間加運算使用指令“T_ADD”將IN1輸入中的時間信息加到IN2輸入中的時間信息上。可以在OUT輸出參數(shù)中查詢結(jié)果。它有兩種格式的相加操作:1、將一個時間段加到另一個時間段上。將一個TIME數(shù)據(jù)類型加到另一個TIME數(shù)據(jù)類型上。2、將一個時間段加到某個時間上。將一個TIME數(shù)據(jù)類型加到DTL數(shù)據(jù)類型上。在指令框中可以選擇輸入IN1的數(shù)據(jù)類型,輸出參數(shù)OUT中的值將對應(yīng)IN1的數(shù)據(jù)類型。在IN2輸入?yún)?shù)中,只能指定TIME格式的時間信息。5.1日期和時間T_ADD:時間加運算【例5-3】設(shè)備系統(tǒng)時間實時傳送至DB1數(shù)據(jù)塊DTL1變量中,隨著時間的推移,用戶發(fā)現(xiàn)系統(tǒng)時間與當(dāng)前實際時間有慢5秒鐘,請設(shè)計一個程序讓其校正時間。5.1日期和時間T_SUB:時間相減使用指令“T_SUB”將IN1輸入?yún)?shù)中的時間值減去IN2輸入?yún)?shù)中的時間值。可通過輸出參數(shù)OUT查詢差值。它有兩種格式的相加操作:1、將時間段減去另一個時間段。將數(shù)據(jù)類型為TIME的時間段減去數(shù)據(jù)類型為TIME的另一個時間段。結(jié)果可輸出到TIME格式的變量中。2、從某個時間中減去時間段:將數(shù)據(jù)類型為TIME的時間段減去數(shù)據(jù)類型為DTL的時間。結(jié)果可輸出到DTL格式的變量中。在指令框中可以選擇輸入IN1的數(shù)據(jù)類型,輸出參數(shù)OUT中的值將對應(yīng)IN1的數(shù)據(jù)類型。在IN2輸入?yún)?shù)中,只能指定TIME格式的時間信息。5.1日期和時間T_SUB:時間相減【例5-4】設(shè)備系統(tǒng)時間實時傳送至DB1數(shù)據(jù)塊DTL2變量中,隨著時間的推移,用戶發(fā)現(xiàn)系統(tǒng)時間與當(dāng)前實際時間有快3秒鐘,請設(shè)計一個程序讓其校正時間。5.1日期和時間T_DIFF:時間值相減使用指令“T_DIFF”將IN1輸入?yún)?shù)中的時間值減去IN2輸入?yún)?shù)中的時間值。結(jié)果將發(fā)送到輸出參數(shù)OUT中。如果IN2輸入?yún)?shù)中的時間值大于IN1輸入?yún)?shù)中的時間值,則OUT輸出參數(shù)中將輸出一個負數(shù)結(jié)果。如果減法運算的結(jié)果超出TIME值范圍,則使能輸出ENO的值為“0”。根據(jù)所用的數(shù)據(jù)類型,獲得的結(jié)果值截斷或為“0”(0:00)。如果選擇DTL數(shù)據(jù)類型的被減數(shù)和減數(shù),則計算結(jié)果的數(shù)據(jù)類型為TIME。不能大于24天,否則使能輸出ENO的值為“0”,且結(jié)果為“0”。在指令框中可以選擇輸入IN1的數(shù)據(jù)類型,輸出參數(shù)OUT中的值將對應(yīng)IN1的數(shù)據(jù)類型。在IN2輸入?yún)?shù)中,只能指定TIME格式的時間信息。5.1日期和時間T_DIFF:時間值相減【例5-5】計算當(dāng)前時間與夜間0點還有多少時間,將結(jié)果傳送至DB1數(shù)據(jù)塊Time1中,請設(shè)計一個程序。5.1日期和時間WR_SYS_T:設(shè)置時間使用指令“WR_SYS_T”,可設(shè)置CPU時鐘的日期和時間(模塊時間)。在輸入?yún)?shù)IN中輸入日期和時間。輸入DTL值必須介于以下范圍內(nèi):最小為DTL#1970-01-01-00:00:00.0,最大為DTL#2200-12-31-23:59:59.999999999??梢栽赗ET_VAL輸出參數(shù)中查詢在執(zhí)行該指令期間是否發(fā)生了錯誤。5.1日期和時間RD_SYS_T:讀取時間使用指令“RD_SYS_T”,可以讀取CPU時鐘的當(dāng)前日期和當(dāng)前時間(模塊時間)。在此指令的OUT輸出參數(shù)中輸出讀取的日期??梢栽赗ET_VAL輸出參數(shù)中查詢在執(zhí)行該指令期間是否發(fā)生了錯誤。5.1日期和時間WR_LOC_T:寫入本地時間使用指令“WR_LOC_T”,可設(shè)置CPU時鐘的日期和時間。在輸入?yún)?shù)LOCTIME中,輸入日期和時間作為本地時間。輸入DTL值必須介于以下范圍內(nèi):最小值為DTL#1970-01-01-00:00:00.0,最大值為DTL#2200-12-3123:59:59.999999999??梢栽赗ET_VAL輸出參數(shù)中查詢在執(zhí)行該指令期間是否發(fā)生了錯誤。5.1日期和時間RD_LOC_T:讀取本地時間使用指令“RD_LOC_T”,可以從CPU時鐘讀取當(dāng)前本地時間,并將此時間在OUT輸出中輸出。在輸出本地時間時,會用到夏令時和標(biāo)準時間的時區(qū)和開始時間(已在CPU時鐘的組態(tài)中設(shè)置)的相關(guān)信息。可以在RET_VAL輸出參數(shù)中查詢在執(zhí)行該指令期間是否發(fā)生了錯誤。5.1.10實操案例11:定時啟停水泵及保養(yǎng)提醒服務(wù)任務(wù):使用S7-1200PLC實現(xiàn)水泵定時啟停及保養(yǎng)提醒功能控制。每周一至周五的08:30-11:30和14:30-17:00啟動水泵,其它時間水泵停止工作;每周六至周日的08:00-20:00啟動水泵,其它時間水泵停止工作;每月的5日工作時間08:00-12:00提醒指示燈以1Hz進行閃爍,若工人維修保養(yǎng)設(shè)備可人工復(fù)位指示燈。5.1.10實操案例11:定時啟停水泵及保養(yǎng)提醒服務(wù)根據(jù)PLC控制要求,根據(jù)S7-1200硬件輸入/輸出點分配如表所示。輸入點輸出點輸入繼電器名稱輸出繼電器名稱I0.0啟動按鈕Q0.0水泵設(shè)備I0.1停止按鈕Q0.1保養(yǎng)指示燈I0.2復(fù)位按鈕

5.1.10實操案例11:定時啟停水泵及保養(yǎng)提醒服務(wù)根據(jù)控制要求及I/O分配表,結(jié)合實際情況,停止按鈕用常閉,輸入點并沒有熱過載元件,所以該元件將硬件接入輸出點設(shè)備上,其接線圖如圖所示。5.1.10實操案例11:定時啟停水泵及保養(yǎng)提醒服務(wù)編寫程序5.1.10實操案例11:定時啟停水泵及保養(yǎng)提醒服務(wù)5.1.10實操案例11:定時啟停水泵及保養(yǎng)提醒服務(wù)調(diào)試程序由于條件時間等待過于長久,我們在DB1數(shù)據(jù)塊中新建一個DTL數(shù)據(jù)類型和錯誤顯示1的INT數(shù)據(jù)類型,可以通過“WR_LOC_T”指令對系統(tǒng)進行人為設(shè)定時間,例如設(shè)定DTL#2024-04-05-07:59:50,等待10秒鐘看其跳入8點正,水泵保養(yǎng)提醒服務(wù)是否會接通。也可以設(shè)定一個離開水泵運行時間值,看水泵是否會從運行自動切換為停止工作。5.2字符串+字符S_MOVE:移動字符串使用指令“S_MOVE”將參數(shù)IN中字符串(W)STRING的內(nèi)容寫入在參數(shù)OUT中指定的數(shù)據(jù)區(qū)域。要復(fù)制數(shù)據(jù)類型為ARRAY的變量時,可使用指令“MOVE_BLK”和“UMOVE_BLK”。當(dāng)“Start”開關(guān)接通時,IN引腳的內(nèi)容未傳送給OUT;當(dāng)“Start”開關(guān)接通時,“DB1”.StringValueOUT存儲了’我愛你,中國!’字符串;當(dāng)“Start”開關(guān)再次斷開,“DB1”.StringValueOUT依舊存儲了’我愛你,中國!’字符串。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ù)或浮點數(shù)。在IN輸入?yún)?shù)中指定要轉(zhuǎn)換的字符串,通過為OUT輸出參數(shù)選擇數(shù)據(jù)類型,確定輸出值的格式。轉(zhuǎn)換從字符串IN中的字符偏移量P位置開始,并一直進行到字符串的結(jié)尾,或者一直進行到遇到第一個不是“+”、“-”、“.”、“,”、“e”、“E”或“0”到“9”的字符為止。結(jié)果放置在參數(shù)OUT中指定的位置。如果發(fā)現(xiàn)無效字符,將取消轉(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ù)點、小數(shù)撇、計數(shù)制“E”和“e”,以及加減號字符。無效字符將中斷轉(zhuǎn)換過程。使用P參數(shù)指定從字符串中的哪個字符開始寫入結(jié)果。例如,如果P參數(shù)中指定值“2”,則從字符串的第二個字符開始保存轉(zhuǎn)換值。使用SIZE參數(shù)指定待寫入字符串的字符數(shù)。這從P參數(shù)中指定的字符開始計數(shù)。如果輸出值比指定長度短,則結(jié)果將以右對齊方式寫入字符串??兆址恢脤⑻钊肟崭瘛J褂肍ORMAT參數(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ù)類型存儲區(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移動的字符數(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ù)類型存儲區(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ù)類型的字符串。遵守數(shù)據(jù)類型的最大長度:STRING:254個字符WSTRING:254個字符(默認)/16382個字符(最大)5.2字符串+字符Chars_TO_Strg:將ArrayofCHAR轉(zhuǎn)換為字符串5.2字符串+字符MAX_LEN:確定字符串的最大長度使用指令“MAX_LEN”,可確定輸入?yún)?shù)IN中所指定字符串的最大長度,并將其作為數(shù)字值輸出到輸出參數(shù)OUT中。目標(biāo)源數(shù)據(jù)為(W)STRING關(guān)鍵字中的每個變量指定字符串的最大長度。字符串占用的字節(jié)數(shù)為最大長度加2。當(dāng)前長度表示實際使用的字符位置數(shù)。當(dāng)前長度必須小于或等于最大長度。如果該指令在執(zhí)行過程中出錯,則參數(shù)OUT處將輸出值“0”。5.2字符串+字符LEN:確定字符串的當(dāng)前長度使用指令“LEN”,可查詢IN輸入?yún)?shù)中指定的字符串當(dāng)前長度。并將其作為數(shù)值輸出到輸出參數(shù)OUT中??兆址?'')的長度為零。5.2字符串+字符LEFT:讀取字符串左邊的字符使用“LEFT”指令,提取以IN輸入?yún)?shù)中字符串的第一個字符開頭的部分字符串??稍贚參數(shù)中指定要提取的字符數(shù)。提取的字符以(W)STRING格式通過OUT輸出參數(shù)輸出。如果要提取的字符數(shù)大于字符串的當(dāng)前長度,則OUT輸出參數(shù)會將輸入字符串作為結(jié)果返回。如果L參數(shù)值小于或等于0則將返回空字符串,如果輸入值為空字符串,則將返回空字符串。如果在指令的執(zhí)行過程中發(fā)生錯誤而且可寫入OUT輸出參數(shù)中,則將輸出空字符串。5.2字符串+字符RIGHT:讀取字符串右邊的字符使用“RIGHT”指令,提取以IN輸入?yún)?shù)中字符串的最后一個L長度的字符串。可在L參數(shù)中指定要提取的字符長度。提取的字符以(W)STRING格式通過OUT輸出參數(shù)輸出。如果要提取的字符數(shù)大于字符串的當(dāng)前長度,則OUT輸出參數(shù)會將輸入字符串作為結(jié)果返回。如果L參數(shù)值小于或等于0則將返回空字符串,如果輸入值為空字符串,則將返回空字符串。如果在指令的執(zhí)行過程中發(fā)生錯誤而且可寫入OUT輸出參數(shù)中,則將輸出空字符串。5.2字符串+字符MID:讀取字符串的中間字符使用“MID”指令,提取IN輸入?yún)?shù)中字符串的一部分。使用P參數(shù)指定要提取的第一個字符的位置。使用L參數(shù)定義要提取的字符串的長度。OUT輸出參數(shù)中輸出提取的部分字符串。如果在指令的執(zhí)行過程中發(fā)生錯誤而且可寫入OUT輸出參數(shù)中,則將輸出空字符串。在使用“MID”指令時,應(yīng)遵循以下規(guī)則:1、如果待提取的字符數(shù)量超過IN輸入?yún)?shù)中字符串的當(dāng)前長度,則輸出部分字符串。部分字符串從P字符串開始,到字符串結(jié)尾處結(jié)束。2、如果P參數(shù)中指定的字符位置超出IN輸入?yún)?shù)中字符串的當(dāng)前長度,則OUT輸出參數(shù)中將輸出空字符串。3、如果P或L參數(shù)的值小于或等于0,則OUT輸出參數(shù)中將輸出空字符串。5.2字符串+字符MID:讀取字符串的中間字符5.2字符串+字符DELETE:刪除字符串中的字符使用“DELETE”指令,刪除IN輸入?yún)?shù)中字符串的一部分。使用P參數(shù)指定要刪除的第一個字符的位置。在L參數(shù)中指定要刪除的字符數(shù)。剩余的部分字符串以(W)STRING格式通過OUT輸出參數(shù)輸出。如果在指令的執(zhí)行過程中發(fā)生錯誤而且可寫入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ù)指定要替換的第一個字符的位置。使用L參數(shù)指定要替換的字符數(shù)。結(jié)果以(W)STRING格式通過OUT輸出參數(shù)輸出。5.2字符串+字符FIND:查找字符使用“FIND”指令,可在IN1輸入?yún)?shù)中的字符串內(nèi)搜索特定的字符串。IN2輸入?yún)?shù)指定要搜索的值,指令將IN1從左向右進行搜索,將找到的IN2第一個字符在IN1所第一次出現(xiàn)的位置值輸出給OUT參數(shù)。如果搜索返回沒有匹配項,則OUT輸出參數(shù)中將輸出值“0”。5.2字符串+字符CONCAT:合并字符串使用“CONCAT”指令,將IN1輸入?yún)?shù)中的字符串與IN2輸入?yún)?shù)中的字符串合并在一起。結(jié)果以(W)STRING格式通過OUT參數(shù)輸出。如果生成的字符串長度大于OUT參數(shù)中指定的變量長度,則將生成的字符串限制到可用長度。如果在指令的執(zhí)行過程中發(fā)生錯誤而且可寫入OUT輸出參數(shù)中,則將輸出空字符串。5.2字符串+字符ATH:將ASCII字符串轉(zhuǎn)換為十六進制數(shù)使用“ATH”指令,將IN輸入?yún)?shù)中指定的ASCII字符串轉(zhuǎn)換為十六進制數(shù)。轉(zhuǎn)換結(jié)果輸出到OUT輸出參數(shù)中。使用IN參數(shù)(ASCII)處的指針,可引用以下數(shù)據(jù)類型:STRING,WSTRING,CHAR,BYTE,ArrayofCHAR,ArrayofBYTE,WCHAR,ArrayofWCHAR,ArrayofWORD。使用OUT參數(shù)(十六進制)處的指針,可引用以下數(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個有效ASCII字符?!癆TH”指令只能解釋數(shù)字“0”到“9”、大寫字母“A”到“F”以及小寫字母“a”到“f”,所有其它字符都將轉(zhuǎn)換為0。5.2字符串+字符ATH:將ASCII字符串轉(zhuǎn)換為十六進制數(shù)5.2字符串+字符HTA:將十六進制數(shù)轉(zhuǎn)換為ASCII字符串使用“HTA”指令,將IN輸入中指定的十六進制數(shù)轉(zhuǎn)換為ASCII字符串。轉(zhuǎn)換結(jié)果存儲在OUT參數(shù)指定的地址中。IN參數(shù)與OUT參數(shù)正好是“ATH”指令參數(shù)相反。不同之處是“HTA”指令只能轉(zhuǎn)換結(jié)果由數(shù)字“0”到“9”以及大寫字母“A”到“F”表示。5.2字符串+字符HTA:將十六進制數(shù)轉(zhuǎn)換為ASCII字符串5.2.19實操案例12:將PLC當(dāng)前日期和時間內(nèi)容發(fā)送給上位機任務(wù):實現(xiàn)上位機HMI內(nèi)顯示PLC內(nèi)的當(dāng)前時間,PLC采用S7-12001214CAC\DC\RLY。根據(jù)上一小節(jié)日期和時間所學(xué)指令,我們可以通過指令“”讀取PLC當(dāng)前日期和時間的DTL數(shù)據(jù)內(nèi)容,然后通過DTL數(shù)據(jù)里的信息進行字符串的提取、轉(zhuǎn)換、替換、合并等操作,最終得到想要的“××××年××月××日星期×××?xí)r××分××秒”的信息。因為是與上位機連接所以本案例無I/O分配和PLC外部接線圖。5.2.19實操案例12:將PLC當(dāng)前日期和時間內(nèi)容發(fā)送給上位機編寫程序5.2.19實操案例12:將PLC當(dāng)前日期和時間內(nèi)容發(fā)送給上位機5.2.19實操案例12:將PLC當(dāng)前日期和時間內(nèi)容發(fā)送給上位機5.2.19實操案例12:將PLC當(dāng)前日期和時間內(nèi)容發(fā)送給上位機5.2.19實操案例12:將PLC當(dāng)前日期和時間內(nèi)容發(fā)送給上位機調(diào)試程序由于本書不涉及到上位機講解,故此該內(nèi)容不做詳細闡述,讀者可以通過PLC監(jiān)控表來實現(xiàn)數(shù)據(jù)準確情況檢驗。PLC監(jiān)控表及上位機HMI界面如圖所示。5.3中斷中斷是CPU停止當(dāng)前的任務(wù)轉(zhuǎn)而去執(zhí)行其他任務(wù)的過程。中斷執(zhí)行前CPU會對當(dāng)前的執(zhí)行環(huán)境進行保留(保存現(xiàn)場),當(dāng)中斷處理完成后,會恢復(fù)現(xiàn)場以繼續(xù)執(zhí)行之前的任務(wù)。能夠引發(fā)中斷的事件稱為中斷事件。中斷事件的類型很多,比如硬件中斷、循環(huán)中斷、時間中斷、延時中斷等。如果事件的響應(yīng)時間很短,則可使用硬件中斷。在運行過程中,硬件中斷將對這些事件做出響應(yīng)。每個硬件中斷可以分配給一個或多個硬件中斷OB。這些OB包含對特定事件的響應(yīng)??梢詾椴煌氖录?chuàng)建硬件中斷。5.3中斷檢測數(shù)字量輸入上升沿或下降沿的硬件中斷5.3中斷超出模擬量輸入既定下限和上限的硬件中斷5.3中斷高速計數(shù)器的方向反轉(zhuǎn)、外部重置、上溢/下溢等硬件中斷5.3中斷ATTACH:將OB附加到中斷事件使用指令“ATTACH”為硬件中斷事件指定一個組織塊(OB)。在OB_NR參數(shù)中輸入組織塊的符號或數(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觸點接通后,%MW10和%MW20的返回值來看,“上升沿2”事件替換綁定到了OB40原有的事件,“下降沿2”事件替換綁定到了OB41原有的事件。5.3中斷DETACH:將OB與中斷事件脫離使用指令“DETACH”將取消組織塊到一個或多個硬件中斷事件的現(xiàn)有分配。在OB_NR參數(shù)中輸入組織塊的符號或數(shù)字名稱。將取消EVENT參數(shù)中指定的事件分配。如果在EVENT參數(shù)處選擇了單個硬件中斷事件,則將取消OB到該硬件中斷事件的分配。當(dāng)前存在的所有其它分配仍保持激活狀態(tài)??梢允褂貌僮鲾?shù)占位符下拉列表選擇一個單獨的硬件中斷事件。如果未選擇硬件中斷事件,則當(dāng)前分配給此OB_NR組織塊的所有事件都會被分開。5.3中斷DETACH:將OB與中斷事件脫離5.3中斷SET_CINT:設(shè)置循環(huán)中斷參數(shù)使用指令“SET_CINT”將可置位循環(huán)中斷OB的參數(shù)。根據(jù)OB的具體時間間隔和相位偏移,生成循環(huán)中斷OB的開始時間。OB的時間間隔是指周期調(diào)用該OB的時間間隔。5.3中斷5.3中斷QRY_CINT:查詢循環(huán)中斷參數(shù)使用指令“QRY_CINT”將返回循環(huán)中斷OB的循環(huán)時間參數(shù)、相位偏移參數(shù)、循環(huán)中斷的狀態(tài)(已啟用、已延遲、已過期等)。5.3中斷SET_TINTL:設(shè)置時間中斷使用指令“SET_TINTL”用于在用戶程序中設(shè)置時間中斷組織塊的開始日期和時間,而不是在硬件配置中進行設(shè)置。通過參數(shù)OB_NR輸入待設(shè)置開始日期和時間的時間中斷OB編號。通過參數(shù)SDT可指定調(diào)用時間中斷OB的開始日期和時間,通過PERIOD可以調(diào)用時間中斷OB的重復(fù)調(diào)用頻率周期。5.3中斷CAN_TINT:取消時間中斷使用指令“CAN_TINT”可用于刪除指定時間中斷組織塊的開始日期和時間。這會取消激活時間中斷,并且不再調(diào)用該組織塊。如果要重復(fù)調(diào)用時間中斷,則必須使用指令“SET_TINTL”復(fù)位開始時間,如果使用帶有參數(shù)ACTIVE=false的指令“SET_TINTL”對時間中斷進行設(shè)置,則將調(diào)用指令“ACT_TINT”進行激活時間中斷。使用指令“SET_TINTL”時,也可通過參數(shù)ACTIVE=true直接激活時間中斷。該指令的運用一般是配合上位機進行的,它查詢的結(jié)果,可以讓上位機去獲取,并匹配具體信息。5.3中斷ACT_TINT:啟用時間中斷使用指令“ACT_TINT”可用于從用戶程序中激活時間中斷組織塊。在執(zhí)行該指令之前,時間中斷OB必須已設(shè)置了開始日期和時間。5.3中斷QRY_TINT:查詢時間中斷的狀態(tài)使用指令“QRY_TINT”可在STATUS輸出參數(shù)中顯示時間中斷組織塊的狀態(tài)。該指令的運用一般是配合上位機進行的,它查詢的結(jié)果,可以讓上位機去獲取,并匹配具體信息。位值含義00未使用(始終為“0”)10已啟用時間中斷1已延遲時間中斷20時間中斷未激活或者已過去1已激活時間中斷40具有在參數(shù)OB_NR中指定的OB編號的OB不存在1存在編號如OB_NR參數(shù)所指定的OB60時間中斷基于系統(tǒng)時間1時間中斷基于本地時間其它未使用(始終為“0”)5.3中斷SRT_DINT:啟動延時中斷使用指令“SRT_DINT”用于啟動延時中斷,該中斷在超過參數(shù)DTIME指定的延時時間后調(diào)用延時中斷OB。延時中斷與“TOF”延時定時器的功能有些相像,他的“EN”使能接通后只是啟動延時中斷指令,當(dāng)使能斷開時,延時中斷開始計時,當(dāng)時間到了延時中斷OB將執(zhí)行一次。5.3中斷CAN_DINT:取消延時中斷使用指令“CAN_DINT”可用于取消啟動的延時中斷,因此也可在組態(tài)的延時時間后取消延時中斷OB的調(diào)用。在OB_NR參數(shù)中,可以指定將取消調(diào)用的組織塊編號。5.3中斷QRY_DINT:查詢延時中斷狀態(tài)使用指令“QRY_DINT”可在STATUS輸出參數(shù)中顯示延時中斷組織塊的狀態(tài)。該指令的運用一般是配合上位機進行的,它查詢的結(jié)果,可以讓上位機去獲取,并匹配具體信息。位值含義00不相關(guān)10由操作系統(tǒng)啟用延時中斷1禁用延時中斷20延時中斷未激活或已完成1激活延時中斷40指定編號的延時中斷OB不存在1指定編號的延時中斷OB存在。其它未使用(始終為“0”)5.3.12實操案例13:流水線檢測與統(tǒng)計裝置任務(wù):PLC采用S7-12001214CAC\DC\RLY編寫一臺流水線檢測與統(tǒng)計裝置。具體控制要求如下:(1)當(dāng)設(shè)備連續(xù)30秒內(nèi)連續(xù)未檢測到流水線上無工件經(jīng)過傳感器,指示燈以1000ms閃爍;(2)當(dāng)設(shè)備連續(xù)40秒內(nèi)連續(xù)未檢測到流水線上無工件經(jīng)過傳感器,指示燈改為以500ms閃爍;(3)當(dāng)設(shè)備連續(xù)50秒內(nèi)連續(xù)未檢測到流水線上無工件經(jīng)過傳感器,指示燈改為以3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論