艾默生Ovation DCS OPC服务分析
? ? ?艾默生的OPC DA服務(wù)器,使用的ProdId為“Ovation.OPCDAServer.1”,GUID值是{A3ABA03B-6CF7-4b13-A264-FD5AA251CC76}。
? ? ? OPC DA服務(wù)器版本方面,有支持OPC3.0的,也有支持OPC2.0的,影響的主要的OPC3.0支持直接讀取變量值。
? ? ? 在OPC的瀏覽層次方面,采用域(節(jié)點(diǎn)?工作站?)、單元、站、變量、變量屬性5層結(jié)果,第5層為變量的屬性值,不同類型的屬性值有所差別,幾十到上百不等。
? ? ? 比如我們定義了一個(gè)Pascal001的變量,最終包含的全部OPC點(diǎn)和對(duì)應(yīng)的點(diǎn)類型如下:
Pascal001.DROP1/51.UNIT1@NET1.1T,Integer Pascal001.DROP1/51.UNIT1@NET1.1V,Number Pascal001.DROP1/51.UNIT1@NET1.1W,Integer Pascal001.DROP1/51.UNIT1@NET1.2V,Number Pascal001.DROP1/51.UNIT1@NET1.2W,Integer Pascal001.DROP1/51.UNIT1@NET1.3D,Integer Pascal001.DROP1/51.UNIT1@NET1.3L,Integer Pascal001.DROP1/51.UNIT1@NET1.3M,Integer Pascal001.DROP1/51.UNIT1@NET1.3S,Integer Pascal001.DROP1/51.UNIT1@NET1.3V,Number Pascal001.DROP1/51.UNIT1@NET1.3W,Integer Pascal001.DROP1/51.UNIT1@NET1.3Y,Number Pascal001.DROP1/51.UNIT1@NET1.3Z,Number Pascal001.DROP1/51.UNIT1@NET1.4V,Number Pascal001.DROP1/51.UNIT1@NET1.4Y,Number Pascal001.DROP1/51.UNIT1@NET1.4Z,Number Pascal001.DROP1/51.UNIT1@NET1.5V,Number Pascal001.DROP1/51.UNIT1@NET1.6V,Number Pascal001.DROP1/51.UNIT1@NET1.7V,Number Pascal001.DROP1/51.UNIT1@NET1.8V,Number Pascal001.DROP1/51.UNIT1@NET1.AD,String Pascal001.DROP1/51.UNIT1@NET1.AP,,Integer Pascal001.DROP1/51.UNIT1@NET1.AS,Integer Pascal001.DROP1/51.UNIT1@NET1.AT,String Pascal001.DROP1/51.UNIT1@NET1.AV,Number Pascal001.DROP1/51.UNIT1@NET1.AW,Integer Pascal001.DROP1/51.UNIT1@NET1.AY,,Integer Pascal001.DROP1/51.UNIT1@NET1.AZ,Integer Pascal001.DROP1/51.UNIT1@NET1.BB,Integer Pascal001.DROP1/51.UNIT1@NET1.BH,Number Pascal001.DROP1/51.UNIT1@NET1.BL,Number Pascal001.DROP1/51.UNIT1@NET1.BV,Number Pascal001.DROP1/51.UNIT1@NET1.BW,Number Pascal001.DROP1/51.UNIT1@NET1.CE,Integer Pascal001.DROP1/51.UNIT1@NET1.CM,,Integer Pascal001.DROP1/51.UNIT1@NET1.CV,,Integer Pascal001.DROP1/51.UNIT1@NET1.CX,Integer Pascal001.DROP1/51.UNIT1@NET1.CY,Integer Pascal001.DROP1/51.UNIT1@NET1.DB,Number Pascal001.DROP1/51.UNIT1@NET1.DG,Integer Pascal001.DROP1/51.UNIT1@NET1.DJ,Number Pascal001.DROP1/51.UNIT1@NET1.DO,Integer Pascal001.DROP1/51.UNIT1@NET1.ED,String Pascal001.DROP1/51.UNIT1@NET1.EH,Number Pascal001.DROP1/51.UNIT1@NET1.EL,Number Pascal001.DROP1/51.UNIT1@NET1.EU,String Pascal001.DROP1/51.UNIT1@NET1.EV,Number Pascal001.DROP1/51.UNIT1@NET1.FD,,Integer Pascal001.DROP1/51.UNIT1@NET1.FL,Integer Pascal001.DROP1/51.UNIT1@NET1.FM,,Integer Pascal001.DROP1/51.UNIT1@NET1.FV,Number Pascal001.DROP1/51.UNIT1@NET1.FY,Integer Pascal001.DROP1/51.UNIT1@NET1.GS,Integer Pascal001.DROP1/51.UNIT1@NET1.HD,Integer Pascal001.DROP1/51.UNIT1@NET1.HL,Number Pascal001.DROP1/51.UNIT1@NET1.HR,Number Pascal001.DROP1/51.UNIT1@NET1.HS,Number Pascal001.DROP1/51.UNIT1@NET1.ID,Integer Pascal001.DROP1/51.UNIT1@NET1.IP,Integer Pascal001.DROP1/51.UNIT1@NET1.IQ,Integer Pascal001.DROP1/51.UNIT1@NET1.IT,Integer Pascal001.DROP1/51.UNIT1@NET1.IV,Number Pascal001.DROP1/51.UNIT1@NET1.KC,,Integer Pascal001.DROP1/51.UNIT1@NET1.KR,String Pascal001.DROP1/51.UNIT1@NET1.LB,Integer Pascal001.DROP1/51.UNIT1@NET1.LJ,String Pascal001.DROP1/51.UNIT1@NET1.LL,Number Pascal001.DROP1/51.UNIT1@NET1.LM,Integer Pascal001.DROP1/51.UNIT1@NET1.LR,Number Pascal001.DROP1/51.UNIT1@NET1.LS,Number Pascal001.DROP1/51.UNIT1@NET1.MP,Integer Pascal001.DROP1/51.UNIT1@NET1.MQ,,Integer Pascal001.DROP1/51.UNIT1@NET1.MR,Integer Pascal001.DROP1/51.UNIT1@NET1.OR,,Integer Pascal001.DROP1/51.UNIT1@NET1.P6,,Integer Pascal001.DROP1/51.UNIT1@NET1.P7,,Integer Pascal001.DROP1/51.UNIT1@NET1.P8,,Integer Pascal001.DROP1/51.UNIT1@NET1.P9,,Integer Pascal001.DROP1/51.UNIT1@NET1.PA,String Pascal001.DROP1/51.UNIT1@NET1.PF,String Pascal001.DROP1/51.UNIT1@NET1.PN,String Pascal001.DROP1/51.UNIT1@NET1.PZ,,Integer Pascal001.DROP1/51.UNIT1@NET1.RP,Integer Pascal001.DROP1/51.UNIT1@NET1.RT,,Integer Pascal001.DROP1/51.UNIT1@NET1.RV,Number Pascal001.DROP1/51.UNIT1@NET1.RW,Number Pascal001.DROP1/51.UNIT1@NET1.SD,Integer Pascal001.DROP1/51.UNIT1@NET1.SF,String Pascal001.DROP1/51.UNIT1@NET1.SJ,Integer Pascal001.DROP1/51.UNIT1@NET1.SK,Integer Pascal001.DROP1/51.UNIT1@NET1.SN,Number Pascal001.DROP1/51.UNIT1@NET1.SP,Integer Pascal001.DROP1/51.UNIT1@NET1.SR,,Integer Pascal001.DROP1/51.UNIT1@NET1.TB,Integer Pascal001.DROP1/51.UNIT1@NET1.TT,String Pascal001.DROP1/51.UNIT1@NET1.TV,Number Pascal001.DROP1/51.UNIT1@NET1.TW,Number Pascal001.DROP1/51.UNIT1@NET1.U4,Integer Pascal001.DROP1/51.UNIT1@NET1.U5,Integer Pascal001.DROP1/51.UNIT1@NET1.U6,Integer Pascal001.DROP1/51.UNIT1@NET1.U7,Integer Pascal001.DROP1/51.UNIT1@NET1.UH,Number Pascal001.DROP1/51.UNIT1@NET1.UL,Number Pascal001.DROP1/51.UNIT1@NET1.VH,Number Pascal001.DROP1/51.UNIT1@NET1.VL,Number Pascal001.DROP1/51.UNIT1@NET1.VN,Integer Pascal001.DROP1/51.UNIT1@NET1.YB,Number Pascal001.DROP1/51.UNIT1@NET1.YS,Number Pascal001.DROP1/51.UNIT1@NET1.ZH,Number Pascal001.DROP1/51.UNIT1@NET1.ZI,Number Pascal001.DROP1/51.UNIT1@NET1.ZL,Number Pascal001.DROP1/51.UNIT1@NET1.ZM,Number Pascal001.DROP1/51.UNIT1@NET1.ZY,Integer? 點(diǎn)的層級(jí)和瀏覽的節(jié)點(diǎn)層級(jí)剛好相反。?
? 重點(diǎn)需要關(guān)注點(diǎn)的屬性有.ED、.1W、.AV,ED是點(diǎn)的描述,1W的整數(shù)值,AV的模擬量的值。艾默生的數(shù)據(jù)點(diǎn)1W還有一個(gè)特殊寫法,后面可以加":0",表示取整數(shù)的第0位的值,這時(shí)變量實(shí)際上已經(jīng)是開關(guān)量了。
? ?OPC對(duì)應(yīng)點(diǎn)的名稱沒有過多的約束,艾默生的點(diǎn)名稱充分體現(xiàn)了這一點(diǎn),點(diǎn)中可以包括很多特殊符號(hào),如:“-”、“/”、“#”、">"、"<"、"("、")"等,路徑中還有"@"符號(hào)。
? ?點(diǎn)的OPC Item Properties方面,有常規(guī)的數(shù)據(jù)類型、數(shù)據(jù)值、數(shù)據(jù)質(zhì)量和時(shí)戳等,也有OPC擴(kuò)展的數(shù)據(jù)描述(Item Description,對(duì)應(yīng)ID 101)等。
?
? ? ?在采集數(shù)據(jù)時(shí),可以考慮從DCS直接導(dǎo)出數(shù)據(jù)點(diǎn)的定義文件,這個(gè)方法比較簡單和直接。
? ? ?如果采用枚舉方法,只能采用BRANCH方式,不支持FLAT方式。需要考慮他的特殊的結(jié)構(gòu)帶來的龐大的點(diǎn)名稱。在艾默生中定義10萬個(gè)點(diǎn),瀏覽出來的數(shù)據(jù)點(diǎn)數(shù)量可能達(dá)到千萬級(jí)別。
總結(jié)
以上是生活随笔為你收集整理的艾默生Ovation DCS OPC服务分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nod32/ESET下載及更新
- 下一篇: 硬盘坏道及数据恢复