コード例 #1
0
ファイル: frmMaintenance.cs プロジェクト: alexdangles/tubes
        private void PLC_OnDeviceChanged(DeviceChangedArgs e)
        {
            switch (e.Device.Name)
            {
            case SAF.inPLC_ERRACK:
                ledPLC_ERRACK.Energized = e.Device.Value;
                if (e.Device.Value)
                {
                    vPLC.SetState(SAF.inPLC_ERRACK, false);
                }
                break;

            case SAF.inPLC_RESTART:
                ledPLC_RESTART.Energized = e.Device.Value;
                if (e.Device.Value)
                {
                    vPLC.SetState(SAF.inPLC_RESTART, false);
                }
                break;

            case SAF.inPLC_CHB_UNLCK:
                ledPLC_CHB_UNLCK.Energized = e.Device.Value;
                break;

            case SAF.inPLC_HV_EN:
                ledPLC_HV_EN.Energized = e.Device.Value;
                swHVPower.Energized    = e.Device.Value;
                break;

            case SAF.inPLC_SP_EN:
                ledPLC_SP_EN.Energized = e.Device.Value;
                swSpellmanHV.Energized = e.Device.Value;
                break;

            case SAF.inPLC_TESTING:
                ledPLC_TESTING.Energized = e.Device.Value;
                swTesting.Energized      = e.Device.Value;
                break;

            case SAF.outPLC_RUN:
                ledPLC_RUN.Energized = e.Device.Value;
                break;

            case SAF.outPLC_ERRCOM:
                ledPLC_ERRCOM.Energized = e.Device.Value;
                break;

            case SAF.SFI_CHB_UNLCK:
                ledSFI_CHB_UNLCK.Energized = e.Device.Value;
                ledCHBLock.Energized       = e.Device.Value;
                if (e.Device.Value)
                {
                    this.Invoke((MethodInvoker) delegate { btnCHBLock.Text = "Lock Chamber"; });
                }
                else
                {
                    this.Invoke((MethodInvoker) delegate { btnCHBLock.Text = "Unlock Chamber"; });
                }
                break;

            case SAF.SFI_CHB_OPEN:
                ledSFI_CHB_OPEN.Energized = e.Device.Value;
                ledCHBDoor.Energized      = e.Device.Value;
                break;

            case SAF.SFI_HV_PWR:
                ledSFI_HV_PWR.Energized = e.Device.Value;
                break;

            case SAF.SFI_EMO:
                ledSFI_EMO.Energized = !e.Device.Value;
                break;

            case SAF.SFI_XRAYS_1:
                ledSFI_XRAYS_1.Energized = e.Device.Value;
                break;

            case SAF.SFI_XRAYS_2:
                ledSFI_XRAYS_2.Energized = e.Device.Value;
                break;

            case SAF.SFO_CHB_UNLCK:
                ledSFO_CHB_UNLCK.Energized = e.Device.Value;
                ledCHBLock.Energized       = e.Device.Value;
                break;

            case SAF.SFO_HV_PWR:
                ledSFO_HV_PWR.Energized = e.Device.Value;
                break;

            case SAF.SFO_SP_INTLCK:
                ledSFO_SP_INTLCK.Energized = e.Device.Value;
                break;

            case SAF.SFO_BUZZER:
                ledSFO_BUZZER.Energized = e.Device.Value;
                break;

            case SAF.SFO_LED_SAFE:
                ledSFO_LED_SAFE.Energized = e.Device.Value;
                ledSafe.Energized         = e.Device.Value;
                this.Invoke((MethodInvoker) delegate { btnCHBLock.Enabled = e.Device.Value; });
                break;

            case SAF.SFO_LED_HV:
                ledSFO_LED_HV.Energized = e.Device.Value;
                ledHV.Energized         = e.Device.Value;
                break;

            case SAF.SFO_LED_XRAYS:
                ledSFO_LED_XRAYS.Energized = e.Device.Value;
                ledXRays.Energized         = e.Device.Value;
                break;

            case SAF.SFO_LED_TESTING:
                ledSFO_LED_TESTING.Energized = e.Device.Value;
                ledTesting.Energized         = e.Device.Value;
                break;

            case PLC.PLO_PS_PWR:
                ledPLO_PS_PWR.Energized = e.Device.Value;
                swPSPower.Energized     = e.Device.Value;
                break;

            case PLC.PLO_LED_ERROR:
                ledPLO_LED_ERROR.Energized = e.Device.Value;
                ledError.Energized         = e.Device.Value;
                swError.Energized          = e.Device.Value;
                break;

            case PLC.PLO_LED_EMO:
                ledPLO_LED_EMO.Energized = e.Device.Value;
                break;

            case PLC.PLO_SPELLMAN1:
                ledPLO_SPELLMAN1.Energized = e.Device.Value;
                swSpellman1.Energized      = e.Device.Value;
                break;

            case PLC.PLO_SPELLMAN2:
                ledPLO_SPELLMAN2.Energized = e.Device.Value;
                swSpellman2.Energized      = e.Device.Value;
                break;

            case PLC.PLO_SPELLMAN3:
                ledPLO_SPELLMAN3.Energized = e.Device.Value;
                swSpellman3.Energized      = e.Device.Value;
                break;

            case PLC.PLO_SPELLMAN4:
                ledPLO_SPELLMAN4.Energized = e.Device.Value;
                swSpellman4.Energized      = e.Device.Value;
                break;

            case PLC.PLO_SPELLMAN5:
                ledPLO_SPELLMAN5.Energized = e.Device.Value;
                swSpellman5.Energized      = e.Device.Value;
                break;

            case PLC.PLO_SPELLMAN6:
                ledPLO_SPELLMAN6.Energized = e.Device.Value;
                swSpellman6.Energized      = e.Device.Value;
                break;

            case PLC.PLO_FAN_CHB:
                ledPLO_FAN_CHB.Energized = e.Device.Value;
                swChamberFan.Energized   = e.Device.Value;
                break;

            case PLC.PLI_TEMP_CAB:
                string vTempCAB = e.Device.Value.ToString();
                vTempCAB = vTempCAB.Insert(vTempCAB.Length - 1, ".") + "°C";
                this.Invoke((MethodInvoker) delegate { lblTempCAB.Text = vTempCAB; });
                break;

            case PLC.PLI_TEMP_CHB:
                string vTempCHB = e.Device.Value.ToString();
                vTempCHB = vTempCHB.Insert(vTempCHB.Length - 1, ".") + "°C";
                this.Invoke((MethodInvoker) delegate { lblTempCHB.Text = vTempCHB; });
                break;

            case PLC.PLI_UPS_ALARM:
                ledPLI_UPS_ALARM.Energized = !e.Device.Value;
                break;

            case PLC.PLI_UPS_BATTERY:
                ledPLI_UPS_BATTERY.Energized = e.Device.Value;
                break;

            case PLC.PLI_UPS_CHARGE:
                ledPLI_UPS_CHARGE.Energized = e.Device.Value;
                break;

            case PLC.PLI_PWR_TEMP:
                ledPLI_PWR_TEMP.Energized = e.Device.Value;
                break;

            case PLC.PLI_PWR_OUTPUT:
                ledPLI_PWR_OUTPUT.Energized = e.Device.Value;
                break;

            case PLC.PLI_PWR_OVP:
                ledPLI_PWR_OVP.Energized = e.Device.Value;
                break;
            }
        }
コード例 #2
0
        /// <summary>
        /// Handle PLC state changes.
        /// </summary>
        /// <param name="e">Event args.</param>
        private void PLCStateChanged(DeviceChangedArgs e)
        {
            Invoke((MethodInvoker) delegate {
                lblSafe.BackColor  = safe ? Color.LightGreen : Color.LightGray;
                lblHV.BackColor    = hvEnable ? Color.White : Color.LightGray;
                lblXrays.BackColor = xRays ? Color.LightBlue : Color.LightGray;
                lblTest.BackColor  = testing ? Color.Gold : Color.LightGray;
                lblError.BackColor = error ? Color.IndianRed : Color.LightGray;
            });

            switch (e.Device.Name)
            {
            case SAF.inPLC_ERRACK:
                if (e.Device.Value)
                {
                    plc.SetState(SAF.inPLC_ERRACK, false);
                }
                break;

            case SAF.inPLC_RESTART:
                if (e.Device.Value)
                {
                    plc.SetState(SAF.inPLC_RESTART, false);
                }
                break;

            case SAF.SFI_CHB_UNLCK:
                doorLocked = !e.Device.Value;
                break;

            case SAF.SFI_CHB_OPEN:
                doorOpen = e.Device.Value;
                break;

            case SAF.SFI_EMO:
                eStopPressed = !e.Device.Value;
                if (eStopPressed)
                {
                    Pause();
                }
                break;

            case SAF.SFO_LED_SAFE:
                safe = e.Device.Value;
                break;

            case SAF.SFO_LED_XRAYS:
                xRays = e.Device.Value;
                break;

            case SAF.SFO_LED_TESTING:
                testing = e.Device.Value;
                Invoke((MethodInvoker) delegate
                {
                    selected = null;
                    Settings.Default.CurrentlyTesting = testing;
                    Settings.Default.Save();
                });
                break;

            case PLC.PLO_LED_ERROR:
                error = e.Device.Value;
                break;

            case SAF.SFO_HV_PWR:
                _hvEnable = e.Device.Value;
                break;

            case PLC.PLO_PS_PWR:
                _psEnable = e.Device.Value;
                break;

            case PLC.PLI_UPS_BATTERY:
                powerLoss = e.Device.Value;
                if (powerLoss)
                {
                    plc.SetState(PLC.PLO_LED_ERROR, powerLoss);
                    Tools.ShutdownPC();
                }
                break;
            }
        }