2014-06-13 5 views
0

나는 통해 OPC Access에 대한 C# 응용 프로그램 개발하고 있어요 "OPC DA 자동화 래퍼 2.02"Iconics 시뮬레이터 OPC 봉사와 C#

나는 "Iconics 시뮬레이터 OPC 서버 3.12"를 사용하고 내 WIN8 시스템에서 테스트를 위해

서버에 다른 이름으로 구성된 4 개의 부울 OPCItem이 있습니다.

연결하면 OPC 항목을 잘 읽는 것이 좋습니다.

하지만 : 모니터 중 하나에 쓰면 모니터 (OPC DataSpy 9.01) 및 기타 도구에서 모든 OPC 항목이 변경되었음을 보여줍니다. 변경 이벤트가 모든 OPCItem에 대해 표시됩니다.

이 동작을 확인하려면 VisualBasic 6에서 같은 응용 프로그램을 작성했습니다!

무엇이 잘못 되었습니까? 내 코드 또는 시뮬레이터 서버가 잘못되었습니다. 독립적으로 불행하게도 이벤트가 대신 태그 기반의 그룹으로 해고 변경할 수 있기 때문에, 자신의 그룹이 있어야 이벤트가 통지 될 필요가있는 태그를 추가 할 때마다

using System; 
using System.Windows.Forms; 
using OPCAutomation; 

namespace opc { 
public partial class Form1 : Form { 

    OPCGroups opcGroups; 
    OPCGroup opcGroup; 

    bool aliveToggle; 
    Timer aliveTimer; 

    public Form1() { 
     InitializeComponent(); 

     OPCServer opcServer = new OPCServer(); 
     opcServer.Connect("Iconics.SimulatorOPCDA.2"); 
     opcGroup = opcServer.OPCGroups.Add("Gruppe1"); 

     opcGroup.OPCItems.AddItem("BOOL_1", 1); 
     opcGroup.OPCItems.AddItem("BOOL_2", 2); 
     opcGroup.OPCItems.AddItem("BOOL_3", 3); 
     opcGroup.OPCItems.AddItem("BOOL_4", 4); 

     opcGroup.UpdateRate  = 10; 
     opcGroup.IsActive  = true; 
     opcGroup.IsSubscribed = true; 

     aliveTimer = new Timer(); 
     aliveTimer.Tick += new EventHandler(sendAlive); 
     aliveTimer.Interval=1000; 
     aliveTimer.Start(); 

     } 

    private void sendAlive(object sender, EventArgs e) { 
     aliveToggle=!aliveToggle; 
     opcGroup.OPCItems.Item(2).Write(aliveToggle); 
     } 
    } 
} 
+0

다른 서버 (예 : [Prosys OPC Simulation Server] (http://www.prosysopc.com/products/opc-ua-simulation-server/))와 비교해보십시오. 나는 둘 다 실패한다. 문제는 당신의 코드에있다. 나는 당신의 코드에서 어떤 문제라도 발견 할 수 없다. –

+0

참여해 주셔서 감사합니다. WinTech에서 WTOPCSvr로 작업 해 보았습니다 - 아니요 Prob. 그래서 "Iconics Simulator"로 잘못 구성된 것이 틀림 없다고 생각합니다. – Oblomow

답변

0

쉽게 고쳐이다.