private void tryConnect_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            PLCConnection tmpConn = null;

            try
            {
                var backup = myConfig.ConfigurationType;
                myConfig.ConfigurationType = LibNodaveConnectionConfigurationType.ObjectSavedConfiguration;
                tmpConn = new PLCConnection(myConfig);
                myConfig.ConfigurationType = backup;

                tmpConn.Connect();
                changeStatusLabel("Connected!");
                try
                {
                    var szlDat = tmpConn.PLCGetSZL(0x0111, 1);
                    if (szlDat.SZLDaten.Length > 0)
                    {
                        xy11Dataset xy11Szl = szlDat.SZLDaten[0] as xy11Dataset;
                        if (xy11Szl != null)
                        {
                            changeStatusLabel("Connected! (MLFB:" + xy11Szl.MlfB + ")");
                        }
                    }
                }
                catch (Exception ex)
                { }
                tmpConn.Dispose();
            }
            catch (Exception ex)
            {
                changeStatusLabel(ex.Message);
                tmpConn.Dispose();
            }
            finally
            {
                enableCmdTest();
            }
        }
        static void Main(string[] args)
        {
            if (args.Length < 2)
            {
                Console.WriteLine();
                Console.WriteLine("Bitte so starten:");
                Console.WriteLine();
                Console.WriteLine("BackupS7 Configfile Zielverzeichnis");
                Console.WriteLine();
                Console.ReadLine();
            }
            else
            {
                Console.WriteLine();
                Console.WriteLine("Creating Directory...");
                var configFile      = args[0];
                var targetDirectory = Path.Combine(Environment.CurrentDirectory, args[1]);

                var text   = File.ReadAllText(configFile);
                var config = JsonConvert.DeserializeObject <Config>(text);

                Directory.CreateDirectory(targetDirectory);

                Console.WriteLine("Connecting to PLC...");
                var connection = new PLCConnection(new PLCConnectionConfiguration("BackupS7", LibNodaveConnectionConfigurationType.ObjectSavedConfiguration)
                {
                    ConnectionType = LibNodaveConnectionTypes.ISO_over_TCP, CpuIP = config.Ip, CpuRack = config.Rack, CpuSlot = config.Slot
                });
                connection.Connect();

                var szlDat = connection.PLCGetSZL(0x0111, 1);
                if (szlDat.SZLDaten.Length > 0)
                {
                    xy11Dataset xy11Szl = szlDat.SZLDaten[0] as xy11Dataset;
                    if (xy11Szl != null)
                    {
                        Console.WriteLine("Connected, MLFB: " + xy11Szl.MlfB);
                    }
                }

                Console.WriteLine("Read Blocks...");
                var existingBlocks = connection.PLCListBlocks(PLCBlockType.AllEditableBlocks);

                var backupBlocks = new List <string>();
                if (config.BackupBlocks != null)
                {
                    foreach (var b in config.BackupBlocks)
                    {
                        var txt = b.Trim().ToUpper().Replace(" ", "");
                        if (txt.Contains("-"))
                        {
                            var range = txt.Split('-');
                            var type  = range[0].Substring(0, 2);
                            var start = int.Parse(range[0].Substring(2));
                            var end   = int.Parse(range[1].Substring(2));
                            backupBlocks.AddRange(Enumerable.Range(start, (end - start) + 1).Select(x => type + x));
                        }
                        else
                        {
                            backupBlocks.Add(txt);
                        }
                    }
                }

                Console.WriteLine("Backup Blocks...");
                foreach (var b in existingBlocks)
                {
                    bool backUp = false;
                    if (config.BackupType.HasFlag(BackupType.Datablocks) && b.StartsWith("DB"))
                    {
                        backUp = true;
                    }
                    if (config.BackupType.HasFlag(BackupType.Functions) && b.StartsWith("FC"))
                    {
                        backUp = true;
                    }
                    if (config.BackupType.HasFlag(BackupType.FunctionBlocks) && b.StartsWith("FB"))
                    {
                        backUp = true;
                    }
                    if (backupBlocks.Contains(b.ToUpper().Trim()))
                    {
                        backUp = true;
                    }

                    if (backUp)
                    {
                        var blk = connection.PLCGetBlockInMC7(b);

                        string       file = Path.Combine(targetDirectory, b + ".blk");
                        BinaryWriter wrt  = new BinaryWriter(File.Open(file, FileMode.Create));
                        wrt.Write(blk);
                        wrt.Close();
                    }
                }
                connection.Disconnect();
                Console.WriteLine("Finish");
            }
        }