How to update the address information of I/O devices
Requirements
To update the address information of I/O devices in a configuration, an instance of the TwinCAT System Manager must be created, and a configuration must be opened. A call to the ProduceXml method of the "I/O devices" tree item retrieves the current address information of all installed I/O devices (internally by calling the scan devices function). This address information can be used to update a specific I/O device in the configuration.
Procedure
The ProgId "TCatSysManager.TcSysManager" can be used to create an instance of the System Manager that implements the ITcSysManager interface. This interface has a LookupTreeItem method that returns a ITcSmTreeItem pointer to the "I/O Devices" tree item (use the abbreviation "TIID").
Sample (vbscript):
Set tsm = CreateObject("TCatSysManager.TcSysManager")
Call tsm.OpenConfiguration("c:\test.wsm")
Set Item = tsm.LookupTreeItem("TIID")
Set xml = CreateObject("Msxml.DOMDocument")
The following call to Item.ProduceXml scans the installed I/O devices (among other things) and returns a XML string that contains these information that will be stored in the XML document by the method xml.loadXml.
Call xml.loadXml(Item.ProduceXml)
The following line sets a DOM node list object that contains all found devices as DOM nodes
Set devs = xml.selectNodes("TreeItem/DeviceGrpDef/FoundDevices/Device")
For i = 0 To devs.length - 1
If the ItemSubType of the device corresponds to the type of device to update...
If devs(i).selectSingleNode("ItemSubType").nodeTypedValue = 48 Then
' 48 = IODEVICETYPE_FC7500
The AddressInfo node of that device will be extracted
Set ainfo = devs(i).selectSingleNode("AddressInfo")
A ITcSmTreeItem pointer of that device in the configuration will be evaluated
Set dev = tsm.LookupTreeItem("TIID^MyDev")
And finally the address info will be stored to the device
Call dev.ConsumeXml(ainfo.xml)
Call tsm.SaveConfiguration
Exit For
End If
Next
See Also
How to... section, ITcSysManager, LookupTreeItem, ITcSmTreeItem, ConsumeXml, ProduceXml
Built on Tuesday, Mai 01, 2001