Search code examples
c#siemenstia-portal

What parameter i have to assign inside my variable so i can start it from my Main?


im new to C# and Tia Openness and have an problem. I dont know what parameter goes inside my ImportSingleTextList();.Its an example from Siemens but there is never mentioned how to call it inisde the main. That is my code.

private static void ImportSingleTextList(HmiTarget hmitarget)
        {
            TextListComposition textListsComposition = hmitarget.TextLists;
            IList<TextList> importedTextLists = textListsComposition.Import(new FileInfo(@"D:\SamplesImport\myTextList.xml"), ImportOptions.Override);
        }

Solution

  • Presumably you have a Project instance. You have to drill down from Project->Device->DeviceItem(->DeviceItem) until you find a DeviceItem that can provide a SoftwareContainer service. It may be that all such DeviceItems reside at the first level below Device; I haven't checked. Anyway, here's a method I wrote that searches the first and second DeviceItem levels:

    public static HmiTarget GetHmiTarget(Device hmiDevice)
        {
            //search first level of DeviceItems
            foreach (DeviceItem di in hmiDevice.DeviceItems)
            {
                SoftwareContainer container =
                di.GetService<SoftwareContainer>();
                if (container != null)
                {
                    HmiTarget hmi = container.Software as HmiTarget;
                    if (hmi != null)
                        return hmi;
                }
    
                //search second level of DeviceItems
                foreach (DeviceItem devItem in di.DeviceItems)
                {
                    SoftwareContainer subContainer = devItem.GetService<SoftwareContainer>();
                    if(subContainer != null)
                    {
                        HmiTarget hmi = subContainer.Software as HmiTarget;
                        if (hmi != null)
                            return hmi;
                    }
                }
            }
            return null; //nothing was found at the first or second levels
    
        }
    

    to get the Device, you can use PROJECT.Devices.Find(NAME) where PROJECT is your TIA portal project instance, and NAME is the string name of your HMI device.