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();
}
}
}