public List <ProjectBlockInfo> readPlcBlocksList()
        {
            if (blockList == null)
            {
                blockList = new List <ProjectBlockInfo>();
                foreach (XmlNode subNode in SubNodes)
                {
                    string id      = subNode.Attributes["id"].Value;
                    string tiaType = TiaProject.importTypeInfos[id];

                    if (tiaType == "Siemens.Simatic.PlcLanguages.Model.DataBlockData")
                    {
                        //BlockInterfaceBaseDataSourceId+"-"+
                        var nm = subNode.SelectSingleNode("attribSet[@id='" + TiaProject.CoreAttributesId + "']/attrib[@name='Name']").InnerText;

                        var link = subNode.SelectSingleNode("relation[@id='" + BlockInterfaceBaseDataSourceId + "']/link").InnerText;

                        var payloadNode = ((Step7ProjectV11)this.Project).xmlDoc.SelectSingleNode("root/objects/StorageObject[@instId='" + link.Split('-')[1] + "']");
                        var payload     = payloadNode.SelectSingleNode("attribSet[@id='" + IXmlPartDataId + "']/attrib[@name='PayLoad']").InnerText;

                        var bytes = StringToByteArrayFastest(payload);
                        var txt   = Encoding.ASCII.GetString(bytes);
                        var blk   = new TIAProjectBlockInfo(subNode)
                        {
                            Name = nm, BlockType = PLCBlockType.DB
                        };
                        blockList.Add(blk);
                    }
                    else if (tiaType == "Siemens.Simatic.PlcLanguages.Model.CodeBlockData")
                    {
                        var nm = subNode.SelectSingleNode("attribSet[@id='" + TiaProject.CoreAttributesId + "']/attrib[@name='Name']").InnerText;
                        var tp = subNode.SelectSingleNode("attribSet[@id='" + TiaProject.CoreAttributesId + "']/attrib[@name='Subtype']").InnerText;

                        var typ = PLCBlockType.FC;
                        if (tp == "FB")
                        {
                            typ = PLCBlockType.FB;
                        }

                        var blk = new TIAProjectBlockInfo(subNode)
                        {
                            Name = nm, BlockType = typ
                        };
                        blockList.Add(blk);
                    }
                }
            }

            return(blockList);
        }
Exemple #2
0
        public List <ProjectBlockInfo> readPlcBlocksList()
        {
            if (blockList == null)
            {
                blockList = new List <ProjectBlockInfo>();
                foreach (XmlNode subNode in SubNodes)
                {
                    string id      = subNode.Attributes["id"].Value;
                    string tiaType = TiaProject.importTypeInfos[id];

                    if (tiaType == "Siemens.Simatic.PlcLanguages.Model.DataBlockData")
                    {
                        var nm = subNode.SelectSingleNode("attribSet[@id='" + TiaProject.CoreAttributesId + "']/attrib[@name='Name']").InnerText;

                        var blk = new TIAProjectBlockInfo(subNode)
                        {
                            Name = nm, BlockType = PLCBlockType.DB
                        };
                        blockList.Add(blk);
                    }
                    else if (tiaType == "Siemens.Simatic.PlcLanguages.Model.CodeBlockData")
                    {
                        var nm = subNode.SelectSingleNode("attribSet[@id='" + TiaProject.CoreAttributesId + "']/attrib[@name='Name']").InnerText;
                        var tp = subNode.SelectSingleNode("attribSet[@id='" + TiaProject.CoreAttributesId + "']/attrib[@name='Subtype']").InnerText;

                        var typ = PLCBlockType.FC;
                        if (tp == "FB")
                        {
                            typ = PLCBlockType.FB;
                        }

                        var blk = new TIAProjectBlockInfo(subNode)
                        {
                            Name = nm, BlockType = typ
                        };
                        blockList.Add(blk);
                    }
                }
            }

            return(blockList);
        }