Example #1
0
        static void Main(string[] args)
        {
            string file       = "";
            string exportPath = "";

            if (args.Count() < 1)
            {
                OpenFileDialog op = new OpenFileDialog();
                op.Filter          = "TIA-Portal Project|*.ap13";
                op.CheckFileExists = false;
                op.ValidateNames   = false;
                var ret = op.ShowDialog();
                if (ret == DialogResult.OK)
                {
                    file = op.FileName;
                }
                else
                {
                    Console.WriteLine("Bitte S7 projekt als Parameter angeben!");
                    return;
                }

                exportPath = Path.GetDirectoryName(file);
                exportPath = Path.GetFullPath(Path.Combine(exportPath, "..\\Export"));
                if (Directory.Exists(exportPath))
                {
                    if (
                        MessageBox.Show(exportPath + " wird gelöscht. Möchten Sie fortfahren?", "Sicherheitsabfrage",
                                        MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        Directory.Delete(exportPath, true);
                    }
                    else
                    {
                        Environment.Exit(-1);
                    }
                }
                Directory.CreateDirectory(exportPath);
            }
            else
            {
                file = args[0];
            }

            Step7ProjectV11 prj = Projects.LoadProject(file, false) as Step7ProjectV11;

            ParseFolder(prj.ProjectStructure, exportPath);
        }
        public TIADataRow(XmlNode Node, Step7ProjectV11 Project, TIABlock Block)
        {
            this.node       = Node;
            this.tiaProject = Project;
            this.block      = Block;

            var    id     = this.node.Attributes["id"].Value;
            string instId = this.node.Attributes["instId"].Value;

            var arrayLowerBounds = this.node.SelectSingleNode("attribSet[@id='" + tiaProject.asId2Names.First(itm => itm.Value == "Siemens.Automation.DomainServices.CommonTypeSystem.IStructureItem").Key + "']/attrib[@name='LowerBounds']/array");

            if (arrayLowerBounds != null && (arrayLowerBounds.Attributes["nil"] == null || arrayLowerBounds.Attributes["nil"].Value != "1"))
            {
                ArrayStart = new List <int>();
                ArrayStop  = new List <int>();
                var arrayUpperBounds = node.SelectSingleNode("attribSet[@id='" + tiaProject.asId2Names.First(itm => itm.Value == "Siemens.Automation.DomainServices.CommonTypeSystem.IStructureItem").Key + "']/attrib[@name='UpperBounds']/array");
                this.IsArray = true;
                foreach (var low in arrayLowerBounds.InnerText.Split(','))
                {
                    ArrayStart.Add(int.Parse(low));
                }
                foreach (var high in arrayUpperBounds.InnerText.Split(','))
                {
                    ArrayStop.Add(int.Parse(high));
                }

                this.node = Project.xmlDoc.SelectSingleNode("root/objects/StorageObject[parentlink[@link='" + id + "-" + instId + "']]");
                id        = this.node.Attributes["id"].Value;
                instId    = this.node.Attributes["instId"].Value;
            }

            var idChildRow = Project.importTypeInfos.First(itm => itm.Value == "Siemens.Simatic.PlcLanguages.Model.StructureItemData").Key;



            var subNodes = Project.xmlDoc.SelectNodes("root/objects/StorageObject[parentlink[@link='" + id + "-" + instId + "']]");

            this.Children = new List <IDataRow>();
            foreach (XmlNode subNode in subNodes)
            {
                if (subNode.Attributes["id"].Value == idChildRow)
                {
                    var row = new TIADataRow(subNode, Project, Block);
                    row.Parent = this;
                    this.Children.Add(row);
                }
            }
        }
        public TIABlocksFolder(Step7ProjectV11 Project, XmlNode Node)
            : base(Project, Node)
        {
            if (IXmlPartDataId == null)
            {
                IXmlPartDataId = Project.asId2Names.FirstOrDefault(itm => itm.Value == "Siemens.Simatic.PlcLanguages.Model.IXmlPartData").Key;
            }

            if (BlockInterfaceBaseDataSourceId == null)
            {
                BlockInterfaceBaseDataSourceId = Project.relationId2Names.FirstOrDefault(itm => itm.Value == "Siemens.Simatic.PlcLanguages.Model.BlockInterfaceBaseData.Source").Key;
            }


            //"Siemens.Simatic.PlcLanguages.Model.StructureItemData"
        }
        public string GetText(CultureInfo cultureInfo, Step7ProjectV11 tiaProject)
        {
            var xmlnode = node.SelectSingleNode("coreText/cultures/culture[@id='" + cultureInfo.LCID + "']");

            if (xmlnode != null)
            {
                var val = xmlnode.Attributes["value"];
                if (val != null)
                {
                    return(val.Value);
                }
            }


            var lidNode = node.SelectSingleNode("attribSet[@id='" + tiaProject.asId2Names.First(itm => itm.Value == "Siemens.Automation.ObjectFrame.ICoreTextExtendedData").Key + "']/attrib[@name='DefaultText']");


            return(lidNode.InnerText);
        }
        private void cmdExport_Click(object sender, RoutedEventArgs e)
        {
            Step7ProjectV11 prj = null;

            try
            {
                prj = new Step7ProjectV11(Properties.Settings.Default.TiaProject, CultureInfo.CurrentCulture);
                ExportStructureItem(prj.ProjectStructure, "");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                if (prj != null)
                {
                    prj.Dispose();
                }
            }
        }
Example #6
0
 public TIACPUFolder(Step7ProjectV11 Project, XmlNode Node) : base(Project, Node)
 {
 }
 public TIADataBlock(Step7ProjectV11 TIAProject, XmlNode Node)
     : base(TIAProject, Node)
 {
 }
 public TIASymTabFolder(Step7ProjectV11 Project, XmlNode Node)
     : base(Project, Node)
 {
     //SymbolTableEntrys = new List<SymbolTableEntry>();
 }
Example #9
0
 public TIABlocksFolder(Step7ProjectV11 Project, XmlNode Node)
     : base(Project, Node)
 {
     //"Siemens.Simatic.PlcLanguages.Model.StructureItemData"
 }
Example #10
0
        private void button4_Click(object sender, EventArgs e)
        {
            var a    = getBytes(-1);
            var wra  = getInt(a, 0);
            var b    = getBytes(-2);
            var wrb  = getInt(b, 0);
            var z    = getBytes(127);
            var wrz  = getInt(z, 0);
            var c    = getBytes(123456789);
            var wrc  = getInt(c, 0);
            var d    = getBytes(254);
            var wrd  = getInt(d, 0);
            var ee   = getBytes(255);
            var wree = getInt(ee, 0);
            var f    = getBytes(256);
            var wrff = getInt(f, 0);
            var g    = getBytes(-127);
            var wrg  = getInt(g, 0);
            var h    = getBytes(-128);
            var wrh  = getInt(h, 0);
            var i    = getBytes(-129);
            var wri  = getInt(i, 0);
            //myConn = new PLCConnection("SimpleCSharpDemonstrationConnection");
            //myConn.Connect();

            //List<PLCTag> listTag = new List<PLCTag>();

            //for (int ii = 0; ii < 300; ii++)
            //    listTag.Add(new PLCTag() { DataBlockNumber = 100, ByteAddress = ii * 2, TagDataType = TagDataType.Word });
            //myConn.ReadValues(listTag);

            //var _tags = new List<PLCTag>();
            //var j = 0;
            //for (var i = 0; i < 96; i++)
            //{
            //    Console.WriteLine("DB1.DBD" + j.ToString(CultureInfo.InvariantCulture));
            //    _tags.Add(new PLCTag("DB1.DBD" + j.ToString(CultureInfo.InvariantCulture))
            //        {
            //            TagDataType = TagDataType.Float
            //        });
            //    j += 4;
            //}
            //myConn.ReadValues(_tags, false);

            //var tag = new PLCTag();
            //tag.TagDataType = TagDataType.Word;
            //tag.SymbolicAccessKey = "8a0e000124134d054000000a";
            //myConn.ReadValue(tag);

            /*tag.Controlvalue = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 88, 1, 2, 3, 4, 5, 6, 7, 8, 9, 77 };
             * myConn.WriteValue(tag);
             * var db = myConn.PLCGetBlockInMC7("DB99");
             * MessageBox.Show("DB:" + Encoding.ASCII.GetString(db));
             * myConn.PLCPutBlockFromMC7toPLC("DB98", db);*/


            var prj          = new Step7ProjectV11("C:\\Users\\jkuehner\\Documents\\Automatisierung\\Projekt2\\Projekt2.ap13");
            var fld          = prj.ProjectStructure as TIAProjectFolder;
            var allFolders   = fld.SubItems.Flatten(x => x.SubItems).Cast <TIAProjectFolder>();
            var blockFolders = allFolders.Where(x => x is TIABlocksFolder).Cast <TIABlocksFolder>();

            foreach (var ffld in blockFolders)
            {
                var blocks = ffld.readPlcBlocksList();
            }
        }
 public TIAProjectFolder(Step7ProjectV11 Project, XmlNode Node)
 {
     this.Project    = Project;
     this.TiaProject = Project;
     this.Node       = Node;
 }
Example #12
0
 public TIACPUFolder(Step7ProjectV11 Project)
     : base(Project)
 {
 }
 public TIABlock(Step7ProjectV11 TIAProject, XmlNode Node)
 {
     this.node       = Node;
     this.tiaProject = TIAProject;
 }
Example #14
0
 public TIAFunctionBlock(Step7ProjectV11 TIAProject, XmlNode Node)
     : base(TIAProject, Node)
 {
 }
Example #15
0
 public TIAProjectFolder(Step7ProjectV11 Project)
 {
     this.Project = Project;
 }