Exemple #1
0
    void Awake()
    {
        // Load saved data - make backup for case the file doesn't exist or is misformated
        string[] defaultInputAddresses  = (string[])inputAddresses.Clone();
        string[] defaultOutputAddresses = (string[])outputAddresses.Clone();
        if (!PlcIO.ReadIOAddresses(ref inputAddresses, ref outputAddresses))
        {
            inputAddresses  = defaultInputAddresses;
            outputAddresses = defaultOutputAddresses;
            PlcIO.SaveIOAddresses(inputAddresses, outputAddresses, inputs, outputs); // TODO
        }

        // Duplicate before sorting
        sortedInputAddresses  = (string[])inputAddresses.Clone();
        sortedOutputAddresses = (string[])outputAddresses.Clone();
        sortedInputs          = (PlcInput[])inputs.Clone();
        sortedOutputs         = (PlcOutput[])outputs.Clone();

        // Sort IO by addresses
        Array.Sort(sortedInputAddresses, sortedInputs);
        Array.Sort(sortedOutputAddresses, sortedOutputs);

        // Bind inputs and outputs to this plc
        BindIO(sortedInputs);
        BindIO(sortedOutputs);

        // Convert string addresses to numerical
        intInputAddresses  = ParseAddresses(sortedInputAddresses);
        intOutputAddresses = ParseAddresses(sortedOutputAddresses);

        // Initialize the outputBlocks
        outputBlocks = GetBlocks(intOutputAddresses);
        inputBlocks  = GetBlocks(intInputAddresses);
    }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(tb_Name.Text))
            {
                ShowNotification("Please input name of IO", "ERROR");
                return;
            }
            if (string.IsNullOrEmpty(tb_Address.Text))
            {
                ShowNotification("Please input address of IO", "ERROR");
                return;
            }
            if (comboboxValueType.SelectedItem == null)
            {
                ShowNotification("Please input address of IO", "ERROR");
                return;
            }
            if (comboboxCPUType.SelectedItem == null)
            {
                ShowNotification("Please select a controller!", "ERROR");
                return;
            }
            var selectController = comboboxCPUType.SelectedItem as PLCModel;
            var toAddIO          = new PlcIO()
            {
                Name       = tb_Name.Text,
                Value      = "N/A",
                Address    = tb_Address.Text,
                Type       = (comboboxValueType.SelectedItem as TypeModel).Type,
                Controller = selectController.Address,
                CPUType    = new CpuTypeModel()
                {
                    Type = selectController.CpuType
                },
                PlcId = selectController.Id
            };

            PLCIOList.Add(toAddIO);
            tb_Name.Text               = "";
            tb_Address.Text            = "";
            dialogViewAddIO.Visibility = Visibility.Collapsed;
            ShowNotification("Added new IO!", "INFO", 3000);
        }
Exemple #3
0
        public bool WriteIOToPLC(PlcIO io)
        {
            try
            {
                object valueToWrite = null;
                switch (io.Type)
                {
                case IOTypeConstants.BOOL_TYPE:
                    if (io.WriteValue == "True")
                    {
                        valueToWrite = true;
                    }
                    else
                    {
                        valueToWrite = false;
                    }
                    break;

                case IOTypeConstants.BYTE_TYPE:
                    valueToWrite = byte.Parse(io.WriteValue);
                    break;

                case IOTypeConstants.INT_TYPE:
                    valueToWrite = int.Parse(io.WriteValue);
                    break;

                case IOTypeConstants.FLOAT_TYPE:
                    valueToWrite = float.Parse(io.WriteValue);

                    break;

                case IOTypeConstants.WORD_TYPE:
                    valueToWrite = short.Parse(io.WriteValue);

                    break;
                }
                plc.Write(io.Address, valueToWrite);
                return(true);
            } catch
            {
                return(false);
            }
        }