Exemplo n.º 1
0
        private void buttonSendData_Click(object sender, EventArgs e)
        {
            if (Global.MainPlc != null)                                                                  // Plc variable has been initialized
            {
                if (Global.MainPlc.IsConnected)                                                          // if connection with PLC has been established
                {
                    byte[]    sendData = PrepareDataToSend();                                            // prepare and save data to send
                    ErrorCode _error   = Global.MainPlc.WriteBytes(DataType.DataBlock, 30, 0, sendData); // send data

                    if (_error == ErrorCode.NoError)
                    {
                        var form = new popupPlcConnection("Data sent succesfully", "", true);
                        form.Show();
                    }
                    else
                    {
                        var form = new popupPlcConnection("Data haven't been sent", $"Encountered difficulty:\n{_error}", false);
                        form.Show();
                    }
                }
            }
            else
            {
                var form = new popupPlcConnection("Data haven't been sent", "PLC isn't connected!", false);
                form.Show();
            }
        }
Exemplo n.º 2
0
        private void buttonSendString_Click(object sender, EventArgs e)
        {
            if (reader != null)  // XML file isn't empty
            {
                // send data to PLC
                ErrorCode _e1 = prepareData(reader.fileInfo.Production_area, 270);
                ErrorCode _e2 = prepareData(reader.fileInfo.Machine_type, 526);
                ErrorCode _e3 = prepareData(reader.fileInfo.Machine_type_id, 782);
                ErrorCode _e4 = prepareData(reader.fileInfo.Version, 1038);
                ErrorCode _e5 = prepareData(reader.fileInfo.Environment_version, 1294);
                ErrorCode _e6 = prepareData(reader.fileInfo.Timestamp, 1550);

                // data sent succesfully
                if (_e1 == ErrorCode.NoError && _e2 == ErrorCode.NoError && _e3 == ErrorCode.NoError &&
                    _e4 == ErrorCode.NoError && _e5 == ErrorCode.NoError && _e6 == ErrorCode.NoError)
                {
                    var form = new popupPlcConnection("Data sent succesfully", "", true);
                    form.Show();
                }
                // an error ocurred while sending any if the string
                else
                {
                    var form = new popupPlcConnection("Error occured while sending data", "", false);
                    form.Show();
                }
            }
            // XML file is empty or hasn't been read - send empty strings
            else
            {
                ErrorCode _e1 = prepareData("", 270);
                ErrorCode _e2 = prepareData("", 526);
                ErrorCode _e3 = prepareData("", 782);
                ErrorCode _e4 = prepareData("", 1038);
                ErrorCode _e5 = prepareData("", 1294);
                ErrorCode _e6 = prepareData("", 1550);

                // data sent succesfully
                if (_e1 == ErrorCode.NoError && _e2 == ErrorCode.NoError && _e3 == ErrorCode.NoError &&
                    _e4 == ErrorCode.NoError && _e5 == ErrorCode.NoError && _e6 == ErrorCode.NoError)
                {
                    var form = new popupPlcConnection("Data sent succesfully", "", true);
                    form.Show();
                }
                // an error ocurred while sending any if the string
                else
                {
                    var form = new popupPlcConnection("Error occured while sending data", "Check conncetion with the PLC", false);
                    form.Show();
                }
            }
        }
Exemplo n.º 3
0
        private void buttonSendString_Click(object sender, EventArgs e)
        {
            string _str = textBoxOutputString.Text;                                                              // take save string to variable

            byte[] _bytes     = S7.Net.Types.String.ToByteArray(_str);                                           // convert string to byte[] array
            byte   max_len    = (byte)100;                                                                       // max legth of string
            byte   actual_len = (byte)_str.Length;                                                               // actual length of sent string

            List <byte> Message = new List <byte>();                                                             // create list of bytes

            Message.Add(max_len);                                                                                //
            Message.Add(actual_len);                                                                             //
            Message.AddRange(_bytes);                                                                            //

            if (Global.MainPlc != null)                                                                          // Plc variable has been initialized
            {
                if (Global.MainPlc.IsConnected)                                                                  // Connection with PLC has been established
                {
                    ErrorCode _error = Global.MainPlc.WriteBytes(DataType.DataBlock, 30, 14, Message.ToArray()); // send data

                    if (_error == ErrorCode.NoError)
                    {
                        var form = new popupPlcConnection("Data sent succesfully", "", true);
                        form.Show();
                    }
                    else
                    {
                        var form = new popupPlcConnection("Data haven't been sent", $"Encountered difficulty:\n{_error}", false);
                        form.Show();
                    }
                }
            }
            else
            {
                var form = new popupPlcConnection("Data haven't been sent", $"PLC isn't connected!", false);
                form.Show();
            }
        }
Exemplo n.º 4
0
        private void buttonConnectWithPlc_Click(object sender, EventArgs e)
        {
            // auxiliary boolean variables
            // if all are true then connection can be established
            bool bIP = true, bRack = true, bSlot = true;

            /// choose PLC S71200 if nothing has been chosen
            CpuType type;

            if (comboBoxPlcType.SelectedItem != null)         // if type of PLC has been selected
            {
                type = (CpuType)comboBoxPlcType.SelectedItem; // save chosen type to variable
            }
            else
            {
                // if type of PLC has been selected
                comboBoxPlcType.SelectedItem = S7.Net.CpuType.S71200;   // Select PLC S71200
                type = (CpuType)comboBoxPlcType.SelectedItem;           // save chosen type to variable
            }

            string ipNumber = "";    // stores combined IP number

            // checking if wrong IP number has been typed
            if (textBoxIpFirst.Text == "" || textBoxIpSecond.Text == "" || textBoxIpThird.Text == "" || textBoxIpFourth.Text == "")
            {
                bIP = false;
            }
            else  // if IP has been typed correctly
            {
                ipNumber = textBoxIpFirst.Text + "." + textBoxIpSecond.Text + "." + textBoxIpThird.Text + "." + textBoxIpFourth.Text;
                bIP      = true;
            }

            // if rack number has not been typed correctly
            int  number;
            bool result = Int32.TryParse(textBoxRack.Text, out number);

            if (textBoxRack.Text == "" || result == false || number < 0)
            {
                bRack = false;
            }

            // if rack number has not been typed correctly
            result = Int32.TryParse(textBoxSlot.Text, out number);
            if (textBoxSlot.Text == "" || result == false || number < 0)
            {
                bSlot = false;
            }

            // if everything is OK
            if (bIP && bRack && bSlot)
            {
                // initialize Plc variable
                Global.MainPlc = new Plc(type, ipNumber, Int16.Parse(textBoxRack.Text), Int16.Parse(textBoxSlot.Text));

                ErrorCode _error = Global.MainPlc.Open(); // open connection with physical PLC

                if (_error == ErrorCode.NoError)          // if connection with PLC has been established
                {
                    // create and show a form saying that the connection has been established succesfully
                    var form = new popupPlcConnection("Conncetion with PLC established succesfully", "", true);
                    form.Show();
                }
                else
                {
                    // create and show a form saying that the connection hasn't been established
                    var form = new popupPlcConnection("Conncetion with PLC hasn't been established", "Check for errors in connection or typed parameters!", false);
                    form.Show();
                }
            }
            else    // if a piece of data has been typed incorrectly
            {
                // Create message
                string msgHeader = "Wrong input values!";
                string msgBody   = "";
                if (bIP == false)
                {
                    msgBody += "Assigned IP number is wrong!\n";
                }
                if (bRack == false)
                {
                    msgBody += "Assigned rack number is wrong!\n";
                }
                if (bSlot == false)
                {
                    msgBody += "Assigned slot number is wrong!";
                }

                // create and show a form saying that the connection hasn't been established
                // because sth went wrong
                var form = new popupPlcConnection(msgHeader, msgBody, false);
                form.Show();
            }
        }
Exemplo n.º 5
0
        private void buttonSendToPlc_Click(object sender, EventArgs e)
        {
            if (reader != null && Global.MainPlc != null)
            {
                if (reader.symbolicPoints.symbolic_points_list.Count() == 0)
                {
                    var form = new popupPlcConnection("XML File has no symbolic points", "", false);
                    form.Show();
                }
                else
                {
                    // send amount of symbolic points
                    short count = (short)reader.symbolicPoints.symbolic_points_list.Count();
                    // converting integer to byte[] array and reversing order (S7 uses different notation)
                    byte[] _byte = BitConverter.GetBytes(count);
                    Array.Reverse(_byte);
                    ErrorCode _error = Global.MainPlc.WriteBytes(DataType.DataBlock, 31, 0, _byte);     // send data
                    if (_error == ErrorCode.NoError)
                    {
                        int  DBindex    = 2;
                        bool break_loop = false;
                        for (int i = 0; i < reader.symbolicPoints.symbolic_points_list.Count(); i++)
                        {
                            ErrorCode err1 = prepareData(reader.symbolicPoints.symbolic_points_list[i].Icon_type, DBindex);
                            ErrorCode err2 = prepareData(reader.symbolicPoints.symbolic_points_list[i].Id, DBindex + 10);
                            DBindex += 20;

                            if (err1 != ErrorCode.NoError || err2 != ErrorCode.NoError)
                            {
                                break_loop = true;
                                break;
                            }
                        }

                        if (break_loop)
                        {
                            var form = new popupPlcConnection("Error occured while sending data", $"{(reader.symbolicPoints.symbolic_points_list.Count()-2)/20} of {reader.symbolicPoints.symbolic_points_list.Count()} Symbolic Points have been sent", false);
                            form.Show();
                        }
                        else
                        {
                            var form = new popupPlcConnection("Data sent succesfully", "", true);
                            form.Show();
                        }
                    }
                    else
                    {
                        var form = new popupPlcConnection("Data haven't been sent", $"Encountered difficulty:\n{_error}", false);
                        form.Show();
                    }
                }
            }
            else if (reader == null)
            {
                var form = new popupPlcConnection("An XML file hasn't been uploaded", "Uplad an XML File", false);
                form.Show();
            }
            else if (Global.MainPlc == null)
            {
                var form = new popupPlcConnection("PLC isn't connected", "", false);
                form.Show();
            }
        }