/// <summary> /// 开启生产线按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { robot1.Start(); ModbusMasterTCP mm = new ModbusMasterTCP("192.168.0.2", 502); mm.Connect(); mm.WriteSingleCoil(2, 0, true); try { while (mm.ReadCoils(2, 0, 1).First()) { //Application.DoEvents();//待定,空执行 } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } mm.Disconnect(); mm = new ModbusMasterTCP("192.168.0.3", 502); mm.Connect(); mm.WriteSingleCoil((byte)3, 0, true); /*while (mm.ReadCoils(3, 0, 1).First()) * { * //Application.DoEvents();//待定,空执行 * }*/ mm.Disconnect(); }
public void TCPDisconnect() { if (_ModbusTCP != null && _ModbusTCP.Connected) { if (_T != null || _T.Status == TaskStatus.Running && !RTUConnected) { Stop(); } _ModbusTCP.Disconnect(); TCPConnected = _ModbusTCP.Connected; } }
/// <summary> /// 连接按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button3_Click(object sender, EventArgs e) { if (button3.Text == "连接") { mm = new ModbusMasterTCP(textBox1.Text, 502); mm.Connect(); button3.Text = "断开"; } else { mm.Disconnect(); button3.Text = "连接"; } }
private void detache(object sender, FormClosedEventArgs e) { if (!simulation_BC9020) { // release the valves tcpm.WriteSingleRegister(unit_id, 0x4002, 0); // sets the TaskControlMarker to 1 (Beckhoff Control) tcpm.WriteSingleRegister(unit_id, 0x4003, 1); // Disconnect the IP address tcpm.Disconnect(); connected = false; // Piaget_CSharp.uPanel.BeckhoffEnLigne = false; } simulation_BC9020 = false; }
public static void Beckhoff(string api) { byte unit_id = 1; int bitsIn = 0, test; ushort bitsOut = 0, count = 1; ModbusMasterTCP tcpmM25 = new ModbusMasterTCP("172.16.22.2", 502), tcpmRHY = new ModbusMasterTCP("???.???.???.???", 502); switch (uPanel.Platform) { case uPanel.tPlatform.MANIP25: tcpmM25.Connect(); test = tcpmM25.ReadHoldingRegisters(unit_id, 0x4003, 1).First(); switch (api) { case "BC9020_ON": if (!((test == 0) || (test == 2))) { tcpmM25.WriteSingleRegister(unit_id, 0x4003, 0); } // LECTURE bitsIn = tcpmM25.ReadHoldingRegisters(unit_id, 0x4000, 1).First(); for (int i = 1; i < 7; i++) { if ((bitsIn % 2) == 1) { uPanel.SignauxIn[i].EtatVF = true; } else { uPanel.SignauxIn[i].EtatVF = false; } bitsIn /= 2; } // ECRITURE for (int i = 1; i < 7; i++) { if (uPanel.SignauxOut[i].EtatVF) { bitsOut += count; } // else // { // } count *= 2; } tcpmM25.WriteSingleRegister(unit_id, 0x4002, bitsOut); tcpmM25.Disconnect(); uMTasks.Work[6].TaskStatus = uMTasks.tPhase.Faite; break; case "BC9020_OFF": if (test == 0) { // release the valves tcpmM25.WriteSingleRegister(unit_id, 0x4002, 0); // sets the TaskControlMarker to 1 (Beckhoff Control) tcpmM25.WriteSingleRegister(unit_id, 0x4003, 1); } tcpmM25.Disconnect(); uMTasks.Work[6].TaskStatus = uMTasks.tPhase.Suspendue; break; } // Disconnect the IP address break; } }