OPC客户端的Java实现方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

技 术 创 新
1 引言
’( , OPC( OLE for Process Control) ,-./ 0 123456789:;<=, >?/0@2AB8 JKLMN。OPC ;PQR7ST CDEF;GH、 UV;WXLYZ0[\]^_‘abcGLde fg, hi%%‘Aj8/0@2klLmnop3 4;qrKLgstK。u OPC v-] Microsoft w x; OLE/COM v-?yz, <={|}~. i’( ;}<=34, Windows 34。 wZ34、34%o= J2EE 3。?8Q m 、 WXm ;}, |8 . J2EE 3¡< = OPC ,-;¢£, ¤]C¥¦;y§ OPC L Ja- va g¨,-;©ª«¬0­@34?® , ¯P8= Java/JNI ,-q° OPC ±²³<=0[;´µ/0。
0@AB
文章编号 :1008- 0570(2006)04- 1- 0060- 03
!"#$%& 《 ()*+,- 》( /0123 )2006 45 22 65 4-1 %
OPC!"#$ J a va %&’(
Th e Re a liza tio n o f Clie n t Ap p lica tio n Ba s e d o n OPC S p e cifica tio n u s in g J a va
face) "#$ Java %&’(, *"+,-./012* Java 34#$5*6789:。 EF JNI <=, JNI <=> Java ?@8ABCD。 Java HIJKLM* C/C++NOP34Q$8RS 。 LT9:8UV, KLWXY* JNI: 1) 5*67[\]^_‘ab, cJ5*67[ \de Java fgh/ij8klm?@8AB。 pt8Q634uv 2) 5*67no*pqr、 wxUyz{|\}8RS。 JNI > Java 34~OP34y8D , Java EF]^ JNI 8 "。 JNI 8D , KLEF C/C++cO34vw. 。JNI _ 3 。
(!"#$%&)焦 青 松
吴应良
J iao ,Qings ong Wu ,Yingliang
摘要 : 本 文 介 绍 了 Java 和 OPC 相 结 合 的 技 术 , 并 以 连 接 到 OPC 报 警 与 事 件 服 务 器 为 例 , 介 绍 了 用 Java / JNI 技 术 编 写 OPC 客 户端应用程序的详细过程。 关键词 : 过程控制 , OPC 规范 , J ava/J NI , 客户应用程序 中图分类号 : TP273 文献标识码 : A
Ûçè ;éd¿H0[, Sê¾ë;ÊâWX ìK, íSêîï¹Êâ éd , ðßñò OPC À ÁóÙ]ôbéd, hiõ34ö÷øù;úä 。 };deúä34óûüZ@234iåæP ýä? OPC ;±²0[。
2 OPC 的 基 本 结 构 与 接 口
OPC ¶C·]¸¹wx; OLE/COM ,-?yz º»;¼UV½¾;¿HÀÁ, >?Z@2L$ ZÂÃAB8C¥qr; 、 ^_; 、 ÄÅÄ=; ÊËwx $ EF , ¶ÆÇÈÂÉ;ZL¹ 、 ¼¸¹wxÌt;ÍÎ。OPC o=±²- ÏÐÑÒ«, Óy|ÍÔÕ 1 Ö×。 ØÕ 1 ÙÚ, OPC EFÛÜÏгL±²³ÝÞ ©。OPC EFßàÖá;ÊâWXYZ0[ãkäå æ; OPC ÏÐÑ。}<=t? OPC ±²³, Ù]S
4 基 于 J AVA 和 OPC 相 结 合 技 术 的
远程监控系统结构模型
Tª«D¬m JAVA ~ OPC ­®<=8¯ °±²6³´_‘, _‘8µ¶ 4 。_ ‘8·0>: vwx¹ºF68»¼½¾~¿À, Á ²6ÂÃÄvwx½¾F68³Å~´Æ。 (1) _‘½* OPC <= , ¨Ä8HIm OPC Ç È。 É,aÊ8ËÌ»¼ÍÉ, ÎÏÐ OPC ¨, ÑÒ OPC ¨1ÓÔÂÃ8»¼ÏÕ。z m OPC ÇÈHI8ÂÃÄ5*67ÖKLvwx OPC ¨8]^ , ×ØLÙY*Ú* 8’ ±, ÛÛÜØ_‘8HÝB~KÞßB。
Abstr act:The paper introduces the interconnect technology between Java and OPC. On the basis of OPC Alarms and Events Interface Specification , the author gives out the detailed procedures to realize OPC client application using Java/JNI. Keywor ds:Pr ocess contr ol, OPC specification , J ava/J NI , Client application
邮局订阅号 : 82-946 360 元 / 年 -
技 术 创 新
OPC <=m8 OLE/COM <=, m JDK z ¡¢]^ OLE/COM £¤8 fg , L Java 3467[EF JNI vwx.£¤ EF C/C++34, ¥¦KLQ$§&’(]^ 8]^。 OPC ¨, Y* OPC ¨8。Java 3467 KLEF JNI ©M*.§&’(。
《P LC &’() 200 *》
61 -
0@AB
!"#$%& 《 ()*+,- 》( /0123 )2006 45 22 65 4-1 %
技 术 创 新
!"# Java( tm) &’()*+,-., 0123 45678+9: JNI ;<=。?@ JNI ;<=, Java ( tm) 012A33BCD(,"6EF。 javah - jni example.Opc 9:G JNI ;<=G<=HI : example _Opc.h, <=GKLMNO4: /* DO NOT EDIT THIS FILE - it is machine gen- erated */ JNIEXPORT jboolean JNICALL Java_exam- ple_Opc_connect_1p(JNIEnv *, jobject, jobject); JNIEXPORT jboolean JNICALL Java_exam- ple_Opc_init_1p(JNIEnv *, jobject, jstring, jstring); 5.3 ," JNI D( PQ2RST., 012U," OPC VWXY= Z[\]^GBCD(@。_‘aUb:: cda, e fg COM/DCOM h+ij; cla, mno OPC VW pY=qrs ; c‘a , ,"\]tuqrspvA EF。 ( 1) COM/DCOM efgST JNIEXPORT jboolean JNICALL Java_exam- ple_Opc_init_1p(JNIEnv *env,jobject,jstring host, jstring server){ result = CoInitialize(NULL); //efg COM w result = CoGetMalloc (MEMCTX_TASK, &pIMal- loc); if (FAILED(result)){ CoUninitialize(); //xy COM w。 return false;} - - - Snip - - - ( 2) mno OPC VWpY=qrs JNIEXPORT jboolean JNICALL Java_exam- ple_Opc_connect_1p (JNIEnv *env,jobject,jobject call- back){ // zo CLASID CLSIDFromProgID(server_name,&clsid); //{| COM }~ CoGetClassObject (clsid,CLSCTX_LOCAL_SERV- ER,NULL,IID_IclassFactory,(void **)&factory); factory - >CreateInstance (NULL,IID_Iunknown, (void **)&objserver); // OPC Y=qrsn objserver - >QueryInterface (IID_IOPCEventServer, (void**)&ae_server); // {| OPC Y=}~ ae_server - >CreateEventSubscription (true,0,0,han- dle,IID_IOPCEventSubscriptionMgt,&objsubscription, &revisedBufferTime,&revisedMaxSize); //zo IconnectionPointContainer n
3 J ava /J NI 技 术 介 绍
5 Java 2& ¦á 67 ;Ù 89 KL¼½ ¾K, u¶á:åR= Java 2&S1;"<= <= 0[; > ß。0[ ?> ßR= JNI( Java Native Inter-
《789:;<=> 200 ?》
Baidu Nhomakorabea
60 - 360 元 / 年 邮局订阅号 : 82-946
,- ./01233456
!"#$
(2) ¯°±5*8vw’, à_‘áY*Ø RMI ~ JNI <=, >1â8 JAVA vw。JAVA ÂÃÄ x¨Ä8’(8M*, ã\EF RMI "vw。 ¨Ä, ã\EFY* JNI <=x§&’(äåM “ *, vwæ JAVA ç OPC 8 。 > JAVA- OPC” D£ C++34vw8§&’(8¾á。 (3) ²6ÂÃÄ>* JAVA HI85*67。JA- VA 34>D¬êë8ìxí8Q634, KL/ îïð&ñåmò¬?@ó, ôzõö8K÷øB ~Ô?@ùúB。 ûü , à_‘ýþØ OPC <=x Microsoft 8 Windows ?@kl8ÿ! , Y²6ÂÃÄ KL"# windows ?@。$>§_‘½* Java <= äå OPC 8¯°5*8ã\Ëû。
5 OPC 客 户 端 的 软 件 编 程
ó%_‘h , OPC ¨D & ’ ¤ ( , § ) /*+,, TL - ç OPC ./ Ô 0 ¤ ¨12, ª«* JAVA/JNI <=Q$ OPC ÂÃÄ6 7834F6。 5.1 Q$ JAVA RS * JNI Q$ OPC ÂÃÄ5*67\ 5 8 6 D¤ 09> JAVA 67h§&’(, L7*.’ (89Ô OPC ./Ô0¤¨8-。 public class Opc implements Runnable{ public native boolean connect_p(Opc ae_callback); public native boolean init_p (String host_name, String server_name); public static void main(String args[]){ Opc opc_connection = new Opc(); (opc_connection.getThread()).start(); } // main ;<+=>Ø?¯@A - - - Snip- - //::“ Snip” BC ¥¦ :D çó % 67h8ú EF native, GH Java( tm) QK¨L’(8vwMN?§& g。 O ¥¦" PPQR M* ST1 native 8’( , OvM*§&’(ÔM*D&8 Java( tm) ’(zW X/Y, TZ67h86 3 å。 private boolean init(){ if (inited) return true; return (inited = init_p(host_name, server_name)); } // init :D, M* ¡§&’(C [\]C \î ^_ ‘ z§&’(8g, T6786 2 åØD L î^N?gäa Java VM 8bc’(。 try{ System.loadLibrary("OPC"); }catch(Exception e){} 5.2 ¹Ó JNI d)¤
焦青松 : 讲师 基 金 项 目 : 华 南 理 工 大 学 自 然 科 学 基 金 项 目 ( G04- E5041210) , 国 家 自 然 科 学 基 金 项 目 ( 70272047 ) , “ 985 工程” 华南理工大学学科建设苗子项目 ( 306- D76080 )

OPC ØÝDGH·ä: OPC º2GHL OPC Z GH, Õ 2 Ö×。C¥ OPC ±²<=0[é/ì º;º2GHÿZGH¼ OPC ÏÐÑéd , OPC ÏÐÑê! Qº2GH;"Þ#$ , i % ZG Hi&, Ù]á’(‘QÓ)$。º2GH*+j, é/,GH, ±²$-°. OPC ÏÐÑ;/0K1, o= C++2&;±²C3o=º2GHM4。
相关文档
最新文档