西門子CPU1217C繼電器模塊 技術(shù)支持
西門子CPU1217C繼電器模塊
通訊功能塊 FC50 “AG_LSEND" 和 FC60 “AG_LRECV"的特點(diǎn)
FC50 和 FC60 是異步通訊功能塊。
FC50 和 FC60 的運(yùn)行需要幾個(gè) OB1 周期。
FC50 由輸入?yún)?shù) "ACT"激活。
通訊任務(wù)結(jié)束由 “DONE", "NDR" 或 “ERROR"指示。
AG_LSEND 和 AG_LRECV 可以通過同一個(gè)連接同時(shí)通訊。
新版本的功能塊 FC50 "AG_LSEND" 和 FC60 "AG_LRECV" 可以在 SIMATIC_NET_CP 庫"CP 400 > Blocks" 里找到。
例程說明
S7 程序包含來自 SIMATIC_NET_CP 庫的通訊功能塊 FC50 “AG_LSEND"和 FC60 “AG_LRECV"的調(diào)用。 FC50 “AG_LSEND"用于發(fā)送數(shù)據(jù)到 S7 或 S5 站,PC 或者第三方系統(tǒng)。FC60 “AG_LRECV" 用于接收來自 S7 或 S5 站,PC站或第三方系統(tǒng)的數(shù)據(jù)。
例程中通訊功能塊 FC50 "AG_LSEND" 和 FC60 "AG_LRCV" 用于 ISO-on-TCP 連接的通訊。
首先創(chuàng)建 S7-400 站的硬件配置。
注意:
將 MB10 配置為時(shí)鐘標(biāo)志。發(fā)送任務(wù)由該時(shí)鐘標(biāo)志觸發(fā)。保存并編譯 S7-400 站的硬件組態(tài)并裝載到 CPU。
例程中用到了定時(shí)器 T10 。
然后在 NetPro 中為 CPU 配置一種上面提到的通訊連接。如果通訊伙伴也在該 STEP7 項(xiàng)目中一起配置,可以配置一個(gè)的通訊連接。如果通訊伙伴沒有與 S7-400 站在同一個(gè) STEP7 項(xiàng)目下,可以配置一個(gè)未的通訊連接。配置通訊連接時(shí),確認(rèn) IP 地址或 Profibus 地址已經(jīng)正確分配。 同樣,確認(rèn) PORT,TSAP,LSAP 已經(jīng)正確分配。這些 用于識(shí)別通訊伙伴間的通訊連接。
FC50 “AG_LSEND"和 FC60 “AG_LRECV"的輸入?yún)?shù)“ID"和“LADDR"必須被。該參數(shù)在通訊連接的屬性對話框“常規(guī)"選項(xiàng)卡中設(shè)置。
圖1
STEP7 的程序由塊 OB100, OB1, FB200, DB200, DB201, FC50 和 FC60 組成。
OB100:
OB100 是啟動(dòng)組織塊,當(dāng) CPU 重新啟動(dòng)(暖啟動(dòng))時(shí)運(yùn)行。在這個(gè)組織塊中通過 M1.0 使能*次通訊觸發(fā)器。
OB1:
OB1 循環(huán)組織塊。在這個(gè)組織塊中調(diào)用 FB200 (背景數(shù)據(jù)塊:DB200) ,使用 M0.3“INIT" 作為參數(shù) (INIT_COM)。FB200一旦執(zhí)行則復(fù)位 M0.3。
圖. 02
FB200
FB200 在 OB1 中調(diào)用。在 FB200 中調(diào)用了 FC50 “AG_LSEND" 和 FC60 “AG_LRECV"。
參數(shù)化FC50"AG_LSEND"
在FC50 的輸入?yún)?shù)“ACT"得到一個(gè)上升沿后觸發(fā)發(fā)送任務(wù)。 時(shí)鐘標(biāo)志位 M10.7和變量 “SND_BUSY"及"CONNECTION_BROKEN_SEND"參數(shù)控制發(fā)送任務(wù)的觸發(fā)。當(dāng)發(fā)送任務(wù)正在執(zhí)行時(shí),“SND_BUSY"被置位 ,此時(shí)不能觸發(fā)新的發(fā)送任務(wù),由于功能塊的執(zhí)行是異步的,并可以持續(xù)幾個(gè)周期,所以聯(lián)鎖功能尤其重要。如果不等待*個(gè)發(fā)送工作成功完成或出錯(cuò)終止就不間斷的觸發(fā)新的發(fā)送任務(wù)會(huì)引起通訊過載。 如果連接沒有建立,通訊塊每10s被調(diào)用1次同時(shí)觸發(fā)發(fā)送任務(wù)。
輸入?yún)?shù) “ID" 和 “LADDR"的值必須取自 NetPro中通訊連接的屬性對話框(參見 圖01)。需要為 FC50 的 “SEND"輸入?yún)?shù)包含將要發(fā)送數(shù)據(jù)的數(shù)據(jù)區(qū)地址和長度(發(fā)送緩沖區(qū)), 例如: P#DB201.DBX0.0 BYTE 100。
在“LEN"輸入?yún)?shù)中鍵入要發(fā)送的字節(jié)數(shù),本例中是100。
輸出參數(shù) “DONE", “ERROR" 和 “STATUS"用于任務(wù)評估,并且只在同一個(gè)周期內(nèi)有效。
圖.03
圖. 04
當(dāng)發(fā)送任務(wù)成功完成后,“SND_BUSY" 被復(fù)位。 然后可以觸發(fā)下一個(gè)發(fā)送任務(wù)。
圖.05
如果發(fā)送任務(wù)出錯(cuò)終止,“SND_BUSY" 也會(huì)被復(fù)位 ,F(xiàn)C50 輸出參數(shù) “STATUS"的值被保存用于故障分析。
如果 “STATUS"輸出參數(shù)的值是 0x7000Hex (28672Dec),F(xiàn)C50 “AG_LSEND"再次被調(diào)用。
圖.06
如果輸出參數(shù)“STATUS"的值是 0x8183Hex (32381Dec) 或者 0x8304Hex (31996Dec), 也就是說通信連接不能建立的時(shí)候,變量"CONNECTION_BROKEN_SEND" 被置位為1持續(xù)10s,在此期間FC50不被調(diào)用和處理,然后新的發(fā)送任務(wù)被觸發(fā),如果連接仍然不能建立, "CONNECTION_BROKEN_SEND"再次被置位為1并持續(xù)10s,當(dāng)連接不能建立的時(shí)候每10秒發(fā)起一次發(fā)送任務(wù)。
圖07