基於FINS協議的OMRON PLC與上位機以太網通信的實現




基於FINS協議的OMRON PLC與上位機以太網通信的實現[多圖]

0 引言

在當代工業自動化控制系統中,可編程邏輯控制器(PLC)作爲常用的現場控制設備,上位機作爲數據採集及人機界面的一種已經得到廣泛運用。過去,在工程項目開發中,PLC和上位機間的通信常採用RS-232C或者RS-485串行方式,這種要領很難滿足數據量大、通信距離遠、實時性要求高的控制系統。隨着互聯網技能的發展、普及與推廣,以太網技能得到了快速的發展,其傳輸速率的提高和交換技能的運用 ,處理了以太網通信的非確定性疑問,使得工業以太網能夠廣泛運用 於工業信息控制領域,也是工業信息控制未來的發展趨勢。

FINS(factory interface network service)通信協議是歐姆龍公司開發的用於工業自動化控制網絡的指令/響應系統。運用 FINS指令可實現各種網絡間的無縫通信,包括用於信息網絡的 Etherne(以太網),用於控制網絡的Controller Link和SYSMAC LINK。通過編程發送FINS指令,上位機或PLC就能夠讀寫另一個PLC數據區的內容,甚至控制其運行狀態,從而簡化了用戶程序。FINS協議支撐工業以太網,這就爲OMRON PLC與上位機以太網通信的實現提供了可能。 1 OMRON PLC與上位機通信方式

目前,在歐姆龍PLC網絡組成中,上位機和PLC的通信可以採用RS232C/485串行通信、Controller Link通信和工業以太網通信三種方式。它們的主要性能參數如表1所示。

圖片看不清楚?請點擊這裏查看原圖(大圖)。

文獻[3]介紹了採用RS232C/485串行通信的方案,其通信速率僅爲9600b/s,速率較慢,很難適應當代數據量大、通信距離較遠、實時性要求較高的控制系統。

文獻[2]中給出了基於FINS協議的Controller Link通信的設計方案,其最高速率可以達到2Mb/s,整個網絡的最大傳輸距離爲500m,硬件上須要在上位機安裝CLK支撐卡,其擴展性及運用 的靈活性沒有工業以太網好。

在三種通信方式中,工業以太網的優勢是相當明顯的。其傳輸速率可以達到10/100Mb/s(取決於實際網絡環境);兩個節點之間的傳輸距離可以達到 100m,對於整個網絡的傳輸距離沒有限定;網絡內最大節點數可以達到254個,可以實現1(PLC):N(PC)、N:N、N:1等多種網絡形式。這些都爲構架各種規模的工業網絡信息系統提供了有利的條件,具有良好的擴展性、實用性、靈活性。



目前運用的上位機都配有以太網卡,所以上位機側無需添加額外的硬件設備。因此,採用工業以太網方式對提高工廠的自動化信息控制水平具有很大的現實意義。

2 以太網FINS通信

在以太網FINS通信中,各種數據信息是以UDP/IP包或者TCP/IP包的方式在以太網上發送和接收的。其中,在Internet層遠程設備運用的是 IP地址,而在運用 層運用的則是FINS節點地址。傳輸層中定義了本地UDP或TCP端口號,它爲運用 層(即FINS通信)提供通信端口,其默認配置爲 9600。用戶可以根據實際情況自行修改,但是在同一網絡中,各設備的通信端口號必須保持一致。圖1 FINS以太網通信協議模型

圖片看不清楚?請點擊這裏查看原圖(大圖)。

通常以太網通信運用的是IP地址,而在FINS通信中則是運用網絡號、節點號以及單元號來對不同設備(包括PLC、PC等現場設備)執行 地址定義的。這就爲不同網絡之間各種設備的通信提供了統一的尋址方式。在以太網FINS通信中,歐姆龍的以太網單元一項主要的功能就是能在IP地址和Fins節點地址之間執行 轉換,其轉換方式有自動轉換、IP地址表和複合地址表三種方式,其地址轉換數量依據模塊型號和轉換方式的不同還有相應的限定。以太網FINS通信服務是一種基於UDP/IP的通信方式,稱爲FINS/UDP方式,歐姆龍相關 的以太網產品都支撐這種方式。此外,CS1W-ETN21和CJ1W- ETN21以太網通信模塊還支撐 TCP/IP協議,稱爲FINS/TCP方式。

2.1 FI NS/UDP方式

FINS/UDP方式是一種運用 UDP/IP協議的FINS通信方式。UDP/IP是一種無連接的通信協議。當一條信息從一個節點發到另一個時,這兩個節點是沒有明確連接的對等聯繫的。UDP協議具有較快的傳輸速度,但是數據通信的可靠性沒有TCP協議高。

圖片看不清楚?請點擊這裏查看原圖(大圖)。

如圖2所示,是一個在以太網中發送和接收所運用的UDP幀結構。FINS/UDP



方式運用的是一種嵌套格式數據包,即Ethernet報頭、IP報頭、 UDP報頭和FINS幀。一個UDP數據段(FINS 幀)超過1472字節將被分成若干個數據包來傳送。分開的UDP數據將在UDP/IP協議層自動組合。通常不須要關注運用 層的數據分段,但是在一個多層 IP網絡中1427字節的UDP包可能無法 發送。在這種系統中就須要運用 FINS/TCP方式。

2.2 FINS幀結構

FINS 幀分爲FINS指令幀和FINS響應幀兩種形式。指令幀在發送FINS指令時運用,響應幀則在接收到FINS指令後對其返回響應時運用。它們都是由一個 FINS報頭(存儲傳輸控制信息)、一個FINS指令域(存儲一個FINS指令)以及一個FINS參數/數據域(存儲指令參數和發送/響應數據)所組成的。響應幀FINS指令域的內容與所接收到的指令幀的FINS指令域相同。詳細結構見圖3、圖4。

圖片看不清楚?請點擊這裏查看原圖(大圖)。

ICF爲信息控制域,用於標明指令和響應;RSV爲系統保存;GCT爲網關允許數目;DNA爲目的網絡號;DA1爲目的節點號;DA2爲目的單元號;SNA爲源網絡號;SA1爲源節點號;SA2爲源單元號;SID爲服務和響應的標識號,可任意配置,指令和響應對應相同;MRC和SRC分別爲 FINS指令的主指令和從指令;參數/數據域,用於標明所操作的數據地址、範圍等,在響應幀中前兩個字節MRES和SRES構成響應碼,用來診斷不正確信息。

3 FinsGateway和SYSMAC Compolet控件介紹

FinsGateway是OMRON FINS通信協議的驅動程序,它爲計算機上的32位Windows操作系統提供一個工業自動化網絡環境。FinsGateway集成了不同的網絡協議,併爲FINS通信和數據鏈接提供驅動程序和接口庫函數。它通過建立高性能的虛擬存儲區EventMemory,爲不同的用戶程序提供數據的接入和共享。運用 FinsGateway,計算機可以通過各層網絡(包括網絡互聯)訪問網絡上的PLC,通過接口庫函數,用戶還可以開發程序。



SYSMAC Compolet是歐姆龍公司專門爲FINS通信開發的Active X控件,它是架構在FinsGateway這個驅動程序下的VB控件,對Fins指令做了進一步集成和優化。SYSMAC Compolet爲SYSMAC C/CS1/CV系列的PLC提供運用 程序編程接口,在開發時只須要調用該控件,編寫程序更便捷,語句更基本,配合運用 FinsGateway,通過計算機就可以方便地控制訪問PLC,直接對其操作而不須要掌握相應的Fins指令知識。

4 OMRON PLC與上位機以太網通信的實現

OMRON PLC與上位機的以太網通信依靠發送FINS指令實現。上位機發送FINS指令可以直接讀取或寫入PLC相應的數據,PLC部分無需編寫接收和發送程序。文獻[1]給出了運用VC++異步套接字類CAsyncSocket與OMRON PLC執行 以太網通信的要領。本例中採用FINS/UDP方式,詳細如圖7所示。上位機運用 Visual Basic 6.0執行 程序開發,詳細實現向PLC發送FINS指令(讀取內存區域,指令代碼0101)讀取DM100開始的150個字數據的功能。相較於文獻[1] 介紹的要領,本文中爲不同層次的運用者提供了三種要領來實現這一個功能,添加了系統開發的挑選性。圖7上位機與PLC通過以太網通信



在執行 上位機程序編程之前首先要完成上位機和PLC的以太網單元的配置。

(1)配置上位機的IP地址爲10.72.18.11,子網掩碼爲255.255.255.0,它的FINS節點號默認爲11。

(2)通過歐姆龍CX-Programmer軟件,在IO表中將PLC CSIW-ETN11以太網單元的IP地址配置爲10.72.18.19,子網掩碼爲255.255.255.0,FINS節點號配置爲19。地址轉換方式配置爲自動生成(動態)。FINS/UDP端口爲9600(默認)。保存後下傳至PLC。

下面主要介紹三種要領來實現上述功能。

4.1 運用 Micosoft Wi nsock控件

在VB中新建一個Standard.EXE文件。添加Winsock控件,對象命名爲"Winsock1",發送Fins命令程序如下:

編譯保存後即可。

4.2 運用 FinsGateway中的OMRON FinsMessaging Control

(1)在上位機中安裝Finsgateway軟件,並在Service Manager中啓動CPU_UNIT和ETN_UNIT。

(2)ETN UNIT屬性中,在"UDP Nodes"中手動添加PLC的IP地址(10.72.18.19)和FINS地址(0.19.0)。在"Commuincation Unit Settings"中配置端口號(9600)和FINS-IP地址轉換方式爲自動生成(動態)。

(3)在VB中新建一個standard.EXE文件。添加OMRON FinsGateway FinsMessaging Control,對象名爲"FinsMsgl"。

(4)在form區添加一個Command button(命名爲"Command1")作爲發送Fins指令之用;同時添加一個textbox(命名爲"Text1")作爲顯示所接受數據之用。

(5)在"Conmand1"中的"Click"事件中添加如下代碼:

Private Sub Command1_C1ick()FinsMsg1.sendFinsCommand0,19,0,"0101820064000096"End Sub

在"FinsMsg1"中的"OnReceive"事件中添加如下代碼:

Private Sub FinsMsg1_OnReceive ()

Dim net As Integer,node As Integer,unit AsInteger

Text1.Text=Fins Msg1.receive Message(net,node,unit,vbString) End Sub

編譯保存後即可。

4.3 運用 FinsGateway和SYSMAC Compolet

(1)在上位機中安裝Fins Gateway和SYSMACCompolet軟件。啓動FinsGateway的Service Manager,並啓動CPU UNIT和ETN UNIT。

(2)同4.2中第(2)點。

(3)在VB中新建一個Standard.EXE文件。添加OMRON SYSMAC CS Control,對象名爲"SYSMAC CS11"。

(4)在對象"SYSMACCS11"屬性中,挑選 "Communication"標籤,選中"ActivateCoCommunication"並配置 PLC的Fins地址(0.19.0)。

(5)在form區添加一個Command button(命名爲"Command1")作爲發送Fins指令之用;同時添加一個text box(命名爲"Text1")作爲顯示所接受數據之用。

(6)在"Conmand1"中的"Click"事件中添加如下代碼:


Private Sub Command1_Click()

Text1.Text=SYSMAC_CS1 1.readArea(plcAreaDM,100,150,vbString) End Sub

編譯保存後即可。

5 結束語

工業以太網作爲工業現場信息採集的主要網絡具有速率高、通信距離遠、抗干擾性好等特性,已經得到廣泛運用 。本文所介紹的三種OMRON PLC與上位機以太網通信的要領均在實際工程中驗證成功。這三種要領從本質上來說其實是一樣的,但詳細運用和實現流程有所不同。第一種要領不須要另外購置歐姆龍相關 軟件,但須要對FINS通信底層協議以及Fins幀結構及其封裝流程有比較徹底的瞭解,程序編寫較爲複雜,適用於有一定開發體會的高級用戶。第二種要領須要掌握Fin s幀結構以及FinsGateway的相關 配置,但是對發送指令和接收數據的程序編寫較爲基本,適用於中級用戶。在第三種要領中,運用了SYSMAC Compolet中基本易懂的編程語言,即可完成上位機的程序開發,整個程序編寫流程基本明瞭,可以大幅縮減通信程序的開發時間,適用於那些開發體會