2016-10-31 8 views
1

s7.net plus 라이브러리를 사용하여 S7-1200 PLC에서 값을 읽으려고합니다. 데이터 블록에서 데이터를 읽으려고하면 "WrongVarFormat" 메시지가 반환됩니다. 나는 plc의 설정을, 또한s7.net plus 라이브러리가있는 S7-1200 PLC에서 읽기

using (var plc = new Plc(CpuType.S71200, "192.168.1.17", 0, 0)) 
    { 
    //IP is responding 
    if (plc.IsAvailable) 
    { 
     ErrorCode connectionResult = plc.Open(); 
     //Connection successful 
     if (connectionResult.Equals(ErrorCode.NoError)) 
     { 
      //Get data 
      object b2 = plc.Read("DB1.DBD38");//This part always return "WrongVarFormat" 
     } 
    } 

와 나는이 같은 데이터 블록과 값을 선언합니다 : 내 코드는 거의 전체 방법 public object Read(string variable)는 시도/캐치에 의해 포장되고 항상있는 ErrorCode를 반환 S7-1200 DB1

답변

0

.WrongVarFormat, 예외가 발생하면 예외가 발생합니다.

public object Read(string variable) 
    { 
     ... 
     try 
     { 
      ... 
     } 
     catch 
     { 
      lastErrorCode = ErrorCode.WrongVarFormat; 
      lastErrorString = "Die Variable '" + variable + "' konnte nicht entschlüsselt werden!"; 
      return lastErrorCode; 
     } 
    } 

상관없이,은 try 블록 내부에 던져 어떤 예외에, 코드는 항상 ErrorCode.WrongVarFormat를 반환하고 충돌에 대한 정보가 손실됩니다. WrongVarFormat 오류 조건에 대한 자신의 예외 클래스를 정의해야

catch (Exception ex) 
{ 
    Console.WriteLine("Got exception {0}\n", ex.ToString()); 
    ... 

코드 : 디버깅의 도움으로

는 캐치로 변경 될 수있다. catch 문은이 예외 만 catch하고 주소 구문 분석기의 throw 문은 WrongVarFormat-Ecxeption을 throw하도록 변경해야합니다.

라이브러리의 코드를 변경하려는 경우가 아니면 디버거 만 사용하여 문제의 원인을 찾을 수 있습니다.

+0

나는 그것을했고, 주요 오류가 "바이트 수신 잘못된 번호가", 발견 ... – Dnate