熟女人妻水多爽中文字幕,国产精品鲁鲁鲁,隔壁的少妇2做爰韩国电影,亚洲最大中文字幕无码网站

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 技術百科 > 基于OPC技術的上位機與PLC之間的通信

基于OPC技術的上位機與PLC之間的通信

時間:2008-10-31 11:02:00來源:zhangting

導語:?現代工業控制系統通常以pc機為上位機,通過與現場工控設備如plc的數據交換與處理,實現對生產過程的自動控制。
1 引言 現代工業控制系統通常以pc機為上位機,通過與現場工控設備如plc的數據交換與處理,實現對生產過程的自動控制。對于小型控制系統,采用專門的組態軟件成本太高,用vb設計監控系統則可以降低成本,但首先要解決上位機與plc之間通信問題。以往使用較多的進程間通信方式是dde(動態數據交換)方式,隨著opc技術的發展和普及,它已成為工業過程控制的通信標準。opc服務器有兩類接口,其中自動化接口主要用于vb、delphi等開發工具。本文利用羅克韋爾公司提供的opc接口,用vb編寫了客戶端應用程序,實現了上位機與ab可編程控制器之間的數據交換。 2 opc技術簡介 opc(ole for process control—用于過程控制的對象連接與嵌入)是一套以微軟對象連接與嵌入ole、組件對象模型com、分布式組件對象模型dcom(distributed com)技術為基礎,基于windows操作平臺,為工業應用程序之間提供高效的信息集成和交互功能的組件對象模型接口標準。opc實際上是提供了一種機制,通過這種機制,系統能夠以服務器/客戶端標準方式從服務器獲取數據并將其傳遞給任何客戶應用程序。這樣,只要生產商開發一套遵循opc規范的服務器與數據進行通信,其他任何客戶應用程序便能通過服務器訪問設備。 opc服務器有兩類接口:定制接口和自動化接口。定制接口為c++程序服務,自動化接口為vb這一類可使用自動化對象的程序服務。定制接口是服務商必須提供的,而自動化接口則是可選的,不過opc基金會提供了一個叫做“自動化包裝器”的動態連接庫,用于在兩者間轉換。 opc數據存取規范規定的基本對象有三類:服務器(server)、組(group)和數據項(item)。服務器對象包含服務器的所有信息,也是組對象的容器,一個服務器對應于一個opc server,即一種設備的驅動程序。組對象除了包含它自身信息外,還負責管理數據項。每一個數據項代表到數據源的一個連接,但它沒有提供外部接口,客戶端程序無法對數據項直接進行操作,應用程序必須依靠數據項的容器組對象來對它進行操作。 3 通信實現 3.1 rslinx的配置 rslinx是ab可編程控制器在windows環境下建立工廠所用通信方案的工具,它不僅提供了多種網絡驅動程序,而且提供了最快速的opc、dde和custom c/c++接口。本設計中上位機與logix5550控制器采用rs-232串口方式連接,在rslinx中要對df1網絡驅動程序組態,設置串口特性:com1、波特率19200bps、一個停止位、無奇偶校驗、全雙工、bcc校驗碼。此外要使用rslinx的opc接口作為服務器,還要在rslinx中對opc進行配置。 3.2 安裝opc自動化接口服務 若要用vb開發opc應用程序,必須安裝opc自動化接口服務,保證計算機系統目錄下有opcdaauto.dll。opc基金會提供了一個叫做“自動化包裝器”的動態連接庫,從opc基金會的網站(www.opcfoundation.org)可下載。在vb環境中,按“工程”的子菜單“引用…”后,彈出對話框,選擇其中的“rslinx opc automation 2.0”項,這樣才能使用自動化接口。 3.3 程序設計 用vb編寫了opc客戶端應用程序,實現了上位機與logix5550控制器之間的通信。主要程序代碼如下: (1) 連接opc服務器 dim withevents myopcserver as opcserver ‘定義服務器對象變量myopcserver dim withevents myopcgroup as opcgroup ‘定義opc組對象變量myopcgroup set myopcserver = new opcserver myopcserver.connect "rslinx opc server" ‘連接rslinx 的opc服務器 (2) 添加opc組對象 set myopcgroup=myopcserver.opcgroups.add("group1") ‘添加opc組對象myopcgroup.issubscribed= true ‘設置該組數據為后臺刷新 myopcgroup.isactive = true ‘設置該組為激活狀態 myopcgroup.updaterate=1000 ‘設置數據刷新時間為1000 (3) 添加數據項 dim abitemids() as string ‘項標識符 dim abclienthandles() as long ‘客戶端句柄 dim abserverhandles() as long ‘服務器端句柄 dim aberrors() as long dim i as long itemcount=5 dim oopcitem as rslinxopcautomation.opcitem for i = 1 to 5 abitemids(i) = "[" & txttopic & "]" & txtitem(i) ‘將topic名和標簽名賦給項標識符 abclienthandles(i) = i ‘給客戶端句柄賦值 next i myopcgroup.opcitems.additems itemcount, abitemids, abclienthandles, abserverhandles, aberrors ‘添加數據項操作 (4) 同步數據讀寫 opc數據存取有同步方式和異步方式兩種。異步讀寫數據復雜,需要與事件結合使用,與同步相比速度慢但準確性高。同步讀寫數據簡單,直接使用opcitem的方法即可。 dim one as opcitem dim index as long ‘index為標簽順序號 dim oneread as string dim xie as string set one = myopcgroup.opcitems(index) one.read opccache oneread = one.value ‘讀數據 one.write (xie) ‘寫數據 若只讀取數據,可以使用datachange事件,當控制器中所要訪問的數據一旦發生改變時將會觸發該事件,并將該數據自動讀到txtvalue文本框。 private sub myopcgroup_datachange(byval transactionid as long, byval numitems as long, clienthandles() as long, itemvalues() as variant, qualities() as long, timestamps() as date) ‘自動刷新數據 dim i as long for i = 1 to numitems txtvalue(clienthandles(i)) = itemvalues(i) ‘獲取項的值 txttime(clienthandles(i)) = timestamps(i) ‘獲取項的時間戳 txtquantity(clienthandles(i))=getqualitystring(qualities(i)) ‘獲取項的品質 next i end sub (5) 斷開opc服務器 myopcserver.opcgroups.removeall ‘移除所有opc group,空出資源 set myopcgroup = nothing myopcserver.disconnect ‘斷開連接 4 結束語 利用本文介紹的方法,在實驗室實現了上位機和plc之間的通信,圖1是opc客戶端設置界面。此外我們還設計了城市供水監控系統,鑒于篇幅,監控界面不再一一列出。

標簽:

點贊

分享到:

上一篇:基于ARM的嵌入式TCP/IP網絡系...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.hysjfh.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 丰都县| 鄂尔多斯市| 东光县| 康平县| 扶余县| 峨边| 柞水县| 遵义市| 大连市| 罗山县| 台安县| 桂东县| 镇原县| 抚顺县| 嵊州市| 阜新市| 巴林左旗| 三原县| 牟定县| 庐江县| 沐川县| 周口市| 太仆寺旗| 迭部县| 开远市| 松原市| 云安县| 双城市| 平武县| 龙江县| 高邮市| 龙海市| 永新县| 长兴县| 晋中市| 德钦县| 乌拉特中旗| 仪征市| 望谟县| 嘉祥县| 六枝特区|