C#はS7.NETおよびSiemensS7-200SmartPLC通信テストに合格

S7.Net.dllファイルはすべてのSiemensPLCの通信をサポートしており、数週間のテストの後、その使用方法を理解し、複数のシステムに適用されているライブラリ関数を作成しました。このライブラリのPLCタイプにはS7-200Smartタイプはありません。S7.netを介してS7-200SmartPLCと通信する方法を知らない人が多いです。実際、SmartPLCと通信する場合は、PLCタイプを使用してS7を選択してください。 -1200、それを使用してVエリア変数を読み取ります。DB1は、他のすべてがS7-1200の読み取りと同じであることを示します。具体的なテストコードは次のとおりです。使用方法を知りたい場合は、上記のDOMEをダウンロードできます。具体的な使用方法、管理上の注意、管理方法を知りたい場合は、QQ:584472557を追加してご相談ください。簡単なテスト手順。実際のプロジェクト手順があります。テンプレートプログラムはXianyuで入手できます。ご相談ください。

システムを使用する;

System.Collections.Genericを使用する;

System.Drawingを使用します。

System.Windows.Formsを使用する;

//; S7.Netを使用して接続を確立するためのオープンソースコードライブラリシーメンスPLC オープンソースコミュニティで見つけることができ、かつ可能に検索することがVSネットワーク

 

名前空間WindowsFormsApplication1

{{

    パブリック部分クラスForm1:フォーム

 

    {{

        bool status = false;

        Plc plc1 = new Plc(CpuType.S71200、 "192.168.6.1"、0、1);    

 

        パブリックForm1()

        {{

            InitializeComponent();                                    

        }

        // PLCに接続します

        private void btnConnect_Click(object sender、EventArgs e)

        {{

            試してみてください

            {{

                plc1.OpenAsync();                  

                ステータス= true;                      

                toolStripStatusLabel1.Text = "接続" + plc1.IP;

            }

            キャッチ(例外例)

            {{

                MessageBox.Show(ex.Message);      

            }

        }

 

        private void button1_Click(object sender、EventArgs e)

        {{

            textBox1.Text = "";                            

            foreach(var readdata in ReadMultipleBytes(13、1、0))// VB0から始まる13バイトを読み取ります

            {{

                    textBox1.Text = textBox1.Text + readdata + "";    

            };   

        }

     

        private void timer1_Tick(object sender、EventArgs e)

        {{

            if(ステータス)

            {{

                if(plc1.IsConnected)

                {{

                    toolStripStatusLabel1.ForeColor = Color.Black;                    

                    toolStripStatusLabel1.Text = plc1.IP + "正常に接続されました";

                }

                そうしないと

                {{

                    toolStripStatusLabel1.ForeColor = Color.Red;                     

                    toolStripStatusLabel1.Text = plc1.IP + "接続が切断されました";

                }

            }

        }

      

        プライベートリスト<byte> ReadMultipleBytes(int numBytes、int db、int startByteAdr)

        {{

            List <byte> resultBytes = new List <byte>(); 

            int index = startByteAdr;

            while(numBytes> 0)                    

            {{

                var maxToRead =(int)Math.Min(numBytes、200);    

                byte [] bytes = plc1.ReadBytes(DataType.DataBlock、db、index、(int)maxToRead);  

                if(bytes == null)                    

                    新しいリストを返す<byte>();

                resultBytes.AddRange(bytes);          

                numBytes- = maxToRead;                 

                インデックス+ = maxToRead;

            }

            resultBytesを返します。                  

        }

   

        private void timer2_Tick(object sender、EventArgs e)

        {{

             試してみてください

            {{

                byte [] bytes = plc1.ReadBytes(DataType.DataBlock、1、0、1);

                if(bytes == null)                                      

                {{

                    ステータス= false;

                    plc1.OpenAsync();                                 

                    toolStripStatusLabel1.Text = "接続" + plc1.IP;                     

                }

                そうしないと

                    ステータス= true;                                       

            }

            キャッチ(例外例)

            {{

               MessageBox.Show(ex.Message);                             

            }

        }

 

      

        private void button3_Click(object sender、EventArgs e)

        {{

            plc1.Close();                                           

        }

    }

}

 

 

 

 

おすすめ

転載: blog.csdn.net/u014780302/article/details/100090638