西門子S7200自由口通訊方便經濟實惠,就是太矯情容易燒燬,何解

西門子S7200自由口通訊方便經濟實惠,就是太矯情容易燒燬,何解

一、自由口通訊原理介紹:

1.1 自由口通信概述

S7-200PLC的通訊口支持RS485接口標準。採用正負兩根信號線作為傳輸線路。

工作模式採用串行半雙工形式,在任意時刻只允許由一方發送數據,另一方接收數據。

數據傳輸採用異步方式,傳輸的單位是字符,收發雙方以預先約定的傳輸速率,在時鐘的作用下,傳送這個字符中的每一位。

傳輸速率可以設置為1200、2400、4800、9600、19200、38400、57600、115200。

字符幀格式為一個起始位、7或8個數據位、一個奇/偶校驗位或者無校驗位、一個停止位。

字符傳輸從最低位開始,空閒線高電平、起始位低電平、停止位高電平。字符傳輸時間取決於波特率。

數據發送可以是連續的也可以是斷續的。所謂連續的數據發送,是指在一個字符格式的停止位之後,立即發送下一個字符的起始位,之間沒有空閒線時間。而斷續的數據發送,是指當一個字符幀發送後,總線維持空閒的狀態,新字符起始位可以在任意時刻開始發送,即上一個字符的停止位和下一個字符的起始位之間有空閒線狀態。

示例:用PLC連續的發送兩個字符(16#55和16#EE)(程序如圖3和圖4),通過示波器測量CPU通訊端口管腳3/8之間的電壓,波形如下圖1.:

西門子S7200自由口通訊方便經濟實惠,就是太矯情容易燒燬,何解

圖1.兩個字符(16#55和16#EE)的波形圖

示例說明:

16進制的16#55換算成2進制等於2#01010101,16進制的16#EE換算成2進制等於2#11101110。如圖所示,當數據線上沒有字符發送時總線處於空閒狀態(高電平),當PLC發送第一個字符16#55時,先發送該字符幀的起始位(低電平),再發送它的8個數據位,依次從數據位的最低位開始發送(分別為1、0、1、0、1、0、1、0),接著發送校驗位(高電平或低電平或無)和停止位(高電平)。因為本例中PLC連續的發送兩個字符,所以第一個字符幀的停止位結束後便立即發送下一個字符幀的起始位,之間數據線沒有空閒狀態。假如PLC斷續的發送這兩個字符,那麼當PLC發送完第一個字符幀的停止位後,數據線將維持一段時間空閒狀態,再發送下一個字符幀。

字符傳輸的時間取決於波特率,如果設置波特率為9.6k,那麼傳輸一個字符幀中的一位用時等於1/9600*1000000=104us,如果這個字符幀有11位,那麼這個字符幀的傳輸時間等於11/9600*1000=1.145ms.

西門子S7200自由口通訊方便經濟實惠,就是太矯情容易燒燬,何解

自由口通信協議是什麼?

顧名思義,沒有什麼標準的自由口協議。用戶可以自己規定協議。

西門子S7200自由口通訊方便經濟實惠,就是太矯情容易燒燬,何解

已知一個通信對象需要字符(字節)傳送格式有兩個停止位,S7-200是否支持?

字符格式是由最基礎的硬件(芯片)決定的;S7-200使用的芯片不支持上述格式。

西門子S7200自由口通訊方便經濟實惠,就是太矯情容易燒燬,何解

S7-200是否支持《S7-200系統手冊》上列明的通信波特率以外的其他特殊通信速率?

通信速率是由最基礎的硬件(芯片)決定的;S7-200使用的芯片不支持沒有列明在手冊上的通信速率。

西門子S7200自由口通訊方便經濟實惠,就是太矯情容易燒燬,何解

1.2 自由口通信要點

應用自由口通信首先要把通信口定義為自由口模式,同時設置相應的通信波特率和上述通信格式。用戶程序通過特殊存儲器SMB30(對端口0)、SMB130(對端口1)控制通信口的工作模式。

西門子S7200自由口通訊方便經濟實惠,就是太矯情容易燒燬,何解

CPU通信口工作在自由口模式時,通信口就不支持其他通信協議(比如PPI),此通信口不能再與編程軟件Micro/WIN通信。CPU停止時,自由口不能工作,Micro/WIN就可以與CPU通信。

西門子S7200自由口通訊方便經濟實惠,就是太矯情容易燒燬,何解

通信口的工作模式,是可以在運行過程中由用戶程序重複定義的。

如果調試時需要在自由口模式與PPI模式之間切換,可以使用SM0.7的狀態決定通信口的模式;而SM0.7的狀態反映的是CPU運行狀態開關的位置(在RUN時SM0.7="1",在STOP時SM0.7="0") 自由口通信的核心指令是發送(XMT)和接收(RCV)指令。在自由口通信常用的中斷有"接收指令結束中斷"、"發送指令結束中斷",以及通信端口緩衝區接收中斷。 與網絡讀寫指令(NetR/NetW)類似,用戶程序不能直接控制通信芯片而必須通過操作系統。用戶程序使用通信數據緩衝區和特殊存儲器與操作系統交換相關的信息。 XMT和RCV指令的數據緩衝區類似,起始字節為需要發送的或接收的字符個數,隨後是數據字節本身。如果接收的消息中包括了起始或結束字符,則它們也算數據字節。 調用XMT和RCV指令時只需要指定通信口和數據緩衝區的起始字節地址。

西門子S7200自由口通訊方便經濟實惠,就是太矯情容易燒燬,何解

XMT和RCV指令與NetW/NetR指令不同的是,它們與網絡上通信對象的"地址"無關,而僅對本地的通信端口操作。如果網絡上有多個設備,消息中必然包含地址信息;這些包含地址信息的消息才是XMT和RCV指令的處理對象。

西門子S7200自由口通訊方便經濟實惠,就是太矯情容易燒燬,何解

由於S7-200的通信端口是半雙工RS-485芯片,XMT指令和RCV指令不能同時有效。

西門子S7200自由口通訊方便經濟實惠,就是太矯情容易燒燬,何解

1.3 發送和接收指令

XMT(發送)指令的使用比較簡單。RCV(接收)指令所需要的控制稍多一些。

RCV指令的基本工作過程為:

  • 1.在邏輯條件滿足時,啟動(一次)RCV指令,進入接收等待狀態
  • 2.監視通信端口,等待設置的消息起始條件滿足,然後進入消息接收狀態
  • 3.如果滿足了設置的消息結束條件,則結束消息,然後退出接收狀態

所以,RCV指令啟動後並不一定就接收消息,如果沒有讓它開始消息接收的條件,就一直處於等待接收的狀態;如果消息始終沒有開始或者結束,通信口就一直處於接收狀態。這時如果嘗試執行XMT指令,就不會發送任何消息。

所以確保不同時執行XMT和RCV非常重要,可以使用發送完成中斷和接收完成中斷功能,在中斷程序中啟動另一個指令。

西門子S7200自由口通訊方便經濟實惠,就是太矯情容易燒燬,何解

在《S7-200系統手冊》中關於XMT和RCV指令的使用有一個例子。這個例子非常經典,強烈建議學習自由口通信時先做通這個例子。

S7-200 CPU提供了通信口字符接收中斷功能,通信口接收到字符時會產生一箇中斷,接收到的字符暫存在特殊存儲器SMB2中。通信口Port0和Port1共用SMB2,但兩個口的字符接收中斷號不同。 每接收到一個字符,就會產生一次中斷。對於連續發送消息,需要在中斷服務程序中將單個的字符排列到用戶規定的消息保存區域中。實現這個功能可能使用間接尋址比較好。

西門子S7200自由口通訊方便經濟實惠,就是太矯情容易燒燬,何解

對於高通信速率來說,字符中斷接受方式需要中斷程序的執行速度足夠快。

西門子S7200自由口通訊方便經濟實惠,就是太矯情容易燒燬,何解

一般情況下,使用結束字符作為RCV指令的結束條件比較可靠。如果通信對象的消息幀中以一個不定的字符(字節)結束(如校驗碼等),就應當規定消息或字符超時作為結束RCV指令的條件。但是往往通信對象未必具有嚴格的協議規定、工作也未必可靠,這就可能造成RCV指令不能正常結束。這種情況下可以使用字符接收中斷功能。

1.4 字符接收中斷

S7-200 CPU提供了通信口字符接收中斷功能,通信口接收到字符時會產生一箇中斷,接收到的字符暫存在特殊存儲器SMB2中。通信口Port0和Port1共用SMB2,但兩個口的字符接收中斷號不同。

每接收到一個字符,就會產生一次中斷。對於連續發送消息,需要在中斷服務程序中將單個的字符排列到用戶規定的消息保存區域中。實現這個功能可能使用間接尋址比較好。

西門子S7200自由口通訊方便經濟實惠,就是太矯情容易燒燬,何解

對於高通信速率來說,字符中斷接受方式需要中斷程序的執行速度足夠快。

西門子S7200自由口通訊方便經濟實惠,就是太矯情容易燒燬,何解

一般情況下,使用結束字符作為RCV指令的結束條件比較可靠。如果通信對象的消息幀中以一個不定的字符(字節)結束(如校驗碼等),就應當規定消息或字符超時作為結束RCV指令的條件。但是往往通信對象未必具有嚴格的協議規定、工作也未必可靠,這就可能造成RCV指令不能正常結束。這種情況下可以使用字符接收中斷功能。

西門子S7200自由口通訊方便經濟實惠,就是太矯情容易燒燬,何解

  二、常發生的故障現象分析:

  當PLC的RS485口經非隔離的PC/PPI電纜與電腦連接、PLC與PLC之間連接或PLC與變頻器、觸摸屏等通信時時有通信口損壞現象發生,較常見的損壞情況如下:

  ●R1或R2被燒斷,Z1、Z1和SN75176完好。這是由於有較大的瞬態干擾電流經R1或R2、橋式整流、Z1或Z1到地,Z1、Z2能承受最大10A電流的衝擊,而該電流在R1或R2上產生的瞬態功率為:102×10=1000W,當然會將其燒斷。

  ●SN75176損壞,R1、R2和Z1、Z2完好。這主要可能是受到靜電衝擊或瞬態過電壓速度快於Z1、Z2的動作速度造成的,靜電無處不在,僅人體模式也會產生±15kV的靜電。

  ●Z1或Z2、SN75176損壞,R1和R2完好。這可能是受到高電壓低電流的瞬態干擾電壓將Z1或Z2和SN75176擊穿,由於電流較小和發生時間較短因而R1、R2不至於發熱燒斷。

  由以上分析得知PLC接口損壞的主要原因是由於瞬態過電壓和靜電造成,產生瞬態過電壓和靜電的原因很多也較複雜,如由於PLC內部24V電源和5V電源共地,24V電源的輸出端子L+、M為其它設備混合供電可能導致地電位變化,從而造成共模電壓超出允許範圍。所以EIA-485標準要求將各個RS485接口的信號地用一條低阻值導線連接在一起以保證各節點的地電位相等,消除地線環流!

  當帶電插拔未隔離的連接電纜時,由於兩端電位不相等電路中又存在諸多電感、電容之類的器件,插拔瞬間必然產生瞬態過電壓或過電流。

  連接在RS485總線上的其它設備產生的瞬態過電壓或過電流同樣會流入到PLC,總線上連接的設備站點數越多,產生瞬態過電壓的因素也越多。

  當通信線路較長或有室外架空線時,雷電必然會在線路上造成過電壓,其能量往往是巨大的,常有用戶沮喪地說:“聯網的幾十臺PLC全部遭打壞了!”。

  三、 解決辦法:

  1、從PLC內部考慮:

  ●採用隔離的DC/DC將24V電源和5V電源隔離,分析了三菱、歐姆龍、施耐德PLC以及西門子的PROFIBUS接口均是如此。

  ●選用帶靜電保護、過熱保護、輸入失效保護等保護措施完善的高擋次RS485芯片,如:SN65HVD1176D、MAX3468ESA等,這些芯片價格一般在十幾元至幾十元,而SN75176的價格僅為1.5元。

  ●採用響應速度更快、承受瞬態功率更大的新型保護器件TVS或BL浪湧吸收器,如P6KE6.8CA的鉗制電壓為6.8V,承受瞬態功率為500W,BL器件則可抗擊4000A以上大電流衝擊。

  ●R1和R2採用正溫度係數的自恢復保險PTC,如JK60-010,正常情況下的電阻值為5歐,並不影響正常通信,當受到浪湧衝擊時,大電流流過PTC和保護器件TVS(或BL),PTC的電阻值將驟然增大,使浪湧電流迅速減小。

  2、從PLC外部考慮:

  ● 使用隔離的PC/PPI電纜,儘量不用廉價的非隔離電纜(特別是在工業現場)。西門子公司早期出產的PC/PPI電纜(6ES7 901-3BF00-0XA0)是不隔離的,現在也改成隔離的電纜了!

  ● PLC的RS485口聯網時採用隔離的總線連接器.

  ● 與PLC聯網的第三方設備,如變頻器、觸摸屏等的RS485口均使用RS485隔離器BH-485G進行隔離,這樣各RS485節點之間就無“電”的聯繫,也無地線環流產生,即使某個節點損壞也不會連帶其它節點損壞。

  ● RS485通信線採用PROFIBUS總線專用屏蔽電纜,保證屏蔽層接到每臺設備的外殼並最後接大地。

  ● 對於有架空線的系統,總線上最好設置專門的防雷擊設施。


分享到:


相關文章: