功能與樣例通過TCP協(xié)議利用FC5 AGSEND和FC6AGRECV 傳送具有可變消息長的數(shù)據(jù)_第1頁
功能與樣例通過TCP協(xié)議利用FC5 AGSEND和FC6AGRECV 傳送具有可變消息長的數(shù)據(jù)_第2頁
功能與樣例通過TCP協(xié)議利用FC5 AGSEND和FC6AGRECV 傳送具有可變消息長的數(shù)據(jù)_第3頁
功能與樣例通過TCP協(xié)議利用FC5 AGSEND和FC6AGRECV 傳送具有可變消息長的數(shù)據(jù)_第4頁
功能與樣例通過TCP協(xié)議利用FC5 AGSEND和FC6AGRECV 傳送具有可變消息長的數(shù)據(jù)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、功能與樣例:通過TCP協(xié)議(利用FC5 “AG_SEND”和FC6“AG_RECV”) 傳送具有可變消息長度的數(shù)據(jù)顯示訂貨號問題:如何利用通訊功能FC5“AG_SEND”和FC6 “AG_RECV”,通 過TCP協(xié)議傳送具有可變消息長度的數(shù)據(jù)?解答:TCP協(xié)議的性能:當通過TCP傳送數(shù)據(jù)時,該傳送是基于數(shù)據(jù)流的形式。在這種情況下,不給出與消息長度、開 始和結(jié)束有關(guān)的信息。發(fā)送消息時,這并不是問題,因為發(fā)送者知道要傳送多少數(shù)據(jù)字節(jié)。然而,接收者無法分辨消息在數(shù)據(jù)流中的何處結(jié)束,下 一個消息在何處開始。因此,對于通過純TCP建立的鏈接只有兩個選項可選:1. 使用固定消息長度,也就是說,發(fā)送者和接收

2、者都使用預定義的數(shù)據(jù)長度。這意味著要始終明確定義消息限制。2. 使用可變消息長度。在這種情況下,接收端和發(fā)送端都需要更多的時間,因為在開始字節(jié)中必須輸入起始分隔符和要發(fā)送數(shù)據(jù)的數(shù)據(jù)長度。這樣,> 接收者就可以正確地解釋已接收的消息。下面的實例程序包含一個TCP連接,通過該連接,具有可變消息長度的數(shù)據(jù)可以利用FC5發(fā)送給一個站,并利用FC6接收。實例程序:通過TCP協(xié)議(利用FC5“AG_SEND”和FC6“AG_RECV”) 傳送具有可變消息長度的數(shù)據(jù)常規(guī)描述:STEP 7項目包括兩個S7-300站,它們均具有用于工業(yè)以太網(wǎng)通訊的CPU 315-2DP和CP 343-1。這兩個站之間的通

3、訊基礎(chǔ)是TCP連接。如果在NetPro中通過“右鍵單擊>對象屬性”打 開TCP連接屬性, 則可以查看通訊功能塊的塊參數(shù)“ID”。在調(diào)用FC5和FC6時,要注意該規(guī)范,以便可以通過TCP連接傳送數(shù)據(jù)。< /p>圖1:TCP連接的屬性為了利用TCP協(xié)議傳送數(shù)據(jù),要傳送的數(shù)據(jù)必須具有指定的結(jié)構(gòu)。消息必須包括起始分隔符(以便接收者可以識別消息從何處開始),數(shù) 據(jù)長度規(guī)范(定義接收緩沖區(qū))和數(shù)據(jù)本身。在此實例中,定義了消息的4個字節(jié)的起始分隔符(預置值為:0x11, 0x12, 0x13, 0x14)和一個S7串。該S7串包括兩個字節(jié)的長度信息和實際的數(shù)據(jù)串。 使用S7串可以傳送所有的

4、ASCII字符。圖2:消息的結(jié)構(gòu)注意事項:該實例程序基于如圖2所示的消息結(jié)構(gòu),但也可以自行定義消息結(jié)構(gòu)。如果希望使用不同的消息結(jié)構(gòu)(例如,h 起始分隔符只有3個字節(jié)),則可以依照用戶的特定需求 ,簡單地改變該實例程序。因此,希望利用FC5(AG_SEND)傳送的數(shù)據(jù),必須在數(shù)據(jù)塊(DB220)中按照預定義的結(jié)構(gòu)準備好。隨后,該 數(shù)據(jù)可以利用FC6(AG_RECV)按如下步驟接收:1. 接收起始分隔符(逐字節(jié)地)并識別消息2. 接收S7串的長度信息3. 接收數(shù)據(jù)STEP 7程序描述STEP 7程序包括如下塊:OB100,OB1,F(xiàn)B100,DB100(FB100的背景DB),F(xiàn) B101(DB1

5、00中的多重背景),DB220,DB221,F(xiàn)C5,F(xiàn)C6。· OB100OB100是啟動OB,當CPU重啟(暖重啟)時,運行該OB。在此OB中,發(fā)送的首個通訊觸發(fā)器 的版本為M1.0和M0.1。圖3:OB100· OB1周期性調(diào)用OB1。該OB包括具有M1.0和M0.1的FB100(背景OB:OB100)的調(diào)用。一 旦運行FB100,則復位M1.0。-圖4: OB1· FB100:在OB1周期中調(diào)用FB100。該FB包括FC5“AG_SEND”和FB101“ AG_RECV_VARIABLE”的調(diào)用。發(fā)送塊FC5“AG_SEND”當時鐘標記M10.7為上升沿,且

6、未置位“SND_BUSY”時,輸入?yún)?shù)“ACT”h 可以激活FC5。當作業(yè)運行時,置位“SND_BUSY”,并且,在此期間不能觸發(fā)任何功能。該功能塊特別重要,因為該功能是異步的,且占有多個周期。如果對該功能持續(xù)激活,而不是等待其中止,則會導致通訊過載。輸入?yún)?shù)“ID”和“LADDR”只能從NetPro(圖1)中的TCP連接屬性對話框中獲取。在“SEND”參數(shù)中,需 要指定要發(fā)送數(shù)據(jù)的地址(P#DB220.DBX0.0 BYTE 48)。在“LEN”參數(shù)中,輸入要發(fā)送的字節(jié)數(shù)(48)。輸出參數(shù)“ DONE”,“ERROR”和“STATUS”對于作業(yè)評估是必需的,而且只在同一個周期內(nèi)有效。圖5:F

7、B100調(diào)用FC5如果塊運行無錯誤,則復位“SND_BUSY”,并再次調(diào)用FC5。如果該塊因出錯而終止,則保存塊的狀態(tài)字用于錯誤分析,同樣復位“ SND_BUSY”。圖6:FB100FC5調(diào)用的評估接收塊FB101“AG_RECV_VARIABLE”當調(diào)用FB101“AG_RECV_VARIABLE”時,必須從NetPro(圖1)中的連接屬性對話框中獲取參數(shù)“ID”和“LADDR”h 。在“RECV_BUF”中, 需要指定要接收數(shù)據(jù)的存儲位置(P#DB221.DBX0.0 BYTE50)。輸出參數(shù)“NDR”,“ ERROR”和“STATUS”對于作業(yè)評估是必需的,而且只在同一個周期內(nèi)有效。圖7

8、:FB100調(diào)用FB101如果塊運行無錯誤,則保存接收到的數(shù)據(jù)長度。如果該塊因出錯而終止,則保存塊的狀態(tài)字用于錯誤分析。圖8:FB100 FB101調(diào)用的評估· FB101(“AG_RECV_VARIABLE”):狀態(tài)機:通過變量“STATE_CNT”來定義FB101中程序的輸入點。 根據(jù)變量“STATE_CNT”的狀態(tài),跳 過與程序的進一步的處理相關(guān)的程序段。按照“STATE_CNTP”的程序處理:·"STATE_CNT"描述0已收到起始分隔符的第一個字節(jié)(從NW9 跳至 NW13)1已收到起始分隔符的第二個字節(jié)(從NW10跳至NW14)2已收到起始分

9、隔符的第三個字節(jié)(從NW11跳至NW15)3已收到起始分隔符的第四個字節(jié)(從NW12跳至NW16)4已識別起始分隔符。正在接收數(shù)據(jù)信息 (從NW3跳至NW17)5已創(chuàng)建接收緩沖區(qū)且數(shù)據(jù)已接收(從NW4跳至NW20)··接收起始分隔符(逐字節(jié))并識別消息(程序段516)使用FC6“AG_RECV”,逐字節(jié)地接收起始分隔符(4 字節(jié))。·當調(diào)用FC6“AG_RECV”時,參數(shù)“ID” 和“LADDR”來自FB101的輸入?yún)?shù)。在“RECV”中,需 要指定已接收字節(jié)的存儲位置(SD緩沖區(qū):字節(jié)變量)。輸出參數(shù)“NDR”,“ERROR”和“STATUS”對于作業(yè)

10、 評估是必需的,而 且只在同一個周期內(nèi)有效。·如果塊運行無錯誤,則保存接收的字節(jié),用于進一步的處理。如果該塊因出錯而終止,則保存塊的狀態(tài)字用于錯誤分析。·已接收字節(jié)后,檢驗已定義的起始信息。(Byte0 = 11;Byte1 = 12;Byte2 = 13;Byte3 = 14)。< /p>·圖 9:通過起始分隔符識別消息接收S7串的長度信息(程序段3,1720)如果已接收的信息被識別為起始分隔符,那么利用FC6“AG_RECV”接收S7串的長度信息(兩個字節(jié))。當調(diào)用FC6“AG_RECV”時,參數(shù)“ID” 和“LADDR”來自FB101的輸入?yún)?shù)。

11、在“RECV”中,需 要指定兩個長度信息字節(jié)的存儲位置(VAR_LEN:由兩個字節(jié)構(gòu)成)。輸出參數(shù)“NDR”,“ERROR”和“STATUS”對于作業(yè) 評估是必需的,而且只在同一個周期內(nèi)有效。如果塊運行無錯誤,則已接收數(shù)據(jù)的實際長度用于接收緩沖區(qū)(ANY指針)。如果該塊因出錯而終止,則 塊的狀態(tài)字作為FB101的輸出參數(shù)顯示。 圖10:接收長度信息  在創(chuàng)建接收緩沖區(qū)(ANY指針)時,有關(guān)串(VAR_LEN.ACT_LEN)的實際長度的信息是必需的。在此,當調(diào)用FB101時,使 用數(shù)據(jù)的實際長度來檢驗已指定的接收緩沖區(qū)(ANY指針),并將其存儲在臨時的ANY指針(

12、VAR_BUF)。圖11:創(chuàng)建接收緩沖區(qū)接收數(shù)據(jù)(程序段4,2123)隨后,利用FC6接收數(shù)據(jù)。當調(diào)用FC6“AG_RECV”時,參數(shù)“ID” 和“LADDR”來自FB101的輸入?yún)?shù)。在“RECV”中,需 要指定數(shù)據(jù)的存儲位置(VAR_BUF:臨時ANY指針)。輸出參數(shù)“NDR”,“ERROR”和“STATUS”對于作業(yè) 評估是必需的,而 且只在同一個周期內(nèi)有效。如果塊運行無錯誤,則保存已接收數(shù)據(jù)的長度,并將其作為輸出參數(shù)發(fā)送給FB101。如果該塊因出錯而終止, 則塊的狀態(tài)字作為FB101的輸出參數(shù)顯示。圖12:接收數(shù)據(jù)· DB220:與FC5一起使用的數(shù)據(jù)結(jié)構(gòu)位于DB220。圖13:DB220發(fā)送數(shù)據(jù)結(jié)構(gòu)· DB221:與FC6一起接收的數(shù)據(jù)存儲在DB221。該下載包括已描述的實例程序,通 過STEP 7 V5.3和SIMATIC NET V6.2創(chuàng)建。  T_cp_data.exe將“Tcp_data.exe”文件復制到一個單獨的目錄中,然后通過雙擊來啟動該文件。STEP 7項

溫馨提示

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

評論

0/150

提交評論