Esempio n. 1
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");
        }
Esempio n. 2
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;
            }
        }
Esempio n. 3
0
        private void Button_write_select(string Name, string modbus_tcp, MODBUD_TCP pLC_Interface, Button_base button)//按照按钮模式写入
        {
            switch (Name)
            {
            case "Set_as_on":    //设置常ON
                if (button.Command)
                {
                    pLC_Interface.IPLC_interface_PLC_write_M_bit(button.PLC_Contact, button.PLC_Address, Button_state.ON);    //写入常ON
                }
                else
                {
                    pLC_Interface.IPLC_interface_PLC_write_M_bit(button.PLC_Contact, button.PLC_Address, Button_state.ON);    //写入常ON
                }
                break;

            case "Set_as_off":    //设置常OFF
                if (button.Command)
                {
                    pLC_Interface.IPLC_interface_PLC_write_M_bit(button.PLC_Contact, button.PLC_Address, Button_state.Off);    //写入常Off
                }
                else
                {
                    pLC_Interface.IPLC_interface_PLC_write_M_bit(button.PLC_Contact, button.PLC_Address, Button_state.Off);    //写入常Off
                }
                break;

            case "selector_witch":
                if (button.Command)
                {
                    List <bool> data = pLC_Interface.IPLC_interface_PLC_read_M_bit(button.PLC_Contact, button.PLC_Address);                                     //先读取要写入的状态
                    pLC_Interface.IPLC_interface_PLC_write_M_bit(button.PLC_Contact, button.PLC_Address, data[0] == true ? Button_state.Off : Button_state.ON); //根据要写入的状态进行取反
                }
                else
                {
                    List <bool> data = pLC_Interface.IPLC_interface_PLC_read_M_bit(button.PLC_Contact, button.PLC_Address);                                     //先读取要写入的状态
                    pLC_Interface.IPLC_interface_PLC_write_M_bit(button.PLC_Contact, button.PLC_Address, data[0] == true ? Button_state.Off : Button_state.ON); //根据要写入的状态进行取反
                }
                break;

            case "Regression":
                if (button.Command)
                {
                    pLC_Interface.IPLC_interface_PLC_write_M_bit(button.PLC_Contact, button.PLC_Address, Button_state.ON);    //先写入ON--后用事件复位-off
                }
                else
                {
                    pLC_Interface.IPLC_interface_PLC_write_M_bit(button.PLC_Contact, button.PLC_Address, Button_state.ON); //先写入ON--后用事件复位-off
                }
                state = true;                                                                                              //标志位
                break;

            case "复归型_Off":
                if (button.Command)
                {
                    pLC_Interface.IPLC_interface_PLC_write_M_bit(button.PLC_Contact, button.PLC_Address, Button_state.Off);    //先写入ON--后用事件复位-off
                }
                else
                {
                    pLC_Interface.IPLC_interface_PLC_write_M_bit(button.PLC_Contact, button.PLC_Address, Button_state.Off); //先写入ON--后用事件复位-off
                }
                state = false;                                                                                              //标志位
                break;
            }
        }