Exemple #1
0
        /// <summary>
        /// 根据PLC类型读取--文本输入类
        /// </summary>
        /// <param name="pLC"></param>
        /// <param name="numerical_Class"></param>
        /// <param name="skinTextBox_Reform"></param>
        /// <returns></returns>
        public void Refresh(TextBox_base textBox)//根据PLC类型读取--文本输入类
        {
            switch (textBox.Plc)
            {
            case PLC.Mitsubishi:
                IPLC_interface mitsubishi = new Mitsubishi_realize();                                                          //实例化接口--实现三菱在线访问
                if (mitsubishi.PLC_ready)                                                                                      //PLC是否准备完成
                {
                    string data = mitsubishi.PLC_read_D_register(textBox.PLC_Contact, textBox.PLC_Address, textBox.numerical); //读取PLC数值
                    TextBox_state(textBox, data);                                                                              //填充文本数据--自动判断用户设定的小数点位置--多余的异常
                }
                break;

            case PLC.Siemens:
                IPLC_interface Siemens = new Siemens_realize();                                                             //实例化接口--实现西门子在线访问
                if (Siemens.PLC_ready)                                                                                      //PLC是否准备完成
                {
                    string data = Siemens.PLC_read_D_register(textBox.PLC_Contact, textBox.PLC_Address, textBox.numerical); //读取PLC数值
                    TextBox_state(textBox, data);                                                                           //填充文本数据--自动判断用户设定的小数点位置--多余的异常
                }
                break;

            case PLC.MODBUS_TCP:
                MODBUD_TCP MODBUD_TCP = new MODBUD_TCP();   //实例化接口--实现MODBUS TCP
                if (MODBUD_TCP.IPLC_interface_PLC_ready)    //PLC是否准备完成
                {
                    //由于modbus_TCP读写状态不同 读输出 写输入模式
                    string data = MODBUD_TCP.IPLC_interface_PLC_read_D_register(textBox.PLC_Contact, textBox.PLC_Address, textBox.numerical); //读取PLC数值
                    TextBox_state(textBox, data);                                                                                             //填充文本数据--自动判断用户设定的小数点位置--多余的异常
                }
                break;
            }
        }
Exemple #2
0
        public bool state = false;            //定义标志位--复归型按钮-判断状态
        public string plc(Button_base Button) //根据PLC类型写入
        {
            string pLC = Button.Plc.ToString();

            switch (pLC)
            {
            case "Mitsubishi":                                                          //三菱有二种模式 --在线与仿真

                IPLC_interface mitsubishi = new Mitsubishi_realize();                   //实例化接口--实现三菱在线访问
                if (mitsubishi.PLC_ready)                                               //PLC是否准备完成
                {
                    Button_write_select(Button.Pattern.ToString(), mitsubishi, Button); //根据按钮模式进行写入操作
                }
                else
                {
                    MessageBox.Show("未连接设备:" + pLC.Trim(), "Err");     //推出异常提示用户
                }
                break;

            case "Siemens":
                IPLC_interface Siemens = new Siemens_realize();                      //实例化接口--实现西门子在线访问
                if (Siemens.PLC_ready)                                               //PLC是否准备完成
                {
                    Button_write_select(Button.Pattern.ToString(), Siemens, Button); //根据按钮模式进行写入操作
                }
                else
                {
                    MessageBox.Show("未连接设备:" + pLC.Trim(), "Err");     //推出异常提示用户
                }
                break;

            case "Modbus_TCP":
                MODBUD_TCP MODBUD_TCP = new MODBUD_TCP();                                             //实例化接口--实现MODBUS TCP
                if (MODBUD_TCP.IPLC_interface_PLC_ready)                                              //PLC是否准备完成
                {
                    Button_write_select(Button.Pattern.ToString(), "MODBUD_TCP", MODBUD_TCP, Button); //根据按钮模式进行写入操作
                }
                else
                {
                    MessageBox.Show("未连接设备:" + pLC.Trim(), "Err");     //推出异常提示用户
                }
                break;
            }
            return("OK");
        }
Exemple #3
0
        public string plc(TextBox_base textBox)//根据PLC类型写入
        {
            switch (textBox.Plc)
            {
            case PLC.Mitsubishi:
                IPLC_interface mitsubishi = new Mitsubishi_realize();    //实例化接口--实现三菱在线访问
                if (mitsubishi.PLC_ready)
                {
                    mitsubishi.PLC_write_D_register(textBox.PLC_Contact, textBox.PLC_Address, textBox.Control_Text, textBox.numerical);
                }
                else
                {
                    MessageBox.Show("未连接设备:" + textBox.Plc.ToString(), "Err");     //推出异常提示
                }
                break;

            case PLC.Siemens:
                IPLC_interface Siemens = new Siemens_realize();    //实例化接口--实现西门子在线访问
                if (Siemens.PLC_ready)
                {
                    Siemens.PLC_write_D_register(textBox.PLC_Contact, textBox.PLC_Address, textBox.Control_Text, textBox.numerical);
                }
                else
                {
                    MessageBox.Show("未连接设备:" + textBox.Plc.ToString(), "Err");     //推出异常提示
                }
                break;

            case PLC.MODBUS_TCP:
                MODBUD_TCP MODBUD_TCP = new MODBUD_TCP();    //实例化接口--实现MODBUS TCP
                if (MODBUD_TCP.IPLC_interface_PLC_ready)
                {
                    MODBUD_TCP.IPLC_interface_PLC_write_D_register(textBox.PLC_Contact, textBox.PLC_Address, textBox.Control_Text, textBox.numerical);
                }
                else
                {
                    MessageBox.Show("未连接设备:" + textBox.Plc.ToString(), "Err");     //推出异常提示用户
                }
                break;
            }
            return("OK_RUN");
        }
Exemple #4
0
        public List <string> plc(TextBox_base textBox, Histogram_base dataGridView, int Idx)//根据PLC类型写入
        {
            List <string> Data = new List <string>();

            switch (textBox.Plc)
            {
            case PLC.Mitsubishi:
                IPLC_interface mitsubishi = new Mitsubishi_realize();    //实例化接口--实现三菱在线访问
                if (mitsubishi.PLC_ready)
                {
                    for (int i = 0; i < Idx; i++)
                    {
                        Data.Add(mitsubishi.PLC_read_D_register(textBox.PLC_Contact, dataGridView.Total_address[i].ToString(), dataGridView.Histogram_numerical[i]));
                    }
                }
                break;

            case PLC.Siemens:
                IPLC_interface Siemens = new Siemens_realize();    //实例化接口--实现西门子在线访问
                if (Siemens.PLC_ready)
                {
                    for (int i = 0; i < Idx; i++)
                    {
                        Data.Add(Siemens.PLC_read_D_register(textBox.PLC_Contact, dataGridView.Total_address[i].ToString(), dataGridView.Histogram_numerical[i]));
                    }
                }
                break;

            case PLC.MODBUS_TCP:
                MODBUD_TCP MODBUD_TCP = new MODBUD_TCP();    //实例化接口--实现MODBUS TCP
                if (MODBUD_TCP.IPLC_interface_PLC_ready)
                {
                    for (int i = 0; i < Idx; i++)
                    {
                        Data.Add(MODBUD_TCP.IPLC_interface_PLC_read_D_register(textBox.PLC_Contact, dataGridView.Total_address[i].ToString(), dataGridView.Histogram_numerical[i]));
                    }
                }
                break;
            }
            return(Data);
        }
Exemple #5
0
        /// <summary>
        /// 定时刷新控件
        /// </summary>
        /// <param name="button"></param>
        public void Refresh(Control button, PLC Plc)      //根据PLC类型读取--按钮类
        {
            Button_state button_State = Button_state.Off; //按钮状态
            Button_base  button_base  = button as Button_base;

            switch (Plc)
            {
            case PLC.Mitsubishi:
                IPLC_interface mitsubishi = new Mitsubishi_realize();                                               //实例化接口--实现三菱在线访问
                if (mitsubishi.PLC_ready)                                                                           //PLC是否准备完成
                {
                    List <bool> data = mitsubishi.PLC_read_M_bit(button_base.PLC_Contact, button_base.PLC_Address); //读取状态
                    button_State = data[0] == true ? Button_state.ON : Button_state.Off;
                    button_state(button, button_State);
                }
                break;

            case PLC.Siemens:
                IPLC_interface Siemens = new Siemens_realize();                                                  //实例化接口--实现西门子在线访问
                if (Siemens.PLC_ready)                                                                           //PLC是否准备完成
                {
                    List <bool> data = Siemens.PLC_read_M_bit(button_base.PLC_Contact, button_base.PLC_Address); //读取状态
                    button_State = data[0] == true ? Button_state.ON : Button_state.Off;
                    button_state(button, button_State);
                }
                break;

            case PLC.MODBUS_TCP:
                MODBUD_TCP MODBUD_TCP = new MODBUD_TCP();                                                                          //实例化接口--实现MODBUS TCP
                if (MODBUD_TCP.IPLC_interface_PLC_ready)                                                                           //PLC是否准备完成
                {
                    List <bool> data = MODBUD_TCP.IPLC_interface_PLC_read_M_bit(button_base.PLC_Contact, button_base.PLC_Address); //读取状态
                    button_State = data[0] == true ? Button_state.ON : Button_state.Off;
                    button_state(button, button_State);
                }
                break;
            }
        }
Exemple #6
0
        static void Main(string[] args)
        {
            //对PLC进行远程操作
            //Mitsubishi_PLC_remote mitsubishi_PLC_Remote = new Mitsubishi_PLC_remote(new IPEndPoint(IPAddress.Parse("192.168.3.2"), int.Parse("4999")));
            //mitsubishi_PLC_Remote.Open();
            //Console.WriteLine(mitsubishi_PLC_Remote.);
            //mitsubishi_PLC_Remote.Write_PLC_Rrr_Rest();
            //Thread.Sleep(5000);
            //mitsubishi_PLC_Remote.Write_PLC_Stop();
            //Thread.Sleep(5000);
            //mitsubishi_PLC_Remote.Write_PLC_Run();
            //Thread.Sleep(5000);
            //mitsubishi_PLC_Remote.Write_PLC_Stop();
            //Thread.Sleep(5000);
            //mitsubishi_PLC_Remote.Write_PLC_Run();
            //modbus_tcp测试
            //Modbus.Modbus_TCPrealize modbus_TCPrealize = new Modbus_TCPrealize(new IPEndPoint(IPAddress.Parse("192.168.3.2"), int.Parse("502")));
            //modbus_TCPrealize.Open();
            //var t = Task.Run(() =>
            //{
            //    for (int I = 0; I < 9999; I++)
            //    {
            //        //复位
            //        Console.WriteLine(modbus_TCPrealize.write_multi_Bool(20, 3, 0).Content);
            //        Console.WriteLine(modbus_TCPrealize.Read_Bool(0).Content);
            //        Console.WriteLine(modbus_TCPrealize.Read_Byet(0).Content);
            //        Console.WriteLine(modbus_TCPrealize.Read_multi_Bool(10, 3).Content);
            //        Console.WriteLine(modbus_TCPrealize.Read_uint(13).Content);
            //        Console.WriteLine(modbus_TCPrealize.write_Bool(20, coil.ON).Content);
            //        Thread.Sleep(300);
            //        Console.WriteLine(modbus_TCPrealize.write_multi_Bool(20, 3, 15).Content);
            //        Console.WriteLine(modbus_TCPrealize.Write_int(20, 666).Content);
            //        Thread.Sleep(300);
            //    }
            //});
            ////三菱3E帧报文测试
            Mitsubishi_realize mitsubishi_Realize = new Mitsubishi_realize(new IPEndPoint(IPAddress.Parse("192.168.3.251"), int.Parse("501")));

            mitsubishi_Realize.Open();
            Console.WriteLine(mitsubishi_Realize.write_Bool(message_bit.Y, 37, false).Content.ToString() ?? "00");
            //var D = mitsubishi_Realize.Read_Bool(message_bit.Y, 42);
            //mitsubishi_Realize.write_Bool(message_bit.Y, 27, false);
            //var t1 = Task.Run(() =>
            //  {
            //      for (int I = 0; I < 9999; I++)
            //      {
            //          Console.WriteLine(mitsubishi_Realize.Read_Byet(message_Word.D, 0).Content.ToString() ?? "00");
            //          Console.WriteLine(mitsubishi_Realize.Read_short(message_Word.D, 0).Content.ToString() ?? "00");
            //          Console.WriteLine(mitsubishi_Realize.Read_int(message_Word.D, 1).Content.ToString() ?? "00");
            //          Console.WriteLine(mitsubishi_Realize.Read_uint(message_Word.D, 1).Content.ToString() ?? "00");
            //          Console.WriteLine(mitsubishi_Realize.Read_float(message_Word.D, 4).Content.ToString() ?? "00");
            //          Console.WriteLine(mitsubishi_Realize.Write_Byte(message_Word.D, 10, 66).Content.ToString() ?? "00");
            //          Console.WriteLine(mitsubishi_Realize.Write_short(message_Word.D, 11, 66).Content.ToString() ?? "00");
            //          Console.WriteLine(mitsubishi_Realize.Write_ushort(message_Word.D, 12, 66).Content.ToString() ?? "00");
            //          Console.WriteLine(mitsubishi_Realize.Write_int(message_Word.D, 13, 66666).Content.ToString() ?? "00");
            //          Console.WriteLine(mitsubishi_Realize.Write_Int64(message_Word.D, 15, 55555555).Content.ToString() ?? "00");
            //      }

            //  });
            //for (int I = 0; I < 9999; I++)
            //{
            //    Console.WriteLine(mitsubishi_Realize.write_Bool(message_bit.Y, 0, false).Content.ToString() ?? "00");
            //    Console.WriteLine(mitsubishi_Realize.write_multi_Bool(message_bit.Y, 10, new bool[] { true, true, true }).Content.Length);
            //    Thread.Sleep(600);
            //    Console.WriteLine(mitsubishi_Realize.write_multi_Bool(message_bit.Y, 10, new bool[] { false, false, false }).Content);
            //    Console.WriteLine(mitsubishi_Realize.write_Bool(message_bit.Y, 0, true).Content.ToString() ?? "00");
            //    Thread.Sleep(600);
            //    Console.WriteLine(mitsubishi_Realize.Read_Bool(message_bit.Y, 0).Content.ToString() ?? "00");
            //    Console.WriteLine(mitsubishi_Realize.Read_Byet(message_Word.D, 0).Content);
            //    Console.WriteLine(mitsubishi_Realize.Read_Bool(message_bit.Y, 0, 3).Content);
            //    Console.WriteLine(mitsubishi_Realize.Read_Bool(message_bit.Y, 10, 3).Content);
            //}

            Console.Read();
        }