/// <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();
        }
예제 #2
0
        public void TCPDisconnect()
        {
            if (_ModbusTCP != null && _ModbusTCP.Connected)
            {
                if (_T != null || _T.Status == TaskStatus.Running && !RTUConnected)
                {
                    Stop();
                }

                _ModbusTCP.Disconnect();
                TCPConnected = _ModbusTCP.Connected;
            }
        }
예제 #3
0
/// <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 = "连接";
            }
        }
예제 #4
0
        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;
        }
예제 #5
0
        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;
            }
        }