




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、功能與樣例:通過(guò)TCP協(xié)議(利用FC5 “AG_SEND”和FC6“AG_RECV”) 傳送具有可變消息長(zhǎng)度的數(shù)據(jù)顯示訂貨號(hào)問(wèn)題:如何利用通訊功能FC5“AG_SEND”和FC6 “AG_RECV”,通 過(guò)TCP協(xié)議傳送具有可變消息長(zhǎng)度的數(shù)據(jù)?解答:TCP協(xié)議的性能:當(dāng)通過(guò)TCP傳送數(shù)據(jù)時(shí),該傳送是基于數(shù)據(jù)流的形式。在這種情況下,不給出與消息長(zhǎng)度、開(kāi) 始和結(jié)束有關(guān)的信息。發(fā)送消息時(shí),這并不是問(wèn)題,因?yàn)榘l(fā)送者知道要傳送多少數(shù)據(jù)字節(jié)。然而,接收者無(wú)法分辨消息在數(shù)據(jù)流中的何處結(jié)束,下 一個(gè)消息在何處開(kāi)始。因此,對(duì)于通過(guò)純TCP建立的鏈接只有兩個(gè)選項(xiàng)可選:1. 使用固定消息長(zhǎng)度,也就是說(shuō),發(fā)送者和接收
2、者都使用預(yù)定義的數(shù)據(jù)長(zhǎng)度。這意味著要始終明確定義消息限制。2. 使用可變消息長(zhǎng)度。在這種情況下,接收端和發(fā)送端都需要更多的時(shí)間,因?yàn)樵陂_(kāi)始字節(jié)中必須輸入起始分隔符和要發(fā)送數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度。這樣, 接收者就可以正確地解釋已接收的消息。下面的實(shí)例程序包含一個(gè)TCP連接,通過(guò)該連接,具有可變消息長(zhǎng)度的數(shù)據(jù)可以利用FC5發(fā)送給一個(gè)站,并利用FC6接收。實(shí)例程序:通過(guò)TCP協(xié)議(利用FC5“AG_SEND”和FC6“AG_RECV”) 傳送具有可變消息長(zhǎng)度的數(shù)據(jù)常規(guī)描述:STEP 7項(xiàng)目包括兩個(gè)S7-300站,它們均具有用于工業(yè)以太網(wǎng)通訊的CPU 315-2DP和CP 343-1。這兩個(gè)站之間的通訊基礎(chǔ)是
3、TCP連接。如果在NetPro中通過(guò)“右鍵單擊對(duì)象屬性”打 開(kāi)TCP連接屬性, 則可以查看通訊功能塊的塊參數(shù)“ID”。在調(diào)用FC5和FC6時(shí),要注意該規(guī)范,以便可以通過(guò)TCP連接傳送數(shù)據(jù)。圖1:TCP連接的屬性為了利用TCP協(xié)議傳送數(shù)據(jù),要傳送的數(shù)據(jù)必須具有指定的結(jié)構(gòu)。消息必須包括起始分隔符(以便接收者可以識(shí)別消息從何處開(kāi)始),數(shù) 據(jù)長(zhǎng)度規(guī)范(定義接收緩沖區(qū))和數(shù)據(jù)本身。在此實(shí)例中,定義了消息的4個(gè)字節(jié)的起始分隔符(預(yù)置值為:0x11, 0x12, 0x13, 0x14)和一個(gè)S7串。該S7串包括兩個(gè)字節(jié)的長(zhǎng)度信息和實(shí)際的數(shù)據(jù)串。 使用S7串可以傳送所有的ASCII字符。圖2:消息的結(jié)構(gòu)注意事
4、項(xiàng):該實(shí)例程序基于如圖2所示的消息結(jié)構(gòu),但也可以自行定義消息結(jié)構(gòu)。如果希望使用不同的消息結(jié)構(gòu)(例如,h 起始分隔符只有3個(gè)字節(jié)),則可以依照用戶的特定需求 ,簡(jiǎn)單地改變?cè)搶?shí)例程序。因此,希望利用FC5(AG_SEND)傳送的數(shù)據(jù),必須在數(shù)據(jù)塊(DB220)中按照預(yù)定義的結(jié)構(gòu)準(zhǔn)備好。隨后,該 數(shù)據(jù)可以利用FC6(AG_RECV)按如下步驟接收:1. 接收起始分隔符(逐字節(jié)地)并識(shí)別消息2. 接收S7串的長(zhǎng)度信息3. 接收數(shù)據(jù)STEP 7程序描述STEP 7程序包括如下塊:OB100,OB1,F(xiàn)B100,DB100(FB100的背景DB),F(xiàn) B101(DB100中的多重背景),DB220,DB2
5、21,F(xiàn)C5,F(xiàn)C6。 OB100OB100是啟動(dòng)OB,當(dāng)CPU重啟(暖重啟)時(shí),運(yùn)行該OB。在此OB中,發(fā)送的首個(gè)通訊觸發(fā)器 的版本為M1.0和M0.1。圖3:OB100 OB1周期性調(diào)用OB1。該OB包括具有M1.0和M0.1的FB100(背景OB:OB100)的調(diào)用。一 旦運(yùn)行FB100,則復(fù)位M1.0。-圖4: OB1 FB100:在OB1周期中調(diào)用FB100。該FB包括FC5“AG_SEND”和FB101“ AG_RECV_VARIABLE”的調(diào)用。發(fā)送塊FC5“AG_SEND”當(dāng)時(shí)鐘標(biāo)記M10.7為上升沿,且未置位“SND_BUSY”時(shí),輸入?yún)?shù)“ACT”h 可以激活FC5。當(dāng)作業(yè)
6、運(yùn)行時(shí),置位“SND_BUSY”,并且,在此期間不能觸發(fā)任何功能。該功能塊特別重要,因?yàn)樵摴δ苁钱惒降模艺加卸鄠€(gè)周期。如果對(duì)該功能持續(xù)激活,而不是等待其中止,則會(huì)導(dǎo)致通訊過(guò)載。輸入?yún)?shù)“ID”和“LADDR”只能從NetPro(圖1)中的TCP連接屬性對(duì)話框中獲取。在“SEND”參數(shù)中,需 要指定要發(fā)送數(shù)據(jù)的地址(P#DB220.DBX0.0 BYTE 48)。在“LEN”參數(shù)中,輸入要發(fā)送的字節(jié)數(shù)(48)。輸出參數(shù)“ DONE”,“ERROR”和“STATUS”對(duì)于作業(yè)評(píng)估是必需的,而且只在同一個(gè)周期內(nèi)有效。圖5:FB100調(diào)用FC5如果塊運(yùn)行無(wú)錯(cuò)誤,則復(fù)位“SND_BUSY”,并再次調(diào)用
7、FC5。如果該塊因出錯(cuò)而終止,則保存塊的狀態(tài)字用于錯(cuò)誤分析,同樣復(fù)位“ SND_BUSY”。圖6:FB100FC5調(diào)用的評(píng)估接收塊FB101“AG_RECV_VARIABLE”當(dāng)調(diào)用FB101“AG_RECV_VARIABLE”時(shí),必須從NetPro(圖1)中的連接屬性對(duì)話框中獲取參數(shù)“ID”和“LADDR”h 。在“RECV_BUF”中, 需要指定要接收數(shù)據(jù)的存儲(chǔ)位置(P#DB221.DBX0.0 BYTE50)。輸出參數(shù)“NDR”,“ ERROR”和“STATUS”對(duì)于作業(yè)評(píng)估是必需的,而且只在同一個(gè)周期內(nèi)有效。圖7:FB100調(diào)用FB101如果塊運(yùn)行無(wú)錯(cuò)誤,則保存接收到的數(shù)據(jù)長(zhǎng)度。如果該
8、塊因出錯(cuò)而終止,則保存塊的狀態(tài)字用于錯(cuò)誤分析。圖8:FB100 FB101調(diào)用的評(píng)估 FB101(“AG_RECV_VARIABLE”):狀態(tài)機(jī):通過(guò)變量“STATE_CNT”來(lái)定義FB101中程序的輸入點(diǎn)。 根據(jù)變量“STATE_CNT”的狀態(tài),跳 過(guò)與程序的進(jìn)一步的處理相關(guān)的程序段。按照“STATE_CNTP”的程序處理:STATE_CNT描述0已收到起始分隔符的第一個(gè)字節(jié)(從NW9 跳至 NW13)1已收到起始分隔符的第二個(gè)字節(jié)(從NW10跳至NW14)2已收到起始分隔符的第三個(gè)字節(jié)(從NW11跳至NW15)3已收到起始分隔符的第四個(gè)字節(jié)(從NW12跳至NW16)4已識(shí)別起始分隔符。正在
9、接收數(shù)據(jù)信息(從NW3跳至NW17)5已創(chuàng)建接收緩沖區(qū)且數(shù)據(jù)已接收(從NW4跳至NW20)接收起始分隔符(逐字節(jié))并識(shí)別消息(程序段516)使用FC6“AG_RECV”,逐字節(jié)地接收起始分隔符(4 字節(jié))。當(dāng)調(diào)用FC6“AG_RECV”時(shí),參數(shù)“ID” 和“LADDR”來(lái)自FB101的輸入?yún)?shù)。在“RECV”中,需 要指定已接收字節(jié)的存儲(chǔ)位置(SD緩沖區(qū):字節(jié)變量)。輸出參數(shù)“NDR”,“ERROR”和“STATUS”對(duì)于作業(yè) 評(píng)估是必需的,而 且只在同一個(gè)周期內(nèi)有效。如果塊運(yùn)行無(wú)錯(cuò)誤,則保存接收的字節(jié),用于進(jìn)一步的處理。如果該塊因出錯(cuò)而終止,則保存塊的狀態(tài)字用于錯(cuò)誤分析。已接收字節(jié)后,檢驗(yàn)已
10、定義的起始信息。(Byte0 = 11;Byte1 = 12;Byte2 = 13;Byte3 = 14)。圖 9:通過(guò)起始分隔符識(shí)別消息接收S7串的長(zhǎng)度信息(程序段3,1720)如果已接收的信息被識(shí)別為起始分隔符,那么利用FC6“AG_RECV”接收S7串的長(zhǎng)度信息(兩個(gè)字節(jié))。當(dāng)調(diào)用FC6“AG_RECV”時(shí),參數(shù)“ID” 和“LADDR”來(lái)自FB101的輸入?yún)?shù)。在“RECV”中,需 要指定兩個(gè)長(zhǎng)度信息字節(jié)的存儲(chǔ)位置(VAR_LEN:由兩個(gè)字節(jié)構(gòu)成)。輸出參數(shù)“NDR”,“ERROR”和“STATUS”對(duì)于作業(yè) 評(píng)估是必需的,而且只在同一個(gè)周期內(nèi)有效。如果塊運(yùn)行無(wú)錯(cuò)誤,則已接收數(shù)據(jù)的實(shí)際
11、長(zhǎng)度用于接收緩沖區(qū)(ANY指針)。如果該塊因出錯(cuò)而終止,則 塊的狀態(tài)字作為FB101的輸出參數(shù)顯示。圖10:接收長(zhǎng)度信息在創(chuàng)建接收緩沖區(qū)(ANY指針)時(shí),有關(guān)串(VAR_LEN.ACT_LEN)的實(shí)際長(zhǎng)度的信息是必需的。在此,當(dāng)調(diào)用FB101時(shí),使 用數(shù)據(jù)的實(shí)際長(zhǎng)度來(lái)檢驗(yàn)已指定的接收緩沖區(qū)(ANY指針),并將其存儲(chǔ)在臨時(shí)的ANY指針(VAR_BUF)。圖11:創(chuàng)建接收緩沖區(qū)接收數(shù)據(jù)(程序段4,2123)隨后,利用FC6接收數(shù)據(jù)。當(dāng)調(diào)用FC6“AG_RECV”時(shí),參數(shù)“ID” 和“LADDR”來(lái)自FB101的輸入?yún)?shù)。在“RECV”中,需 要指定數(shù)據(jù)的存儲(chǔ)位置(VAR_BUF:臨時(shí)ANY指針)。輸出參數(shù)“NDR”,“ERROR”和“STATUS”對(duì)于作業(yè) 評(píng)估是必需的,而 且只在同一個(gè)周期內(nèi)有效。如果塊運(yùn)行無(wú)錯(cuò)誤,則保存已接收數(shù)據(jù)的長(zhǎng)度,并將其作為輸出參數(shù)發(fā)送給FB101。如果該塊因出錯(cuò)而終止, 則塊的狀態(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ù)存儲(chǔ)在DB221。該下載包括已描述的實(shí)例程序,通 過(guò)STEP 7 V5.3和SIMATIC NET V6.2創(chuàng)建。T_cp_data.exe將“Tcp_data.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 18964.1-2025塑料抗沖擊聚苯乙烯(PS-I)模塑和擠出材料第1部分:命名系統(tǒng)和分類基礎(chǔ)
- 二零二五年度盆栽養(yǎng)護(hù)管理及售后服務(wù)合同
- 二零二五年度解聘勞動(dòng)合同補(bǔ)償標(biāo)準(zhǔn)及社會(huì)保險(xiǎn)銜接協(xié)議
- 二零二五年度民事糾紛和解協(xié)議書(shū)(附爭(zhēng)議解決專家評(píng)審)
- 2025年度砸墻工程安全施工人員健康管理協(xié)議合同
- 2025年度綠色建筑合伙公司股權(quán)合作協(xié)議書(shū)
- 2025年度跨境電商市場(chǎng)調(diào)研商務(wù)合作協(xié)議書(shū)
- 2025年度液化氣價(jià)格調(diào)整與結(jié)算合作協(xié)議
- 二零二五年度綠色建筑項(xiàng)目融資合同
- 二零二五農(nóng)村宅基地買賣與農(nóng)村土地整治與生態(tài)保護(hù)合同
- DB32∕T 3370-2018 雙孢蘑菇栽培基質(zhì)隧道發(fā)酵技術(shù)規(guī)程
- 中醫(yī)院新技術(shù)、新項(xiàng)目申請(qǐng)表、審批表及年季度工作報(bào)告表范本
- 2022年五級(jí)音樂(lè)吹起羌笛跳鍋莊教案反思
- 火電廠發(fā)電機(jī)組設(shè)備大修標(biāo)準(zhǔn)項(xiàng)目工時(shí)定額
- 《現(xiàn)代漢語(yǔ)語(yǔ)法》PPT課件(完整版)
- 三施路塹高邊坡專項(xiàng)施工風(fēng)險(xiǎn)評(píng)估報(bào)告
- SAP培訓(xùn)講義(FICO概覽)V3-中石油
- 全國(guó)江蘇小學(xué)科學(xué)學(xué)科教師基本功大賽試題匯總(共19頁(yè))
- 幕墻工程施工質(zhì)量通病和防治措施方案
- 樂(lè)清市工業(yè)用地項(xiàng)目評(píng)估辦法(修改稿)
- ARM學(xué)習(xí)資料.Cortex-M3處理器體系結(jié)構(gòu)
評(píng)論
0/150
提交評(píng)論