革博士程序V1仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

140 regels
6.6 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using S7.Net;
  11. namespace LeatherApp
  12. {
  13. public partial class Form2 : Form
  14. {
  15. public static Plc PLC_Type;
  16. public Form2()
  17. {
  18. InitializeComponent();
  19. }
  20. private void buttonNext_Click(object sender, EventArgs e)
  21. {
  22. this.Hide();
  23. }
  24. private void ConnectButton_Click(object sender, EventArgs e)
  25. {
  26. //创建连接对象
  27. switch(PLCType.Text)
  28. {
  29. case "S7200": PLC_Type = new Plc(CpuType.S7200, IPAdrees.Text, Convert.ToInt16(rackN.Value), Convert.ToInt16(Solt.Value)); break;
  30. case "S7300": PLC_Type = new Plc(CpuType.S7300, IPAdrees.Text, Convert.ToInt16(rackN.Value), Convert.ToInt16(Solt.Value)); break;
  31. case "S7400": PLC_Type = new Plc(CpuType.S7400, IPAdrees.Text, Convert.ToInt16(rackN.Value), Convert.ToInt16(Solt.Value)); break;
  32. case "S71200": PLC_Type = new Plc(CpuType.S71200, IPAdrees.Text, Convert.ToInt16(rackN.Value), Convert.ToInt16(Solt.Value)); break;
  33. case "S71500": PLC_Type = new Plc(CpuType.S71500, IPAdrees.Text, Convert.ToInt16(rackN.Value), Convert.ToInt16(Solt.Value)); break;
  34. default:break;
  35. }
  36. //开始连接并返回故障码
  37. PLC_Type.Open();
  38. ConnecteState.Text = (PLC_Type.IsConnected ? "连接成功" : "连接失败");
  39. //case ErrorCode.ConnectionError:ConnecteState.Text = "连接失败";break;
  40. //case ErrorCode.IPAddressNotAvailable: ConnecteState.Text = "IP地址无效"; break;
  41. //case ErrorCode.NoError: ConnecteState.Text = "连接成功"; break;
  42. //case ErrorCode.SendData: ConnecteState.Text = "发送数据中"; break;
  43. //case ErrorCode.ReadData: ConnecteState.Text = "读取数据中"; break;
  44. }
  45. private void DisConnectButton_Click(object sender, EventArgs e)
  46. {
  47. if (PLC_Type != null)
  48. {
  49. PLC_Type.Close();
  50. ConnecteState.Text = "";
  51. }
  52. }
  53. private void Readbutton_Click(object sender, EventArgs e)
  54. {
  55. double MyPlcData=0.0;
  56. try
  57. {
  58. switch (DateType.Text)
  59. {
  60. case "Bit": MyPlcData = Convert.ToDouble((Boolean)(PLC_Type.Read("DB" + DBText.Value + "." + "DBX" + StartText.Value+"."+BitSelect.Value))); break;
  61. case "Byte": MyPlcData = Convert.ToDouble((Byte)(PLC_Type.Read("DB" + DBText.Value + "." + "DBB" + StartText.Value))); break;
  62. case "Word": MyPlcData = Convert.ToDouble((UInt16)(PLC_Type.Read("DB" + DBText.Value + "." + "DBW" + StartText.Value))); break;
  63. case "DWord": MyPlcData = Convert.ToDouble((UInt32)(PLC_Type.Read("DB" + DBText.Value + "." + "DBD" + StartText.Value))); break;
  64. case "Int": MyPlcData = BitConverter.ToInt16(BitConverter.GetBytes((UInt16)(PLC_Type.Read("DB" + DBText.Value + "." + "DBW" + StartText.Value))),0); break;
  65. case "DInt": MyPlcData = BitConverter.ToInt32(BitConverter.GetBytes((UInt32)(PLC_Type.Read("DB" + DBText.Value + "." + "DBD" + StartText.Value))),0); break;
  66. case "Real": MyPlcData = BitConverter.ToSingle(BitConverter.GetBytes((UInt32)PLC_Type.Read("DB" + DBText.Value + "." + "DBD" + StartText.Value)),0); break;
  67. default: break;
  68. }
  69. }
  70. catch(Exception e1)
  71. {
  72. MessageBox.Show(e1.Message);
  73. }
  74. txtResult.Text = MyPlcData.ToString();
  75. }
  76. private void Writebutton_Click(object sender, EventArgs e)
  77. {
  78. ErrorCode errorCode=0;
  79. string MyData = "";
  80. try
  81. {
  82. switch(DateType.Text)
  83. {
  84. case "Bit": PLC_Type.Write("DB" + DBText.Value + "." + "DBX" + StartText.Value+"."+BitSelect.Value, Convert.ToBoolean(Convert.ToInt16(WriteText.Text))); break;
  85. case "Word": PLC_Type.Write("DB" + DBText.Value + "." + "DBW" + StartText.Value, Convert.ToUInt16(WriteText.Text)); break;
  86. case "DWord": PLC_Type.Write("DB" + DBText.Value + "." + "DBD" + StartText.Value, Convert.ToUInt32(WriteText.Text)); break;
  87. case "Int": PLC_Type.Write("DB" + DBText.Value + "." + "DBW" + StartText.Value, (Int16)Convert.ToSingle(WriteText.Text)); break;
  88. case "DInt": PLC_Type.Write("DB" + DBText.Value + "." + "DBD" + StartText.Value, (Int32)Convert.ToSingle(WriteText.Text)); break;
  89. case "Real": PLC_Type.Write("DB" + DBText.Value + "." + "DBD" + StartText.Value, BitConverter.ToUInt32(BitConverter.GetBytes(Convert.ToSingle(WriteText.Text)),0)); break;
  90. case "Byte":
  91. {
  92. Byte[] bytes = new Byte[1];
  93. bytes[0] = Convert.ToByte(WriteText.Text);
  94. PLC_Type.WriteBytes(DataType.DataBlock, (int)DBText.Value, (int)StartText.Value, bytes);
  95. break;
  96. }
  97. default:break;
  98. }
  99. }
  100. catch (Exception e1)
  101. {
  102. }
  103. MessageBox.Show(MyData);
  104. }
  105. private void IPAdrees_KeyPress(object sender, KeyPressEventArgs e)
  106. {
  107. if (!(char.IsNumber(e.KeyChar)) && (e.KeyChar != (char)8) && (e.KeyChar != Convert.ToChar(".")) )
  108. e.Handled = true;//e.handled=true即可,无效化刚刚输入的键值
  109. }
  110. private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
  111. {
  112. if (!(char.IsNumber(e.KeyChar)) && (e.KeyChar != (char)8) && (e.KeyChar != Convert.ToChar("."))&&(e.KeyChar != Convert.ToChar("-")) )
  113. e.Handled = true;//e.handled=true即可,无效化刚刚输入的键值
  114. }
  115. private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
  116. {
  117. if (DateType.Text == "Bit")
  118. BitSelect.Enabled = true;
  119. else
  120. BitSelect.Enabled = false;
  121. }
  122. private void Form2_Load(object sender, EventArgs e)
  123. {
  124. }
  125. }
  126. }