Brise
Utgard 설치(java 기반의 OPC DA 클라이언트 API) 본문
OPC DA는 본래 Microsoft사의 COM/DCOM기술에 기반하여 만들어졌기 때문에. 기본적으로 운영체제에 대한 의존성을 가지고 있다. 하지만, 자바를 기반으로 하여 COM/DCOM 통신을 구현하는 프로젝트인 j-interop가 개발됨에 따라, 운영체제게 독립적으로 COM/DCOM 통신을 할 수 있게 되었다. (물론 자바를 실행할 수 있어야 한다.)
Utgard에 대한 소개는 다음 페이지에서 살펴 볼 수 있으며( http://openscada.org/projects/utgard/) 이러한 Utgard를 기반으로한 implementation으로는 OpenSCADA와 Plantstreamer가 있다.
Utgard의 의존 라이브러리는 다음과 같다.
http://download.openscada.org/utgard/R/1.0.0/org.openscada.utgard.sdk-R.1.0.0.zip
http://download.openscada.org/jinterop/R/1.0.0/org.openscada.jinterop.sdk-R.1.0.0.zip
http://download.openscada.org/external/R/1.0.0/org.openscada.external.sdk-R.1.0.0.zip
위의 라이브러리를 받은 뒤, 이클립스에서 새로운 프로젝트를 생성하고, 위에서 받은 라이브러리들을 build path에 추가하면 Utgard의 설치는 끝난다.
그다음 api를 사용하여 클라이언트 통신하는 예제를 만들면 Utgard의 설치 및 테스트가 완료된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | package org.openscada.opc.tutorial; import java.util.concurrent.Executors; import org.jinterop.dcom.common.JIException; import org.openscada.opc.lib.common.ConnectionInformation; import org.openscada.opc.lib.da.AccessBase; import org.openscada.opc.lib.da.DataCallback; import org.openscada.opc.lib.da.Item; import org.openscada.opc.lib.da.ItemState; import org.openscada.opc.lib.da.Server; import org.openscada.opc.lib.da.SyncAccess;
public class UtgardTutorial1 {
public static void main(String[] args) throws Exception { // create connection information final ConnectionInformation ci = new ConnectionInformation(); ci.setHost("your host"); ci.setDomain(""); ci.setUser("your user"); ci.setPassword("your password"); ci.setProgId("SWToolbox.TOPServer.V5"); // ci.setClsid("680DFBF7-C92D-484D-84BE-06DC3DECCD68"); // if ProgId is not working, try it using the Clsid instead final String itemId = "_System._Time_Second"; // create a new server final Server server = new Server(ci, Executors.newSingleThreadScheduledExecutor());
try { // connect to server server.connect(); // add sync access, poll every 500 ms final AccessBase access = new SyncAccess(server, 500); access.addItem(itemId, new DataCallback() { @Override public void changed(Item item, ItemState state) { System.out.println(state); } }); // start reading access.bind(); // wait a little bit Thread.sleep(10 * 1000); // stop reading access.unbind(); } catch (final JIException e) { System.out.println(String.format("%08X: %s", e.getErrorCode(), server.getErrorMessage(e.getErrorCode()))); } } } |
추가 : Utgard api를 소스코드 레벨에서 구한다면 더욱 쉽게 응용을 만들 수 있다. (https://github.com/ctron/org.openscada.utgard) 이 소스코드에는 기본 예제들도 포함되어 있기 때문에 어떻게 api를 사용해야하는지 쉽게 알 수 있다.
Ref.
https://openscada.atlassian.net/wiki/display/OP/HowToStartWithUtgard
'프로그램' 카테고리의 다른 글
자바 cpu 사용률 측정하기 (0) | 2016.08.22 |
---|---|
[Java] 기본형(primitive type) 타입 배열과 래퍼 클래스(wrapper class)사이의 변환 (0) | 2016.05.24 |
Git 개념 소개 및 개략적인 사용방법 (0) | 2016.01.10 |
JDK를 이용할 때에 로그(정보) 메세지 출력받지 않기. (0) | 2015.12.29 |
[OPC DA] how to not display on console slf4j WARN message (0) | 2015.12.29 |
OPC DA DCOM Configuration (0) | 2015.12.28 |
옛날 8비트 시절의 그래픽 구현 테크닉 (0) | 2015.12.20 |