2016-10-31 14 views
1

s7.netプラスライブラリを使用してS7-1200 PLCから値を読み取ろうとしています。データブロックからデータを読み込もうとすると、"WrongVarFormat"というメッセージが返されます。私は、PLCの設定を行い、また、S7-1200 PLCからs7.net plusライブラリを読む

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)はのtry/catchでラップされ、それはいつもの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; 
     } 
    } 

どんなに、トライ・ブロック内でスローされているものexeception、コードは常にErrorCode.WrongVarFormatを返し、クラッシュに関する情報が失われます。 WrongVarFormatエラー条件のために、独自の例外クラスを定義する必要があり

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

コード:デバッグする際の助けとして

は、キャッチに変更することができます。 catch文はこの例外のみを捕捉し、アドレスパーサーのthrow文はWrongVarFormat-Ecxeptionを投げるように変更する必要があります。

ライブラリのコードを変更しない限り、デバッガを使用して問題の原因を見つけることができます。

+0

私はそれをやったし、主なエラーが「受信バイト間違った番号」である、ことを発見... – Dnate

0

また、その場合には、PLCのコンフィグレーションでパーミュテーションを確認してください。セットアップが正常でない場合、PLCは要求を拒否します。

https://www.youtube.com/watch?v=tYTjNG8YL-c

関連する問題