




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PLC控制系統設計與SCL編程語言第六章6.1PLC控制系統的設計原則最大限度地滿足被控對象的控制要求,是設計控制系統的首要前提。這就要求設計人員在設計前就要深人現場進行調查研究。收集控制現場的資料,收集控制過程中有效的控制經驗,進行系統設計。同時要注意要和現場的管理人員、技術人員、工程操作人員緊密配合,共同解決設計中的重點問題和疑難問題。6.1.1PLC控制系統的設計原則1.滿足要求控制系統長期運行中能否達到安全、可靠、穩定,是設計控制系統的重要原則。為了能達到這一點,要求在系統設計上,器件選擇上,軟件編程上要全面考慮。如在硬件和軟件的設計上應該保證PLC程序不僅在正常條件下能正確運行,而且在一些非正常情況下(如突然掉電再上電,按錯按鈕等),也能正常工作。程序只能接受合法操作,對非法操作程序能予以拒絕等。2.安全可靠一個新的控制工程固然能提高產品的質量,提高產品的數量,從而為工程帶來巨大的經濟效益和社會效益。但是,新工程的投入、技術的培訓、設備的維護也會導致工程的投入和運行資金的增加。在滿足控制要求的前提下,力求使控制系統經濟、簡單,維修方便。6.1.1PLC控制系統的設計原則3.經濟實用在指定系統總體規劃時,應優先選用技術先進、應用成熟廣泛的產品組成控制系統,保證系統在一定時間內具有先進性,不會被市場淘汰。此原則與經濟實用原則共同考慮,時控制系統具有較高的性價比。同時,還應充分考慮用戶今后生產發展和工藝改進的需要,在選用PLC時,I/O點數和內存容量上要留有適當裕量,同時對外要留有擴展的接口,以滿足控制系統擴展和監控的需要。4.適應發展1.建立系統設計方案1)熟悉被控制系統的工藝要求。深入了解被控系統是PLC控制系統設計的基礎。工程師在接到設計任務時,首先必須進入現場調查研究,搜集有關資料,并與工藝、機械、電氣方面的技術和操作人員密切配合,共同探討被控制對象的驅動要求和注意事項,如驅動的電壓、電流和時間等;各部件的動作關系如因果、條件、順序和必要的保護與聯鎖等;操作方式如手動、自動、半自動,連續、單步和單周期等;內部設備與機械、液壓、氣動、儀表、電氣等方面的關系;外圍設備與其他PLC、工業控制計算機、變頻器、監視器之間的關系,以及是否需要顯示關鍵物理量、上下位機的聯網通信和停電等應急情況時的緊急處理等。2)根據各物理量的性質確定PLC的型號。根據控制要求確定所需的信號輸入元件、輸出執行元件,即哪些信號是輸入給PLC,哪些信號是由PLC發出去驅動外圍負載。同時分類統計出各物理量的性質,如是開關量還是模擬量,是直流量還是交流量,以及電壓的大小等級。根據輸入量、輸出量的類型和點數,選擇具有相應功能PLC的基本單元和擴展單元,對于模塊式PLC,還應考慮框架和基板的型號、數量,并留有余量。6.1.2PLC控制系統的設計流程圖6-1PLC設計流程圖6.1.2PLC控制系統的設計流程6.2PLC的程序設計方法3)觸點需與線圈在同一線路上。4)觸點需放在線圈的左邊,線圈右邊不能有觸點。5)當有串聯線路并聯時,應將觸點最多的那個串聯回路放在梯形圖最上部。當有并聯線路串聯時,應將觸點最多的那個并聯回路放在梯形圖最左邊,如圖6-2所示。這樣排列的程序簡潔。6.2PLC的程序設計方法PLC的程序設計方法一般可分為經驗設計法、繼電器控制電路改造法、順序控制設計法等。不管哪種設計方法都必須遵循梯形圖的設計規則。1.梯形圖設計規則1)梯形圖所使用的元件編號應在所選用的PLC機型規定范圍內,不能隨意選用。2)使用輸入繼電器觸點的編號,應與控制信號的輸入端號一致。當使用輸出繼電器時,應與外接負載的輸出端號一致。圖6-26)對不可編程或不便于編程的線路,必須將線路進行等效變換,以便于編程。圖6-3所示的橋式線路不能直接編程,必須按邏輯功能進行等效變換才能編程。圖6-3等效變換梯形圖畫法6.2PLC的程序設計方法1)啟-保-停電路啟-保-停電路是組成梯形圖的最基本的支路單元,包含一個梯形圖支路的全部要素。啟-保-停電路的梯形圖如圖6-4所示。在圖6-4中,10.0為啟動信號,10.1為停止信號,Q0.0常開觸點實現了自鎖保持。還可以用置位和復位指令來實現。6.2.1經驗設計法6-4啟-保-停電路的梯形圖2)互鎖電路互鎖就是在不能同時接通的線圈回路中互串對方常閉觸點的方法。圖6-5所示梯形圖中的兩個輸出線圈Q0.1、Q0.2回路中互串了對方的常閉觸點,這就保證了在Q0.1置1時Q0.2不可能同時置1。
6.2.1經驗設計法3)閃爍電路圖6-6所示閃爍電路,如果I0.0接通,其常開觸點接通,第二個定時器(T2)未啟動,則其輸出MO.1對應的常閉觸點接通,第一個定時器(T1)開始定時。當T1定時時間未到時,T2無法啟動,Q0.0為0,10s后定時時間到,T1的輸出MO.0接通,其常開觸點接通,Q0.0接通,同時T2開始定時,5s后T定時時間到,其輸出MO.1接通,其常閉觸點斷開,使T1停止定時,MO.0的常開觸點斷開,Q0.0就斷開,同時使T斷開,MO.1的常閉觸點接通,Tl又開始定時,周而復始,Q0.0將周期性地“接通”和“斷開”,直到I0.0斷開,Q0.0線圈“接通”和“斷開”的時間分別等于T2和T1的定時時間。6.2.1經驗設計法1.繼電器控制電路圖與PLC梯形圖語言的比較PLC編程中使用的梯形圖語言與繼電器控制電路圖相類似,兩者圖形符號的比較如表6-1所示。(1)梯形圖語言和繼電器電路圖語言采用的圖形符號是類似的。(2)這兩種圖表達的控制思想的方式是一樣的,都是用圖形符號及符號間的連接關系表達控制系統中事物間的相互關系。(3)這兩種圖的結構形式是類似的,都是由一些并列的分支構成,分支的末尾都是作為輸出的線圈,線圈的前邊則是表示線圈工作條件的觸點。(4)這兩種圖的分析方法是近似的。在繼電器電路中,繼電器是否工作以有無電流流到繼電器的線圈進行判斷,電流規定從電源的正極流出而流入電源的負極。在梯形圖中編程元件是否工作取決于是否有“假想電流”流過,與繼電器電路中的電流有類似的功效,“假想電流”規定從梯形圖的左母線流向梯形圖的右母線。從這里可以看出PLC的編程是從繼電器控制電路圖移植而來的。6.2.2繼電器控制電路改造法順序控制就是按照生產工藝預先規定的順序,在各個輸入信號的作用下,根據內部狀態和時間的順序,使生產過程中各個執行機構自動而有序地工作。1.經驗法和順序功能控制設計法的對比(1)采用經驗法設計梯形圖是直接用輸入信號控制輸出信號,如圖6-9所示。如果無法直接控制,或為了實現記憶、聯鎖、互鎖等功能,只好被動地增加一些輔助元件和輔助觸點。由于不同的系統的輸出信號和輸人信號之間的關系各不相同,以及它們對聯鎖、互鎖的要求多種多樣,因此不可能找出一種簡單通用的設計方法。圖6-9
經驗設計法6.2.3順序控制設計法(2)順序控制設計法是用輸入信號控制代表各步的中間變量(M點),再用它們控制輸出信號,將整個程序分為控制程序和輸出程序兩部分。如圖6-10所示。因為步是根據輸出量的狀態劃分的,所以中間變量和輸出之間具有很簡單的邏輯關系,輸出程序的設計極為簡單,而代表步的中間變量的控制程序,不管多么復雜,其設計方法都是相同的,并且很容易掌握,同時代表步的輔助繼電器是依次順序變為ON/OFF狀態的,基本上解決了系統的記憶、聯鎖等問題。圖6-10
順序控制設計法6.2.3順序控制設計法復雜順序功能圖轉化為梯形圖如果某一轉換與并行序列的分支、合并無關,它的前級步和后續步都只有一個,需要復位、置位的位存儲器也只有一個,因此選擇序列的分支與合并的編程方法與單序列的編程方法完全相同。復雜順序功能圖轉化為梯形圖如圖6-15所示。圖6-15復雜順序功能圖轉化為梯形圖6.2.3順序控制設計法如圖6-15所示,步M4.2之后有一個并行序列的分支,用M4.2和轉換條件I0.3的常開觸點組成的串聯電路,將后續步對應的M4.3和M4.5同時置位,將前級步對應的M4.2復位。I0.6對應的轉換之前有一個并行序列的合并,用兩個前級步M4.4和M4.6的常開觸點,和轉換條件I0.6的常開觸點組成的串聯電路,將后續步對應的M4.0置位,和將前級步對應的M4.4、M4.6復位。6.3PLC程序的調試進一步理順各部分程序之間的相互關系,并進行程序的調試。6.3PLC程序的調試1.確定程序的總體結構2.分別設計局部程序將系統的程序按工作方式和功能分成若干部分,如公共程序、手動程序、自動程序等。手動程序和自動程序不是同時執行的,所以用跳轉指令將它們分開,用工作方式的選擇信號作為跳轉的條件。公共程序和手動程序相對較為簡單,一般采用經驗設計法進行設計;自動程序相對比較復雜,對于順序控制系統一般采用順序控制設計法。3.程序的綜合與調試1.PLC程序的內容程序應最大限度地滿足控制要求,完成所要求的控制功能。除控制功能外,通常還應包括以下幾個方面的內容:6.3.1程序的內容和質量123初始化程序:在PLC上電后,一般都要做一些初始化的操作。其作用是為啟動做必要的準備,并避免系統發生誤動作。檢測、故障診斷、顯示程序:應用程序一般都設有檢測、故障診斷和顯示程序等內容。保護、聯鎖程序:各種應用程序中,保護和聯鎖是不可缺少的部分。它可以杜絕由于非法操作而引起的控制邏輯混亂,保證系統的運行更安全、可靠。2.PLC程序的質量程序的質量可以由以下幾個方面來衡量:1)程序的正確性:所謂正確的程序必須能經得起系統運行實踐的考驗,離開這一條對程序所做的評價都是沒有意義的。2)程序的可靠性:好的應用程序可以保證系統在正常和非正常(短時掉電再復電、某些被控量超標、某個環節有故障等)工作條件下都能安全可靠地運行,也能保證在出現非法操作(如按動或誤觸動了不該動作的按鈕)等情況下不至于出現系統控制失誤。3)參數的易調整性:易通過修改程序或參數而改變系統的某些功能。例如,有的系統在一定情況下需要變動某些控制量的參數(如定時器或計數器的設定值等),在設計程序時必須考慮怎樣編寫才能易于修改。4)程序的簡潔性:編寫的程序應盡可能簡練。5)程序的可讀性:程序不僅僅給設計者自己參閱,系統的維護人員也要閱讀。另外,為了有利于交流,也要求程序有一定的可讀性。6.3.1程序的內容和質量1.模擬調試1)將設計好的程序寫入PLC后,應先逐條仔細檢查,并改正寫入時出現的錯誤。2)用戶程序一般先在實驗室模擬調試,實際的輸入信號可以用鈕子開關和按鈕來模擬,各輸出量的“通/斷”狀態用PLC上有關的發光二極管來顯示,一般不用接PLC實際的負載(如接觸器、電磁閥等)。3)在調試時應充分考慮各種可能的情況,以及各種可能的進展路線,都應逐一檢查,不能遺漏。發現問題后應及時修改梯形圖和PLC中的程序,確保輸入量與輸出量之間的關系完全符合要求。4)程序中的定時器或計數器應該選擇合適的設定值。2.現場調試1)將PLC安裝在控制現場進行聯機總調試,在調試過程中將暴露出系統圖和梯形圖程序設計中的問題,傳感器、執行器和硬接線等方面的問題,以及PLC的外部接線問題,應對出現的問題及時加以解決。2)如果調試達不到指標要求,則對相應硬件和程序部分做適當調整,通常只需要修改程序就可以達到調整的目的。3)全部調試通過后,經過一段時間的考驗,系統就可以投入實際的運行了。6.3.2程序的調試6.4SCL編程語言1.S7-SCL簡介SCL(結構化控制語言)是一種基于PASCAL的高級編程語言。適合于復雜的數學計算、數據管理、過程優化、配方管理和統計任務等。S7-SCL塊可以與其他編程語言生成的塊互相調用。2.生成SCL的代碼塊雙擊項目樹的中的“添加新塊”,生成一個函數SCL_FC1。設置“創建語言”為SCL。3.SCL的編程窗口雙擊SCL_FC1,打開SCL程序編輯器窗口。編輯器有接口參數區、收藏夾。工作區由側欄、代碼區和監控區組成。4.腳本/文本編輯器的設置執行菜單命令“選項”→“設置”,選中“設置”視圖左邊導航區的“常規”文件夾中的“腳本/文本編輯器”,可以定制編程窗口的外觀和程序代碼的格式。5.對SCL語言的設置選中“設置”視圖左邊導航區的“PLC編程”文件夾中的SCL,可以設置顯示關鍵字的方式,和新塊的默認設置。6.4SCL編程語言1.表達式表達式由操作數和運算符組成。通過運算符可以將表達式連接在一起或相互嵌套。表達式按相關運算符的優先級和從左到右的順序進行運算,括號中的運算優先。表達式分為算術表達式、關系表達式和邏輯表達式。2.算術表達式算術表達式可以是一個數字值,也可以是由帶有算術運算符的兩個值或表達式組合而成。如果該運算中有兩個具有不同的數據類型的操作數,運算結果將采用長度較長且有符號的那個數據類型。例如Int+Real=Real,Real+LReal=LReal。例:"MyTag1":="MyTag2"*"MyTag3";3.關系表達式關系表達式對兩個操作數的值進行比較,得到一個布爾值。滿足比較條件時比較結果為TRUE,否則為FALSE。1)數據類型整數、浮點數、二進制數、位字符串和字符串中的所有變量都可以進行比較。Time、LTime、日期和時間只能比較相同類型的變量。6.4.2SCL基礎知識2)字符串的比較基于ASCII字符集,將比較變量的長度和各ASCII字符對應的數值。3)需要將S5Time變量轉換為Time數據類型后再進行比較。例:IFA<>(BANDC)THEND:=FALSE;4.邏輯表達式邏輯表達式由兩個操作數以及邏輯運算符(AND、OR或XOR)或取反操作數(NOT)組成。邏輯運算符可以處理各種數據類型。兩個Bool型操作數的結果也是Bool型。如果至少有一個是位字符串,結果是位數最高的位字符串。如果一個操作數為Bool類型而另一個為位字符串,必須先將Bool類型的操作數顯式轉換為位字符串類型。例:IF“MyTag1”ANDNOT“MyTag2”THENC:=a;6.4.2SCL基礎知識5.運算符和運算符的優先級6.4.2SCL基礎知識表6-3運算符及其優先級6.4.3SCL程序控制指令圖6-16是OB1調用FC1的程序。圖6-16OB1調用FC1的程序“條件執行”指令IF根據條件控制程序流的分支。該條件是結果為布爾值的邏輯表達式或比較表達式。執行IF指令時,將對<條件>指定的表達式進行運算。如果表達式的Bool值為TRUE,則表示滿足該條件;反之則表示不滿足該條件。(1)IF分支IF<條件>THEN<指令>END_IF;如果滿足指令中的條件,將執行THEN后面的指令;如果不滿足該條件,程序將從END_IF的下一條指令開始繼續執行。(2)IF和ELSE分支IF<條件>THEN<指令1>ELSE<指令0>END_IF;6.4.3SCL程序控制指令1.IF指令如果滿足指令中的條件,將執行THEN后的指令1。如果不滿足該條件,則執行ELSE后的指令0。然后程序從END_IF的下一條指令開始繼續執行。(3)IF、ELSIF和ELSE分支
IF<條件1>THEN<指令1>ELSIF<條件2>THEN<指令2>ELSE<指令0>END_IF;如果滿足條件1,將執行THEN后的指令1。然后將從END_IF后繼續執行。如果不滿足第一個條件,但是滿足條件2,則將執行THEN后的指令2。然后將從END_IF后繼續執行。如果不滿足任何條件,則執行ELSE后的指令0,再執行END_IF后的程序。6.4.3SCL程序控制指令在IF指令內可以嵌套任意多個ELSIF和THEN組合。可以選擇對ELSE分支進行編程。IF#位輸入1=1THEN#輸出值1:=10;ELSIF#位輸入2=1THEN#輸出值1:=20;ELSE#輸出值1:=30;END_IF如果“#位輸入1”的值為1,“輸出值1”為10;如果“#位輸入1”的值為0,“#位輸入2”的值為1,“輸出值1”為20;如果兩個條件的值均為0,“輸出值1”為30。仿真實驗可用OB1的程序狀態監控來驗證。6.4.3SCL程序控制指令“創建多路分支”指令CASE根據數字表達式的值執行多個指令序列中的一個,將表達式的整數值與多個常數的值進行比較。常數可以是整數、整數的范圍或由整數和范圍組成的枚舉(例如10、11、15..20)。CASE<表達式>OF<常數1>:<指令1><常數2>:<指令2><常數X>:<指令X> (*X>=3*)ELSE<指令0>END_CASE;如果表達式的值等于常數1的值,執行指令1。然后程序將從END_CASE之后繼續執行。如果表達式的值不等于常數1的值,將該值與下一個設定的常數值進行比較,直至比較的值相等為止。程序如圖6-17所示。如果表達式的值與所有設定的常數值均不相等,將執行ELSE后編寫的指令0。ELSE是一個可選的語法部分,可以省略。CASE指令也可通過用CASE替換一個指令塊來進行嵌套。2.CASE指令6.4.3SCL程序控制指令圖6-17CASE指令程序6.4.3SCL程序控制指令使用“在計數循環中執行”指令FOR,程序被重復循環執行,直至執行變量不在指定的取值范圍內。程序循環可以嵌套。1)“在按步寬計數循環中執行”指令FOR<執行變量>:=<起始值>TO<結束值>BY<增量>DO<指令>END_FOR;執行變量、起始值、結束值和增量的數據類型可選有符號整數SInt、Int和DInt,S7-1500還可選LInt。循環開始時,將起始值賦值給執行變量。每次循環后執行變量都會遞增(正增量)或遞減(負增量)增量的絕對值。每次運行循環后,如果執行變量未達到結束值,則將執行DO之后編寫的指令。如果達到結束值,最后執行一次FOR循環。如果超出結束值,程序將從END_FOR之后繼續執行。執行該指令期間,不允許更改結束值。3.FOR指令6.4.3SCL程序控制指令2)“在計數循環中執行”指令FOR<執行變量>:=<起始值>TO<結束值>DO<指令>END_FOR;每次循環后執行變量的值加1,即增量為默認值1。3)FOR指令應用的例子在FC1的接口區定義數據類型為Int的臨時變量i,生成全局數據塊“數據塊_1”,去掉它的“優化的塊訪問”屬性。在其中生成數組“數組1”和“數組2”,其數據類型為Array[1..10]ofInt。下面是程序:FOR#i:=2TO6BY2DO "數據塊_1".數組2[#i]:=#輸入值2*"數據塊_1".數組1[#i];END_FOR;6.4.3SCL程序控制指令“滿足條件時執行”指令WHILE用來重復執行程序循環,直到不滿足執行條件為止。下面是應用WHILE指令的例子:WHILE#輸入值1<>#輸入值2DO #輸出值2:=20;END_WHILE;只要操作數“#輸入值1”和“#輸入值2”的值不相等,條件滿足,就會執行DO后面的指令。二者相等時,程序將從END_WHILE后繼續執行。6.4.3SCL程序控制指令4.WHILE指令“不滿足條件時執行”指令REPEAT可以重復執行程序循環,直到不滿足執行條件為止。下面是應用REPEAT指令的例子:REPEAT #輸出值1:=#輸入值2;UNTIL#位輸入1END_REPEAT;只要操作數“#位輸入1”的信號狀態為“0”,就會反復地將操作數“#輸入值2”的值賦值給操作數“#輸出值1”。如果#位輸入1的值為TRUE,條件滿足,將跳出程序循環,從END_REPEAT之后繼續執行。
WHILE指令是先評估條件,條件滿足才執行指令。而REPEAT指令是先執行其中的指令,然后才評估條件,因此即使滿足終止條件,循環體中的指令也會執行一次。在程序中使用WHILE和REPEAT指令,可能導致掃描循環時間超時。6.4.3SCL程序控制指令5.REPEAT指令“核對循環條件”指令CONTINUE用于結束FOR、WHILE或REPEAT循環的當前程序運行。執行該指令后,將再次計算繼續執行程序循環的條件。下面是應用CONTINUE指令的例子:
FOR#i:=1TO10DO IF#i<5THENCONTINUE; END_IF; "數據塊_1".數組3[#i]:=5;END_FOR;如果滿足條件#i<5,則不執行END_IF后續的指令。FOR指令的執行變量i以增量1遞增,然后檢查i的當前值是否在設定的取值范圍內。如果執行變量在取值范圍內,將再次計算IF的條件。如果不滿足條件#i<5,則執行END_IF后續的指令,并開始一次新的循環。在這種情況下,執行變量也會以增量1進行遞增并接受檢查。上面的程序的執行結果是“數據塊_1”.數組3中的數組元素數組3[5]~數組3[10]被賦值為5。6.4.3SCL程序控制指令6.CONTINUE指令“立即退出循環”指令EXIT可以隨時取消FOR、WHILE或REPEAT循環的執行,而無需考慮是否滿足條件。在循環結束后繼續執行程序。下面是應用EXIT指令的例子:FOR#i:=10TO1BY-2DOIF#i<5THENEXIT;END_IF;"數據塊_1".數組4[#i]:=2;END_FOR;FOR指令使執行變量#i以2為增量進行遞減,并檢查該變量的當前值是否在程序中設定的取值范圍之內。如果量#i在取值范圍之內,則計算IF的條件。如果不滿足條件#i<5,則執行END_IF后續的指令,并開始一次新的循環。
如果滿足IF指令的條件#i<5,則取消循環的執行,程序將從END_FOR之后繼續執行。上面的程序的執行結果是數組元素數組4[10]、數組4[8]和數組4[6]被賦值為2。6.4.3SCL程序控制指令7.EXIT指令執行“跳轉”指令GOTO后,將跳轉到指定的跳轉標簽處,開始繼續執行程序。GOTO指令和它指定的跳轉標簽必須在同一個塊內。在一個塊內,跳轉標簽的名稱只能指定一次。多個跳轉指令可以跳轉到同一個跳轉標簽處。
不允許從外部跳轉到程序循環內,但是允許從循環內跳轉到外部。6.4.3SCL程序控制指令8.GOTO指令使用“退出塊”指令RETURN,可以終止當前被處理的塊中的程序執行,返回調用它的塊繼續執行。如果該指令出現在塊結尾處,則被忽略。9.RETURN指令打開項目“SCL間接尋址”。間接尋址訪問的數據塊不能使用“優化的塊訪問”屬性。1.PEEK_BOOL指令“讀取存儲器位”指令PEEK_BOOL用于在不指定數據類型的情況下從存儲器區讀取存儲器位。生成一個使用SCL語言、名為“PEEK_BOOL”的FC1函數塊。在FC1塊中調用指令PEEK_BOOL,其Byte輸入參數area為地址區,其值為16#81~16#84時分別為輸入、輸出、位存儲器區和DB,area為16#1時為外設輸入(僅S7-1500)。DInt輸入參數dbNumber是數據塊的編號,不是數據塊中的地址則為0。DInt輸入參數byteOffset為地址的字節編號,Int輸入參數bitOffset是地址的位編號。返回的函數值為Bool變量。
6.4.4SCL的間接尋址1.累加數組元素打開項目“SCL求累加值”,DB1數據塊中有一個數據類型為Array[1..10]ofInt的數組,名為“數組1”。要求累加數組1前面若干個元素的值。定義使用SCL語言的FC1的塊接口變量。在FC1的程序中,首先將累加值清零。用FOR指令累加數組1前面若干個元素的值,用FOR指令中的運行變量i作為數組1元素的下標,通過間接尋址讀取數組元素的值。整數相加的結果可能超過整數的最大值,為此將讀取的整數值轉換為雙整數值,再進行累加。在OB1中調用FC1,累加數組1前4個元素的值。程序如圖6-20所示。6.4.5SCL應用舉例5.1S7-1200的通信與故障診斷第七章7.1S7-1200PLC通信概述7.1S7-1200PLC通信概述西門子公司提供的典型工廠自動化系統網絡結構如圖7-1所示,主要包括現場設備層、車間監控層和工廠管理層。圖7-17.1S7-1200PLC通信概述(1)現場設備層現場設備層的主要功能是連接現場設備,如分布式I/0、傳感器、驅動器、執行機構和開關設備等,完成現場設備控制及設備間聯鎖控制。主站(如PLC、PC或其他控制器)負責總線通信管理及與從站的通信。總線上所有設備生產工藝控制程序存儲在主站中,并由主站執行。西門子的SIMATICNET網絡系統將執行器和傳感器單獨分為一層,主要使用AS-I(執行器-傳感器接口)網絡。(2)車間監控層車間監控層又稱為單元層,用來完成車間主生產設備之間的連接,實現車間級設備的監控。車間級監控包括生產設備狀態的在線監控、設備故障報警及維護等。通常還具有諸如生產統計、生產調度等車間級生產管理功能。車間級監控通常要設立車間監控室,有操作員工作站及打印設備。車間級監控網絡可采用PROFIBUS-FMS或工業以太網等。7.1S7-1200PLC通信概述(3)工廠管理層車間操作員工作站可以通過集線器與車間辦公管理網連接,將車間生產數據送到車間管理層。車間管理網作為工廠主網的一個子網,通過交換機、網橋或路由器等連接到廠區骨干網,將車間數據集成到工廠管理層。工廠管理層通常采用符合IEC802.3標準的以太網,即TCP/IP通信協議標準。廠區骨干網可以根據工廠實際情況,采用FDDI或ATM等網絡。7.2S7-1200PLC的開放式用戶通信7.2S7-1200PLC的開放式用戶通信S7-1200CPU本體上集成了一個PROFINET通信接口,支持以太網和基于TCP/IP的通信標準。使用這個通信口可以實現S7-1200CPU與編程設備的通信、與HMI觸摸屏的通信,以及與其他CPU之間的通信。這個PROFINET物理接口支持10Mbit/s/100Mbit/s的RJ45口,支持電纜交叉自適應。因此一個標準的或者交叉的以太網線都可以用于該接口。7.2.1支持的協議S7-1200PLC的PROFINET接口支持開放式用戶通信、Web服務器、ModbusTCP協議和S7通信(服務器和客戶機)。開放式用戶通信支持以下通信協議及服務:TCP(傳輸控制協議)、ISOonTCP(RCF1006)、UDP(用戶數據報協議)、DHCP(動態主機配置協議)、SNMP(簡單網絡管理協議)、DCP(發現和基本配置協議)和LLDP(鏈路層發現協議)。下面先簡要介紹幾個協議。7.2.1支持的協議各類協議的介紹(1)TCPTCP是由RFC793描述的標準協議,可以在通信對象之間建立穩定、安全的服務連接。如果數據用TCP協議來傳輸,傳輸的形式是數據流,沒有傳輸長度及信息幀的起始、結束信息。在以數據流的方式傳輸時,接收方不知道一條信息的結束和下一條信息的開始。因此,發送方必須確定信息的結構讓接收方能夠識別。(2)ISOonTCP
ISO傳輸協議最大的優勢是通過數據包來進行數據傳遞。然而,由于網絡的增加,它不支持路由功能的劣勢會逐漸顯現。TCP/IP協議兼容了路由功能后,對以太網產生了重要的影響。為了集合兩個協議的優點,在擴展的RFC1006“ISOontopofTCP”作了注釋,也稱為“ISOonTCP”,即在TCP/IP協議中定義了ISO傳輸的屬性。7.2.1支持的協議(3)S7通信所有SIMATICS7控制器都集成了用戶程序可以讀寫數據的S7通信服務。不管使用哪種總線系統都可以支持S7通信服務,即以太網、PROFIBUS和MPI網絡中都可使用S7通信。此外,使用適當的硬件和軟件的PC系統也可支持通過S7協議的通信。S7-1200PL.C的PROFINET通信口所支持的最大通信連接數如下:(1)3個連接用于HMI觸摸屏與CPU的通信。(2)1個連接用于編程設備與CPU的通信。(3)3個連接用于S7通信的服務器端連接,可以實現與S7-200、S7-300以及S7-400PLC的以太網S7通信。(4)8個連接用于OpenIE即TCP、ISOonTCP的編程通信,使用T-block指令來實現。S7-1200PLC可以同時支持以上15個通信連接,這些連接數是固定不變的,不能自定義。7.2.1支持的協議S7-1200CPU的PROFIENT接口有兩種網絡連接方法:直接連接和網絡連接。1)直接連接當一個S7-1200PLC與一個編程設備,或一個HMI或一個PLC通信時,也就是說只有兩個通信設備時,實現的是直接通信。直接連接不需要交換機,用網線直接連接兩個設備即可,如圖7-2所示。圖7-2直接連接示意圖7.2.1支持的協議2)網絡連接當多個通信設備進行通信時,也就是通信設備數量為兩個以上時,實現的是網絡連接,如圖7-3所示。多個通信設備的網絡連接需要使用以太網交換機來實現。可以使用導軌安裝的西門子CSM1277的4口交換機連接其他CPU及HMI設備。CSM1277交換機是即插即用的。圖7-3多個通信設備的網絡連接7.2.1支持的協議與S7-1200有關的PLC之間的通信方法1)S7-1200CPU與S7-1200CPU之間的以太網通信S7-1200PLC與S7-1200PLC之間的以太網通信可以通過TCP或ISOonTCP來實現。使用的指令是在雙方CPU調用T-block指令來實現。2)S7-1200CPU與S7-200CPU之間的以太網通信S7-1200CPU與S7-200CPU之間的以太網通信只能通過S7通信來實現,因為S7-1200PLC的以太網模塊只支持S7通信。由于S7-1200PLC的PROFINET通信口只支持S7通信的服務器端,所以在編程方面,S7-1200PLC不用做任何工作,只要在S7-200PLC一側將以太網設置成客戶端,并用ETHx_XFR指令編程。3)S7-1200CPU與S7-300/400CPU之間的以太網通信S7-1200CPU與S7-300/400CPU之間的以太網通信方式相對來說要多一些,可以采用下列方式:TCP、ISOonTCP和S7通信。7.2.1支持的協議采用TCP和ISOonTCP這兩種協議進行通信所使用的指令是相同的,在S7-1200PLC中使用T-block指令編輯通信。如果是以太網模塊,在S7-300/400PLC中使用AG_SEND、AG_RECV編程通信。如果是支持OpenIe的PN口,則使用OpenIe的通信指令實現。對于S7通信,S7-1200PLC的PROFINET通信口只支持S7的服務器端,所以在編程和建立連接方面,S7-1200PLC不用做任何工作,只需要在S7-300/400CPU一側建立單邊連接,并使用PUT、GET指令進行通信。7.2.2通信指令1.通信過程實現兩個CPU之間通信的具體操作步驟如下。1)建立硬件通信物理連接:由于S7-1200CPU的PROFIENT物理接口支持交叉自適應功能,因此連接兩個CPU既可以使用標準的以太網電纜也可以使用交叉的以太網線。兩個CPU的連接可以直接連接,不需要使用交換機。2)配置硬件設備:在“DeviceView”中配置硬件組態。3)分配永久IP地址:為兩個CPU分配不同的永久IP地址。4)在網絡連接中建立兩個CPU的邏輯網絡連接。5)編程配置連接及發送、接收數據參數。在兩個CPU里分別調用TSEND_C、TRCV_C通信指令,并配置參數,使能雙邊通信。7.2.2通信指令2.通信指令S7-1200PLC中所有需要編程的以太網通信都使用開放式以太網通信指令塊T-block來實現,所有T-block通信指令必須在OB1中調用。調用T-block通信指令并配置兩個CPU之間的連接參數,定義數據發送或接收信息的參數。STEP7Basic提供了兩套通信指令:不帶連接管理的通信指令和帶連接管理的通信指令。不帶連接管理的通信指令如表7-1所示,其功能如圖7-4所示,連接參數的關系如圖7-5所示。表7-1不帶連接管理的通信指令7.2.2通信指令圖7-4不帶連接的通信指令的功能7.2.2通信指令圖7-5連接參數的對應關系7.2.2通信指令表7-2帶連接管理的通信指令帶連接管理的通信指令,如表7-2所示,其功能如圖7-6所示。實際上TSEND_C指令實現的是TCON、TDISCON和TSEND三個指令綜合的功能,而TRCV_C指令是TCON、TDISCON和TRCV指令的集合。7.2.2通信指令圖7-6帶連接的通信指令的功能7.2.2通信指令(1)要建立連接,設置TSEND_C的參數CONT=1。成功建立連接后,TSEND_C置位DONE參數一個掃描周期為1。(2)如果需要結束連接,那么設置TSEND_C的參數CONT=0,連接會立即自動斷開,這也會影響接收站的連接,造成接收緩存區的內容丟失。(3)要建立連接并發送數據,將TSEND_C的參數設置為CONT=1,并需要給參數REQ一個上升沿,成功執行完一個發送操作后,TSEND_C會置位DONE參數一個掃描周期為1。TSEND_C指令的功能為:TSEND_C指令用于建立與另一個通信伙伴站的TCP或ISOonTCP連接,發送數據并可以控制結束連接。7.2.3S7-1200PLC之間的以太網通信S7-1200PLC之間的以太網通信可以通過TCP或ISOonTCP來實現,使用的通信指令是在雙方CPU調用T-block指令來實現。通信方式為雙邊通信,因此發送指令和接收指令必須成對出現。因此S7-1200PLC目前只支持S7通信的服務器端,所以它們之間不能使用S7這種通信方式。下面我們通過一個簡單例子演示S7-1200PLC之間以太網通信的組態步驟。要求:將PLC_1的通信數據區DB塊中的100字節的數據發送到PLC_2的接收數據區DB塊中,PLC_1的QB0接收PLC_2發送的數據IB0的數據。7.2.3S7-1200PLC之間的以太網通信1.組態網絡創建一個新項目,添加兩個PLC,分別命名為PLC_1和PLC_2。為了編程方便,使用CPU屬性中定義的時鐘位,設置PLC_1和PLC_2的系統存儲器為MB1和時鐘存儲器位MB0。時鐘存儲器位主要使用M0.3,它是以2Hz的速度在0和1之間切換一個位,可以使用它去自動激活發送任務。圖7-7建立連接在項目視圖PLC的“設備配置”中,點擊CPU屬性的“PROFINET接口”項,可以設置IP地址,設置PLC_1和PLC_2的IP地址分別為和。切換到網絡視圖,要創建PROFINET的邏輯連接,按照附錄的方法,選中第一臺PLC的PROFINET接口的綠色小方框,拖動到另外一臺PLC的PROFINET接口上,松開鼠標,連接就建立起來了,如圖7-7所示。7.2.3S7-1200PLC之間的以太網通信2.PLC_1編程通信要實現前述的通信要求,需要在PLC_1中調用并配置TSEND_C、TRCV通信指令。1)在PLC_1的OB1中調用TSEND_C通信指令要設置PLC_1的TSEND_C指令的連接參數先選中指令,點擊其屬性對話框的“連接參數”項,如圖7-8所示。在“端點”中選擇通信伙伴為“PLC_2”,則接口、子網及地址等隨之自動更新。“連接類型”選擇為“TCP”。先“連接ID”中輸入連接的地址ID號1,這個ID號在后面的編程將會用到。在“連接數據”項中,創建連接時,系統會自動生成本地的連接DB塊,所有的連接數據都會存于該DB塊中。通信伙伴的連接DB塊只有在對方(PLC_2)建立連接后才能生成,新建通信伙伴的連接DB并選擇。選擇本地PLC_1的“建立主動連接”選項。在“地址詳細信息”項中定義通信伙伴方的端口號為2000。7.2.3S7-1200PLC之間的以太網通信如果“連接類型”選用的是ISOonTCP,則需要設定TSAP地址,此時本地PLC_1可以設置成“PLC1”,伙伴方PLC_2可以設置成“PLC2”。使用ISOonTCP通信,除了連接參數的定義不同,其他組態編程與TCP通信完全相同。圖7-8定義TSEND_C連接參數7.2.3S7-1200PLC之間的以太網通信2)定義PLC_1的TSEND_C發送通信塊接口參數根據所使用的接口參數定義變量符號表,如圖7-9所示。創建并定義PLC_1的發送數據區DB塊。要注意的是,新建數據塊時,應取消勾選“僅符號訪問”選項。在數據塊中定義發送數據區為100字節的數組,勾選“保持性”選項。對于雙邊編程通信的CPU,如果通信數據區使用數據塊,既可以將DB塊定義成符號尋址,也可以定義成絕對尋址。使用指針選址方式時,必須創建絕對尋址的數據塊。圖7-9定義變量表7.2.3S7-1200PLC之間的以太網通信要設置TESND_C指令的發送參數,先選中指令,點擊其屬性對話框的“塊參數”項,如圖7-10所示。在輸入參數中,“啟動請求(REQ)”使用2Hz的時鐘脈沖,上升沿激活發送任務,“連接狀態”設置為常數1,表示建立連接并一直保持連接,“發送長度”設置為100。在“輸入/輸出”參數中,“相關的連接指針”為前面建立的連接DB塊,“發送區”使用指針尋址,DB塊要設置絕對尋址,“p#db2.dbx0.0byte100”含義是發送數據塊DB2中第0.0位開始的100個字節的數據,“重新啟動塊”為1時完全重啟動通信塊,現存的連接會斷開。在“輸出”參數中,任務執行完成并且沒有錯誤,“請求完成”位置1,“請求處理”位為1代表任務未完成,不激活新任務,若通信過程中有錯誤發生,則“錯誤”位置1,“錯誤信息”字給出錯誤信息號。7.2.3S7-1200PLC之間的以太網通信圖7-10定義TSEND_C接口參數7.2.3S7-1200PLC之間的以太網通信設置TSEND_C指令塊的“塊參數”程序編輯器中的指令參數將隨之更新也可以直接編輯指令塊。如圖7-11所示。圖7-117.2.3S7-1200PLC之間的以太網通信3)在PLC_1的OB1中調用接收指令T_RCV并配置基本參數為了使PLC_1能夠接收來自PLC_2的數據,在PLC_1中調用接收指令T_RCV并配置基本參數。接收數據與發送數據使用同一連接,所以使用不帶連接管理的T_RCV指令。根據所使用的接口參數定義符號表,如圖7-9所示,配置接口參數,如圖7-12所示。其中,“EN_R”參數為1,表示準備好接收數據;ID號為1,使用的是TSEND_C的連接參數中的“連接ID”的參數地址;“DATA”表示接收數據區;“RCVD_LEN”表示實際接收數據的字節數。圖7-12調用TRCV指令并配置接口參數7.2.3S7-1200PLC之間的以太網通信3.PLC_2編程通信要實現前述通信要求,還需要在PLC_2中調用并配置TRCV_C、T_SEND通信指令。1)在PLC_2中調用并配置TRCV_C通信指令拖動指令樹中的TRCV_C指令到OB1的程序段1,自動生成背景數據塊。定義連接參數如圖7-13所示。連接參數的配置與TSEND_C連接參數配置基本相似,各參數要與通信伙伴CPU對應設置。圖7-13定義TRCV_C的連接參數7.2.3S7-1200PLC之間的以太網通信定義接收通信塊參數。首先創建并定義數據區“數據_塊_1”,勾選“僅符號訪問”項,在數據塊中定義接收數據區為100字節的數組tag2,勾選“保持性”。然后定義所使用參數的符號地址,如圖7-14所示。最后定義接收通信塊接口參數,如圖7-15所示。此處接收數據區“DATA”使用的是符號地址。圖7-14變量表圖7-15TRCV_C塊參數配置7.2.3S7-1200PLC之間的以太網通信2)在PLC_2中調用并配置T_SEND通信指令PLC_2將IO輸入數據IB0發送到PLC_1的輸出OB0中,則在PLC_2中調用發送指令并配置塊參數,發送指令與接收使用同一個連接,所以使用不帶連接的發送指令T_SEND,如圖7-16所示。圖7-16調用T_SEND指令并配置接口參數7.2.3S7-1200PLC之間的以太網通信4.下載并監控下載兩個CPU中的所有硬件組件及程序,從監控表中看到,PLC_1的TSEND_C指令發送數據“11”“22”“33”,PLC_1接收到數據“11”“22”“33”。而PLC_2發送數據IB0為“0001_0001”,PLC_1接收到QB0的數據也是“0001_0001”。7.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信1.S7-1200PLC與S7-200PLC之間的通信S7-1200PLC與S7-200PLC之間的通信只能通過S7通信來實現,因為S7-200PLC的以太網模塊只支持S7通信。由于S7-1200PLC的PROFINET通信接口只支持S7通信的服務器端,所以在編程方面,S7-1200PLC不用做任何工作,只需要為S7-1200配置好以太網地址并下載。主要編程工作都是在S7-200PLC一側完成,需要將S7-200PLC的以太網模塊設置成客戶端,并用ETHx_XFR指令編程通信。下面通過簡單的例子演示S7-1200PLC與S7-200PLC的以太網通信。要求:S7-200PLC將通信數據區VB中的2個字節發送到S7-1200PLC的DB2數據區,S7-200PLC讀取S7-1200PLC中的輸入數據IB0到S7-200PLC的輸出區QB0。7.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信組態步驟如下。(1)打開STEP7Micro/WIN軟件,創建一個新項目,選擇所使用CPU的型號。(2)通過菜單命令“工具”→“以太網向導”進入S7-200PLC以太網模塊CP243-1的向導配置,如圖7-17所示。可以直接輸入模板位置,也可以通過單擊“讀取模塊”按鈕讀出模板位置。(3)單擊“下一步”按鈕,設置IP地址為,選擇“自動檢測通信”連接類型,如圖7-18所示。圖7-17圖7-187.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信(4)單擊“下一步”按鈕,進入連接數設置界面,如圖7-19所示,根據CP243-1模塊位置確定所占用的Q地址字節,并設置連接數為1。(5)單擊“下一步”按鈕,進入客戶端定義界面,如圖7-20所示。設置“連接0”為“客戶機連接”,表示將CP243-1定義為客戶端。設置遠程TSAP地址為03.01或3.00。輸入通信伙伴S7-1200PLC的IP地址為“”。單擊“數據傳輸”按鈕可以定義數據傳輸。圖7-19圖7-207.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信(6)在圖7-21(a)中,在“數據傳輸0”中選擇“從遠程服務器連接讀取數據”,定義要讀取的字節長度為2,設置將S7-1200PLC的DB2.DBB0~DB2.DBB1的數據讀取到本地S7-200PLC的VB100~VB101中。單擊“下一個傳輸”按鈕,在“數據傳輸1”中選擇“將數據寫入遠程服務器連接”,定義要寫入的字節長度為2,設置將本地S7-200PLC的VB200~VB201的數據寫到對方S7-1200PLC的DB3.DBB0~DB3.DBB1中。(7)單擊“下一步”按鈕進入選擇CRC保護界面,如圖7-22所示,選中是為數據塊中的此配置生成CRC保護。圖7-21定義數據傳輸圖7-22選擇CRC保護7.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信(8)單擊“下一步”按鈕,進入為配置分配存儲區界面,如圖7-23所示。根據以太網的配置,需要一個V存儲區,可以指定一個未用過的V存儲區的起始地址,此處可以使用建議地址。單擊“下一步”按鈕,生成以太網用戶子程序。(9)調用向導生成的子程序,實現數據傳輸。對于S7-200PLC的同一個連接的多個數據傳輸,不能同時激活,必須分時調用。圖7-24所示程序就是用前一個數據傳輸的完成位去激活下一個數據傳輸,其含義見注釋。圖7-23分配存儲區7.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信圖7-24例子程序7.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信(10)監控通信數據結果。配置S7-1200的硬件組態,創建通信數據區DB2、DB3(必須選擇絕對地址,即取消“僅符號訪問”)。下載S7-200PLC及S7-1200PLC的所有組態及程序,并監控通信結果。可以看到,在S7-1200PLC中向DB2寫入數據“3”“4”,則在S7-200的VB100、VB101中讀取到的數據也為“3”“4”。在S7-200PLC中,將“5”“6”寫入VB200、VB201,則在S7-1200PLC的DB3中收到的數據也為“5”“6”。注意:使用單邊的S7通信,S7-1200PLC不需要做任何組態編程,但在創建通信數據區DB塊時,一定要選擇絕對尋址,才能保證通信成功。7.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信2.S7-1200PLC與S7-300/400PLC的通信S7-1200PLC與S7-300/400PLC之間的以太網通信方式相對來說要多一些,可以采用下列方式:TCP、ISOonTCP和S7通信。采用TCP和ISOonTCP這兩種協議進行通信所使用的指令是相同的,在S7-1200PLC中使用T_block指令編程通信。如果是以太網模塊,在S7-300/400PLC中使用AG_SEND、AG_RECV編程通信。如果是支持OpenIE的PN口,則使用OpenIE的通信指令實現。對于S7通信,S7-1200PLC的PROFINET通信口只支持S7通信的服務器端,所以在編程組態和建立連接方面,S7-1200PLC不用做任何工作,只須在S7-300PLC一側建立單邊連接,并使用單邊編程方式PUT、GET指令進行通信。S7-1200PLC中所有需要編程的以太網通信都使用開放式以太網通信指令T_block來實現。調用T_block通信指令并配置兩個CPU之間的連接參數,定義數據發送或接收信息的參數。7.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信STEP7Basic提供了兩套通信指令:不帶連接管理的功能塊,帶有連接管理的功能塊。帶連接管理的功能塊執行時自動激活以太網連接,發送/接收完數據后,自動斷開以太網連接。1.S7-1200PLC與S7-300PLC之間的ISOonTCP通信S7-1200PLC與S7-300PLC之間通過ISOonTCP通信,需要在雙方都建立連接,連接對象選擇“Unspecified”。下面通過簡單例子演示這種組態方法。要求:S7-1200PLC將DB2的100個字節發送到S7-300PLC的DB2中,S7-300PLC將輸入數據IB0發送給S7-1200PLC的輸出數據區QB0。(1)S7-1200PLC的組態編程組態編程過程與S7-1200PLC之間的通信相似,主要步驟包括:使用STEP7BasicV10.5軟件新建一個項目,添加新設備,命名為PLC_3;為PROFINET通信接口分配以太網地址,子網掩碼為255.255.255.0;調用“TSEND_C”通信指令并配置連接參數和塊參數。連接參數如圖7-25所示,塊參數如圖7-26所示。圖7-25中,選擇通信伙伴為“未定義”,通信協議為“ISO-on-TCP”,選擇PLC_C3為主動連接方,要設置通信雙方的TSAP地址。7.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信圖7-25圖7-26調用“TRCV”通信指令并配置塊參數。因為與發送使用的是同一個連接,所以使用的是不帶連接的發送指令“TRCV”,連接“ID”使用的也是“TSEND_C”中的“ConnectionID”號,如圖7-27所示。7.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信(2)S7-300PLC的組態編程組態步驟如下:使用STEP7編程軟件新建一個項目,插入一個S7-300PLC站進行硬件組態。為編程方便,我們使用時鐘脈沖激活通信任務,在硬件組態編輯器中CPU的屬性對話框的“周期/時鐘存儲器”選項卡中設置,如圖7-28所示,將時鐘信號存儲在MB0中。圖7-27配置TRCV塊參數圖7-28設置時鐘存儲器7.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信配置以太網模塊。在硬件組態編輯器中,設置S7-300PLC的以太網模塊“CP343-1”的IP地址為,子網掩碼為,并將其連接到新建的以太網Ethernet(1)上,如圖7-29所示。圖7-29連接到以太網上7.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信網絡組態。打開網絡組態編輯器,選中S7-300PLC,雙擊連接列表,打開“插入新連接”對話框,如圖7-30所示,選擇通信伙伴為“未定義”,通信協議為“ISO-on-TCP連接”。確定后,在連接的屬性對話框的“地址”選項卡中設置通信雙方的TSAP地址和IP地址,需要與通信伙伴對應,如圖7-31所示。圖7-30網絡組態圖7-31連接屬性7.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信編程程序。在S7-300PLC中,新建接收數據區為DB2,定義成100字節的數組。在OB1中,調用庫中通信塊FC5(AG_SEND)、FC6(AG_RECV)通信指令,如圖7-32所示,其含義見注釋。圖7-32例子程序監控通信結果。下載S7-1200PLC和S7-300PLC中的所有組態及程序,監控通信結果。在S7-1200PLC中向DB2中寫入數據:“11”“22”和“33”,則在S7-300PLC中的DB2塊接收到數據也為“11”“22”和“33”。在S7-300PLC中,將“2#1111_1111”寫入IB0,則在S7-1200PLC中的QB0區接收到的數據也為“2#1111_1111
”。7.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信2.TCP通信使用TCP通信,除了連接參數的定義不同,通信雙方的其他組態及編程與前面的ISOonTCP通信完全相同。S7-1200PLC中,使用TCP與S7-300PLC通信時,設置PLC_3的連接參數如圖7-33所示。設置通信伙伴S7-300PLC的連接參數如圖7-34所示。圖7-33使用TCP時的連接參數圖7-34S7-300PLC的TCP連接參數設置7.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信3.S7通信對于S7通信,S7-1200PLC的PROFINET通信口只支持S7通信的服務器端,所以在編程組態和建立連接方面,S7-1200PLC不用做任何工作,只須在S7-300PLC一側建立單邊連接,并使用單邊編程方式PUT、GET指令進行通信。注意:如果在S7-1200PLC一側DB塊作為通信數據區,必須將DB塊定義成絕對尋址,否則會造成通信失敗。下面通過簡單的例子演示這種方法的組態。要求:S7-300PLC讀取S7-1200PLC中DB2的數據到S7-300PLC的DB11中,S7-300PLC將本地DB12中的數據寫到S7-1200PLC的DB3中。7.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信只需要在S7-300PLC一側配置編程,步驟如下。(1)使用STEP7軟件新建一個項目,插入S7-300PLC站。在硬件組態編輯器中,設置S7-300PLC的以太網模塊“CP343-1”的IP地址為,子網掩碼為255.255.255.0,并將其連接到新建的以太網Ethernet(1)上。(2)組態連接。打開組態網絡編輯器,選中S7-300PLC,雙擊連接列表打開“插入連接”對話框,選擇通信伙伴為“未定義”,通信協議為“S7連接”。確定后,其連接屬性如圖7-35所示。單擊“地址詳細信息”按鈕,打開“地址詳細信息”對話框,如圖7-36所示,要設置S7-1200PLC的TSAP地址為03.01或03.00。S7-1200PLC預留給S7連接的兩個TSAP地址分別為03.01和03.00。7.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信圖7-35連接屬性對話框圖7-36地址詳細信息7.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信(3)編程程序。在S7-300PLC中,新建接收數據區為DB2,定義成100個字節的數組。在OB1中,調用庫中通信塊FB14(GET)、FB15(PUT)通信指令,如圖7-37所示,其含義見注釋。對于S7-400PLC,調用的是SFB14(GET)、SFB15(PUT)通信指令。圖7-37例子程序7.2.4S7-1200PLC與S7-200PLC和S7-300/400PLC的通信4.監控通信結果配置S7-1200PLC的硬件組態并設置IP地址為,創建通信數據區DB2、DB3。然后下載S7-1200PLC及S7-300PLC的所有組態及程序,并監控通信結果。可以看出,在S7-1200PLC中的DB2寫入數據:“1”“2”,則在S7-300PLC中的DB11中收到數據也為“1”“2”。在S7-300PLC中,將“1”“2”寫入DB12,則在S7-1200PLC的DB3中收到的數據也為“1”“2”。7.3S7-1200PLC的串口通信7.3
S7-1200PLC的串口通信在S7-1200PLC的串口通信模塊有兩種型號,分別為CM1241RS232接口模塊和CM1241RS485接口模塊。CM1241RS232接口模塊支持基于字符的自由口協議和MOD-BUSRTU主從協議。CM1241RS485接口模塊支持基于字符的自由口協議、MODBUSRTU主從協議及USS協議。兩種串口通信模塊有如下共同特點(1)通信模塊安裝于CPU模塊的左側,并且數量之和不能超過3塊。(2)串行接口與內部電路隔離。(3)由CPU模塊供電,無須外部供電。(4)模塊上有一個DIAG(診斷)LED燈,可根據此LED燈的狀態判斷模塊狀態。模塊上部蓋板下有Tx(發送)和Rx(接收)兩個LED燈指示數據的接收。(5)可使用擴展指令或庫函數對串口進行配置和編程。CM1241RS232和CM1241RS485接口模塊都支持基于字符的自由口協議,使用時要進行串口通信模塊的端口設置、發送參數設置、接收參數設置以及硬件標識符等。由于篇幅的限制,這里不詳細介紹了。7.3
S7-1200PLC的串口通信USS協議通信S7-1200PLC串口通信模塊可使用USS協議庫來控制支持USS通信協議的西門子變頻器。USS是西門子專門針對裝置開發的通信協議。USS協議的基本特點是:支持多點通信,采用單主站的主從訪問機制,每個網絡上最多可以有32個節點,報文格式簡單可靠,數據傳輸靈活高效,容易實現,成本較低。USS的工作機制是:通信總是由主站發起,USS主站不斷循環輪詢各個從站,從站根據收到的指令,決定是否以及如何響應,從站不會主動發送數據。從站在接收到的主站報文沒有錯誤并且本從站在接收到主站報文中被尋址時應答,否則從站不會做任何響應。對于主站來說,從站必須在接收到主站報文之后的一定時間內發回響應,否則主站將視為出錯。USS的字符傳輸格式符合UART規范,即使用串行異步傳輸方式。USS在串行數據總線上的字符傳輸幀為11位長度,如表7-3所示。USS協議的報文簡潔可靠,高效靈活。報文由一連串的字符組成,協議中定義了它們的特定功能,如表7-4所示。其中,每小格代表一個字符(字節),STX表示起始字符,總是02h,LGE表示報文長度,ADR表示從站地址及報文類型,BCC表示效驗符。表7-4USS報文結構7.3
S7-1200PLC的串口通信表7-3USS字符幀凈數據區由PKW區和PZD區組成,如表7-5所示。PKW區域用于讀取參數值,參數定義或參數描述
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論