/// <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; } }
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; } }