4

8 つのアナログ入力を備えた I/O リモート デバイス (EIP-2017) があり、I/O 値を読み取るための EtherNet/IP プロトコルを実装しています。codeplex ( https://eipnet.codeplex.com/ ) で .net c# で記述されたライブラリを見つけましたが、ドキュメントや使用方法の例がありません。

したがって、これはターゲット (I/O リモート デバイス) のドキュメントです。

Implicit Message を使用するユーザーは、EIP-2000 と通信することをお勧めします。暗黙的メッセージは、オブジェクト モデル内のアセンブリ オブジェクトの入力インスタンス 65 hex (101) および出力インスタンス 66 (102) にアクセスする場合にのみ適用されます。暗黙的メッセージを使用する前に、EtherNet/IP スキャナと EIP-2000 間の接続を構築するために、接続マネージャ オブジェクトの正しい「インスタンス ID」と「データ長」設定で Forward Open サービスを使用する必要があります。その後、Implicit Message を使用できます。以下に EIP-2000 モジュールの「インスタンス ID」を示しますが、「データ長」はモジュールとは異なります。

このデバイスには次のものがあります。
入力 (T->O) インスタンス ID: 0x65、長さ: 53 バイト 出力 (O->T) インスタンス ID: 0x66、長さ: 22 バイト 構成インスタンス ID: 0x64、長さ: 0 バイト

そして、次のコード行を書きました。

static void Main(string[] args)
        {
            byte[] sc = new byte[8] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
            byte[] path = new byte[] { 0x20, 0x04, 0x24, 0x64, 0x2C, 0x66, 0x2C, 0x65 };

            SessionInfo si = SessionManager.CreateAndRegister("192.168.2.227", senderContext: sc);
            si.SetConnectionParameters(101, 3000, 101, 803, 888);

            EIPNET.ConnectionManager.ForwardOpen(si, path);

            bool CIPok = EIPNET.EIP.SessionManager.VerifyCIP(si);

            EIPNET.EIP.EncapsPacket p = new EncapsPacket();
            p.Command = (ushort)EncapsCommand.ListIdentity;
            p.SessionHandle = si.SessionHandle;
            p.SenderContext = sc;
            p.Length = 0;
            //p.EncapsData = new byte[53];
            byte[] rec = si.SendData_WaitReply(p.Pack());
}

セッションを登録してから、Forward Openコマンドで接続を開きますが、...何もありません...

4

2 に答える 2

1

PLC/CompactLogix またはイーサネット/IP 経由で接続された任意の種類のデバイスに接続していますか? また、暗黙的メッセージング (UDP) は、重要なタスクにのみ使用する必要があります。デバイスのデータ テーブルからレジスタを読み取るだけの場合は、明示的メッセージング (TCP/IP) を使用する必要があります。

于 2016-05-24T16:53:33.607 に答える
1

ドイツの Hilscher 社の EtherNet/IP テスト ツールとライブラリもあり、 https ://kb.hilscher.com/pages/viewpage.action?pageId=97444743 で見つけることができます。

編集最近は複数のライブラリがあるようです。これも積極的に維持されているように見える別のものです:http://eeip-library.de/

基本的に、CIP クラス 0/1 の場合、カプセル化セッションを開き、ForwardOpen を送信すると、デバイスは入力データ UDP フレームの送信を開始し、デバイスへの出力データの送信を開始する必要があります。これらは、マルチキャスト トランスポートである可能性があります。Wireshark トレースは、何が起こっているかを知るのに役立ちました。

于 2020-06-11T15:26:33.293 に答える