2011年8月20日 星期六

台達PLC串行通訊應用原理

摘 要:本文根據串行通訊的基本原理,以台達PLC與鬆下變頻器通訊為案例,詳細討論台達PLC的串行通迅功能及在項目中實際應用。主要介紹如何使用台達PLC完善的通訊功能完成各種實際應用,體現了台達PLC強大的通訊技術特性。

  關鍵詞:串行通訊 PLC RS485 MODBUS協議 變頻器、自由口通訊 EASY LINK

  1引言

  隨著計算器技術的發展,通訊傳輸在工業自動化控製領域得到越來越廣泛的應用。由於串行通訊方式具有使用線路少、成本低、簡單易用,特別是在遠程傳輸時,避免了多條線路特性的不一致而被廣泛采用。現在各PLC生產廠家都極其重視通訊在PLC推廣中的應用,並且各具有優勢特點,合理利用PLC串行通讯功能將極大的降低自動化項目成本,提高產品競爭力。

  2 串行通訊簡介

  計算機通訊即是不同的設備通過線路互相交換編碼數據,其主要目的在於將數據從某端傳送到另一端,實現信息的交換。通訊通常有並行和串行兩種方式,由於並行傳輸方式在數據電壓傳送的過程中容易衰減互擾,並且線路工程費用較高,而串行通訊方式則能很好的解決這些問題,因此在工業應用中絕大多數使用串行通訊。

  串行通訊的基本接口方式分為RS-232和RS-485兩種標準。

  2.1 RS-232接口

  (1) RS-232-C接口連接器一般使用型號為DB-9的9芯插頭座,隻需三條接口線,即"發送數據"、"接收數據"和"信號地"即可傳輸數據,其9支腳位的定義如下表1所示。   表1 RS-232-C接口連接器定義

  

    (2) 在RS232的規範中,電壓域值在+3V---+15V(一般使用+6V)之間稱為"0"或"ON";電壓在-3V----15V(一般使用-6V)之間稱為"1"或"OFF";計算機上的RS-232"高電位"約9V,而"低電位"則約-9V。

  (3) RS-232為全雙工工作模式,其訊號準位是參考地線而得,分別作為數據的傳送和接收;實際應用中其傳輸距離可以達到15米。隻具有單站功能,即一對一通訊。

  2.2 RS485接口

  (1)采用正負兩根信號線作為傳輸線路。

  (2)RS-485的電氣特性:邏輯"1"以兩線間的電壓差為+(2-6) V表示;邏輯"0"以兩線間的電壓差為-(2-6)V表示。

  (3)RS485為半雙工工作模式,其訊號是正負兩條線路訊號準位相減而得,是差動式輸入方式,抗共模幹能力增強,即抗噪聲幹擾性好;實際應用中其傳輸距離可達1200米。具有多站能力,即一對多的主從通訊。

  3 台達PLC的串行通訊功能

  台達DVP係列PLC各型主機均內建2個通訊口的標準配置,即一個RS232和一個RS485通訊口,其RS232口主要用於上下載程序或作為與上位機、觸摸屏通訊,而RS485口主要用於組建485網絡,實現通訊控製。尤其值得一提的是EH機型可通過通訊功能卡擴充一個RS232或RS485通訊口,使得在組建多重通訊網絡更加方便。

  相對於通訊口的硬件配置,台達PLC在軟件指令上對通訊的支持也是相當豐富和便利,主要通過以下三種方式完成485通訊功能:

  3.1 自由通訊方式

  該方式通過串行數據傳輸指令RS來完成主站與從站之間的數據交換,可以實現無協議的自由通訊。許多接口設備如變頻器、儀表等…若配備RS-485串行通訊,且該設備之通訊格式也有公開即可由PLC使用者以RS指令設計程序來傳輸PLC與接口設備之間數據。

  3.2 MODBUS通訊方式(GB/Z 19582)

  MODBUS協議是目前國際上公開的標準串行通迅協議,也是中華人民共和國國家標準化指導性技術文件GB/Z 19582:基於Modbus協議的工業自動化網絡規範。台達PLC通訊符合MODBUS協議,並且台達其它產品如變頻器、溫控儀、司服控製器等485通訊均符合MODBUS協議,對於符合MODBUS之通訊格式的產品,台達PLC提供了更加便利的通訊指令MODRD 、MODWR、MODRW來實現數據的讀寫,程序編寫中不需關注傳送的字符,校驗碼的轉換等等,隻需要確定通訊地址及寫入讀出的數據即可,不過在多指令讀寫時需要考慮通訊時序問題,避免通訊衝突。

  3.3 台達PLC最有特色的通訊命令EASY LINK

  基於MODBUS通訊協議,台達EP/EH係列PLC機型提供了更為方便快捷的通訊方式--EASYLINK。EASY LINK通訊是台達PLC最有特色的通訊命令,可以提供主站與32個從站通訊,每個從站讀寫各100項數據的能力,且不需要複雜編程即可高速快捷的完成通訊控製,節省大量的編程時間。

  綜合比較上述三種通訊方式,自由通訊方式的編程最為複雜,但它可以與非MODBUS協議的設備通訊,設備選擇自由靈活不受限製;MODBUS通訊方式的編程則簡單的多,且也具有一定的編程靈活性,如可優先與某個從站通訊;而EASY LINK通訊方式是針對符合MODBUS協議互連設備最簡單的通訊方式,幾乎不需要編程即可完成,不需要考慮半雙工通訊方式中通訊時序問題,隻需要指定讀出寫入數據的寄存器和數據項數,啟動LINK連接即可完成設備之間的數據通訊。因此對於符合MODBUS協議的設備建議采用LINK通訊方式。

  3.4串行通訊工程要點問題

  在工業自動化控製中,有許多數據信號需要采集、處理,特別對於遠距離的設備,一般的傳感器電壓訊號如果傳輸距離過遠的話,會造成訊號的衰減,如此一來,將得不到正確的結果,因此,采用傳感器訊號就地處理,而數據傳輸通過數字通訊方式能夠有效的解決這一問題,保證數據的正確性與準確性;但通訊同樣也會受到外界的幹擾,使得通訊質量下降,甚至根本無法建立通訊。要保證通訊正常,在組建通訊網絡時應該注意以下幾點:

  (1)保證通訊協議一致,所有聯機之從站接口設備波特率及通訊格式需與主站相同,合理分配各從站的站地址,避免地址衝突。

  (2)合理布線,減少外界幹擾對通訊的影響。走線走得好,可以很大程度減少幹擾的影響,提高通訊的可靠性,走線應遵循兩個原則:遠離電源線,變頻器等幹擾源;當網線不能與電源線等幹擾源避開時應與電源線垂直,不能平行,並采用質量高的雙絞線走線

  (3)通訊速率的選擇,一般來說提高通訊波特率能夠提高通訊效率,但並非一味的提高就肯定好,傳輸速率的提高同時加大了傳輸錯碼率,使傳輸質量下降,特別是在工業控製場合外界幹擾比較大的情況下,有時適當降低傳輸速率會得到更好的傳輸效率。

  (4)正確編製通訊程序。PLC通訊程序的編製在實現串行通訊中也是非常關鍵的一步,一個合理的通訊程序能夠提高通訊效率,而不完善的通訊程序則會導致通訊效率下降,甚至通訊失敗,使PLC出現運行錯誤。由於RS485通訊采用半雙工的工作模式,因此通訊程序的編寫主要是對通訊指令的分時處理程序,在此用以下兩個通訊程序來描述如何合理編製PLC通訊程序,程序主要是PLC通過485通訊方式讀寫三台變頻器的頻率,均實際測試運行過:

  3.5 台達PLC通訊程序要點

  (1)"固定時序通訊程序"是台達PLC通訊技術工程處理通訊常用方法,利用固定計時的方法來實現分時通訊,這樣的寫法比較容易造成通訊時序上的問題。Modbus 通訊規格是采用主/從模式,也就是主站發通訊命令給從站,從站收到之後再回應主站,這一收一回才算完成一個完整的通訊資料交換,該程序有使用到M1127來判斷,但是決定下一個通訊指令是否運行的接點開關卻不是由通訊旗標來決定,而是由100ms 的 timer來決定,這樣很容易有問題生成,因為通訊的整個時間包含通訊資料在線上傳輸的時間加上通訊資料在主/從站處理的時間,若這時間超過100ms,那就很容易造成從站回傳,而主站送資料出去,造成資料在線上碰撞,因而影響傳輸的正確性,如果把timer時間延長,還是會碰到有問題,因為這種寫法,通訊旗標的動作與決定傳送的旗標本身並未同步,因而會有時間差,造成資料不正確。該程序在EH機型上測試,發現通訊速度比較慢,且讀回來的數據有時會發生交叉的現象,即從站2的頻率讀到從站4的寄存器上,錯誤讀寫的情況可見圖一。使用這種編程方法在通訊正常時沒有問題,一旦當通訊數據錯亂時,就會造成數據傳送錯誤,嚴重時甚至導致PLC死機,參見圖1。   圖1 錯誤讀寫,紅圈部分信道D200數據變為K3000,應該是K1000

  (2)"通訊旗標方式程序"是調整後的程序,可以比較一下,其主要區別在於Modbus Read/Write 指令在程序使用上搭配M1127, M1129, M1140, M1141 來判斷,由這幾個旗標的狀態來決定下一個通訊指令的運行時間,能夠很好的處理串行通訊的時序問題,保證通訊的可靠及效率,正常通訊監控畫麵如圖二。在用固定時序通訊中,即使通訊正常完成,那末也要等到100MS以後做下一個通訊,比如寫指令通訊完成耗時20MS,則需要等待80MS,降低了通訊效率,而采用通訊旗標會在通訊完成或出現錯誤的情況下轉入執行下一個通訊指令,有效利用了時間,參見圖2。   圖2 正常通訊監控畫麵

  4 台達PLC與鬆下變頻器通訊案例

  采用台達ES係列PLC,用通訊方式來改變鬆下VF0C係列變頻器的設定頻率,PLC端使用485口,無協議方式來模擬VF0C變頻器的通訊協議。

  4.1通訊協議

  VF0C係列變頻器留有485通訊口,並提供內部通訊協議如下:

  寫:% [站號] #WD [功能號] [起始地址] [結束地址] [數據] [BCC] /CR

  讀:% [站號] #RD [功能號] [起始地址] [結束地址] [BCC] /CR

  如果寫正確,返回:%01$WD BCC/CR

  如果讀正確,返回:%01$RD [數據] BCC/CR

  起始碼 站號 間隔 功能 功能號 起始 結束 數據 校驗碼 結束碼

  % 01~31 # WD D 00000 00000 0000 BCC /CR

  1 2 1 2 1 5 5 4、… 2 1

  分別規定了字節數,在以下表格以寫數據為例做詳細說明:

  在鬆下VF0C係列變頻器中,站號默認為01,通訊格式為9600、N、8、1,通訊方式是ASCII方式,數據為十六進製,存儲模式為8位模式。設定頻率的地址是DT237,而讀設定頻率的地址為DT133,而且在DT237和DT133的數據都是以0.01Hz為單位的。下麵以寫頻率為例,來做詳細說明。

  4.2實例說明

  假設要寫入的頻率是43.5Hz,那麼需要寫入的數值應為10FE(4350),變頻器的存儲模式為8位模式,應從低位開始寫入,那麼應該先寫FE後寫10。校驗碼是把從起始碼到數據碼所有的字節進行異或所得。

  XOR:%01#WDD0023700237FE10=52(HEX)

  那麼得出以下所有通訊格式碼:

  %01#WDD0023700237FE1052/CR

  通訊方式是ASCII方式,數據是十六進製格式,把這些格式碼按正確的次序發出,就可以把數據43.5HZ寫入到變頻器設定頻率DT237中。

  4.3 梯形圖設計

  在PLC中,無協議通訊也是從低位開始發送數據的,可選用8位模式和16位模式傳送,不同就在於發送數據寄存器中的8位數據還是16位數據,在這裏以16位模式做說明。梯形圖如下:把格式碼數據253031235744443030323337303032333745463130520D按照從低位到高位的順序依次存入到D0~D11中去,占用12個連續的數據寄存器,就是說有24個字節的數據。設定通訊參數9600,N,8,1,ASCII方式,16位模式。當M0接通一次,就可以發送一次數據,寫一次頻率。

  4.4 程序優化

  如果再加上讀頻率的程序,就可以做成小閉環,完成讀寫頻率的程序優化。因為在寫頻率的數據發送成功後,可做延時3秒後讀頻率,在讀成功以後,把讀回的頻率數據和要寫入的頻率數據做比較,如果相等,則通訊程序停止,如果不相等,再執行寫頻率-->讀頻率-->比較。

  5 結束語

  綜上所述,台達PLC具有強大的串行通訊功能,且相關應用指令豐富,能夠很好的完成各種通訊需求,合理利用通訊功能將大大降低設備的製造成本,節省配線,提高抗幹擾能力,由於台達產品均符合MODBUS協議,因此可以把台達產品通過通訊方式整合在一起,實現各種各樣的功能要求。

5 則留言:

  1. 您好,請問以RS指令要做先收後傳要如何設置呢?

    回覆刪除
    回覆
    1. 其實不太懂你要做什麼。(應該是MASTER端,才需要用這指令。

      如果是slave端(才需要收到資料後,再傳送結果)
      其實PLC不需要任何指令,
      讓外部MASTER端,來讀寫PLC裝置(X,Y,D,M)即可。

      就像HMI來讀PLC的資料,
      對PLC來言,就是先收,再傳,
      但PLC沒有做任何動作,或寫指令。
      HMI還是讀得到資料,因為是PLC底層(系統)已經做好的部份。

      PLC的手冊裡面,都可以找到,PLC裝置(X,Y,D,M)的地址是什麼,
      外部裝置,就可以透過這地址,讀寫PLC裝置。

      刪除
  2. 通訊對象是一台雷射測量儀,送電後雷射會先開機,開機完成後會連續送出OK,PLC收到OK後再下指令給雷射(如CMD01),雷射收到命令後會回應(CMD01OK)。

    回覆刪除
    回覆
    1. 照你所說,這個比較像跟PC通訊時的格式,用PLC會麻煩點。

      簡單來說,就是分兩次下RS指令

      1.用RS指令,就先單純接收,(傳送資料筆數=0即可。),如果逾時就一直重覆下接收RS。

      2.等收到的資料是OK後,再RS指令發送資料(CMD01)

      刪除