private void timer1_Tick(object sender, EventArgs e)
 {
     try
     {
         if (myConn != null)
         {
             int wrt = progressBar1.Value + 33;
             if (wrt >= 100)
             {
                 progressBar1.Value = 0;
             }
             else
             {
                 progressBar1.Value = wrt;
             }
             myConn.ReadValues(getListVal());
             int i = 0;
             foreach (var akVal in myValues)
             {
                 if (akVal.LibNoDaveValue != null)
                 {
                     dataGridViewVarTab.Rows[i].Cells[3].Value = akVal.LibNoDaveValue.GetValueAsString();
                 }
                 i++;
             }
         }
     }
     catch (Exception ex)
     {
         errtxt.Text = ex.Message;
     }
 }
        public void TestReading3()
        {
            var wrapper = new ConnectionWrapper(480);
            var conn    = new PLCConnection(new PLCConnectionConfiguration(), wrapper);
            var listTag = new List <PLCTag>();

            listTag.Add(new PLCTag("DB781.DBX5.0"));
            listTag.Add(new PLCTag("DB781.DBX7.0"));
            listTag.Add(new PLCTag("DB781.DBX9.0"));
            listTag.Add(new PLCTag("DB781.DBX11.0"));
            listTag.Add(new PLCTag("DB781.DBX13.0"));
            listTag.Add(new PLCTag("DB781.DBX4.2"));
            listTag.Add(new PLCTag("DB781.DBX6.2"));
            listTag.Add(new PLCTag("DB781.DBX8.2"));
            listTag.Add(new PLCTag("DB781.DBX10.2"));
            listTag.Add(new PLCTag("DB781.DBX12.2"));
            listTag.Add(new PLCTag("DB781.DBX3.1"));
            listTag.Add(new PLCTag("DB781.DBX5.1"));
            listTag.Add(new PLCTag("DB781.DBX7.1"));
            listTag.Add(new PLCTag("DB781.DBX9.1"));
            listTag.Add(new PLCTag("DB781.DBX11.1"));
            listTag.Add(new PLCTag("DB781.DBX13.1"));

            conn.ReadValues(listTag, true);
            var    pdus = wrapper.PDUs;
            string req  = string.Join(Environment.NewLine, pdus);
            string t    = "READ  Area:132, DBnum:781, Start:3, Bytes:11";

            Assert.AreEqual(req, t);
        }
Beispiel #3
0
        public void TestReading2()
        {
            var wrapper = new ConnectionWrapper(480);
            var conn    = new PLCConnection(new PLCConnectionConfiguration(), wrapper);
            var listTag = new List <PLCTag>();

            listTag.Add(new PLCTag("DB2.DBB0"));
            listTag.Add(new PLCTag("DB2.DBB1"));
            listTag.Add(new PLCTag("DB2.DBB2"));
            conn.ReadValues(listTag, true);
            var    pdus = wrapper.PDUs;
            string req  = string.Join(Environment.NewLine, pdus);
            string t    = "READ  Area:132, DBnum:2, Start:0, Bytes:3";

            Assert.AreEqual(req, t);
        }
Beispiel #4
0
        private void ReadPlcTagsFromConnection(PLCConnection conn)
        {
            var values = from rw in varTabRows
                         where rw.Connection == conn && rw.LibNoDaveValue != null
                         select rw.LibNoDaveValue;

            if (ReadTagsConfig == 0)
            {
                conn.ReadValues(values);
            }
            else
            {
                var rq = conn.ReadValuesWithVarTabFunctions(values, (PLCTriggerVarTab)ReadTagsConfig + 1);
                rq.RequestData();
            }
        }
        private static void ReadFromNck(string ipAddress = "192.168.214.1")
        {
            using (var con = new PLCConnection("ReadFromNck"))
            {
                con.Configuration.CpuIP   = ipAddress;
                con.Configuration.CpuSlot = 4;
                con.Connect();

                try
                {
                    if (!con.Connected)
                    {
                        con.Connect();
                    }

                    #region Channel 1 R[0]
                    var R0 = con.ReadValue(new NC_Var(0x82, 0x41, 0x1, 0x1, 0x15, 0x1, 0xF, 0x8));
                    Console.WriteLine("R0: {0}", R0);
                    #endregion

                    #region List of R-Parameter
                    var rpa     = new NC_Var(0x82, 0x40, 0x1, 0x0, 0x15, 0x1, 0xF, 0x8);
                    var tags    = new List <PLCNckTag>();
                    int channel = 1;
                    for (int i = 1; i < 10; i++)
                    {
                        tags.Add(rpa.GetNckTag(channel, i));
                        tags.Last().Tag = string.Format("R[{0}]", i - 1);
                    }
                    con.ReadValues(tags);
                    tags.ForEach(f => Console.WriteLine("{0}: {1}", f.Tag, f.Value));
                    #endregion
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debugger.Break();
                }
            }
        }
Beispiel #6
0
        private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {
                myConn.ReadValues(myValues);
                listBox1.Items.Clear();
                listBox1.Items.AddRange(myValues.ToArray());
                cnt++;
                label1.Text = cnt.ToString();


                if (var1.SelectedItem != null && var1.SelectedItem.ToString() != "(none)")
                {
                    chart1.Series["Series1"].Points.Clear();
                    var tmp = (PLCTag)var1.SelectedItem;
                    foreach (var oldValue in tmp.OldValues)
                    {
                        double wrt = (float)Convert.ToDouble(oldValue);
                        chart1.Series["Series1"].Points.AddY(wrt);
                    }
                }

                if (var2.SelectedItem != null && var2.SelectedItem.ToString() != "(none)")
                {
                    chart1.Series["Series2"].Points.Clear();
                    var tmp = (PLCTag)var2.SelectedItem;
                    foreach (var oldValue in tmp.OldValues)
                    {
                        double wrt = (float)Convert.ToDouble(oldValue);
                        chart1.Series["Series2"].Points.AddY(wrt);
                    }
                }
            }
            catch (Exception ex)
            {
                label2.Text = ex.Message;
            }
        }
        public void TestReading7()
        {
            var wrapper = new ConnectionWrapperResult((nr, r) =>
            {
                r[0] = 0;
                r[1] = 5;
                r[2] = 0;
                r[3] = 1;
                r[4] = 0;
                r[5] = 1;
            });
            var conn    = new PLCConnection(new PLCConnectionConfiguration(), wrapper);
            var listTag = new List <PLCTag>();

            listTag.Add(new PLCTag("DB781.DBX0.2"));
            listTag.Add(new PLCTag("DB781.DBX1.0"));
            listTag.Add(new PLCTag("DB781.DBX1.0"));
            listTag.Add(new PLCTag("DB781.DBX1.0"));
            listTag.Add(new PLCTag("DB781.DBX1.2"));
            listTag.Add(new PLCTag("DB781.DBX1.2"));
            listTag.Add(new PLCTag("DB781.DBX1.2"));
            listTag.Add(new PLCTag("DB781.DBX2.2"));
            listTag.Add(new PLCTag("DB781.DBX3.0"));
            listTag.Add(new PLCTag("DB781.DBX3.2"));
            listTag.Add(new PLCTag("DB781.DBX4.2"));
            listTag.Add(new PLCTag("DB781.DBX5.0"));
            listTag.Add(new PLCTag("DB781.DBX5.0"));
            listTag.Add(new PLCTag("DB781.DBX5.0"));
            listTag.Add(new PLCTag("DB781.DBX5.2"));

            conn.ReadValues(listTag, true);
            var    pdus = wrapper.PDUs;
            string req  = string.Join(Environment.NewLine, pdus);
            string t    = "READ  Area:132, DBnum:781, Start:0, Bytes:6";

            Assert.AreEqual(req, t);
        }
Beispiel #8
0
        public static IEnumerable <object> ReadDataFromDataSources(DatasetConfig datasetConfig, IEnumerable <DatasetConfigRow> datasetConfigRows, Dictionary <ConnectionConfig, Object> activConnections, bool StartedAsService)
        {
            var usedConnections = from n in datasetConfigRows
                                  group n by n.Connection into g       //Es wird in das Object g hineingruppiert.
                                  select new { Connection = g.Key };   //n.Connection ist dann g.Key, g ist eine ganze Zeile

            foreach (var usedConnection in usedConnections)
            {
                var tags = from n in datasetConfigRows
                           where n.Connection == usedConnection.Connection
                           select n.PLCTag;
                if (usedConnection.Connection.GetType() == typeof(DatabaseConfig))
                {
                    //Read Data from a Database
                    var dbConn = (DatabaseConnection)activConnections[usedConnection.Connection];

                    var dta = dbConn.ReadData();

                    try
                    {
                        foreach (var plcTag in tags)
                        {
                            plcTag.Value = dta[plcTag.ValueName];
                        }
                    }
                    finally
                    {
                        dta.Close();
                    }
                }
                else if (usedConnection.Connection.GetType() == typeof(LibNoDaveConfig))
                {
                    PLCConnection plcConn = (PLCConnection)activConnections[usedConnection.Connection];

                    if (!plcConn.Connected)
                    {
                        plcConn.Connect();
                    }

                    if (plcConn.Connected)
                    {
                        try
                        {
                            plcConn.ReadValues(tags);
                        }
                        catch (Exception ex)
                        {
                            if (StartedAsService)
                            {
                                Logging.LogText("Error: Exception during ReadData, maybe Connection interupted?", ex, Logging.LogLevel.Error);
                                return(null);
                            }

                            throw;
                        }
                        foreach (var plcTag in tags)
                        {
                            if (plcTag.ItemDoesNotExist)
                            {
                                if (StartedAsService)
                                {
                                    Logging.LogText("Tag does not Exist! " + plcConn.Configuration.ConnectionName + ": " + plcTag.S7FormatAddress, Logging.LogLevel.Error);
                                }
                                else
                                {
                                    throw new Exception("Tag does not Exist! " + plcConn.Configuration.ConnectionName + ": " + plcTag.S7FormatAddress);
                                }
                            }
                        }

                        if (usedConnection.Connection is LibNoDaveConfig)
                        {
                            if (!((LibNoDaveConfig)usedConnection.Connection).StayConnected)
                            {
                                plcConn.Disconnect();
                            }
                        }
                    }
                    else
                    {
                        Logging.LogText("Error: Read Data returned \"null\" maybe a Connection is offline?", Logging.LogLevel.Error);
                        return(null);
                    }
                }
            }

            List <object> retVal = new List <object>();

            foreach (var datasetConfigRow in datasetConfigRows)
            {
                retVal.Add(datasetConfigRow.Value(datasetConfig.UseFloatIfMultiplierIsUsed));
            }

            return(retVal);
        }
Beispiel #9
0
        public void TestReading()
        {
            var wrapper = new ConnectionWrapper(480);
            var conn    = new PLCConnection(new PLCConnectionConfiguration(), wrapper);
            var listTag = new List <PLCTag>();

            listTag.Add(new PLCTag("P#DB60.DBX0 BYTE 300"));
            listTag.Add(new PLCTag("P#DB10.DBX10 BYTE 300"));
            conn.ReadValues(listTag, true);
            var    pdus = wrapper.PDUs;
            string req  = string.Join(Environment.NewLine, pdus);
            string t    =
                @"READ  Area:132, DBnum:10, Start:10, Bytes:300
READ  Area:132, DBnum:60, Start:0, Bytes:300";

            Assert.AreEqual(req.Replace("\r\n", "\n"), t.Replace("\r\n", "\n"));

            //var wrapper2 = new ConnectionWrapper(480);
            //var conn2 = new PLCConnection(new PLCConnectionConfiguration(), wrapper2);
            //var listTag2 = new List<PLCTag>();
            //listTag2.Add(new PLCTag("P#DB60.DBX0 BYTE 300"));
            //listTag2.Add(new PLCTag("P#DB10.DBX10 BYTE 300"));
            //conn2._TestNewReadValues(listTag2, true);
            //var pdus2 = wrapper2.PDUs;
            //string req2 = string.Join(Environment.NewLine, pdus2);
            //string t2 = "READ  Area:132, DBnum:10, Start:10, Bytes:300\r\nREAD  Area:132, DBnum:60, Start:0, Bytes:300";
            //Assert.AreEqual(req2, t2);

            var wrapper3 = new ConnectionWrapper(480);
            var conn3    = new PLCConnection(new PLCConnectionConfiguration(), wrapper3);
            var listTag3 = new List <PLCTag>();

            listTag3.Add(new PLCTag("P#DB60.DBX0 BYTE 300")
            {
                DontSplitValue = false
            });
            listTag3.Add(new PLCTag("P#DB10.DBX10 BYTE 300")
            {
                DontSplitValue = false
            });
            conn3.ReadValues(listTag3, true);
            var    pdus3 = wrapper3.PDUs;
            string req3  = string.Join(Environment.NewLine, pdus3);
            string t3    = "READ  Area:132, DBnum:10, Start:10, Bytes:300\r\nREAD  Area:132, DBnum:60, Start:0, Bytes:140\r\nREAD  Area:132, DBnum:60, Start:140, Bytes:160";

            Assert.AreEqual(req3.Replace("\r\n", "\n"), t3.Replace("\r\n", "\n"));

            var wrapper4 = new ConnectionWrapper(480);
            var conn4    = new PLCConnection(new PLCConnectionConfiguration(), wrapper4);
            var listTag4 = new List <PLCTag>();

            listTag4.Add(new PLCTag("P#DB1.DBX0 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag4.Add(new PLCTag("P#DB1.DBX8 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag4.Add(new PLCTag("P#DB1.DBX10 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag4.Add(new PLCTag("P#DB1.DBX30 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag4.Add(new PLCTag("P#DB1.DBX50 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag4.Add(new PLCTag("P#DB1.DBX80 BYTE 4")
            {
                DontSplitValue = false
            });
            conn4.ReadValues(listTag4, true);
            var    pdus4 = wrapper4.PDUs;
            string req4  = string.Join(Environment.NewLine, pdus4);
            string t4    = "READ  Area:132, DBnum:1, Start:0, Bytes:14\r\nREAD  Area:132, DBnum:1, Start:30, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:50, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:80, Bytes:4";

            Assert.AreEqual(req4.Replace("\r\n", "\n"), t4.Replace("\r\n", "\n"));

            var wrapper5 = new ConnectionWrapper(240);
            var conn5    = new PLCConnection(new PLCConnectionConfiguration(), wrapper5);
            var listTag5 = new List <PLCTag>();

            listTag5.Add(new PLCTag("P#DB1.DBX0 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX8 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX10 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX30 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX50 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX80 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX90 BYTE 30")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX100 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX140 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX160 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX180 BYTE 44")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX230 BYTE 20")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX240 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX250 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX260 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX270 BYTE 4")
            {
                DontSplitValue = false
            });
            conn5.ReadValues(listTag5, true);
            var    pdus5 = wrapper5.PDUs;
            string req5  = string.Join(Environment.NewLine, pdus5);
            string t5    = "READ  Area:132, DBnum:1, Start:0, Bytes:14\r\nREAD  Area:132, DBnum:1, Start:30, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:50, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:80, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:90, Bytes:30\r\nREAD  Area:132, DBnum:1, Start:140, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:160, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:180, Bytes:44\r\nREAD  Area:132, DBnum:1, Start:230, Bytes:24\r\nREAD  Area:132, DBnum:1, Start:260, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:270, Bytes:4";

            Assert.AreEqual(req5.Replace("\r\n", "\n"), t5.Replace("\r\n", "\n"));

            //var tag=new PLCNckTag() { TagDataType = TagDataType.Float, NckArea = 0xa, NckUnit = 0x8,NckColumn = 0x23, NckLine = 0x1,NckModule = 0x1a,NckLinecount = 0x1};
        }
        private void ReadPlcTagsFromConnection(PLCConnection conn)
        {
            var values = from rw in varTabRows
                         where rw.Connection == conn && rw.LibNoDaveValue != null
                         select rw.LibNoDaveValue;

            if (ReadTagsConfig == 0)
                conn.ReadValues(values);
            else
            {
                var rq = conn.ReadValuesWithVarTabFunctions(values, (PLCTriggerVarTab) ReadTagsConfig + 1);
                rq.RequestData();
            }
        }
        public void TestReading()
        {
            var wrapper = new ConnectionWrapper(480);
            var conn    = new PLCConnection(new PLCConnectionConfiguration(), wrapper);
            var listTag = new List <PLCTag>();

            listTag.Add(new PLCTag("P#DB60.DBX0 BYTE 300"));
            listTag.Add(new PLCTag("P#DB10.DBX10 BYTE 300"));
            conn.ReadValues(listTag, true);
            var    pdus = wrapper.PDUs;
            string req  = string.Join(Environment.NewLine, pdus);
            string t    =
                @"READ  Area:132, DBnum:10, Start:10, Bytes:300
READ  Area:132, DBnum:60, Start:0, Bytes:300";

            Assert.AreEqual(req, t);

            var wrapper2 = new ConnectionWrapper(480);
            var conn2    = new PLCConnection(new PLCConnectionConfiguration(), wrapper2);
            var listTag2 = new List <PLCTag>();

            listTag2.Add(new PLCTag("P#DB60.DBX0 BYTE 300"));
            listTag2.Add(new PLCTag("P#DB10.DBX10 BYTE 300"));
            conn2._TestNewReadValues(listTag2, true);
            var    pdus2 = wrapper2.PDUs;
            string req2  = string.Join(Environment.NewLine, pdus2);
            string t2    = "READ  Area:132, DBnum:10, Start:10, Bytes:300\r\nREAD  Area:132, DBnum:60, Start:0, Bytes:300";

            Assert.AreEqual(req2, t2);

            var wrapper3 = new ConnectionWrapper(480);
            var conn3    = new PLCConnection(new PLCConnectionConfiguration(), wrapper3);
            var listTag3 = new List <PLCTag>();

            listTag3.Add(new PLCTag("P#DB60.DBX0 BYTE 300")
            {
                DontSplitValue = false
            });
            listTag3.Add(new PLCTag("P#DB10.DBX10 BYTE 300")
            {
                DontSplitValue = false
            });
            conn3.ReadValues(listTag3, true);
            var    pdus3 = wrapper3.PDUs;
            string req3  = string.Join(Environment.NewLine, pdus3);
            string t3    = "READ  Area:132, DBnum:10, Start:10, Bytes:300\r\nREAD  Area:132, DBnum:60, Start:0, Bytes:140\r\nREAD  Area:132, DBnum:60, Start:140, Bytes:160";

            Assert.AreEqual(req3, t3);

            var wrapper4 = new ConnectionWrapper(480);
            var conn4    = new PLCConnection(new PLCConnectionConfiguration(), wrapper4);
            var listTag4 = new List <PLCTag>();

            listTag4.Add(new PLCTag("P#DB1.DBX0 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag4.Add(new PLCTag("P#DB1.DBX8 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag4.Add(new PLCTag("P#DB1.DBX10 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag4.Add(new PLCTag("P#DB1.DBX30 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag4.Add(new PLCTag("P#DB1.DBX50 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag4.Add(new PLCTag("P#DB1.DBX80 BYTE 4")
            {
                DontSplitValue = false
            });
            conn4.ReadValues(listTag4, true);
            var    pdus4 = wrapper4.PDUs;
            string req4  = string.Join(Environment.NewLine, pdus4);
            string t4    = "READ  Area:132, DBnum:1, Start:0, Bytes:14\r\nREAD  Area:132, DBnum:1, Start:30, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:50, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:80, Bytes:4";

            Assert.AreEqual(req4, t4);

            var wrapper5 = new ConnectionWrapper(240);
            var conn5    = new PLCConnection(new PLCConnectionConfiguration(), wrapper5);
            var listTag5 = new List <PLCTag>();

            listTag5.Add(new PLCTag("P#DB1.DBX0 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX8 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX10 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX30 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX50 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX80 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX90 BYTE 30")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX100 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX140 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX160 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX180 BYTE 44")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX230 BYTE 20")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX240 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX250 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX260 BYTE 4")
            {
                DontSplitValue = false
            });
            listTag5.Add(new PLCTag("P#DB1.DBX270 BYTE 4")
            {
                DontSplitValue = false
            });
            conn5.ReadValues(listTag5, true);
            var    pdus5 = wrapper5.PDUs;
            string req5  = string.Join(Environment.NewLine, pdus5);
            string t5    = "READ  Area:132, DBnum:1, Start:0, Bytes:14\r\nREAD  Area:132, DBnum:1, Start:30, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:50, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:80, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:90, Bytes:30\r\nREAD  Area:132, DBnum:1, Start:140, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:160, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:180, Bytes:44\r\nREAD  Area:132, DBnum:1, Start:230, Bytes:24\r\nREAD  Area:132, DBnum:1, Start:260, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:270, Bytes:4";

            Assert.AreEqual(req5, t5);
        }
        public void TestReading()
        {
            var wrapper = new ConnectionWrapper(480);
            var conn = new PLCConnection(new PLCConnectionConfiguration(), wrapper);
            var listTag = new List<PLCTag>();
            listTag.Add(new PLCTag("P#DB60.DBX0 BYTE 300"));
            listTag.Add(new PLCTag("P#DB10.DBX10 BYTE 300"));
            conn.ReadValues(listTag, true);
            var pdus = wrapper.PDUs;
            string req = string.Join(Environment.NewLine, pdus);
            string t =
            @"READ  Area:132, DBnum:10, Start:10, Bytes:300
            READ  Area:132, DBnum:60, Start:0, Bytes:300";
            Assert.AreEqual(req, t);

            var wrapper2 = new ConnectionWrapper(480);
            var conn2 = new PLCConnection(new PLCConnectionConfiguration(), wrapper2);
            var listTag2 = new List<PLCTag>();
            listTag2.Add(new PLCTag("P#DB60.DBX0 BYTE 300"));
            listTag2.Add(new PLCTag("P#DB10.DBX10 BYTE 300"));
            conn2._TestNewReadValues(listTag2, true);
            var pdus2 = wrapper2.PDUs;
            string req2 = string.Join(Environment.NewLine, pdus2);
            string t2 = "READ  Area:132, DBnum:10, Start:10, Bytes:300\r\nREAD  Area:132, DBnum:60, Start:0, Bytes:300";
            Assert.AreEqual(req2, t2);

            var wrapper3 = new ConnectionWrapper(480);
            var conn3 = new PLCConnection(new PLCConnectionConfiguration(), wrapper3);
            var listTag3 = new List<PLCTag>();
            listTag3.Add(new PLCTag("P#DB60.DBX0 BYTE 300") { DontSplitValue = false });
            listTag3.Add(new PLCTag("P#DB10.DBX10 BYTE 300") { DontSplitValue = false });
            conn3.ReadValues(listTag3, true);
            var pdus3 = wrapper3.PDUs;
            string req3 = string.Join(Environment.NewLine, pdus3);
            string t3 = "READ  Area:132, DBnum:10, Start:10, Bytes:300\r\nREAD  Area:132, DBnum:60, Start:0, Bytes:140\r\nREAD  Area:132, DBnum:60, Start:140, Bytes:160";
            Assert.AreEqual(req3, t3);

            var wrapper4 = new ConnectionWrapper(480);
            var conn4 = new PLCConnection(new PLCConnectionConfiguration(), wrapper4);
            var listTag4 = new List<PLCTag>();
            listTag4.Add(new PLCTag("P#DB1.DBX0 BYTE 4") { DontSplitValue = false });
            listTag4.Add(new PLCTag("P#DB1.DBX8 BYTE 4") { DontSplitValue = false });
            listTag4.Add(new PLCTag("P#DB1.DBX10 BYTE 4") { DontSplitValue = false });
            listTag4.Add(new PLCTag("P#DB1.DBX30 BYTE 4") { DontSplitValue = false });
            listTag4.Add(new PLCTag("P#DB1.DBX50 BYTE 4") { DontSplitValue = false });
            listTag4.Add(new PLCTag("P#DB1.DBX80 BYTE 4") { DontSplitValue = false });
            conn4.ReadValues(listTag4, true);
            var pdus4 = wrapper4.PDUs;
            string req4 = string.Join(Environment.NewLine, pdus4);
            string t4 = "READ  Area:132, DBnum:1, Start:0, Bytes:14\r\nREAD  Area:132, DBnum:1, Start:30, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:50, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:80, Bytes:4";
            Assert.AreEqual(req4, t4);

            var wrapper5 = new ConnectionWrapper(240);
            var conn5 = new PLCConnection(new PLCConnectionConfiguration(), wrapper5);
            var listTag5 = new List<PLCTag>();
            listTag5.Add(new PLCTag("P#DB1.DBX0 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX8 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX10 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX30 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX50 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX80 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX90 BYTE 30") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX100 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX140 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX160 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX180 BYTE 44") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX230 BYTE 20") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX240 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX250 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX260 BYTE 4") { DontSplitValue = false });
            listTag5.Add(new PLCTag("P#DB1.DBX270 BYTE 4") { DontSplitValue = false });
            conn5.ReadValues(listTag5, true);
            var pdus5 = wrapper5.PDUs;
            string req5 = string.Join(Environment.NewLine, pdus5);
            string t5 = "READ  Area:132, DBnum:1, Start:0, Bytes:14\r\nREAD  Area:132, DBnum:1, Start:30, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:50, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:80, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:90, Bytes:30\r\nREAD  Area:132, DBnum:1, Start:140, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:160, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:180, Bytes:44\r\nREAD  Area:132, DBnum:1, Start:230, Bytes:24\r\nREAD  Area:132, DBnum:1, Start:260, Bytes:4\r\nREAD  Area:132, DBnum:1, Start:270, Bytes:4";
            Assert.AreEqual(req5, t5);

            //var tag=new PLCNckTag() { TagDataType = TagDataType.Float, NckArea = 0xa, NckUnit = 0x8,NckColumn = 0x23, NckLine = 0x1,NckModule = 0x1a,NckLinecount = 0x1};
        }
Beispiel #13
0
        private void fetchPLCData_Tick(object sender, EventArgs e)
        {
            if (lblConnected.BackColor == Color.LightGreen)
            {
                lblConnected.BackColor = Color.DarkGray;
            }
            else
            {
                lblConnected.BackColor = Color.LightGreen;
            }

            try
            {
                if (myConn.Connected)
                {
                    /* Get the ScrollViewer des XAML Trees (um scrollposition zu lesen!)... */
                    if (myScrollViewer == null)
                    {
                        DependencyObject tst = VisualTreeHelper.GetChild(dataBlockViewControl.MyTree, 0);
                        while (tst != null && tst.GetType() != typeof(ScrollViewer))
                        {
                            tst = VisualTreeHelper.GetChild(tst, 0);
                        }
                        if (tst != null)
                        {
                            myScrollViewer = (ScrollViewer)tst;
                        }
                    }

                    //nur die angezeigten Values von der SPS lesen...
                    int start = (int)myScrollViewer.VerticalOffset / 20;
                    if (valueList == null || start != oldPos)
                    {
                        List <S7DataRow> tmpLst = S7DataRow.GetChildrowsAsList(expRow);
                        List <S7DataRow> askLst = new List <S7DataRow>();
                        for (int n = 0; n < tmpLst.Count; n++)
                        {
                            if (n >= start && n < start + 24)
                            {
                                askLst.Add(tmpLst[n]);
                            }
                        }
                        valueList = S7DataRow.GetLibnoDaveValues(askLst);
                        oldPos    = start;
                    }
                    myConn.ReadValues(valueList);
                }
                else
                {
                    oldPos                 = 0;
                    myScrollViewer         = null;
                    fetchPLCData.Enabled   = false;
                    valueList              = null;
                    lblConnected.BackColor = Color.DarkGray;
                }
            }
            catch (Exception ex)
            {
                lblStatus.Text = ex.Message;
            }
        }