西門子模塊6ES7322-1BL00-0AA0規(guī)格齊全
西門子模塊6ES7322-1BL00-0AA0
PLC的控制方式屬于存儲程序控制,其控制功能是通過存放在存儲器內(nèi)的程序來實現(xiàn)的,若要對控制功能作必要修改,只需改變控制程序即可,這就實現(xiàn)了控制的軟件化。可編程控制器的優(yōu)點在于"可"字,從軟件來講,其控制程序可編輯、可修改;從硬件上講,其外部設(shè)備配置可變。構(gòu)建一個PLC控制系統(tǒng)的重心就在于控制程序的編制,但外部設(shè)備的選用也將對程序的編制產(chǎn)生影響。因此在進行程序設(shè)計時應(yīng)結(jié)合實際需要,硬、軟件綜合考慮。本文就硬、軟兩方面,選取梯形圖為編程語言,以松下電工FPO-C32型PLC為例,對PLC使用過程中易出現(xiàn)的幾個問題及解決方法進行了分析。
一、外部輸入設(shè)備的選用與PLC輸入繼電器的使用
1. 外部輸入信號的采集
PLC的外部設(shè)備主要是指控制系統(tǒng)中的輸入輸出設(shè)備,其中輸人設(shè)備是對系統(tǒng)發(fā)出各種控制信號的主令電器,在編寫控制程序時必須注意外部輸入設(shè)備使用的是常開還是常閉觸點,并以此為基礎(chǔ)進行程序編制。否則易出現(xiàn)控制錯誤。
在PLC內(nèi)部存儲器中有于輸入狀態(tài)存儲的輸入繼電器區(qū),各輸入設(shè)備(開關(guān)、按鈕、行程開關(guān)或傳感器信號)的狀態(tài)經(jīng)由輸入接口電路存儲在該區(qū)域內(nèi),每個輸入繼電器可存儲一個輸入設(shè)備狀態(tài)。PLC中使用的"繼電器"并非實體繼電器,而是"軟繼電器",可提供無數(shù)個常開、常閉觸點用于編程。每個"軟繼電器"僅對應(yīng)PLC存儲單元中的一位(bit),該位狀態(tài)為"1",表示該"軟繼電器線圈"通電,則程序中所有該繼電器的觸點都動作。輸入繼電器作為PLC接收外部主令信號的器件,通過接線與外部輸入設(shè)備相聯(lián)系,其"線圈"狀態(tài)只能由外部輸入信號驅(qū)動。輸入信號的采集工作示意圖如圖1。
輸入繼電器線圈其狀態(tài)取決于外部設(shè)備狀態(tài)
PLC輸入信號采集示意圖
圖1中,輸入設(shè)備選用的是按鈕SB0的常閉觸點,輸入繼電器X0的線圈狀態(tài)取決于SB0的狀態(tài)。該按鈕未按下時,輸入繼電器X0線圈狀態(tài)為"1"通電狀態(tài),程序中所有X0觸點均動作,即常開觸點接通,常閉觸點斷開;若按下該按鈕,則輸入繼電器X0線圈狀態(tài)為"0"斷電狀態(tài),程序中所有X0觸點均恢復(fù)常態(tài)。如果輸入繼電器連接的輸入設(shè)備是按鈕SB0的常開觸點,則情況恰好相反:在該按鈕未按下時,輸入繼電器X0線圈狀態(tài)為"0"斷電狀態(tài),程序中所有X0觸點均不動作;若按下該按鈕,輸入繼電器X0線圈狀態(tài)為"1"通電狀態(tài),程序中所有X0觸點均動作。
2. 停車按鈕使用常閉型
由于PLC在運行程序判別觸點通斷狀態(tài)時,只取決于其內(nèi)存中輸入繼電器線圈的狀態(tài),并不直接識別外部設(shè)備,因此編程時,外部設(shè)備的選用與程序中的觸點類型密切相關(guān)。這是一個在對照電氣控制原理圖進行PLC編程時易出現(xiàn)的問題。典型的例子是基本控制--"起保??刂?中的停車控制。
圖2 "起保??刂?電氣原理圖
圖2為"起保??刂?電氣原理圖,在該系統(tǒng)中,按鈕SB0用于停車控制,因此使用其常閉觸點串聯(lián)于控制線路。SBl為起動按鈕,使用其常開觸點。若使用相同的設(shè)備(即停車SB0用常閉觸點,起動SBl用常開觸點),利用PLC進行該控制,則需編程梯形圖程序(圖3):
圖3 "起保??刂?梯形圖程序(停車按鈕使用常閉觸點)
I/O分配:SB0--X0,SBl--Xl,輸出Y0
該梯形圖中停車信號X0使用的是常開觸點串聯(lián)在控制線路中,這是因為外部停車設(shè)備選取按鈕常閉觸點所致,不操作該按鈕,則輸出Y0正常接通,若按下該按鈕,輸出Y0斷電。
3. 停車按鈕使用常開型
若希望編制出符合我們平時閱讀習(xí)慣的梯形圖程序(圖4),則在選用外部停車設(shè)備時需使用按鈕SB0的常開觸點與X0相連。
圖4 "起保??刂?梯形圖程序(停車按鈕使用常開觸點)
I/O分配:SB0--X0,SBl--Xl,輸出Y0
圖3、4梯形圖完成相同的控制功能,程序中停車信號X0使用的觸點類型卻不相同,其原因就是連接在輸入繼電器X0上的外部停車按鈕觸點類型選用不同。圖4所示梯形圖程序更加符合我們的閱讀習(xí)慣,也更易分析其邏輯控制功能,因此在PLC構(gòu)成控制系統(tǒng)中,外部開關(guān)、按鈕無論用于起動還是停車,一般都選用常開型,這是一個在使用PLC時需要格外注意的問題。
二、PLC的"串行"運行方式與控制程序的編制
PLC與繼電接觸器控制的重要區(qū)別之一就是工作方式不同。繼電接觸器控制系統(tǒng)是按"并行"方式工作的,也就是說是按同時執(zhí)行的方式工作的,只要形成電流通路,就可能有幾個電器同時動作。而PLC是以"串行"方式工作的,PLC在循環(huán)執(zhí)行程序時,是按照語句的書寫順序自上而下進行邏輯運算,而前面邏輯運算的結(jié)果會影響后面語句的邏輯運算結(jié)果。因此梯形圖編程時,各語句的位置也會對控制功能產(chǎn)生關(guān)鍵影響。例如:
5 程序1
程序1調(diào)試結(jié)果:X0接通3次,Y3接通,X0再接通1次,Y3斷開。
6 程序2
程序2程序調(diào)試結(jié)果.X0接通3次,Y3接通即斷開。
上面兩個程序中,輸出Y3、計數(shù)器CTl02及內(nèi)部通用繼電器R0前面的邏輯條件均相同,僅僅是計數(shù)器CTl02所在語句位置發(fā)生了變化,而兩段程序的運行結(jié)果就截然不同。這是因為CTl02對輸出Y3的影響方式發(fā)生了變化。執(zhí)行段程序時,將首先判斷輸出Y3的狀態(tài),再判斷CTl02的狀態(tài),CTl02的狀態(tài)變化只能在下一個掃描周期對Y3產(chǎn)生影響;而執(zhí)行第二段程序時,將首先判斷CTl02的狀態(tài),再判斷輸出Y3的狀態(tài),CTl02的狀態(tài)變化將在該掃描周期直接影響Y3的狀態(tài)。
從以上討論可以得出,由于PLC采用"串行"工作方式,所以即使是同一元件,在梯形圖中所處的位置不同,其工作狀態(tài)也會有所不同,因此在利用梯形圖進行控制程序編制時,應(yīng)對控制任務(wù)進行充分分析,合理安排各編程元件的位置,才能夠更為準(zhǔn)確地實現(xiàn)控制
S7-300 CPU的組態(tài)編程
S7-300帶PN接口的CPU支持ISO on TCP通信功能,通過該集成以太網(wǎng)接口組態(tài)ISO on TCP通信時,只能使用開放式通信的功能塊,這些的功能塊可以在STEP7 “ 通訊塊"的 “標(biāo)準(zhǔn)庫 "中找到,如圖13所示。
圖13 S7-300 CPU通信指令庫
庫中提供了下列通信功能塊:
′> FB 65 "TCON",用于建立連接,連接時需要UDT65來提供參數(shù)
> FB 66 "TDISCON",用于終止連接
> FB 63 "TSEND",用于發(fā)送數(shù)據(jù)到S7站點、S5站點、PC站或者第三方設(shè)備
> FB 64 "TRCV" 用于從S7站點、S5站點、PC站或者第三方設(shè)備接收數(shù)據(jù)
要通過CPU 的 集成PN 接口實現(xiàn)開放的ISO on TCP通信,不能在Netpro網(wǎng)絡(luò)組態(tài)中直接建立連接,必須通過程序每個連接的參數(shù)。用于通信的FB標(biāo)準(zhǔn)功能塊,請參見附件提供的例程 "Sample_1 ( 50 KB ) " 或參考下載中心文檔《A0284 使用西門子PLC集成的PN口實現(xiàn)S5 兼容通信使用入門》提供的例程。下載鏈接:80490650
從附件提供的例程 "Sample_1 ( 50 KB ) " 中將把需要的程序塊拷貝到新建的項目中,包括:
> UDT 65 "TCON_PAR",存放用戶通信參數(shù)
> FB420 "SET_ISO_ENDPOINT" ,用于修改UDT65內(nèi)通信對象參數(shù)
> FC21, 被FB420調(diào)用
隨后,使用通信功能塊 FB65 "TCON"、FB66 "TDISCON"、FB63 "TSEND" 和 FB64 "TRCV" 完成程序的編寫。
4.1創(chuàng)建新項目
1、打開STEP7,新建一個項目
2、在項目中插入一個SIMATIC 300的站
3、組態(tài)硬件,插入一個CPU317-2PN/DP的CPU,并為PN接口分配IP地址“192.168.0.3",如圖14所示。同時,在CPU的“Cycle/Clock Memory"屬性頁中MB0為時鐘存儲器,在程序中可以使用M0.3(2Hz 的時鐘脈沖)去自動激活發(fā)送任務(wù),如圖15所示。
圖14為PN接口分配IP地址
圖15設(shè)置時鐘存儲器字節(jié)
4.2編寫通信程序
1、從樣例程序中拷貝通信所需的塊
從附件提供的sample_1 ( 50 KB ) 例程中把需要的FB420、FC21與UDT65程序塊拷貝到新創(chuàng)建的項目中,如圖16所示。
圖 16
2、生成數(shù)據(jù)塊
在程序中創(chuàng)建一個DB塊,塊號不限(本例為DB101),在塊中建立變量DB_VAR,類型為UDT65,如圖17所示。
圖17
3、生成并調(diào)用FB塊
首成一個FB塊(本例為FB400),在FB400靜態(tài)變量區(qū)建立一個結(jié)構(gòu)“T_TSAP“,包含如下變量,并為變量分配初始值,如圖18所示。
1) LOC_RACK_SLOT (BYTE)= B#16#2 表示有兩個前導(dǎo)字符 0xE0 (CPU31x-2PN/DP 或者 CPU319-3PN/DP規(guī)定)和 0x02(CPU槽號)
2) LOC_TSAP(STRING14)= 本地用戶定義的ASCII字符'PLC_1' (注意要與S7-1200側(cè)設(shè)置保持*)。
3) REM_RACK_SLOT(BYTE)= B#16#0 不使用兩個前導(dǎo)符。
4) REM_TSAP (STRING16)= 遠程用戶定義的ASCII字符'PLC_1' (注意要與S7-1200側(cè)設(shè)置保持*)。
圖18
然后在生成的FB400中調(diào)用FB420,如圖19所示。
圖19
其中參數(shù)的含義如下:
1)ID: 連接ID,與S7-1200里的設(shè)置保持*
2)DEV_ID:用于本PLC型號(注意不是通信對方)
DEV_ID = B#16#1本PLC型號為 IM151-8 PN/DP CPU
DEV_ID = B#16#2本PLC型號為CPU31x-2PN/DP或IM154-8 CPU
DEV_ID = B#16#3本PLC型號為CPU319-3PN/DP
DEV_ID = B#16#5本PLC型號為CPU41x-3PN/DP
3)ACTIVE: 主動或是被動建立連接,通信雙方必須一個主動,一個被動,本例中S7-300側(cè)為被動方。
4)T_TSAP: 靜態(tài)變量區(qū)的結(jié)構(gòu)變量,用于ISO ON TCP 通信的TSAP地址
5)IP_ADDR1 ... IP_ADDR4: 通信伙伴的IP地址,即S7-1200的IP地址192.168.0.2
6)CON_DB: 用UDT65生成的變量,即DB101
4、在OB1中調(diào)用發(fā)送和接收功能塊
在OB1中先調(diào)用FB400功能塊,為其背景數(shù)據(jù)塊DB400,如圖20所示。
圖20
然后再在OB1中依次調(diào)用通信功能塊FB65、FB64、FB63、FB66。其中發(fā)送和接收功能塊FB64、FB63的數(shù)據(jù)區(qū)都為DB3,建立DB3如圖21所示。關(guān)于塊的使用請參考STEP7的在線幫助或相關(guān)文檔說明。
圖21
FB65 “TCON",建立連接功能塊,如圖22所示。通過輸入?yún)?shù) "REQ"一個上升沿來建立連接。 “ID" 為連接ID,“CONNECT" 參數(shù)填寫用 UDT65 生成的變量, 連接建立后會一直保持,直到調(diào)用FB66 "TDISCON" 斷開連接、CPU停止或者斷電。其中CONNECT為通過UDT65生成的DB塊,即DB101, ID = 1。通過M8.0啟動作業(yè),執(zhí)行連接的建立