找传奇、传世资源到传世资源站!

C#和西门子PLC通讯例子

8.5玩家评分(1人评分)
下载后可评
介绍 评论 失效链接反馈

C#、VB例子都有C#和西门子PLC通讯例子 C#语言基础-第1张
C#和西门子PLC通讯例子 C#语言基础-第2张C#和西门子PLC通讯例子 C#语言基础-第3张
C#和西门子PLC通讯例子 C#语言基础-第4张using System.Collections.Generic;using System;using System.Linq;using System.Drawing;using System.Diagnostics;using System.Data;using System.Xml.Linq;using Microsoft.VisualBasic;using System.Collections;using System.Windows.Forms;using System.Net;using System.Runtime.InteropServices;namespace TCP_CLIENT_VB2010{public partial class Form1{public Form1(){InitializeComponent();if (defaultInstance == null)defaultInstance = this;}#region Default Instanceprivate static Form1 defaultInstance;/// <summary>/// Added by the VB.Net to C# Converter to support default instance behavour in C#/// </summary>public static Form1 Default{get{if (defaultInstance == null){defaultInstance = new Form1();defaultInstance.FormClosed = new FormClosedEventHandler(defaultInstance_FormClosed);}return defaultInstance;}set{defaultInstance = value;}}static void defaultInstance_FormClosed(object sender, FormClosedEventArgs e){defaultInstance = null;}#endregionWinTcpS7_CP2.PlcClient PLC = new WinTcpS7_CP2.PlcClient();bool EntLink;long ScanCount;short ScanRet;bool ScanRun; IntPtr PlcHand;[DllImport("winmm.dll", ExactSpelling=true, CharSet=CharSet.Ansi, SetLastError=true)]public static extern UInt32 timeGetTime();public void Form1_Load(System.Object sender, System.EventArgs e){short i = 0;this.CenterToScreen();cmbReadMry.Items.Clear();cmbReadMry.Items.Add("DI");cmbReadMry.Items.Add("DQ");cmbReadMry.Items.Add("MR");cmbReadMry.Items.Add("DR");cmbWriteMry.Items.Clear();cmbWriteMry.Items.Add("DI");cmbWriteMry.Items.Add("DQ");cmbWriteMry.Items.Add("MR");cmbWriteMry.Items.Add("DR");cmbBitMry.Items.Clear();cmbBitMry.Items.Add("DI");cmbBitMry.Items.Add("DQ");cmbBitMry.Items.Add("MR");cmbReadType.Items.Clear();cmbReadType.Items.Add("INT16");cmbReadType.Items.Add("UINT16");cmbReadType.Items.Add("DINT32");cmbReadType.Items.Add("HEX32");cmbReadType.Items.Add("REAL32");cmbReadType.Items.Add("BIN16");cmbWriteType.Items.Clear();cmbWriteType.Items.Add("INT16");cmbWriteType.Items.Add("UINT16");cmbWriteType.Items.Add("DINT32");cmbWriteType.Items.Add("HEX32");cmbWriteType.Items.Add("REAL32");cmbWriteType.Items.Add("BIN16");for (i = 0; i <= 15; i ){cmbBit.Items.Add("Bit" System.Convert.ToString(i));}cmbReadMry.SelectedIndex = 3;cmbWriteMry.SelectedIndex = 3;cmbBitMry.SelectedIndex = 0;cmbBit.SelectedIndex = 0;cmbReadType.SelectedIndex = 0;cmbWriteType.SelectedIndex = 0;lstRead.Items.Clear();txtWrite.Text = "";}public void butLink_Click(System.Object sender, System.EventArgs e){short re = 0;string restr = ""; re = PLC.EntLink(txtLocalIP.Text.Trim(), Convert.ToUInt16(txtLocalPort.Text), txtRemoteIP.Text.Trim(), (Convert.ToUInt16(txtRemotePort.Text)), "", "", "DEMO", ref PlcHand);txtReLink.Text = re.ToString();if (re == 0){EntLink = true;MessageBox.Show("PLC联接成功!");}else{EntLink = false;MessageBox.Show("PLC联接失败: " restr);}}public void butClose_Click(System.Object sender, System.EventArgs e){short re = 0;if (!EntLink){MessageBox.Show("还未与PLC建立联接!");return;} re = PLC.DeLink(PlcHand);txtReClose.Text = re.ToString();}public void butRead_Click(System.Object sender, System.EventArgs e){short i = 0;object[] RD = null;RD = new object[Convert.ToUInt16(txtReadCnt.Text)];if (!EntLink){MessageBox.Show("还未与PLC建立联接!");return;}int var1 = cmbReadType.SelectedIndex 1; WinTcpS7_CP2.PlcClient.DataType typ = (WinTcpS7_CP2.PlcClient.DataType)var1;switch (cmbReadMry.SelectedIndex){case 0: ScanRet = PLC.CmdRead(PlcHand,WinTcpS7_CP2.PlcClient.PlcMemory.DI, typ, Convert.ToUInt16(txtReadAdd.Text), Convert.ToUInt16(txtReadCnt.Text), ref RD);break;case 1: ScanRet = PLC.CmdRead(PlcHand, WinTcpS7_CP2.PlcClient.PlcMemory.DQ, typ, Convert.ToUInt16(txtReadAdd.Text), Convert.ToUInt16(txtReadCnt.Text), ref RD);break;case 2: ScanRet = PLC.CmdRead(PlcHand, WinTcpS7_CP2.PlcClient.PlcMemory.MR, typ, Convert.ToUInt16(txtReadAdd.Text), Convert.ToUInt16(txtReadCnt.Text), ref RD);break;case 3: ScanRet = PLC.CmdRead(PlcHand, WinTcpS7_CP2.PlcClient.PlcMemory.DR, typ, Convert.ToUInt16(txtReadAdd.Text), Convert.ToUInt16(txtReadCnt.Text), ref RD);break;}txtReRead.Text = ScanRet.ToString();lstRead.Items.Clear();for (i = 0; i <= (RD.Length - 1); i ){if (!(RD[i] == null)){lstRead.Items.Add(RD[i]);}else{lstRead.Items.Add("0");}}}public void butWrite_Click(System.Object sender, System.EventArgs e){short i = 0;string[] temp = null;object[] WD = null;if (!EntLink){MessageBox.Show("还未与PLC建立联接!");return;}WD = new object[Convert.ToUInt16(txtWriteCnt.Text)];temp = txtWrite.Text.Split('\n');for (i = 0; i <= (WD.Length - 1); i ){if (i > (temp.Length - 1)){WD[i] = 0;}else{WD[i] = temp[i].Trim();}}int var1 = cmbWriteType.SelectedIndex 1; WinTcpS7_CP2.PlcClient.DataType typ = (WinTcpS7_CP2.PlcClient.DataType)var1;switch (cmbWriteMry.SelectedIndex){case 0: ScanRet = PLC.CmdWrite(PlcHand, WinTcpS7_CP2.PlcClient.PlcMemory.DI, typ, Convert.ToUInt16(txtWriteAdd.Text), Convert.ToUInt16(txtWriteCnt.Text), ref WD);break;case 1: ScanRet = PLC.CmdWrite(PlcHand, WinTcpS7_CP2.PlcClient.PlcMemory.DQ, typ, Convert.ToUInt16(txtWriteAdd.Text), Convert.ToUInt16(txtWriteCnt.Text), ref WD);break;case 2: ScanRet = PLC.CmdWrite(PlcHand, WinTcpS7_CP2.PlcClient.PlcMemory.MR, typ, Convert.ToUInt16(txtWriteAdd.Text), Convert.ToUInt16(txtWriteCnt.Text), ref WD);break;case 3: ScanRet = PLC.CmdWrite(PlcHand, WinTcpS7_CP2.PlcClient.PlcMemory.DR, typ, Convert.ToUInt16(txtWriteAdd.Text), Convert.ToUInt16(txtWriteCnt.Text), ref WD);break;}txtReWrite.Text = ScanRet.ToString();}public void butScan_Click(System.Object sender, System.EventArgs e){if (!EntLink){MessageBox.Show("还未与PLC建立联接!");return;}if (butScan.Text == "Cycle R/W"){ScanCount = 0;ScanRun = true;Timer1.Enabled = true;butScan.Text = "Stop R/W";}else{ScanRun = false;Timer1.Enabled = false;butScan.Text = "Cycle R/W";}}public void Timer1_Tick(System.Object sender, System.EventArgs e){if (!ScanRun){butScan_Click(null, null);return;}int tim = System.Convert.ToInt32(timeGetTime());if (!EntLink){MessageBox.Show("还未与PLC建立联接!");return;}//butRead_Click(null, null);if (ScanRet < 0){ScanRun = false;return;}butWrite_Click(null, null);if (ScanRet < 0){ScanRun = false;return;}//ScanCount ;txtScanCnt.Text = ScanCount.ToString();txtScanPrd.Text = (System.Convert.ToInt32(timeGetTime()) - tim).ToString() "ms";}public void butBitTest_Click(System.Object sender, System.EventArgs e){if (!EntLink){MessageBox.Show("还未与PLC建立联接!");return;}bool rd = false;short re = 0;switch (cmbBitMry.SelectedIndex){case 0: re = PLC.Bit_Test(PlcHand, WinTcpS7_CP2.PlcClient.PlcMemory.DI, Convert.ToUInt16(txtBitAdd.Text), Convert.ToUInt16(cmbBit.SelectedIndex), ref rd);break;case 1: re = PLC.Bit_Test(PlcHand, WinTcpS7_CP2.PlcClient.PlcMemory.DQ, Convert.ToUInt16(txtBitAdd.Text), Convert.ToUInt16(cmbBit.SelectedIndex), ref rd);break;case 2: re = PLC.Bit_Test(PlcHand, WinTcpS7_CP2.PlcClient.PlcMemory.MR, Convert.ToUInt16(txtBitAdd.Text), Convert.ToUInt16(cmbBit.SelectedIndex), ref rd);break;}txtBitTest.Text = rd.ToString();txtReBit.Text = re.ToString();}public void butBitSet_Click(System.Object sender, System.EventArgs e){if (!EntLink){MessageBox.Show("还未与PLC建立联接!");return;}short re = 0;switch (cmbBitMry.SelectedIndex){case 0: re = PLC.Bit_Set(PlcHand, WinTcpS7_CP2.PlcClient.PlcMemory.DI, Convert.ToUInt16(txtBitAdd.Text), Convert.ToUInt16(cmbBit.SelectedIndex));break;case 1: re = PLC.Bit_Set(PlcHand, WinTcpS7_CP2.PlcClient.PlcMemory.DQ, Convert.ToUInt16(txtBitAdd.Text), Convert.ToUInt16(cmbBit.SelectedIndex));break;case 2: re = PLC.Bit_Set(PlcHand, WinTcpS7_CP2.PlcClient.PlcMemory.MR, Convert.ToUInt16(txtBitAdd.Text), Convert.ToUInt16(cmbBit.SelectedIndex));break;}txtReBit.Text = re.ToString();}public void butBitRst_Click(System.Object sender, System.EventArgs e){if (!EntLink){MessageBox.Show("还未与PLC建立联接!");return;}short re = 0;switch (cmbBitMry.SelectedIndex){case 0: re = PLC.Bit_Reset(PlcHand, WinTcpS7_CP2.PlcClient.PlcMemory.DI, Convert.ToUInt16(txtBitAdd.Text), Convert.ToUInt16(cmbBit.SelectedIndex));break;case 1: re = PLC.Bit_Reset(PlcHand, WinTcpS7_CP2.PlcClient.PlcMemory.DQ, Convert.ToUInt16(txtBitAdd.Text), Convert.ToUInt16(cmbBit.SelectedIndex));break;case 2: re = PLC.Bit_Reset(PlcHand, WinTcpS7_CP2.PlcClient.PlcMemory.MR, Convert.ToUInt16(txtBitAdd.Text), Convert.ToUInt16(cmbBit.SelectedIndex));break;}txtReBit.Text = re.ToString();}}}

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复