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

下載本文檔

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

文檔簡介

第八章

S7-1200PLC擴展指令(SCL)第八章S7-1200PLC擴展指令(SCL)-2-

日期和時間1

字符串+字符2

中斷38.1日期和時間轉(zhuǎn)換時間并提?。═_CONV)的指令對照表和參數(shù)表,見表8-1所示?!纠?-1】當(dāng)M0.0觸點接通后,提取DB1數(shù)據(jù)塊中DTL1變量中的年月日數(shù)據(jù)內(nèi)容放入DATE1變量中,同時也提取DB1數(shù)據(jù)塊中DTL1變量中的時分秒數(shù)據(jù)內(nèi)容放入TOD1變量中。表8-1轉(zhuǎn)換時間并提取指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型out:=DINT_TO_TIME(In:=_variant_in);out:=TIME_TO_DINT(in:=_variant_in);INDInt、Int、SInt、UDInt、UInt、USInt、Time、Date、Time_Of_Day、DTLOUT8.1日期和時間

圖8-1【例8-1】轉(zhuǎn)換時間并提取b)T_CONV指令SCL程序

a)T_CONV指令LAD程序T_CONV指令的應(yīng)用如圖8-1所示。圖8-1a為LAD程序,圖8-1b為SCL程序,其功能效果是一樣的,同學(xué)們可以通過第五章的學(xué)習(xí)來驗證SCL的程序運行過程。圖8-1c為SCL監(jiān)控,可以清晰的顯示出"Tag_1"為TRUE時,"DB1".DATE1的數(shù)據(jù)其實就是"DB1".DTL1數(shù)據(jù)中的DATE內(nèi)容,同時"DB1".TOD1的數(shù)據(jù)其實就是"DB1".DTL1數(shù)據(jù)中的TOD內(nèi)容。c)T_CONV指令SCL監(jiān)控8.1日期和時間組合時間(T_COMBINE)的指令對照表和參數(shù)表,見表8-2所示。【例8-2】當(dāng)M0.1觸點接通后,將DB1數(shù)據(jù)塊中DATE1變量中的數(shù)據(jù)與DB1數(shù)據(jù)塊中TOD1變量中的數(shù)據(jù)進行數(shù)據(jù)整合,整合到DB1數(shù)據(jù)塊中的DTL2變量中。表8-2組合時間(T_COMBINE)指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型out:=CONCAT_DATE_TOD(In1:=_date_in,In2:=_tod_in);IN1DateIN2Time_Of_DayOUTDTL8.1日期和時間

圖8-2【例8-2】組合時間b)T_COMBINE指令SCL程序

a)T_COMBINE指令LAD程序T_COMBINE指令的應(yīng)用如圖8-2所示。圖8-2a為LAD程序,圖8-2b為SCL程序,其功能效果是一樣的,圖8-2c為SCL監(jiān)控。c)T_COMBINE指令SCL監(jiān)控8.1日期和時間時間加運算(T_ADD)的指令對照表和參數(shù)表,見表8-3所示?!纠?-3】設(shè)備系統(tǒng)時間實時傳送至DB1數(shù)據(jù)塊DTL1變量中,隨著時間的推移,用戶發(fā)現(xiàn)系統(tǒng)時間與當(dāng)前實際時間有慢5秒鐘,請設(shè)計一個程序讓其校正時間。表8-3時間加運算(T_ADD)指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型out:=T_ADD(in1:=_variant_in,in2:=_time_in);IN1TIME、DTL、TODIN2TIMEOUTTIME、DTL、TOD、DWORD、DINT、UDINT8.1日期和時間

圖8-3【例8-3】時間加運算b)T_ADD指令SCL程序a)T_ADD指令LAD程序T_ADD指令的應(yīng)用如圖8-3所示。圖8-3a為LAD程序,圖8-3b為SCL程序,其功能效果是一樣的,圖8-3c為SCL監(jiān)控。c)T_ADD指令SCL監(jiān)控8.1日期和時間時間相減(T_SUB)的指令對照表和參數(shù)表,見表8-4所示?!纠?-4】設(shè)備系統(tǒng)時間實時傳送至DB1數(shù)據(jù)塊DTL2變量中,隨著時間的推移,用戶發(fā)現(xiàn)系統(tǒng)時間與當(dāng)前實際時間有快3秒鐘,請設(shè)計一個程序讓其校正時間。表8-4時間相減(T_SUB)指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型out:=T_SUB(in1:=_variant_in,in2:=_time_in);IN1TIME、DTL、TODIN2TIMEOUTTIME、DTL、TOD、DWORD、DINT、UDINT8.1日期和時間

圖8-4【例8-4】時間相減b)T_SUB指令SCL程序a)T_SUB指令LAD程序T_SUB指令的應(yīng)用如圖8-4所示。圖8-4a為LAD程序,圖8-4b為SCL程序,其功能效果是一樣的,圖8-4c為SCL監(jiān)控。c)T_SUB指令SCL監(jiān)控8.1日期和時間時間值相減(T_DIFF)的指令對照表和參數(shù)表,見表8-5所示。【例8-5】計算當(dāng)前時間與夜間0點還有多少時間,將結(jié)果傳送至DB1數(shù)據(jù)塊Time1中,請設(shè)計一個程序。表8-5時間值相減(T_DIFF)指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型out:=T_DIFF(in1:=_DTL_in,in2:=_DTL_in);IN1DTL、DATE、TODIN2DTL、DATE、TODOUTTIME、INT8.1日期和時間

圖8-5【例8-5】時間值相減b)T_DIFF指令SCL程序a)T_DIFF指令LAD程序T_DIFF指令的應(yīng)用如圖8-5所示。圖8-5a為LAD程序,圖8-5b為SCL程序,其功能效果是一樣的,圖8-5c為SCL監(jiān)控。c)T_DIFF指令SCL監(jiān)控8.1日期和時間設(shè)置時間(WR_SYS_T)的指令對照表和參數(shù)表,見表8-6所示。表8-6設(shè)置時間(WR_SYS_T)指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型ret_val:=WR_SYS_T(in:=_DTL_in_);INDTLRET_VALINT8.1日期和時間

圖8-6WR_SYS_T指令LAD與SCL示例對比b)WR_SYS_T指令SCL程序a)WR_SYS_T指令LAD程序8.1日期和時間讀取時間(RD_SYS_T)的指令對照表和參數(shù)表,見表8-7所示。表8-7讀取時間(RD_SYS_T)指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型ret_val:=RD_SYS_T(out=>_DTL_out);RET_VALINTOUTDTL8.1日期和時間

圖8-7RD_SYS_T指令LAD與SCL示例對比b)RD_SYS_T指令SCL程序a)RD_SYS_T指令LAD程序8.1日期和時間寫入本地時間(WR_LOC_T)的指令對照表和參數(shù)表,見表8-8所示。表8-8寫入本地時間(WR_LOC_T)指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型ret_val:=WR_LOC_T(LOCTIME:=DTL_in_,DST:_in_;LOCTIMEDTLDSTBOOLRET_VALINT8.1日期和時間

圖8-8WR_LOC_T指令LAD與SCL示例對比b)WR_LOC_T指令SCL程序a)WR_LOC_T指令LAD程序8.1日期和時間讀取本地時間(RD_LOC_T)的指令對照表和參數(shù)表,見表8-9所示。表8-9讀取本地時間(RD_LOC_T)指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型ret_val:=RD_LOC_T(out=>_DTL_out);RET_VALINTOUTDTL8.1日期和時間

圖8-9RD_LOC_T指令LAD與SCL示例對比b)RD_LOC_T指令SCL程序a)RD_LOC_T指令LAD程序8.1.10案例24:定時啟停水泵及保養(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ù)位指示燈。步驟:1.I/O分配表(參考章節(jié)8.1.10)2.PLC外部接線圖(參考章節(jié)8.1.10)3.編寫程序(參考章節(jié)8.1.10)8.1.10案例24:定時啟停水泵及保養(yǎng)提醒服務(wù)根據(jù)PLC控制要求,根據(jù)S7-1200硬件輸入/輸出點分配如表所示。輸入點輸出點輸入繼電器名稱輸出繼電器名稱I0.0StartQ0.0Water_pumpI0.1StopQ0.1Indicator_lightI0.2Reset

8.1.10案例24:定時啟停水泵及保養(yǎng)提醒服務(wù)根據(jù)控制要求及I/O分配表,結(jié)合實際情況,停止按鈕用常閉,輸入點并沒有熱過載元件,所以該元件將硬件接入輸出點設(shè)備上,其接線圖如圖所示。8.1.10案例24:定時啟停水泵及保養(yǎng)提醒服務(wù)圖8-11PLC變量圖8-12DB1數(shù)據(jù)塊變量8.1.10案例24:定時啟停水泵及保養(yǎng)提醒服務(wù)8.1.10案例24:定時啟停水泵及保養(yǎng)提醒服務(wù)思考一下,能否用其他指令或其他方法進行編寫。8.2字符串+字符移動字符串(S_MOVE)的指令對照表和參數(shù)表見表8-11所示?!纠?-6】當(dāng)I0.0觸點接通后,將'我愛你,中國!'字符串傳送給DB1數(shù)據(jù)塊中的StringValueOUT數(shù)據(jù)變量。表8-11移動字符串指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型out:=in;INString、WStringOUT8.2字符串+字符

圖8-14【例8-6】S_MOVE指令的應(yīng)用b)S_MOVE指令SCL程序

a)S_MOVE指令LAD程序c)S_MOVE指令SCL監(jiān)控S_MOVE指令的應(yīng)用如圖8-14所示。圖8-14a為LAD程序功能分析我們在5.2小節(jié)中已經(jīng)講解了,圖8-14b為SCL程序,其功能效果與圖8-14a是一樣的,圖8-14c為SCL監(jiān)控,可以清晰的顯示出"Start"為TRUE時,"DB1".StringValueOUT變量將獲得字符串'我愛你,中國!'c)S_MOVE指令SCL監(jiān)控8.2字符串+字符轉(zhuǎn)換字符串(S_MOVE)的指令對照表和參數(shù)表見表8-12所示。表8-12轉(zhuǎn)換字符串指令對照表和參數(shù)表功能框SCL轉(zhuǎn)換參數(shù)數(shù)據(jù)類型out:=<Type>_TO_<Type>(in);轉(zhuǎn)數(shù)字值

INString、WStringOUTString、WString、Char、SInt、Int、DInt、USInt、UInt、UDInt、Real、LReal數(shù)字值轉(zhuǎn)字符串IN轉(zhuǎn)數(shù)字值OUTString、WString8.2字符串+字符

圖8-15S_CONV指令轉(zhuǎn)換為數(shù)值b)S_CONV指令SCL程序

a)S_CONV指令LAD程序c)S_CONV指令SCL監(jiān)控8.2字符串+字符

圖8-16S_CONV指令轉(zhuǎn)換為字符串b)S_CONV指令SCL程序

a)S_CONV指令LAD程序從圖8-15可以看出,由一個帶符號的字符串轉(zhuǎn)換為數(shù)值,LAD與SCL基本不會有結(jié)果偏差,而圖8-16發(fā)現(xiàn),當(dāng)要轉(zhuǎn)換的數(shù)值為正數(shù)時,LAD忽略了'+'字符,用空格取而代之,而SCL卻保留了'+'字符。通過多次不同方式的實驗,我們發(fā)現(xiàn)用“S_CONV”指令將字符串轉(zhuǎn)數(shù)字值或數(shù)字值轉(zhuǎn)字符串在某種情況下會出現(xiàn)偏差。所以我們建議大家可以選擇“STRG_VAL”指令或“VAL_STRG”指令。c)S_CONV指令SCL監(jiān)控8.2字符串+字符轉(zhuǎn)換為數(shù)字值(STRG_VAL)的指令對照表和參數(shù)表見表8-13所示。表8-13將字符串轉(zhuǎn)換為數(shù)字值指令對照表和參數(shù)表功能框SCL轉(zhuǎn)換參數(shù)數(shù)據(jù)類型STRG_VAL(in:=_string_in,format:=_word_in,p:=uint_in,out=>_variant_out);轉(zhuǎn)數(shù)字值

INString、WStringFORMATWord數(shù)字值轉(zhuǎn)字符串PUInt、Byte、USInt轉(zhuǎn)數(shù)字值OUTSInt、Int、DInt、USInt、UInt、UDInt、Real、LReal8.2字符串+字符

圖8-17STRG_VAL指令的應(yīng)用b)STRG_VAL指令SCL程序

a)STRG_VAL指令LAD程序圖8-17a為“STRG_VAL”指令的LAD,圖8-17b為該指令的SCL,圖8-17c為“STRG_VAL”指令監(jiān)控內(nèi)容,從監(jiān)控內(nèi)容與圖5-19所示結(jié)果是一致的。c)STRG_VAL指令SCL監(jiān)控8.2字符串+字符將字符串轉(zhuǎn)換為數(shù)字值(VAL_STRG)的指令對照表和參數(shù)表見表8-14所示。表8-14將數(shù)字值轉(zhuǎn)換為字符串指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型VAL_STRG(IN:=_usint_in_,SIZE:=_usint_in_,PREC:=_usint_in_,FORMAT:=_word_in_,P:=_uint_in_,OUT=>_string_out_);INSInt、Int、DInt、USInt、UInt、UDInt、Real、LRealSIZEUSIntPRECUSintFORMATWordPUIntOUTString、WString8.2字符串+字符

圖8-18VAL_STRG指令的應(yīng)用b)VAL_STRG指令SCL程序

a)VAL_STRG指令LAD程序圖8-18a為“VAL_STRG”指令的LAD,圖8-18b為該指令的SCL,我們再看圖8-18c的監(jiān)控結(jié)果,發(fā)現(xiàn)下面兩張的PREC引腳一個是2一個是3,但OUT結(jié)果卻是一樣的,從圖5-20c和圖5-20d中可以發(fā)現(xiàn)圖5-20d的“VAL_STRG”指令ENO=0。此時我們發(fā)現(xiàn)SCL與LAD的結(jié)果是一樣的,只不過在SCL中,我們沒有辦法直觀的看到“STRG_VAL”指令的ENO狀態(tài)而已,這對編程者來說要求對指令非常熟悉否則可能會出現(xiàn)難以查找的錯誤。c)VAL_STRG指令SCL監(jiān)控8.2字符串+字符將字符串轉(zhuǎn)換為ArrayofCHAR(Strg_TO_Chars)的指令對照表和參數(shù)表見表8-15所示。表8-15將字符串轉(zhuǎn)換為ArrayofCHAR指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型Strg_TO_Chars(Strg:=_string_in_,pChars:=_dint_in_,Cnt=>_uint_out_,Chars:=_variant_inout_);STRGString,WStringPCHARSDIntCHARSVariantCNTUIntSTRGString,WStringOUTString、WString8.2字符串+字符

圖8-19Strg_TO_Chars指令的應(yīng)用b)Strg_TO_Chars指令SCL程序

a)Strg_TO_Chars指令LAD程序圖8-19a與圖8-19b相對比,功能一樣,結(jié)果一樣,但從監(jiān)控顯示來說,SCL并不能把"DB1".Chars里每個Chars的數(shù)據(jù)給顯示出來,我們還是需要通過數(shù)據(jù)塊監(jiān)控實現(xiàn)內(nèi)容顯示目的。從編程形式來看,如果我們不對指令的ENO進行使用的話,其實SCL編程也是挺方便的。8.2字符串+字符將ArrayofCHAR轉(zhuǎn)換為字符串(Chars_TO_Strg)的指令對照表和參數(shù)表見表8-16所示。。表8-16將ArrayofCHAR轉(zhuǎn)換為字符串指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型Chars_TO_Strg(Chars:=_variant_in_,pChars:=_dint_in_,Cnt:=_uint_in_,Strg=>_string_out_);CHARSVariantPCHARSDIntCNTUIntSTRGString,WString8.2字符串+字符

圖8-20Chars_TO_Strg指令的應(yīng)用b)Chars_TO_Strg指令SCL程序

a)Chars_TO_Strg指令LAD程序圖8-20與圖8-19相對比,我們可以發(fā)現(xiàn)這兩個指令正好是相反的指令,一個是把逐個的Chars字符連為String字符串,另一個是吧String字符串按要求的逐一分放在Chars字符里。這里讀者的學(xué)習(xí)方法可以把指令代碼寫好后,設(shè)定一個大概10個左右長度的字符串,然后通過指令進行組合或拆分。pChars的值與Cnt的值可以自行調(diào)節(jié),然后看輸出結(jié)果與現(xiàn)象來掌握“Strg_TO_Chars”指令和“Chars_TO_Strg”指令。8.2字符串+字符確定字符串的長度(MAX_LEN)的指令對照表和參數(shù)表見表8-17所示。表8-17確定字符串的長度指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型out:=MAX_LEN(in);INString、WStringOUTInt、Dint8.2字符串+字符圖8-21a與圖8-21b的結(jié)果均為254,從此可以看出String數(shù)據(jù)類型與WString數(shù)據(jù)類型的最大數(shù)據(jù)長度均為254個。圖8-21MAX_LEN指令的應(yīng)用

a)Strg_TO_Chars指令LAD程序b)Strg_TO_Chars指令SCL程序8.2字符串+字符確定字符串的長度(LEN)的指令對照表和參數(shù)表見表8-18所示。表8-18確定字符串的長度指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型out:=LEFT(in,L);INString、WStringLByte、Int、SInt、USIntOUTString、WString8.2字符串+字符圖8-22a,通過“LEN”指令,獲取了"DB1".IN里String數(shù)據(jù)類型的字符串'我愛你,中國!'共占14個字符長度,每個中文字占2個字符長度。而圖8-22b,通過“LEN”指令,獲取了"DB1".IN里WString數(shù)據(jù)類型的字符串'Iloveyou,China.'共占17個字符長度,包含空格字符也算字符長度。圖8-22LEN指令的應(yīng)用

a)String類型的LAD與SCL程序b)WString類型的LAD與SCL程序8.2字符串+字符讀取字符串左邊的字符(LEFT)的指令對照表和參數(shù)表見表8-19所示。表8-19讀取字符串左邊的字符指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型通用型out:=LEFT(IN:=_string_in_,L:=_int_in_);INString、WStringStringout:=LEFT_String(IN:=_string_in_,L:=_int_in_);LByte、Int、SInt、USIntWStringout:=LEFT_WSting(IN:=_string_in_,L:=_int_in_);OUTString、WString8.2字符串+字符把圖8-23輸入在博途軟件中,下載到PLC里,對"DB1".IN和"DB1".L里的數(shù)據(jù)進行修改,IN內(nèi)容可以輸入不重復(fù)的字符,然后L的數(shù)值任意修改0、1、2、3看一個有什么效果。字符可以英文字符也可以是中文字符。圖8-23LEFT指令基本單元的LAD與SCL應(yīng)用對比

a)LEFT指令基本單元的LADb)LEFT指令基本單元的程序8.2字符串+字符讀取字符串右邊的字符(RIGHT)的指令對照表和參數(shù)表見表8-20所示。表8-20讀取字符串右邊的字符指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型通用型out:=RIGHT(IN:=_string_in_,L:=_int_in_);INString、WStringStringout:=RIGHT_String(IN:=_string_in_,L:=_int_in_);LByte、Int、SInt、USIntWStringout:=RIGHT_WSting(IN:=_string_in_,L:=_int_in_);OUTString、WString8.2字符串+字符圖8-24b中我們可以發(fā)現(xiàn),當(dāng)用戶輸入“RIGHT_”時,軟件會出現(xiàn)菜單選擇,一個是“RIGHT_STRING”、另一個是“RIGHT_WSTRING”,這兩個指令的后綴是指定IN和OUT的數(shù)據(jù)類型是String,還是WString?!癓EFT”、“RIGHT”和“MID”三個指令均有該選項。圖8-24RIGHT指令的應(yīng)用

a)

RIGHT指令基本單元的LAD與SCL應(yīng)用對比b)RIGHT指令定義數(shù)據(jù)類型8.2字符串+字符讀取字符串的中間字符(MID)的指令對照表和參數(shù)表見表8-21所示。表8-21讀取字符串的中間字符指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型通用型out:=MID(IN:=_string_in_,L:=_int_in_,P:=_int_in_);INString、WStringStringout:=MID_String(IN:=_string_in_,L:=_int_in_,P:=_int_in_);LByte、Int、SInt、USIntPByte、Int、SInt、USIntWStringout:=MID_WString(IN:=_string_in_,L:=_int_in_,P:=_int_in_);OUTString、WString8.2字符串+字符圖8-25MID指令基本單元的LAD與SCL應(yīng)用對比8.2字符串+字符【例8-7】數(shù)據(jù)塊"DB1".IN里的字符串是'Iloveyou,China.',請?zhí)崛〕雒恳粋€單詞后分別放入。圖8-26【例8-7】讀取字符串的中間字符8.2字符串+字符刪除字符串中的字符(DELETE)的指令對照表和參數(shù)表見表8-22所示。表8-22刪除字符串中的字符指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型通用型out:=DELETE(IN:=_string_in_,L:=_int_in_,P:=_int_in_);INString、WStringString

out:=DELETE_String(IN:=_string_in_,L:=_int_in_,P:=_int_in_);LByte、Int、SInt、USIntPByte、Int、SInt、USIntWStringout:=DELETE_WString(IN:=_string_in_,L:=_int_in_,P:=_int_in_);OUTString、WString8.2字符串+字符圖8-27DELETE指令基本單元的LAD與SCL應(yīng)用對比8.2字符串+字符在字符串中插入字符(INSERT)的指令對照表和參數(shù)表見表8-23所示。表8-23在字符串中插入字符指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型通用型out:=INSERT(IN1:=_string_in_,IN2:=_string_in_,P:=_int_in_);IN1String、WStringStringout:=INSERT_String(IN1:=_string_in_,IN2:=_string_in_,P:=_int_in_);IN2String、WStringPByte、Int、SInt、USIntWStringout:=INSERT_WString(IN1:=_string_in_,IN2:=_string_in_,P:=_int_in_);OUTString、WString8.2字符串+字符圖8-28INSERT指令基本單元的LAD與SCL應(yīng)用對比8.2字符串+字符【例8-8】數(shù)據(jù)塊"DB1".IN里的字符串是'MynameisZhangPeng.',請改為'MynameisChenJie.'保存在數(shù)據(jù)塊"DB1".OUT里。圖8-29【例8-8】在字符串中插入字符8.2字符串+字符替換字符串中的字符(REPLACE)的指令對照表和參數(shù)表見表8-24所示。表8-24替換字符串中的字符指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型通用型

out:=REPLACE(IN1:=_string_in_,IN2:=_string_in_,L:=_int_in_,P:=_int_in_);IN1String、WStringIN2String、WStringStringout:=REPLACE_String(IN1:=_string_in_,IN2:=_string_in_,L:=_int_in_,P:=_int_in_);LByte、Int、SInt、USIntWString通用型out:=REPLACE_WString(IN1:=_string_in_,IN2:=_string_in_,L:=_int_in_,P:=_int_in_);PByte、Int、SInt、USIntOUTString、WString8.2字符串+字符圖8-30REPLACE指令基本單元的LAD與SCL應(yīng)用對比8.2字符串+字符【例8-9】數(shù)據(jù)塊"DB1".IN里的字符串是'MynameisZhangPeng.',請改為'MynameisChenJie.'保存在數(shù)據(jù)塊"DB1".OUT里,本題僅用“REPLACE”指令。圖8-31【例8-9】替換字符串中的字符8.2字符串+字符在字符串中查找字符(FIND)的指令對照表和參數(shù)表見表8-25所示。表8-25在字符串中查找字符指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型out:=FIND(IN1:=_string_in_,IN2:=_string_in_);IN1String、WStringIN2String、WStringOUTString、WString8.2字符串+字符圖8-32FIND指令基本單元的LAD與SCL應(yīng)用對比8.2字符串+字符合并字符串(CONCAT)的指令對照表和參數(shù)表見表8-26所示。表8-26合并字符串指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型通用型out:=CONCAT(IN1:=_string_in_,IN2:=_string_in_);IN1String、WStringStringout:=CONCAT_String(IN1:=_string_in_,IN2:=_string_in_);IN2String、WStringWStringout:=CONCAT_WString(IN1:=_string_in_,IN2:=_string_in_);OUTString、WString8.2字符串+字符圖8-33CONCAT指令基本單元的LAD與SCL應(yīng)用對比8.2字符串+字符將ASCII字符串轉(zhuǎn)換為十六進制數(shù)(ATH)的指令對照表和參數(shù)表見表8-27所示。表8-27將ASCII字符串轉(zhuǎn)換為十六進制數(shù)指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型RET_VAL:=ATH(IN:=_variant_in_,N:=_int_in_,OUT=>_variant_out_);

INVariantNIntRET_VALWordOUTVariant8.2字符串+字符圖8-34ATH指令基本單元的LAD與SCL應(yīng)用對比8.2字符串+字符將十六進制數(shù)轉(zhuǎn)換為ASCII字符串(HTA)的指令對照表和參數(shù)表見表8-28所示。表8-28將十六進制數(shù)轉(zhuǎn)換為ASCII字符串指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型RET_VAL:=HTA(IN:=_variant_in_,N:=_uint_in_,OUT=>_variant_out_);INVariantNUIntRET_VALWordOUTVariant8.2字符串+字符圖8-35HTA指令基本單元的LAD與SCL應(yīng)用對比8.2.19案例25:將PLC當(dāng)前日期和時間內(nèi)容發(fā)送給上位機任務(wù):實現(xiàn)上位機HMI內(nèi)顯示PLC內(nèi)的當(dāng)前時間,PLC采用S7-12001214CAC\DC\RLY。1.分析:根據(jù)本小節(jié)所學(xué)指令,SCL編程基本單元與LAD基本單元是可以同等轉(zhuǎn)換的。既然如此,那么我們可以通過章節(jié)5.2.19的編程思路和方法進行一一轉(zhuǎn)換。為了方便編程我們新建工程并添加設(shè)備并組態(tài)好之后,把Main[OB1](LAD格式)刪除,然后再新建一個Main[OB1]為SCL格式。在新建OB組織塊時,①處選擇Programcycle,程序循環(huán)OB。在②處選擇SCL,因為新建之前我們刪除了Main[OB1],所以本次新建編號自動為1了,若新建之前未刪除,那么編號會自動為123。這也影響程序執(zhí)行結(jié)果,之用用戶在原有的Main[OB1]里不變寫程序即可。8.2.19案例25:將PLC當(dāng)前日期和時間內(nèi)容發(fā)送給上位機添加新塊DB數(shù)據(jù)塊變量8.2.19案例25:將PLC當(dāng)前日期和時間內(nèi)容發(fā)送給上位機8.2.19案例25:將PLC當(dāng)前日期和時間內(nèi)容發(fā)送給上位機8.2.19案例25:將PLC當(dāng)前日期和時間內(nèi)容發(fā)送給上位機思考:通過一比一的轉(zhuǎn)換編程法,我們成功的把LAD轉(zhuǎn)換成了SCL代碼,但從代碼行數(shù)來看,多達133行,就算刪除空行和注釋,也有95行之多。從形式上看很多內(nèi)容均為一樣的賦值或處理數(shù)據(jù)工作。從格式是哪個看很多是相同格式。如果我們將DTL數(shù)據(jù)里的年、月、日、星期、時、分、秒,這7個數(shù)據(jù)放在數(shù)組里,然后用循環(huán)指令進行批量處理,會不會減少代碼行數(shù)或內(nèi)容呢?8.2.19案例25:將PLC當(dāng)前日期和時間內(nèi)容發(fā)送給上位機再次編程程序:DB數(shù)據(jù)塊變量8.2.19案例25:將PLC當(dāng)前日期和時間內(nèi)容發(fā)送給上位機8.3中斷本小節(jié)“中斷”擴展指令中包含很多內(nèi)容,從中斷OB塊來講,硬件中斷OB使用的指令有ATTACH:將OB附加到中斷事件與DETACH:將OB與中斷事件脫離;循環(huán)中斷OB使用的指令有SET_CINT:設(shè)置循環(huán)中斷參數(shù)與QRY_CINT:查詢循環(huán)中斷參數(shù);時間中斷OB使用的指令有SET_TINTL:設(shè)置時間中斷、CAN_TINT:取消時間中斷、ACT_TINT:啟用時間中斷、QRY_TINT:查詢時間中斷的狀態(tài);延時中斷OB使用的指令有SRT_DINT:啟動延時中斷、CAN_DINT:取消延時中斷、QRY_DINT:查詢延時中斷狀態(tài)。8.3中斷將OB附加到中斷事件(ATTACH)的指令對照表和參數(shù)表見表8-29所示。表8-29ATTACH指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型RET_VAL:=ATTACH(OB_NR:=_ob_att_in_,EVENT:=_event_att_in_,ADD:=_bool_in_);OB_NROB_ATTEVENTEVENT_ATTADDBOOLRET_VALINT8.3中斷a)硬件組態(tài)b)

ATTACH指令LAD程序8.3中斷c)

ATTACHE指令SCL程序d)ATTACH指令SCL監(jiān)控圖8-41ATTACH指令的應(yīng)用8.3中斷將OB與中斷事件脫離(DETACH)的指令對照表和參數(shù)表見表8-30所示。表8-30DETACH指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型RET_VAL:=DETACH(OB_NR:=_ob_att_in_,EVENT:=_event_att_in_);OB_NROB_ATTEVENTEVENT_ATTRET_VALINT8.3中斷a)

DETACH指令LAD程序c)

DETACH指令SCL程序2b)

DETACH指令SCL程序1圖8-42DETACH指令的應(yīng)用8.3中斷從圖8-42b與圖8-42c對比我們發(fā)現(xiàn),示例b寫的模塊名稱或事件名稱,而c寫的是模塊編號或事件絕對地址,這兩個均是一樣的效果。

d)DETACH指令SCL監(jiān)控8.3中斷設(shè)置循環(huán)中斷參數(shù)(SET_CINT)的指令對照表和參數(shù)表見表8-31所示。表8-31SET_CINT指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型RET_VAL:=SET_CINT(OB_NR:=_ob_cyclic_in_,CYCLE:=_udint_in_,PHASE:=_udint_in_);OB_NROB_CYCLICCYCLEUDINTPHASEUDINTRET_VALINT8.3中斷a)CyclicinterruptOB30組態(tài)b)

SET_CINT指令LAD程序8.3中斷c)SET_CINT指令SCL程序

d)SET_CINT指令SCL監(jiān)控圖8-43SET_CINT指令的應(yīng)用8.3中斷從圖8-43a可以發(fā)現(xiàn),CyclicinterruptOB30組態(tài)時設(shè)定的循環(huán)時間為1000ms,相移關(guān)閉。從圖8-43d中看i的自加1速度可以印證設(shè)定組態(tài)和編程無誤。圖8-44在監(jiān)控表對"CycleTime"進行賦值操作8.3中斷從圖8-43a可以發(fā)現(xiàn),CyclicinterruptOB30組態(tài)時設(shè)定的循環(huán)時間為1000ms,相移關(guān)閉。從圖8-43d中看i的自加1速度可以印證設(shè)定組態(tài)和編程無誤。按照圖8-44的操作,先把2000000微妙值寫入%MD0中,再把"Start"接通,觀察i的變化,我們可以發(fā)現(xiàn)他的速度比原來更慢了1倍,因為再未修改之前它的循環(huán)是以1000ms(1秒)執(zhí)行1次自加一,而"Start"接通后把"CycleTime"里的2000000μS(2秒)執(zhí)行1次自加一。同學(xué)們可以嘗試給"CycleTime"變量賦值0和500000來調(diào)試,大家會發(fā)現(xiàn)當(dāng)"CycleTime"=500000時,自加一的速度比組態(tài)前的速度要快1倍,因為變成了0.5秒循環(huán)一次自加一。當(dāng)"CycleTime"=0的時候,我們會發(fā)現(xiàn)i將不會自加一了,其實這樣就相當(dāng)于關(guān)閉了循環(huán)中斷的。但大家要知道,在組態(tài)的時候,圖8-43a的循環(huán)時間我們不可以設(shè)定為0,它的最小值為1ms。8.3中斷查詢循環(huán)中斷參數(shù)(QRY_CINT)的指令對照表和參數(shù)表見表8-32所示。。表8-32QRY_CINT指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型RET_VAL:=QRY_CINT(OB_NR:=_ob_cyclic_in_,CYCLE=>_udint_out_,PHASE=>_udint_out_,STATUS=>_word_out_);OB_NROB_CYCLICCYCLEUDINTPHASEUDINTSTATUSWORDRET_VALINT8.3中斷b)QRY_CINT指令SCL程序c)

QRY_CINT指令SCL監(jiān)控a)QRY_CINT指令LAD程序圖8-45QRY_CINT指令的應(yīng)用8.3中斷d)QRY_CINT指令的應(yīng)用從圖8-45c我們可以看到,當(dāng)"CYCLE"=0時,"STATUS"=16#0010;其它三個均為"STATUS"=16#00148.3中斷設(shè)置時間中斷(SET_TINTL)的指令對照表和參數(shù)表見表8-35所示。表8-35SET_TINTL指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型RET_VAL:=SET_TINTL(OB_NR:=_ob_tod_in_,SDT:=_dtl_in_,LOCAL:=_bool_in_,PERIOD:=_word_in_,ACTIVATE:=_bool_in_);OB_NROB_TODSDTDTLPERIODWORDRET_VALINT8.3中斷a)TimeofdayOB10組態(tài)c)

SET_TINTL指令SCL程序b)

SET_TINTL指令LAD程序8.3中斷d)SET_TINTL指令SCL監(jiān)控圖8-43SET_CINT指令的應(yīng)用從圖8-46a所示,組態(tài)設(shè)定了本地時間、啟動日期和時間,但執(zhí)行開關(guān)選擇的是關(guān)閉。從圖8-46d監(jiān)控畫面可以看到,設(shè)定的啟動日期和時間是2024-05-12-19:37,當(dāng)時間從19:36到達19:37時,i自加一等于1,當(dāng)時間到達19:38時,i并沒有加一,因為執(zhí)行模式為單次。8.3中斷從圖8-43a可以發(fā)現(xiàn),CyclicinterruptOB30組態(tài)時設(shè)定的循環(huán)時間為1000ms,相移關(guān)閉。從圖8-43d中看i的自加1速度可以印證設(shè)定組態(tài)和編程無誤。圖8-44在監(jiān)控表對"CycleTime"進行賦值操作8.3中斷取消時間中斷(CAN_TINT)的指令對照表和參數(shù)表見表8-36所示。表8-36CAN_TINT指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型RET_VAL:=CAN_TINT(_ob_tod_in_);OB_NROB_TODSDTDTL8.3中斷b)

CAN_CINT指令SCL程序a)

CAN_CINT指令LAD程序圖8-49CAN_TINT指令的應(yīng)用8.3中斷啟用時間中斷(ACT_TINT)的指令對照表和參數(shù)表見表8-37所示。表8-37ACT_TINT指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型RET_VAL:=ACT_TINT(_ob_tod_in_);OB_NROB_TODRET_VALINT8.3中斷當(dāng)使用“SET_TINTL”指令A(yù)CTIVATE引腳設(shè)定為0時,用戶就需要使用“ACT_TINT”指令進行時間中斷的激活。圖8-50ACT_TINT指令的應(yīng)用a)

ACT_CINT指令LAD程序b)

ACT_CINT指令SCL程序8.3中斷查詢時間中斷的狀態(tài)(QRY_TINT)的指令對照表和參數(shù)表見表8-38所示。表8-38QRY_TINT指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型RET_VAL:=QRY_TINT(OB_NR:=_ob_tod_in_,STATUS=>_word_out_);OB_NROB_TODSTATUSWORDRET_VALINT8.3中斷圖8-51QRY_TINT指令的應(yīng)用a)

QRY_TINT指令LAD程序b)

QRY_TINT指令SCL程序8.3中斷設(shè)置時間中斷(SRT_DINT)的指令對照表和參數(shù)表見表8-39所示。表8-39SRT_DINT指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型RET_VAL:=SRT_DINT(OB_NR:=_ob_delay_in_,DTIME:=_time_in_,SIGN:=_word_in_);OB_NROB_DELAYDTIMETIMESIGNWORDRET_VALINT8.3中斷圖8-52SRT_DINT指令的應(yīng)用a)

SRT_DINT指令LAD程序b)

SRT_DINT指令SCL程序c)

SSRT_DINT指令SCL監(jiān)控從圖8-52c我們可以發(fā)現(xiàn),當(dāng)DTIME的時間為0秒是,RET_VAL=16#8091,顯示為錯誤。只有設(shè)定正確的延時時間(1ms-60000ms),關(guān)斷"Start"開關(guān),"OB_Timedelayinterrupt"延時中斷OB將按設(shè)定時間延時執(zhí)行一次。8.3中斷取消延時中斷(CAN_DINT)的指令對照表和參數(shù)表見表8-40所示。表8-40CAN_DINT指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型RET_VAL:=CAN_DINT(_ob_delay_in_);OB_NROB_DELAYRET_VALINT8.3中斷圖8-53CAN_DINT指令的應(yīng)用a)

CAN_DINT指令LAD程序b)

CAN_DINT指令SCL程序從圖8-52c我們可以發(fā)現(xiàn),當(dāng)DTIME的時間為0秒是,RET_VAL=16#8091,顯示為錯誤。只有設(shè)定正確的延時時間(1ms-60000ms),關(guān)斷"Start"開關(guān),"OB_Timedelayinterrupt"延時中斷OB將按設(shè)定時間延時執(zhí)行一次。8.3中斷查詢延時中斷狀態(tài)(QRY_DINT)的指令對照表和參數(shù)表見表8-41所示。表8-41QRY_DINT指令對照表和參數(shù)表功能框SCL參數(shù)數(shù)據(jù)類型RET_VAL:=QRY_DINT(OB_NR:=_ob_delay_in_,STATUS=>_word_out_);OB_NROB_DELAYSTATUSWORDRET_VALINT8.3中斷圖8-54QRY_DINT指令的應(yīng)用a)

QRY_DINT指令LAD程序b)

QRY_DINT指令SCL程序8.3.12實操案例26:流水線檢測與統(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)過傳感器,指示燈改為以300ms閃爍;(4)當(dāng)設(shè)備連續(xù)60秒內(nèi)連續(xù)未檢測到流水線上無工件經(jīng)過傳感器,指示燈熄滅,報警蜂鳴器響起。(5)每天0點都會對上一年度的當(dāng)日數(shù)據(jù)清空,對當(dāng)日流水線生產(chǎn)工作情況進行統(tǒng)計保存。該數(shù)據(jù)將實時在上位機上顯示(上位機編程不做考慮,直接能獲取數(shù)據(jù)即可)。8.3.12實操案例26:流水線檢測與統(tǒng)計裝置1.分析:根據(jù)小節(jié)所學(xué)循環(huán)中斷指令、時間中斷指令、延時中斷指令,我們可以通過延時中斷指令配合傳感器來檢測判斷設(shè)備流水線上是否有工件,當(dāng)未檢測到工件時間到了后,指示燈按循環(huán)中斷規(guī)定時間進行閃爍。我們可以通過時間中斷來設(shè)定每天0點統(tǒng)計截止當(dāng)日工作情況數(shù)據(jù)。為了數(shù)據(jù)能夠失電保持功能,所以我們要在DB數(shù)據(jù)塊中對統(tǒng)計數(shù)據(jù)勾選“保持”。我們要充分理解各OB的優(yōu)先級和掃描周期的運用。輸入點輸出點輸入繼電器名稱輸出繼電器名稱I0.0傳感器Q0.0警示燈

Q0.1報警蜂鳴器8.3.12實操案例26:流水線檢測與統(tǒng)計裝置8.3.12實操案例26:流水線檢測與統(tǒng)計裝置Startup[OB100]啟動組織塊Cyclicinterrupt[OB30]循環(huán)中斷組織塊Timeofday[OB10]時間中斷組織塊Hardwareinterrupt[OB40]硬件中斷組織塊Timedelayinterrupt[OB20]延時中斷組織塊8.3.12實操案例26:流水線檢測與統(tǒng)計裝置Judge_FC[FC1]處理延時中斷時間的子程序Main[OB1]主要程序組織塊Main[OB1]主要程序組織塊起立,下課!第九章

S7-1200通信LAD&SCL第九章S7-1200通信LAD&SCL-112-

通信簡介1

S7通信2

開放式用戶通信39.1通信簡介通信是指一地與另一地之間的信息傳遞。PLC通信是指PLC與計算機、PLC與PLC、PLC與人機界面(觸摸屏)、PLC與變頻器、PLC與其他智能設(shè)備之間的數(shù)據(jù)傳遞。1.通信方式(1)有線通信和無線通信(2)并行通信與串行通信:串行通信又可分為異步通信和同步通信。PLC與其他設(shè)備通信主要采用串行異步通信方式。在串行通信中,根據(jù)數(shù)據(jù)的傳輸方向不同,可分為3種通信方式:單工通信、半雙工通信和全雙工通信。9.1通信簡介單工通信:顧名思義數(shù)據(jù)只能往一個方向傳送的通信,即只能由發(fā)送端傳輸給接收端。半雙工通信:數(shù)據(jù)可以雙向傳送,但在同一時間內(nèi),只能往一個方向傳送,只有一個方向的數(shù)據(jù)傳送完成后,才能往另一個方向傳送數(shù)據(jù)。全雙工通信:數(shù)據(jù)可以雙向傳送,通信的雙方都有發(fā)送器和接收器,由于有兩條數(shù)據(jù)線,所以雙方在發(fā)送數(shù)據(jù)的同時可以接收數(shù)據(jù)。9.1通信簡介2.通信傳輸介質(zhì)有線通信采用傳輸介質(zhì)主要有雙絞線電纜、同軸電纜和光纜。(1)雙絞線電纜:RS-232C、RS-422和RS-485等接口多用雙絞線電纜進行通信。(2)同軸電纜:同軸電纜的結(jié)構(gòu)是從內(nèi)到外依次為內(nèi)導(dǎo)體(芯線)、絕緣線、屏蔽層及外保護層。(3)光纜:光纜是由石英玻璃經(jīng)特殊工藝?yán)杉?xì)絲結(jié)構(gòu),這種細(xì)絲的直徑比頭發(fā)絲還要細(xì),但它能傳輸?shù)臄?shù)據(jù)量卻是巨大的。9.1通信簡介3.RS-485標(biāo)準(zhǔn)串行接口RS-485接口是在RS-422基礎(chǔ)上發(fā)展起來的一種EIA標(biāo)準(zhǔn)串行接口,采用“平衡差分驅(qū)動”方式。RS-485接口滿足RS-422的全部技術(shù)規(guī)范,可以用于RS-422通信。RS-485接口常采用9引腳連接器。RS-485接口的引腳功能如表9-1所示。9.1通信簡介表9-1RS-485接口的引腳功能連接引腳示意圖引腳號信號名稱信號功能1SG或GND外殼接地224V回流邏輯地(公共端)3RXD+或TXD+RS-485信號B,數(shù)據(jù)發(fā)送/接收+端4發(fā)送申請RTS(TTL)55V回流邏輯地(公共端)6+5V+5V輸出,100Ω串聯(lián)電阻7+24V+24V輸出8RXD-或TXD-RS-485信號A,數(shù)據(jù)發(fā)送/接收-端9未用程序員檢測(輸入)外殼屏蔽外殼接地9.1通信簡介S7-1200CPU具有一個集成的PROFINET端口,支持以太網(wǎng)和基于TCP/IP的通信標(biāo)準(zhǔn)。S7-1200CPU支持以下應(yīng)用協(xié)議:(1)傳輸控制協(xié)議(TCP)(2)ISOonTCP(RFC1006)(3)用戶數(shù)據(jù)報協(xié)議(UDP)(4)S7通信9.1通信簡介a)計算機與PLC連接b)觸摸屏與PLC連接c)兩臺PLC直接連接d)三臺PLC+觸摸屏多臺設(shè)備連接圖9-1PROFINET通信的連接方式9.1通信簡介圖9-1a是計算機與PLC連接;圖9-1b是觸摸屏與PLC連接;圖9-1c兩臺PLC直接連接,它們均為直接連接;圖9-1d為三臺PLC+觸摸屏多臺設(shè)備連接,它們通過CSM1277以太網(wǎng)交換機連接在一起。圖9-1d中的“1”就是SiemensCSM1277,它是4端口以太網(wǎng)交換機,其可以用于連接PLC和HMI等其它支持PROFINET的設(shè)備。9.1通信簡介1.工業(yè)以太網(wǎng)IP地址:設(shè)備的以太網(wǎng)接口具有一個默認(rèn)IP地址,用戶可以更改該地址。如果具有通信功能的模塊支持TCP/CP協(xié)議,則IP參數(shù)可見。通常對于所有以太網(wǎng)模塊都是這樣。IP地址由4個0到255之間的十進制數(shù)字組成。各十進制數(shù)字相互之間用點隔開,例如:192.168.0.3。IP地址包括IP子網(wǎng)的地址和設(shè)備的地址。子網(wǎng)掩碼:子網(wǎng)掩碼將這兩個地址拆分。它確定IP地址的哪一部分用于網(wǎng)絡(luò)尋址,哪一部分用于設(shè)備尋址。子網(wǎng)掩碼的設(shè)置位確定IP地址的網(wǎng)絡(luò)部分。例如:子網(wǎng)掩碼255.255.0.0=11111111.11111111.00000000.00000000。9.1通信簡介IP地址和默認(rèn)子網(wǎng)之間的關(guān)系:有關(guān)IP地址范圍與“默認(rèn)子網(wǎng)掩碼”的分配存在具體的規(guī)定。IP地址中的第一個十進制數(shù)字(從左邊起)決定默認(rèn)子網(wǎng)掩碼的結(jié)構(gòu)。如表9-2所示,它決定數(shù)值“1”(二進制)的個數(shù)。IP地址的第一個十進制數(shù)字也可以是224和255之間的值(地址類別D等),但由于對這些值不進行地址檢查,因此不建議使用該方法。表9-2子網(wǎng)掩碼IP地址(十進制)IP地址(二進制)地址類別默認(rèn)子網(wǎng)掩碼0-1260xxxxxxx.xxxxxxxx....A255.0.0.0128-19110xxxxxx.xxxxxxxx...B255.255.0.0192-223110xxxxx.xxxxxxxx...C255.255.255.09.1通信簡介以太網(wǎng)(MAC)地址:在PROFINET網(wǎng)絡(luò)中,制造商會為每個設(shè)備都分配一個“介質(zhì)訪問控制”地址(MAC地址)以進行標(biāo)識。MAC地址由六組數(shù)字組成,每組兩個十六進制數(shù),這些數(shù)字用連字符(-)或冒號(:)分隔并按傳輸順序排列(例如01-23-45-67-89-AB或01:23:45:67:89:AB)。每個CPU在出廠時都已裝載了一個永久、唯一的MAC地址。您無法更改CPU的MAC地址。MAC地址印在CPU正面左下角位置。9.1通信簡介IP路由器:路由器是LAN之間的鏈接。通過使用路由器,LAN中的計算機可向其它任何網(wǎng)絡(luò)發(fā)送消息,這些網(wǎng)絡(luò)可能還隱含著其它LAN。如果數(shù)據(jù)的目的地不在LAN內(nèi),路由器會將數(shù)據(jù)轉(zhuǎn)發(fā)給可將數(shù)據(jù)傳送到其目的地的另一個網(wǎng)絡(luò)或網(wǎng)絡(luò)組。使用“ipconfig”和“ipconfig/all”命令檢查編程設(shè)備的IP地址:Windows操作系統(tǒng)在“運行”(Run)對話框的“打開”(Open)區(qū)域中輸入“cmd”,然后單擊“確定”(OK)按鈕。在顯示的“C:\WINDOWS\system32\cmd.exe”對話框中,輸入命令“ipconfig”。使用“ipconfig”命令9.1通信簡介使用“ipconfig/all”命令使用“ipconfig/all”命令可顯示更多信息。在此可找到編程設(shè)備的適配器卡類型和以太網(wǎng)(MAC)地址。9.1通信簡介2.以太網(wǎng)設(shè)備的互聯(lián)設(shè)置在拓?fù)湟晥D中,可以指定以太網(wǎng)端口的物理互連。特別是要確定設(shè)備的哪個以太網(wǎng)端口將通過以太網(wǎng)電纜(預(yù)設(shè)拓?fù)洌┡c另一個設(shè)備的特定以太網(wǎng)端口相連。在網(wǎng)絡(luò)視圖中,指定哪些設(shè)備將通過以太網(wǎng)子網(wǎng)互連。不指定用于設(shè)備互連的以太網(wǎng)端口(這是端口互連的工作)。(1)創(chuàng)建網(wǎng)絡(luò)連接(2)網(wǎng)絡(luò)視圖9.1通信簡介2.以太網(wǎng)設(shè)備的互聯(lián)設(shè)置在拓?fù)湟晥D中,可以指定以太網(wǎng)端口的物理互連。特別是要確定設(shè)備的哪個以太網(wǎng)端口將通過以太網(wǎng)電纜(預(yù)設(shè)拓?fù)洌┡c另一個設(shè)備的特定以太網(wǎng)端口相連。在網(wǎng)絡(luò)視圖中,指定哪些設(shè)備將通過以太網(wǎng)子網(wǎng)互連。不指定用于設(shè)備互連的以太網(wǎng)端口(這是端口互連的工作)。(1)創(chuàng)建網(wǎng)絡(luò)連接操作結(jié)果選擇“網(wǎng)絡(luò)視圖”(Networkview)以顯示要連接的設(shè)備。選擇一個設(shè)備上的端口,然后將連接拖到第二個設(shè)備上的端口處。釋放鼠標(biāo)按鈕以創(chuàng)建網(wǎng)絡(luò)連接。9.1通信簡介(2)網(wǎng)絡(luò)視圖網(wǎng)絡(luò)視圖是硬件和網(wǎng)絡(luò)編輯器的三個工作區(qū)中的一個。在此處可執(zhí)行以下任務(wù)組態(tài)和分配設(shè)備參數(shù)、設(shè)備間組網(wǎng)、編輯設(shè)備名稱。①切換開關(guān):設(shè)備視圖/網(wǎng)絡(luò)視圖/拓?fù)湟晥D②網(wǎng)絡(luò)視圖的工具欄③設(shè)備視圖的圖形區(qū)域④總覽導(dǎo)航⑤設(shè)備視圖的表格區(qū)域9.2S7通信對于S7通信,S7-1200PLC的PROFINET通信口只支持S7通信的服務(wù)器端,所以在編程和建立連接方面,S7-1200PLC的CPU只做服務(wù)器(主站),不用做任何工作,只需在S7-200SMART、S7-300等其它的CPU一側(cè)建立單邊連接即可,并使用單邊編程方式PUT、GET指令進行通信,如圖9-6所示。如果是兩臺S7-1200之間的連接,那么我們也是一樣只需要在主站編寫通信,從站干活。在實際工作中,我們往往都是主站接按鈕、開關(guān)等司令元件,從站接輸出控制元件居多。圖9-6S7通信指令9.2S7通信使用指令“GET”,可以從遠程CPU讀取數(shù)據(jù)。在控制輸入REQ的上升沿啟動指令,要讀出的區(qū)域的相關(guān)指針(ADDR_i)隨后會發(fā)送給伙伴CPU?;锇镃PU則可以處于RUN模式或STOP模式?;锇镃PU返回數(shù)據(jù):如果回復(fù)超出最大用戶數(shù)據(jù)長度,那么將在STATUS參數(shù)處顯示錯誤代碼“2”。下次調(diào)用時,會將所接收到的數(shù)據(jù)復(fù)制到已組態(tài)的接收區(qū)(RD_i)中。如果狀態(tài)參數(shù)NDR的值變?yōu)椤?”,則表示該動作已經(jīng)完成。只有在前一讀取過程已經(jīng)結(jié)束之后,才可以再次激活讀取功能。如果讀取數(shù)據(jù)時訪問出錯,或如果未通過數(shù)據(jù)類型檢查,則會通過ERROR和STATUS輸出錯誤和警告?!癎ET”指令不會記錄伙伴CPU上所尋址到的數(shù)據(jù)區(qū)域中的變化。9.2S7通信表9-5“GET”指令的參數(shù)表參數(shù)聲明數(shù)據(jù)類型存儲區(qū)說明REQInputBOOLI、Q、M、D、L或常量控制參數(shù)request,在上升沿時激活數(shù)據(jù)交換功能。IDInputWORDI、Q、M、D、L或常量用于指定與伙伴CPU連接的尋址參數(shù)。NDROutputBOOLI、Q、M、D、L狀態(tài)參數(shù)NDR:0:作業(yè)尚未開始或仍在運行。1:作業(yè)已成功完成。ERROROutputBOOLI、Q、M、D、L狀態(tài)參數(shù)ERROR和STATUS,錯誤代碼:ERROR=0STATUS的值為:0000H:既無警告也無錯誤<>0000H:警告,詳細(xì)信息請參見STATUS。ERROR=1出錯。STATUS提供了有關(guān)錯誤類型的詳細(xì)信息。STATUSOutputWORDI、Q、M、D、LADDR_1InOutREMOTEI、Q、M、D指向伙伴CPU上待讀取區(qū)域的指針。指針REMOTE訪問某個數(shù)據(jù)塊時,必須始終指定該數(shù)據(jù)塊。示例:P#DB10.DBX5.0字節(jié)10。ADDR_2InOutREMOTEADDR_3InOutREMOTEADDR_4InOutREMOTERD_1InOutVARIANTI、Q、M、D、L指向本地CPU上用于輸入已讀數(shù)據(jù)的區(qū)域的指針。RD_2InOutVARIANTRD_3InOutVARIANTRD_4InOutVARIANT“ERROR”和“STATUS”參數(shù)表ERRORSTATUS(十進制)說明011警告:由于前一作業(yè)仍處于忙碌狀態(tài),因此未激活新作業(yè)。025已開始通信。作業(yè)正在處理。11通信故障,例如:1、連接描述信息未加載(本地或遠程)2、連接中斷(例如:電纜故障、CPU關(guān)閉或者CP處于STOP模式)3、尚未與伙伴建立連接121、接收到伙伴設(shè)備的否定應(yīng)答。該功能無法執(zhí)行。2、遠程站的響應(yīng)超出了用戶數(shù)據(jù)的最大長度。3、伙伴CPU上的訪問保護已激活。在CPU設(shè)置中禁用訪問保護。14指向數(shù)據(jù)存儲RD_i的指針出錯:1、參數(shù)RD_i和ADDR_i的數(shù)據(jù)類型彼此不兼容。2、RD_i區(qū)域的長度小于待讀取的ADDR_i參數(shù)的數(shù)據(jù)長度。18訪問伙伴CPU時出錯。110無法訪問本地用戶存儲器(例如,訪問某個已經(jīng)刪除的數(shù)據(jù)塊)。1201、已超出并行作業(yè)的最大數(shù)量。2、該作業(yè)當(dāng)前正在執(zhí)行,但優(yōu)先級較低(首次調(diào)用)。9.2S7通信“GET”指令LAD與SCL對照表LADSCL

"GET_DB"(REQ:=_bool_in_,ID:=_word_in_,NDR=>_bool_out_,ERROR=>_bool_out_,STATUS=>_word_out_,ADDR_1:=_remote_inout_,ADDR_2:=_remote_inout_,ADDR_3:=_remote_inout_,ADDR_4:=_remote_inout_,RD_1:=_variant_inout_,RD_2:=_variant_inout_,RD_3:=_variant_inout_,RD_4:=_variant_inout_);SCL編程只需要對REQ、ID、ADDR_1、RD_1進行定義即可,但沒有

組態(tài)按鈕,那么我們該如何進行組態(tài)呢?左鍵單擊“GET_DB”處就會出現(xiàn)開始組態(tài)按鈕,點擊進入圖9-9所示頁面,在紅框處“伙伴”選擇自己需要的從站設(shè)備,若只有2臺PLC,那就只有1個伙伴,若是3臺PLC則會2個伙伴(以此類推),對每一個伙伴均要每次使用該指令進行每一個從站的組態(tài)設(shè)置。9.2S7通信9.2S7通信可使用“PUT”指令將數(shù)據(jù)寫入一個遠程CPU。在控制輸入REQ的上升沿啟動指令,寫入?yún)^(qū)指針(ADDR_i)和數(shù)據(jù)(SD_i)隨后會發(fā)送給伙伴CPU。伙伴CPU則可以處于RUN模式或STOP模式。從已組態(tài)的發(fā)送區(qū)域中(SD_i)復(fù)制了待發(fā)送的數(shù)據(jù)?;锇镃PU將發(fā)送的數(shù)據(jù)保存在該數(shù)據(jù)提供的地址之中,并返回一個執(zhí)行應(yīng)答。如果沒有出現(xiàn)錯誤,下一次指令調(diào)用時會使用狀態(tài)參數(shù)DONE=“1”來進行標(biāo)識。上一作業(yè)已經(jīng)結(jié)束之后,才可以再次激活寫入過程。如果寫入數(shù)據(jù)時訪問出錯,或如果未通過執(zhí)行檢查,則會通過ERROR和STATUS輸出錯誤和警告。9.2S7通信表9-5“PUT”指令的參數(shù)表參數(shù)聲明數(shù)據(jù)類型存儲區(qū)說明參數(shù)聲明數(shù)據(jù)類型存儲區(qū)說明REQInputBOOLI、Q、M、D、L或常量控制參數(shù)request,在上升沿時激活數(shù)據(jù)交換功能。ADDR_1InOutREMOTEI、Q、M、D指向伙伴CPU上用于寫入數(shù)據(jù)區(qū)域的指針。指針REMOTE訪問某個數(shù)據(jù)塊時,必須始終指定該數(shù)據(jù)塊。示例:P#DB10.DBX5.0字節(jié)10。傳送數(shù)據(jù)結(jié)構(gòu)(例如Struct)時,參數(shù)ADDR_i處必須使用數(shù)據(jù)類型CHAR。IDInputWORDI、Q、M、D、L或常量用于指定與伙伴CPU連接的尋址參數(shù)。ADDR_2InOutREMOTEDONEOutputBOOLI、Q、M、D、L狀態(tài)參數(shù)DONE:0:作業(yè)未開始或仍在執(zhí)行之中。1:作業(yè)已成功完成,且無錯誤。ADDR_3InOutREMOTEERROROutputBOOLI、Q、M、D、L狀態(tài)參數(shù)ERROR和STATUS,錯誤代碼:ERROR=0STATUS的值為:0000H:既無警告也無錯誤<>0000H:警告,詳細(xì)信息請參見STATUS。ERROR=1出錯。有關(guān)該錯誤類型的詳細(xì)信息,請參見STATUS。

ADDR_4InOutREMOTESD_1InOutVARIANTI、Q、M、D、L指向本地CPU上包含要發(fā)送數(shù)據(jù)的區(qū)域的指針。僅支持BOOL、BYTE、CHAR、WORD、INT、DWORD、DINT和REAL數(shù)據(jù)類型。傳送數(shù)據(jù)結(jié)構(gòu)(例如Struct)時,參數(shù)SD_i處必須使用數(shù)據(jù)類型CHAR。STATUSOutputWORDI、Q、M、D、LSD_2InOutVARIANTSD_3InOutVARIANTSD_4InOutVARIANT9.2S7通信“ERROR”和“STATUS”參數(shù)表ERRORSTATUS(十進制)說明011警告:由于前一作業(yè)仍處于忙碌狀態(tài),因此未激活新作業(yè)。025已開始通信。作業(yè)正在處理。11通信故障,例如:1、連接描述信息未加載(本地或遠程)2、連接中斷(例如:電纜故障、CPU關(guān)閉或者CP處于STOP模式)3、尚未與伙伴建立連接121、伙伴CPU的否定應(yīng)答。該功能無法執(zhí)行。2、未授予對伙伴CPU的訪問權(quán)限。在CPU設(shè)置中激活訪問。14指向數(shù)據(jù)存儲RD_i的指針出錯:1、參數(shù)SD_i和ADDR_i的數(shù)據(jù)類型彼此不兼容。2、SD_i區(qū)域的長度大于待寫入的ADDR_i參數(shù)的數(shù)據(jù)長度。3、不能訪問SD_i。4、已經(jīng)超過了最大用戶數(shù)據(jù)大小。5、參數(shù)SD_i和ADDR_i的數(shù)量不一致。18訪問伙伴CPU時出錯(例如,數(shù)據(jù)塊未加載或不受寫保護)。110無法訪問本地用戶存儲器(例如,訪問某個已經(jīng)刪除的數(shù)據(jù)塊)。1201、已超出并行作業(yè)的最大數(shù)量。2、該作業(yè)當(dāng)前正在執(zhí)行,但優(yōu)先級較低(首次調(diào)用)。9.2S7通信“PUT”指令LAD與SCL對照表LADSCL

"PUT_DB"(REQ:=_bool_in_,ID:=_word_in_,DONE=>_bool_out_,ERROR=>_bool_out_,STATUS=>_word_out_,ADDR_1:=_remote_inout_,ADDR_2:=_remote_inout_,ADDR_3:=_remote_inout_,ADDR_4:=_remote_inout_,SD_1:=_variant_inout_,SD_2:=_variant_inout_,SD_3:=_variant_inout_,SD_4:=_variant_inout_);9.2.3案例27:兩臺電動機異地啟停控制任務(wù):現(xiàn)有2臺S7-1200PLC各控制1臺電動機的啟動與停止,控制要求:1.按下主站PLC的本地啟動按鈕SB11或本地停止按鈕SB12可以對主站本地電動機進行啟動或停止操作。2.按下主站遠程啟動按鈕SB13或遠程停止按鈕SB14可以對從站遠程電動機進行啟動或停止操作。3.按下從站PLC的本地啟動按鈕SB21或本地停止按鈕SB22可以對從站本地電動機進行啟動或停止操作。4.按下從站遠程啟動按鈕SB23或遠程停止按鈕SB24可以對主站遠程電動機進行啟動或停止操作。5.電路均有熱過載保護、短路保護、欠壓失壓保護。步驟:1.I/O分配表

2.PLC外部接線圖

3.編寫程序9.2.3案例27:兩臺電動機異地啟??刂圃O(shè)備名稱輸入點輸出點輸入編號注釋輸出編號注釋主站PLCI0.0SB11主站本地啟動Q0.0KM1主站電動機I0.1SB12主站本地停止---I0.2SB13主站遠程啟動---I0.3SB14主站遠程停止---從站PLCI0.0SB21從站本地啟動Q0.0KM2從站電動機I0.1SB22從站本地停止---I0.2SB23從站遠程啟動---I0.3SB24從站遠程停止---9.2.3案例27

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論