S7 PLCSIM Advanced Function Manual En US
User Manual:
Open the PDF directly: View PDF .
Page Count: 312
Download | |
Open PDF In Browser | View PDF |
S7-PLCSIM Advanced ___________________ Preface 1 ___________________ Guide SIMATIC S7-1500 S7-PLCSIM Advanced Function Manual 2 ___________________ Product overview 3 ___________________ Installing 4 ___________________ Communication paths 5 ___________________ Simulate CPU 6 ___________________ Virtual time response ___________________ 7 User interfaces (API) ___________________ 8 Restrictions ___________________ A List of abbreviations 09/2016 A5E37039512-AA Legal information Warning notice system This manual contains notices you have to observe in order to ensure your personal safety, as well as to prevent damage to property. The notices referring to your personal safety are highlighted in the manual by a safety alert symbol, notices referring only to property damage have no safety alert symbol. These notices shown below are graded according to the degree of danger. DANGER indicates that death or severe personal injury will result if proper precautions are not taken. WARNING indicates that death or severe personal injury may result if proper precautions are not taken. CAUTION indicates that minor personal injury can result if proper precautions are not taken. NOTICE indicates that property damage can result if proper precautions are not taken. If more than one degree of danger is present, the warning notice representing the highest degree of danger will be used. A notice warning of injury to persons with a safety alert symbol may also include a warning relating to property damage. Qualified Personnel The product/system described in this documentation may be operated only by personnel qualified for the specific task in accordance with the relevant documentation, in particular its warning notices and safety instructions. Qualified personnel are those who, based on their training and experience, are capable of identifying risks and avoiding potential hazards when working with these products/systems. Proper use of Siemens products Note the following: WARNING Siemens products may only be used for the applications described in the catalog and in the relevant technical documentation. If products and components from other manufacturers are used, these must be recommended or approved by Siemens. Proper transport, storage, installation, assembly, commissioning, operation and maintenance are required to ensure that the products operate safely and without any problems. The permissible ambient conditions must be complied with. The information in the relevant documentation must be observed. Trademarks All names identified by ® are registered trademarks of Siemens AG. The remaining trademarks in this publication may be trademarks whose use by third parties for their own purposes could violate the rights of the owner. Disclaimer of Liability We have reviewed the contents of this publication to ensure consistency with the hardware and software described. Since variance cannot be precluded entirely, we cannot guarantee full consistency. However, the information in this publication is reviewed regularly and any necessary corrections are included in subsequent editions. Siemens AG Division Digital Factory Postfach 48 48 90026 NÜRNBERG GERMANY A5E37039512-AA Ⓟ 08/2016 Subject to change Copyright © Siemens AG 2016. All rights reserved Preface Purpose of the documentation This function manual describes the simulation software, S7-PLCSIM Advanced V1.0. It enables you to test your CPU programs on a simulated, virtual S7-1500 controller. You can obtain updates to the function manual as downloads on the Internet (https://support.industry.siemens.com/cs/us/en/view/109739154). Scope This function manual is valid for the following order versions ● 6ES7823-1FA00-0YA5 - S7-PLCSIM Advanced V1.0 DVD ● 6ES7823-1FE00-0YA5 - S7-PLCSIM Advanced V1.0 Download The articles each contain one license for one instance. Basic knowledge required The system may only be used by qualified staff. The following knowledge is required: ● Industrial Automation and Automation Technology ● Programming with STEP 7 (TIA Portal) ● SIMATIC CPUs and CPU programming ● PC-based automation using S7-1500 and WinCC Runtime Advanced ● Development of software in C++ and C# ● PC technology ● Windows operating system Conventions Conventions STEP 7: In this documentation, "STEP 7" is used as a synonym for all versions of the configuration and programming software "STEP 7 (TIA Portal)". We also use abbreviate SIMATIC S7-PLCSIM Advanced V1.0 as "PLCSIM Advanced". Please also observe notes marked as follows: Note A note contains important information on the product described in the documentation, on the handling of the product or on the section of the documentation to which particular attention should be paid. S7-PLCSIM Advanced 4 Function Manual, 09/2016, A5E37039512-AA Preface Security information Siemens provides products and solutions with industrial security functions that support the secure operation of plants, systems, machines and networks. In order to protect plants, systems, machines and networks against cyber threats, it is necessary to implement – and continuously maintain – a holistic, state-of-the-art industrial security concept. Siemens’ products and solutions only form one element of such a concept. Customer is responsible to prevent unauthorized access to its plants, systems, machines and networks. Systems, machines and components should only be connected to the enterprise network or the internet if and to the extent necessary and with appropriate security measures (e.g. use of firewalls and network segmentation) in place. Additionally, Siemens’ guidance on appropriate security measures should be taken into account. For more information about industrial security, please visit (http://www.siemens.com/industrialsecurity). Siemens’ products and solutions undergo continuous development to make them more secure. Siemens strongly recommends to apply product updates as soon as available and to always use the latest product versions. Use of product versions that are no longer supported, and failure to apply latest updates may increase customer’s exposure to cyber threats. To stay informed about product updates, subscribe to the Siemens Industrial Security RSS Feed under (http://www.siemens.com/industrialsecurity). S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 5 Table of contents Preface ................................................................................................................................................... 4 1 2 3 4 5 Guide .................................................................................................................................................... 22 1.1 Documentation Guide S7 PLCSIM Advanced ....................................................................... 22 1.2 S7 PLCSIM products ............................................................................................................. 24 Product overview .................................................................................................................................. 25 2.1 What is PLCSIM Advanced?.................................................................................................. 25 2.2 Security for PLCSIM Advanced ............................................................................................. 26 2.3 Simulations support ........................................................................................................... 27 2.4 Supported CPUs .................................................................................................................... 28 2.5 Differences between a simulated and a real CPU ................................................................. 29 2.5.1 Restrictions for all supported CPUs ....................................................................................... 29 2.6 Simulating Motion Control ...................................................................................................... 31 Installing ............................................................................................................................................... 32 3.1 3.1.1 3.1.2 3.1.3 Introduction ............................................................................................................................ 32 System requirements ............................................................................................................. 32 Licenses ................................................................................................................................. 33 Installation log ........................................................................................................................ 34 3.2 Installation medium ................................................................................................................ 35 3.3 Installing PLCSIM Advanced ................................................................................................. 35 3.4 Changing PLCSIM Advanced ................................................................................................ 37 3.5 Repairing PLCSIM Advanced ................................................................................................ 38 3.6 Uninstalling PLCSIM Advanced ............................................................................................. 39 Communication paths ........................................................................................................................... 40 4.1 Local communication ............................................................................................................. 41 4.2 Communication via TCP / IP .................................................................................................. 42 4.3 Enable distributed communication ......................................................................................... 43 Simulate CPU ....................................................................................................................................... 45 5.1 Basic procedure for the simulation......................................................................................... 45 5.2 5.2.1 5.2.2 User interface ......................................................................................................................... 46 S7 PLCSIM Advanced Symbol .............................................................................................. 46 S7 PLCSIM Advanced Control Panel .................................................................................... 46 5.3 Download ............................................................................................................................... 50 5.4 MAC address of the instances ............................................................................................... 52 5.5 Simulate peripheral I/O .......................................................................................................... 53 5.6 5.6.1 5.6.2 Simulate communication ........................................................................................................ 54 Communication services that can be simulated .................................................................... 54 Communication between instances ....................................................................................... 55 5.7 Provide project data offline for simulation .............................................................................. 56 S7-PLCSIM Advanced 6 Function Manual, 09/2016, A5E37039512-AA Table of contents 6 7 Virtual time response ............................................................................................................................ 58 6.1 Speed up and slow down simulation ......................................................................................60 6.2 Stop simulation .......................................................................................................................61 6.3 6.3.1 6.3.2 Synchronize simulation partner ..............................................................................................62 Synchronize simulation partner cycle-controlled ....................................................................62 Synchronize simulation partner time-controlled ......................................................................64 User interfaces (API) ............................................................................................................................. 65 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.1.6 Introduction .............................................................................................................................65 Access to instances ................................................................................................................67 User interfaces (API)...............................................................................................................68 Overview of user interfaces for native C++ ............................................................................69 Overview of user interfaces for managed code ......................................................................73 Overview of data types for native C++....................................................................................76 Overview of data types for managed code .............................................................................77 7.2 7.2.1 7.2.1.1 7.2.1.2 7.2.2 7.2.2.1 Initialize API ............................................................................................................................78 Native C++ ..............................................................................................................................78 InitializeApi() ...........................................................................................................................78 RuntimeApiEntry_Initialize ......................................................................................................79 .NET (C#) ................................................................................................................................80 Initialize ...................................................................................................................................80 7.3 7.3.1 7.3.1.1 7.3.1.2 7.3.1.3 7.3.1.4 7.3.2 7.3.2.1 Shut down API ........................................................................................................................81 Native C++ ..............................................................................................................................81 DestroyInterface() ...................................................................................................................82 RuntimeApiEntry_DestroyInterface .........................................................................................83 FreeApi() .................................................................................................................................84 ShutdownAndFreeApi()...........................................................................................................85 .NET (C#) ................................................................................................................................86 Shut down API ........................................................................................................................86 7.4 Global functions (Native C++) .................................................................................................86 7.5 7.5.1 7.5.2 7.5.3 7.5.4 7.5.4.1 7.5.4.2 API ISimulationRuntimeManager ............................................................................................90 Interfaces - Information and settings ......................................................................................90 Simulation Runtime instances ................................................................................................93 Remote connections .............................................................................................................101 Events ...................................................................................................................................106 OnConfigurationChanged .....................................................................................................106 OnRuntimeManagerLost .......................................................................................................110 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.6.5 7.6.5.1 7.6.5.2 7.6.5.3 7.6.5.4 API IInstances .......................................................................................................................113 Interfaces - Information and settings ....................................................................................113 Controller - Information and settings .....................................................................................119 Operating state .....................................................................................................................127 Tag list ..................................................................................................................................135 I/O access .............................................................................................................................141 I/O access via address - Reading .........................................................................................141 I/O access via address - Writing ...........................................................................................150 I/O access via tag name - Reading .......................................................................................158 I/O access via tag name - Writing .........................................................................................188 S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 7 Table of contents 7.6.6 7.6.7 7.6.8 7.6.8.1 7.6.8.2 7.6.8.3 7.6.8.4 7.6.8.5 Settings for the virtual time .................................................................................................. 218 Cycle control ........................................................................................................................ 221 Events .................................................................................................................................. 227 OnOperatingStateChanged ................................................................................................. 228 OnEndOfCycle ..................................................................................................................... 232 OnConfigurationChanging ................................................................................................... 234 OnConfigurationChanged .................................................................................................... 237 OnLedChanged .................................................................................................................... 239 7.7 7.7.1 7.7.2 7.7.2.1 7.7.3 7.7.3.1 API IRemoteRuntimeManager ............................................................................................. 242 Interfaces - Information and settings.................................................................................... 242 Simulation Runtime instances.............................................................................................. 246 Simulation Runtime instances (remote) ............................................................................... 246 Events .................................................................................................................................. 254 OnConnectionLost ............................................................................................................... 254 7.8 7.8.1 7.8.1.1 7.8.1.2 7.8.2 7.8.2.1 7.8.2.2 7.8.2.3 7.8.2.4 7.8.2.5 7.8.2.6 7.8.2.7 7.8.2.8 7.8.3 7.8.3.1 7.8.3.2 7.8.3.3 7.8.3.4 7.8.3.5 7.8.3.6 7.8.3.7 7.8.3.8 7.8.4 7.8.5 7.8.5.1 7.8.5.2 7.8.6 7.8.6.1 7.8.6.2 7.8.6.3 7.8.6.4 7.8.6.5 7.8.6.6 7.8.6.7 7.8.6.8 7.8.6.9 Data types ............................................................................................................................ 257 DLL import functions (Native C++)....................................................................................... 258 ApiEntry_Initialize ................................................................................................................. 258 ApiEntry_DestroyInterface ................................................................................................... 258 Event callback functions (Native C++) ................................................................................. 259 EventCallback_VOID ........................................................................................................... 259 EventCallback_II_SREC_ST ................................................................................................ 259 EventCallback_II_SREC_ST_SROS_SROS ........................................................................ 260 EventCallback_II_SREC_ST_SRLT_SRLM ......................................................................... 261 EventCallback_II_SREC_ST_INT64_UINT32 ...................................................................... 262 EventCallback_IRRTM ......................................................................................................... 263 EventCallback_SRCC_UINT32_UINT32_INT32 .................................................................. 263 EventCallback_II_SREC_ST_SRICC_UINT32_UINT32_UINT32_UINT32 .......................... 264 Delegate definitions (managed code) .................................................................................. 265 Delegate_Void ...................................................................................................................... 265 Delegate_II_EREC_DT ........................................................................................................ 265 Delegate_II_EREC_DT_EOS_EOS...................................................................................... 266 Delegate_II_EREC_DT_ELT_ELM ....................................................................................... 267 Delegate_II_EREC_DT_INT64_UINT32 .............................................................................. 268 Delegate_IRRTM.................................................................................................................. 269 Delegate_SRCC_UINT32_UINT32_INT32 .......................................................................... 269 Delegate_II_EREC_DT_SRICC_UINT32_UINT32_UINT32_UINT32 .................................. 270 Definitions and constants ..................................................................................................... 271 Unions (Native C++) ............................................................................................................ 272 UIP ....................................................................................................................................... 272 UDataValue .......................................................................................................................... 272 Structures ............................................................................................................................. 274 SDataValue .......................................................................................................................... 274 SDataValueByAddress ........................................................................................................ 276 SDataValueByName ............................................................................................................ 276 SConnectionInfo................................................................................................................... 277 SInstanceInfo ....................................................................................................................... 278 SDimension .......................................................................................................................... 279 STagInfo ............................................................................................................................... 280 SIP ....................................................................................................................................... 282 SIPSuite4 ............................................................................................................................. 283 S7-PLCSIM Advanced 8 Function Manual, 09/2016, A5E37039512-AA Table of contents 7.8.7 7.8.7.1 7.8.7.2 7.8.7.3 7.8.7.4 7.8.7.5 7.8.7.6 7.8.7.7 7.8.7.8 7.8.7.9 7.8.7.10 7.8.7.11 7.8.7.12 7.8.7.13 8 A Enumerations ........................................................................................................................284 ERuntimeErrorCode..............................................................................................................284 EArea ....................................................................................................................................286 EOperatingState ...................................................................................................................287 EOperatingMode ...................................................................................................................288 ECPUType ............................................................................................................................289 ECommunicationInterface ....................................................................................................291 ELEDType .............................................................................................................................292 ELEDMode ............................................................................................................................293 EPrimitiveDataType ..............................................................................................................294 EDataType ............................................................................................................................296 ETagListDetails .....................................................................................................................299 ERuntimeConfigChanged .....................................................................................................300 EInstanceConfigChanged .....................................................................................................300 Restrictions ......................................................................................................................................... 302 8.1 Overview ...............................................................................................................................302 8.2 OPC UA server .....................................................................................................................302 8.3 Web server ............................................................................................................................304 8.4 Restrictions for communications services.............................................................................305 8.5 Restrictions for instructions ...................................................................................................306 8.6 8.6.1 8.6.2 Restrictions with Motion Control ...........................................................................................307 Motion Control resources ......................................................................................................307 Technology modules .............................................................................................................308 8.7 Restrictions to local communication via Softbus ..................................................................308 8.8 Restrictions of security with VMware vSphere Hypervisor (ESXi) ........................................309 8.9 Error with overflow cyclical events ........................................................................................309 8.10 Deviating I/O values in the STEP 7 user program ................................................................310 8.11 Multiple simulations and possible collision of IP addresses .................................................310 8.12 Lacking access to an IP address ..........................................................................................310 8.13 Simulation in standby mode ..................................................................................................310 8.14 Error installing the antivirus software from Kaspersky ..........................................................311 List of abbreviations ............................................................................................................................ 312 S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 9 Table of contents Tables Table 3- 1 Minimum requirements for hardware and software ..................................................................... 32 Table 5- 1 Assignment of the Ethernet interfaces, for example, a CPU 1518-4 PN/DP ............................... 52 Table 5- 2 Supported communication options ............................................................................................... 54 Table 7- 1 Overview of initializing and shutting down API - Native C++ ....................................................... 69 Table 7- 2 Overview of global functions - Native C++ ................................................................................... 69 Table 7- 3 Overview of API ISimulationRuntimeManager functions - Native C++ ........................................ 70 Table 7- 4 Overview of IInstances functions - Native C++ ............................................................................ 70 Table 7- 5 Overview of IRemoteRuntimeManager functions - Native C++ ................................................... 72 Table 7- 6 Overview of initializing and shutting down API - .NET (C#) ......................................................... 73 Table 7- 7 Overview of ISimulationRuntimeManager functions - .NET (C#)................................................. 73 Table 7- 8 Overview of IInstances functions - .NET (C#) .............................................................................. 74 Table 7- 9 Overview of IRemoteRuntimeManager functions - .NET (C#) ..................................................... 75 Table 7- 10 Overview of data types - Native C++ ........................................................................................... 76 Table 7- 11 Overview of data types - .NET (C#) ............................................................................................. 77 Table 7- 12 InitializeApi() - Native C++ ........................................................................................................... 78 Table 7- 13 RuntimeApiEntry_Initialize - Native C++ ...................................................................................... 79 Table 7- 14 Initialize - .NET (C#) ..................................................................................................................... 80 Table 7- 15 DestroyInterface() - Native C++ ................................................................................................... 82 Table 7- 16 RuntimeApiEntry_DestroyInterface() - Native C++ ...................................................................... 83 Table 7- 17 FreeApi() - Native C++ ................................................................................................................. 84 Table 7- 18 ShutdownAndFreeApi() - Native C++ .......................................................................................... 85 Table 7- 19 GetNameOfAreaSection() - Native C++ ....................................................................................... 86 Table 7- 20 GetNameOfCPUType() - Native C++ ........................................................................................... 86 Table 7- 21 GetNameOfCommunicationInterface() - Native C++ ................................................................... 87 Table 7- 22 GetNameOfDataType() - Native C++ ........................................................................................... 87 Table 7- 23 GetNameOfErrorCode() - Native C++ .......................................................................................... 87 Table 7- 24 GetNameOfLEDMode() - Native C++ .......................................................................................... 87 Table 7- 25 GetNameOfLEDType() - Native C++ ........................................................................................... 88 Table 7- 26 GetNameOfOperatingMode() - Native C++ ................................................................................. 88 Table 7- 27 GetNameOfErrorCode() - Native C++ .......................................................................................... 88 Table 7- 28 GetNameOfOperatingState() - Native C++ .................................................................................. 88 Table 7- 29 GetNameOfPrimitiveDataType() - Native C++ ............................................................................. 89 Table 7- 30 GetNameOfTagListDetails() - Native C++ ................................................................................... 89 Table 7- 31 GetNameOfRuntimeConfigChanged() - Native C++ .................................................................... 89 Table 7- 32 GetNameOfInstanceConfigChanged() - Native C++ ................................................................... 89 S7-PLCSIM Advanced 10 Function Manual, 09/2016, A5E37039512-AA Table of contents Table 7- 33 GetVersion() - Native C++ ........................................................................................................... 90 Table 7- 34 Version { get; } - .NET (C#) .......................................................................................................... 90 Table 7- 35 IsInitialized() - Native C++ ............................................................................................................ 91 Table 7- 36 IsInitialized { get; } - .NET (C#) .................................................................................................... 91 Table 7- 37 IsRuntimeManagerAvailable() - Native C++ ................................................................................ 91 Table 7- 38 IsRuntimeManagerAvailable { get; } - .NET (C#) ......................................................................... 91 Table 7- 39 Shutdown() - Native C++ ............................................................................................................. 92 Table 7- 40 Shutdown() - .NET (C#) ............................................................................................................... 92 Table 7- 41 GetRegisteredInstancesCount() - Native C++ ............................................................................. 93 Table 7- 42 GetRegisteredInstanceInfoAt() - Native C++ ............................................................................... 93 Table 7- 43 RegisteredInstanceInfo { get; } - .NET (C#) ................................................................................. 94 Table 7- 44 RegisterInstance() - Native C++ .................................................................................................. 95 Table 7- 45 RegisterInstance() - .NET (C#) .................................................................................................... 96 Table 7- 46 RegisterCustomInstance() - Native C++ ...................................................................................... 97 Table 7- 47 RegisterCustomInstance() - .NET (C#) ........................................................................................ 98 Table 7- 48 CreateInterface() - Native C++..................................................................................................... 99 Table 7- 49 CreateInterface() - .NET (C#) .................................................................................................... 100 Table 7- 50 OpenPort() - Native C++ ............................................................................................................ 101 Table 7- 51 OpenPort() - .NET (C#) .............................................................................................................. 101 Table 7- 52 ClosePort() - Native C++ ............................................................................................................ 102 Table 7- 53 ClosePort() - .NET (C#) ............................................................................................................. 102 Table 7- 54 GetPort() - Native C++ ............................................................................................................... 102 Table 7- 55 Port { get; } - .NET (C#) .............................................................................................................. 102 Table 7- 56 GetRemoteConnectionsCount() - Native C++ ........................................................................... 103 Table 7- 57 GetRemoteConnectionInfoAt()- Native C++ .............................................................................. 103 Table 7- 58 RemoteConnectionInfo { get; } - .NET (C#) ............................................................................... 103 Table 7- 59 RemoteConnect() - Native C++ ................................................................................................. 104 Table 7- 60 RemoteConnect() - .NET (C#) ................................................................................................... 105 Table 7- 61 Events for the ISimulationRuntimeManager interface ............................................................... 106 Table 7- 62 OnConfigurationChanged - .NET (C#) ....................................................................................... 106 Table 7- 63 RegisterOnConfigurationChangedCallback() - Native C++ ....................................................... 107 Table 7- 64 RegisterOnConfigurationChangedEvent() - Native C++ ............................................................ 107 Table 7- 65 RegisterOnConfigurationChangedEvent() - .NET (C#).............................................................. 107 Table 7- 66 UnregisterOnConfigurationChangedCallback() - Native C++ .................................................... 108 Table 7- 67 UnregisterOnConfigurationChangedEvent() - Native C++ ........................................................ 108 Table 7- 68 UnregisterOnConfigurationChangedEvent() - .NET (C#) .......................................................... 108 S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 11 Table of contents Table 7- 69 WaitForOnConfigurationChangedEvent() - Native C++ ............................................................. 109 Table 7- 70 WaitForOnConfigurationChangedEvent - .NET (C#) ................................................................. 109 Table 7- 71 OnRuntimeManagerLost - .NET (C#) ........................................................................................ 110 Table 7- 72 RegisterOnRuntimeManagerLostCallback() - Native C++ ......................................................... 110 Table 7- 73 RegisterOnRuntimeManagerLostEvent() - Native C++ ............................................................. 111 Table 7- 74 RegisterOnRuntimeManagerLostEvent() - .NET (C#) ............................................................... 111 Table 7- 75 UnregisterOnRuntimeManagerLostCallback() - Native C++...................................................... 111 Table 7- 76 UnregisterOnRuntimeManagerLostEvent() - Native C++ .......................................................... 112 Table 7- 77 UnregisterOnRuntimeManagerLostEvent() - .NET (C#) ............................................................ 112 Table 7- 78 WaitForOnRuntimeManagerLostEvent() - Native C++ .............................................................. 112 Table 7- 79 WaitForOnRuntimeManagerLostEvent() - .NET (C#) ................................................................ 112 Table 7- 80 Dispose() - .NET (C#) ................................................................................................................ 113 Table 7- 81 GetID() - Native C++ .................................................................................................................. 113 Table 7- 82 ID { get; } - .NET (C#) ................................................................................................................. 113 Table 7- 83 GetName() - Native C++ ............................................................................................................ 114 Table 7- 84 Name { get; } - .NET (C#) ........................................................................................................... 114 Table 7- 85 GetCPUType() - Native C++ ...................................................................................................... 115 Table 7- 86 SetCPUType() - Native C++....................................................................................................... 115 Table 7- 87 CPUType { get; set; } - .NET (C#) .............................................................................................. 115 Table 7- 88 GetCommunicationInterface() - Native C++............................................................................... 116 Table 7- 89 SetCommunicationInterface() - Native C++ ............................................................................... 116 Table 7- 90 CommunicationInterface { get; set; } - .NET (C#) ...................................................................... 117 Table 7- 91 GetInfo() - Native C++ ................................................................................................................ 117 Table 7- 92 Info { get; } - .NET (C#) .............................................................................................................. 117 Table 7- 93 UnregisterInstance() - Native C++ ............................................................................................. 118 Table 7- 94 UnregisterInstance() - .NET (C#) ............................................................................................... 118 Table 7- 95 GetControllerName() - Native C++ ............................................................................................ 119 Table 7- 96 ControllerName { get; } - .NET (C#) ........................................................................................... 119 Table 7- 97 GetControllerShortDesignation() - Native C++ .......................................................................... 120 Table 7- 98 ControllerShortDesignation { get; } - .NET (C#) ......................................................................... 120 Table 7- 99 GetControllerIPCount() - Native C++ ......................................................................................... 120 Table 7- 100 GetControllerIP() - Native C++ ................................................................................................... 121 Table 7- 101 ControllerIP { get; } - .NET (C#) ................................................................................................. 121 Table 7- 102 GetControllerIPSuite4() Native C++ ........................................................................................... 121 Table 7- 103 ControllerIPSuite4 { get; } - .NET (#) .......................................................................................... 121 Table 7- 104 SetIPSuite() - Native C++........................................................................................................... 122 S7-PLCSIM Advanced 12 Function Manual, 09/2016, A5E37039512-AA Table of contents Table 7- 105 SetIPSuite() - .NET (C#) ............................................................................................................ 122 Table 7- 106 GetStoragePath() - Native C++.................................................................................................. 123 Table 7- 107 SetStoragePath() - Native C++ .................................................................................................. 124 Table 7- 108 StoragePath { get; set; } - .NET (C#) ......................................................................................... 124 Table 7- 109 ArchiveStorage() - Native C++ ................................................................................................... 125 Table 7- 110 ArchiveStorage() - .NET (C#)..................................................................................................... 125 Table 7- 111 RetrieveStorage() - Native C++ ................................................................................................. 126 Table 7- 112 RetrieveStorage() - .NET (C#) ................................................................................................... 126 Table 7- 113 GetOperatingState() - Native C++ ............................................................................................. 127 Table 7- 114 OperatingState { get; } - .NET (C#) ............................................................................................ 128 Table 7- 115 PowerOn() - Native C++ ............................................................................................................ 129 Table 7- 116 PowerOn() - .NET (C#) .............................................................................................................. 130 Table 7- 117 PowerOff() - Native C++ ............................................................................................................ 131 Table 7- 118 PowerOff() - .NET (C#) .............................................................................................................. 131 Table 7- 119 MemoryReset() - Native C++ ..................................................................................................... 132 Table 7- 120 MemoryReset() - .NET (C#) ....................................................................................................... 132 Table 7- 121 Run() - Native C++ ..................................................................................................................... 133 Table 7- 122 Run() - .NET (C#) ....................................................................................................................... 133 Table 7- 123 Stop() - Native C++ .................................................................................................................... 134 Table 7- 124 Stop() - .NET (C#) ...................................................................................................................... 134 Table 7- 125 UpdateTagList() - Native C++ .................................................................................................... 136 Table 7- 126 UpdateTagList() - .NET (C#) ...................................................................................................... 137 Table 7- 127 GetTagListStatus() - Native C++................................................................................................ 138 Table 7- 128 GetTagListStatus() - .NET (C#) ................................................................................................. 138 Table 7- 129 GetTagInfoCount() - Native C++ ................................................................................................ 138 Table 7- 130 GetTagInfos() - Native C++ ........................................................................................................ 139 Table 7- 131 TagInfos { get; } - .NET (C#) ...................................................................................................... 139 Table 7- 132 CreateConfigurationFile() - Native C++ ..................................................................................... 140 Table 7- 133 CreateConfigurationFile() - .NET (C#) ....................................................................................... 140 Table 7- 134 InputArea { get; } MarkerArea { get; } OutputArea { get; } - .NET (C#) ...................................... 141 Table 7- 135 GetAreaSize() - Native C++ ....................................................................................................... 141 Table 7- 136 AreaSize { get; } - .NET (C#)...................................................................................................... 141 Table 7- 137 ReadBit() - Native C++ ............................................................................................................... 142 Table 7- 138 ReadBit() - .NET (C#) ................................................................................................................ 143 Table 7- 139 ReadByte() - Native C++ ............................................................................................................ 144 Table 7- 140 ReadByte() - .NET (C#) ............................................................................................................. 145 S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 13 Table of contents Table 7- 141 ReadByte() - Native C++ ............................................................................................................ 146 Table 7- 142 ReadBytes() - .NET (C#) ............................................................................................................ 147 Table 7- 143 ReadSignals() - Native C++ ....................................................................................................... 148 Table 7- 144 ReadSignals() - .NET (C#) ......................................................................................................... 149 Table 7- 145 WriteBit() - Native C++ ............................................................................................................... 150 Table 7- 146 WriteBit() - .NET (C#) ................................................................................................................. 151 Table 7- 147 WriteByte() - Native C++ ............................................................................................................ 152 Table 7- 148 WriteByte() - .NET (C#) .............................................................................................................. 153 Table 7- 149 WriteBytes() - Native C++ .......................................................................................................... 154 Table 7- 150 WriteBytes() - .NET (C#) ............................................................................................................ 155 Table 7- 151 WriteSignals() - Native C++ ....................................................................................................... 156 Table 7- 152 WriteSignals() - .NET (C#) ......................................................................................................... 157 Table 7- 153 Read() - Native C++ ................................................................................................................... 158 Table 7- 154 Read() - .NET (C#) ..................................................................................................................... 159 Table 7- 155 ReadBool() - Native C++ ............................................................................................................ 160 Table 7- 156 ReadBool() - .NET (C#).............................................................................................................. 161 Table 7- 157 ReadInt8() - Native C++ ............................................................................................................. 162 Table 7- 158 ReadInt8() - .NET (C#) ............................................................................................................... 163 Table 7- 159 ReadInt16() - Native C++ ........................................................................................................... 164 Table 7- 160 ReadInt16() - .NET (C#) ............................................................................................................. 165 Table 7- 161 ReadInt32() - Native C++ ........................................................................................................... 166 Table 7- 162 ReadInt32() - .NET (C#) ............................................................................................................. 167 Table 7- 163 ReadInt64() - Native C++ ........................................................................................................... 168 Table 7- 164 ReadInt64() - .NET (C#) ............................................................................................................. 169 Table 7- 165 ReadUInt8() - Native C++ .......................................................................................................... 170 Table 7- 166 ReadUInt8() - .NET (C#) ............................................................................................................ 171 Table 7- 167 ReadUInt16() - Native C++ ........................................................................................................ 172 Table 7- 168 ReadUInt16() - .NET (C#) .......................................................................................................... 173 Table 7- 169 ReadUInt32() - Native C++ ........................................................................................................ 174 Table 7- 170 ReadUInt32() - .NET (C#) .......................................................................................................... 175 Table 7- 171 ReadInt64() - Native C++ ........................................................................................................... 176 Table 7- 172 ReadUInt64() - .NET (C#) .......................................................................................................... 177 Table 7- 173 ReadFloat() - Native C++ ........................................................................................................... 178 Table 7- 174 ReadFloat() - .NET (C#) ............................................................................................................. 179 Table 7- 175 ReadDouble() - Native C++........................................................................................................ 180 Table 7- 176 ReadDouble() - .NET (C#) ......................................................................................................... 181 S7-PLCSIM Advanced 14 Function Manual, 09/2016, A5E37039512-AA Table of contents Table 7- 177 ReadChar() - Native C++ ........................................................................................................... 182 Table 7- 178 ReadChar() - .NET (C#) ............................................................................................................. 183 Table 7- 179 ReadWChar() - Native C++ ........................................................................................................ 184 Table 7- 180 ReadWChar() - .NET (C#) ......................................................................................................... 185 Table 7- 181 ReadSignals() - Native C++ ....................................................................................................... 186 Table 7- 182 ReadSignals() - .NET (C#) ......................................................................................................... 187 Table 7- 183 Write() - Native C++ ................................................................................................................... 188 Table 7- 184 Write() - .NET (C#) ..................................................................................................................... 189 Table 7- 185 WriteBool() - Native C++ ............................................................................................................ 190 Table 7- 186 WriteBool() - .NET (C#) .............................................................................................................. 191 Table 7- 187 WriteInt8() - Native C++ ............................................................................................................. 192 Table 7- 188 WriteInt8() - .NET (C#) ............................................................................................................... 193 Table 7- 189 WriteInt16() - Native C++ ........................................................................................................... 194 Table 7- 190 WriteInt16() - .NET (C#) ............................................................................................................. 195 Table 7- 191 WriteInt32() - Native C++ ........................................................................................................... 196 Table 7- 192 WriteInt32() - .NET (C#) ............................................................................................................. 197 Table 7- 193 WriteInt64() - Native C++ ........................................................................................................... 198 Table 7- 194 WriteInt64() - .NET (C#) ............................................................................................................. 199 Table 7- 195 WriteUInt8() - Native C++ .......................................................................................................... 200 Table 7- 196 WriteUInt8() - .NET (C#) ............................................................................................................ 201 Table 7- 197 WriteUInt16() - Native C++ ........................................................................................................ 202 Table 7- 198 WriteUInt16() - .NET (C#) .......................................................................................................... 203 Table 7- 199 WriteUInt32() - Native C++ ........................................................................................................ 204 Table 7- 200 WriteUInt32() - .NET (C#) .......................................................................................................... 205 Table 7- 201 WriteUInt64() - Native C++ ........................................................................................................ 206 Table 7- 202 WriteUInt64() - .NET (C#) .......................................................................................................... 207 Table 7- 203 WriteFloat() - Native C++ ........................................................................................................... 208 Table 7- 204 WriteFloat() - .NET (C#) ............................................................................................................. 209 Table 7- 205 WriteDouble() - Native C++ ........................................................................................................ 210 Table 7- 206 WriteDouble() - .NET (C#) ......................................................................................................... 211 Table 7- 207 WriteChar() - Native C++ ........................................................................................................... 212 Table 7- 208 WriteChar() - .NET (C#) ............................................................................................................. 213 Table 7- 209 WriteWChar() - Native C++ ........................................................................................................ 214 Table 7- 210 WriteWChar() - .NET (C#) .......................................................................................................... 215 Table 7- 211 WriteSignals() - Native C++ ....................................................................................................... 216 Table 7- 212 WriteSignals() - .NET (C#) ......................................................................................................... 217 S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 15 Table of contents Table 7- 213 GetSystemTime() - Native C++ .................................................................................................. 218 Table 7- 214 SetSystemTime() - Native C++ .................................................................................................. 218 Table 7- 215 SystemTime { get; set; } - .NET (C#) ......................................................................................... 218 Table 7- 216 GetScaleFactor() - Native C++ .................................................................................................. 219 Table 7- 217 SetScaleFactor() - Native C++ ................................................................................................... 219 Table 7- 218 ScaleFactor { get; set; } - .NET (C#) .......................................................................................... 220 Table 7- 219 GetOperatingMode() - Native C++ ............................................................................................. 221 Table 7- 220 SetOperatingMode() - Native C++ ............................................................................................. 221 Table 7- 221 OperatingMode { get; set; } - .NET (C#) ..................................................................................... 221 Table 7- 222 SetAlwaysSendOnEndOfCycleEnabled() - Native C++ ............................................................. 222 Table 7- 223 IsAlwaysSendOnEndOfCycleEnabled() - Native C++ ............................................................... 222 Table 7- 224 IsAlwaysSendOnEndOfCycleEnabled { get; set; } - .NET (C#) ................................................. 222 Table 7- 225 GetOverwrittenMinimalCycleTime_ns() - Native C++ ................................................................ 223 Table 7- 226 SetOverwrittenMinimalCycleTime_ns() - Native C++ ................................................................ 223 Table 7- 227 OverwrittenMinimalCycleTime_ns { get; set; } - .NET (C#) ........................................................ 224 Table 7- 228 RunNextCycle() - Native C++..................................................................................................... 225 Table 7- 229 RunNextCycle() - .NET (C#) ...................................................................................................... 225 Table 7- 230 StartProcessing() - Native C++ .................................................................................................. 226 Table 7- 231 StartProcessing() - .NET (C#) .................................................................................................... 226 Table 7- 232 Events for the IInstances interface ............................................................................................. 227 Table 7- 233 OnOperatingStateChanged - .NET (C#) .................................................................................... 228 Table 7- 234 RegisterOnOperatingStateChangedCallback() - Native C++ .................................................... 228 Table 7- 235 RegisterOnOperatingStateChangedEvent() - Native C++ ......................................................... 229 Table 7- 236 UnregisterOnOperatingStateChangedCallback() - Native C++ ................................................. 230 Table 7- 237 UnregisterOnOperatingStateChangedEvent() - Native C++ ...................................................... 231 Table 7- 238 UnregisterOnOperatingStateChangedEvent() - .NET (C#)........................................................ 231 Table 7- 239 WaitForOnOperatingStateChangedEvent() - Native C++ .......................................................... 231 Table 7- 240 WaitForOnOperatingStateChangedEvent() - .NET (C#) ............................................................ 231 Table 7- 241 OnEndOfCycle - .NET (C#) ........................................................................................................ 232 Table 7- 242 RegisterOnEndOfCycleCallback() - Native C++ ........................................................................ 232 Table 7- 243 RegisterOnEndOfCycleEvent() - Native C++ ............................................................................. 232 Table 7- 244 UnregisterOnEndOfCycleCallback() - Native C++ ..................................................................... 233 Table 7- 245 RegisterOnEndOfCycleEvent() - Native C++ ............................................................................. 233 Table 7- 246 UnregisterOnEndOfCycleEvent() - .NET (C#) ........................................................................... 233 Table 7- 247 WaitForOnEndOfCycleEvent() - Native C++.............................................................................. 234 Table 7- 248 WaitForOnEndOfCycleEvent() - .NET (C#) ............................................................................... 234 S7-PLCSIM Advanced 16 Function Manual, 09/2016, A5E37039512-AA Table of contents Table 7- 249 OnConfigurationChanging - .NET (C#) ...................................................................................... 234 Table 7- 250 RegisterOnConfigurationChangingCallback() - Native C++ ...................................................... 235 Table 7- 251 RegisterOnConfigurationChangingEvent() - Native C++ ........................................................... 235 Table 7- 252 UnregisterOnConfigurationChangingCallback() - Native C++ ................................................... 235 Table 7- 253 UnregisterOnConfigurationChangingEvent() - Native C++ ........................................................ 236 Table 7- 254 UnregisterOnConfigurationChangingEvent() - .NET (C#).......................................................... 236 Table 7- 255 WaitForOnConfigurationChangingEvent() - Native C++ ............................................................ 236 Table 7- 256 WaitForOnConfigurationChangingEvent() - .NET (C#).............................................................. 236 Table 7- 257 OnConfigurationChanged - .NET (C#) ....................................................................................... 237 Table 7- 258 RegisterOnConfigurationChangedCallback() - Native C++ ....................................................... 237 Table 7- 259 RegisterOnConfigurationChangedEvent() - Native C++ ............................................................ 237 Table 7- 260 UnregisterOnConfigurationChangedCallback() - Native C++ .................................................... 238 Table 7- 261 UnregisterOnConfigurationChangedEvent() - Native C++ ........................................................ 238 Table 7- 262 UnregisterOnConfigurationChangedEvent() - .NET (C#) .......................................................... 238 Table 7- 263 WaitForOnConfigurationChangedEvent() - Native C++............................................................. 239 Table 7- 264 WaitForOnConfigurationChangedEvent() - .NET (C#) .............................................................. 239 Table 7- 265 OnLedChanged - .NET (C#) ...................................................................................................... 239 Table 7- 266 RegisterOnLedChangedCallback() - Native C++....................................................................... 240 Table 7- 267 RegisterOnLedChangedEvent() - Native C++ ........................................................................... 240 Table 7- 268 UnregisterOnLedChangedCallback() - Native C++ ................................................................... 240 Table 7- 269 UnregisterOnLedChangedEvent() - Native C++ ........................................................................ 241 Table 7- 270 UnregisterOnLedChangedEvent() - .NET (C#) .......................................................................... 241 Table 7- 271 WaitForOnLedChangedEvent() - Native C++ ............................................................................ 241 Table 7- 272 WaitForOnLedChangedEvent() - .NET (C#) .............................................................................. 241 Table 7- 273 Dispose() - .NET (C#) ................................................................................................................ 242 Table 7- 274 GetVersion() - Native C++ ......................................................................................................... 242 Table 7- 275 Version { get; } - .NET (C#) ........................................................................................................ 242 Table 7- 276 GetIP() - Native C++ .................................................................................................................. 243 Table 7- 277 IP { get; } - .NET (C#) ................................................................................................................. 243 Table 7- 278 GetPort() - Native C++ ............................................................................................................... 243 Table 7- 279 Port { get; } - .NET (C#) .............................................................................................................. 243 Table 7- 280 GetRemoteComputerName() - Native C++ ............................................................................... 244 Table 7- 281 RemoteComputerName { get; } - .NET (C#) .............................................................................. 244 Table 7- 282 Disconnect() - Native C++ .......................................................................................................... 245 Table 7- 283 Disconnect() - .NET (C#) ........................................................................................................... 245 Table 7- 284 GetRegisteredInstancesCount() - Native C++ ........................................................................... 246 S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 17 Table of contents Table 7- 285 GetRegisteredInstanceInfoAt() - Native C++ ............................................................................. 246 Table 7- 286 RegisterInstanceInfo { get; } - .NET (C#) ................................................................................... 247 Table 7- 287 RegisterInstance() - Native C++ ................................................................................................ 248 Table 7- 288 RegisterInstance() - .NET (C#) .................................................................................................. 249 Table 7- 289 RegisterCustomInstance() - Native C++ .................................................................................... 250 Table 7- 290 RegisterCustomInstance() - .NET (C#) ...................................................................................... 251 Table 7- 291 CreateInterface() - Native C++ ................................................................................................... 252 Table 7- 292 CreateInterface() - .NET (C#)..................................................................................................... 253 Table 7- 293 OnConnectionLost - .NET (C#) .................................................................................................. 254 Table 7- 294 RegisterOnConnectionLostCallback() - Native C++ .................................................................. 254 Table 7- 295 RegisterOnConnectionLostEvent() - Native C++ ....................................................................... 255 Table 7- 296 RegisterOnConnectionLostEvent() - .NET (C#) ......................................................................... 255 Table 7- 297 UnregisterOnConnectionLostCallback() - Native C++ ............................................................... 255 Table 7- 298 UnregisterOnConnectionLostEvent() - Native C++ .................................................................... 256 Table 7- 299 UnregisterOnConnectionLostEvent() - .NET (C#) ..................................................................... 256 Table 7- 300 WaitForOnConnectionLostEvent() - Native C++ ........................................................................ 256 Table 7- 301 WaitForOnConnectionLostEvent() - .NET (C#).......................................................................... 256 Table 7- 302 ApiEntry_Initialize - Native C++ ................................................................................................. 258 Table 7- 303 ApiEntry_DestroyInterface - Native C++ .................................................................................... 258 Table 7- 304 EventCallback_VOID - Native C++ ............................................................................................ 259 Table 7- 305 EventCallback_II_SREC_ST - Native C++ ................................................................................. 259 Table 7- 306 EventCallback_II_SREC_ST_SROS_SROS - Native C++ ......................................................... 260 Table 7- 307 EventCallback_II_SREC_ST_SRLT_SRLM - Native C++ .......................................................... 261 Table 7- 308 EventCallback_II_SREC_ST_INT64_UINT32 - Native C++ ....................................................... 262 Table 7- 309 EventCallback_IRRTM - Native C++ .......................................................................................... 263 Table 7- 310 EventCallback_SRCC_UINT32_UINT32_INT32 - Native C++................................................... 263 Table 7- 311 EventCallback_II_SREC_ST_SRICC_UINT32_UINT32_UINT32_UINT32 - Native C++........... 264 Table 7- 312 Delegate_Void - .NET (C#) ........................................................................................................ 265 Table 7- 313 Delegate_II_EREC_DT - .NET (C#) ........................................................................................... 265 Table 7- 314 Delegate_II_EREC_DT_EOS_EOS - .NET (C#) ........................................................................ 266 Table 7- 315 Delegate_II_EREC_DT_ELT_ELM - .NET (C#) ......................................................................... 267 Table 7- 316 Delegate_II_EREC_DT_INT64_UINT32 - .NET (C#) ................................................................. 268 Table 7- 317 Delegate_IRRTM - .NET (C#) .................................................................................................... 269 Table 7- 318 Delegate_SRCC_UINT32_UINT32_INT32 - .NET (C#) ............................................................. 269 Table 7- 319 Delegate_II_EREC_DT_SRICC_UINT32_UINT32_UINT32_UINT32 - .NET (C#) ..................... 270 Table 7- 320 Definitions and constants - Native C++ ...................................................................................... 271 S7-PLCSIM Advanced 18 Function Manual, 09/2016, A5E37039512-AA Table of contents Table 7- 321 Definitions and constants - .NET (C#) ....................................................................................... 271 Table 7- 322 UIP - Native C++ ........................................................................................................................ 272 Table 7- 323 UDataValue - Native C++ .......................................................................................................... 272 Table 7- 324 SDataValue - Native C++ ........................................................................................................... 274 Table 7- 325 SDataValue - .NET (C#) ............................................................................................................ 274 Table 7- 326 SDataValueByAddress - Native C++ ......................................................................................... 276 Table 7- 327 SDataValueByAddress - .NET (C#) ........................................................................................... 276 Table 7- 328 SDataValueByName - Native C++ ............................................................................................. 276 Table 7- 329 SDataValueByName - .NET (C#)............................................................................................... 276 Table 7- 330 SConnectionInfo - Native C++ ................................................................................................... 277 Table 7- 331 SConnectionInfo - .NET (C#) ..................................................................................................... 277 Table 7- 332 SInstanceInfo - Native C++ ........................................................................................................ 278 Table 7- 333 SInstanceInfo - .NET (C#) .......................................................................................................... 278 Table 7- 334 SDimension - Native C++ .......................................................................................................... 279 Table 7- 335 SDimension - .NET (C#) ............................................................................................................ 279 Table 7- 336 STagInfo - Native C++ ............................................................................................................... 280 Table 7- 337 STagInfo - .NET (C#) ................................................................................................................. 281 Table 7- 338 SIP - .NET (C#) .......................................................................................................................... 282 Table 7- 339 SIPSuite4 - Native C++ .............................................................................................................. 283 Table 7- 340 SIPSuite4 - .NET (C#) ................................................................................................................ 283 Table 7- 341 ERuntimeErrorCode - Native C++ ............................................................................................. 284 Table 7- 342 ERuntimeErrorCode - .NET (C#) ............................................................................................... 285 Table 7- 343 EArea - Native C++ .................................................................................................................... 286 Table 7- 344 EArea - .NET (C#) ...................................................................................................................... 286 Table 7- 345 EOperatingState - Native C++ ................................................................................................... 287 Table 7- 346 EOperatingState - .NET (C#) ..................................................................................................... 287 Table 7- 347 EOperatingMode - Native C++................................................................................................... 288 Table 7- 348 EOperatingMode - .NET (C#) .................................................................................................... 288 Table 7- 349 ECPUType - Native C++ ............................................................................................................ 289 Table 7- 350 ECPUType - .NET (C#) .............................................................................................................. 290 Table 7- 351 ECommunicationInterface - Native C++ .................................................................................... 291 Table 7- 352 ECommunicationInterface - .NET (C#) ...................................................................................... 291 Table 7- 353 ELEDType - Native C++ ............................................................................................................ 292 Table 7- 354 ELEDType - .NET (C#) .............................................................................................................. 292 Table 7- 355 ELEDMode - Native C++ ........................................................................................................... 293 Table 7- 356 ELEDMode - .NET (C#) ............................................................................................................. 293 S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 19 Table of contents Table 7- 357 EPrimitiveDataType - Native C++ .............................................................................................. 294 Table 7- 358 EPrimitiveDataType - .NET (C#) ................................................................................................ 294 Table 7- 359 Compatible primitive data types - Reading ................................................................................ 295 Table 7- 360 Compatible primitive data types - Write ..................................................................................... 295 Table 7- 361 EDataType - Native C++ ............................................................................................................ 297 Table 7- 362 EDataType - .NET (C#) .............................................................................................................. 298 Table 7- 363 ETagListDetails - Native C++ ..................................................................................................... 299 Table 7- 364 ETagListDetails - .NET (C#)....................................................................................................... 299 Table 7- 365 ERuntimeConfigChanged - Native C++ ..................................................................................... 300 Table 7- 366 ERuntimeConfigChanged - .NET (C#) ....................................................................................... 300 Table 7- 367 EInstanceConfigChanged - Native C++ ..................................................................................... 300 Table 7- 368 EInstanceConfigChanged - .NET (C#) ....................................................................................... 300 Table 8- 1 Instructions not supported .......................................................................................................... 306 Table 8- 2 CPUs with limited Motion Control resources.............................................................................. 307 Figures Figure 2-1 Enable simulation capability ......................................................................................................... 27 Figure 4-1 Local communication via Softbus ................................................................................................ 41 Figure 4-2 Local communication via TCP/IP ................................................................................................. 42 Figure 4-3 Distributed communication via Ethernet ...................................................................................... 42 Figure 4-4 Distributed communication via network adapters ........................................................................ 43 Figure 4-5 Activate PLCSIM Virtual Switch ................................................................................................... 44 Figure 4-6 Accessible devices on the Virtual Ethernet Adapter .................................................................... 44 Figure 5-1 PLCSIM Advanced Symbol .......................................................................................................... 46 Figure 5-2 Example: Message in the taskbar ................................................................................................ 46 Figure 5-3 Control Panel ............................................................................................................................... 48 Figure 5-4 Example: Download via the "PLCSIM Virtual Ethernet Adapter" (TCP/IP) after naming............. 51 Figure 5-5 Structure of the MAC address for an instance ............................................................................. 52 Figure 5-6 Add card reader ........................................................................................................................... 56 Figure 5-7 Preview of download dialog ......................................................................................................... 57 Figure 7-1 External applications and Simulation Runtime............................................................................. 66 Figure 7-2 Access to instances with distributed communication ................................................................... 67 Figure 7-3 API and external applications....................................................................................................... 68 Figure 8-1 Policy exceptions for VMware vSphere Hypervisor (ESXi) ........................................................ 309 S7-PLCSIM Advanced 20 Function Manual, 09/2016, A5E37039512-AA Table of contents S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 21 1 Guide 1.1 Documentation Guide S7 PLCSIM Advanced The documentation for the SIMATIC S7-1500 automation system and the SIMATIC ET 200SP distributed I/O system is arranged into three areas. Basic information System manuals and Getting Started describe in detail the configuration, installation, wiring and commissioning of the SIMATIC S7-1500 and ET 200SP systems. The STEP 7 online help supports you in configuration and programming. Device information Product manuals contain a compact description of the module-specific information, such as properties, terminal diagrams, characteristics and technical specifications. General information The function manuals contain detailed descriptions on general topics such as diagnostics, communication, Motion Control, Web server, OPC UA. You can download the documentation free of charge from the Internet (http://w3.siemens.com/mcms/industrial-automation-systems-simatic/en/manualoverview/Pages/Default.aspx). Changes and additions to the manuals are documented in product information sheets. You will find the product information on the Internet: ● S7-1500 (https://support.industry.siemens.com/cs/us/en/view/68052815) ● ET 200SP (https://support.industry.siemens.com/cs/us/en/view/73021864) Manual Collections The Manual Collections contain the complete documentation of the systems put together in one file. You will find the Manual Collections on the Internet: ● S7-1500 (https://support.industry.siemens.com/cs/ww/en/view/86140384) ● ET 200SP (https://support.industry.siemens.com/cs/ww/en/view/84133942) S7-PLCSIM Advanced 22 Function Manual, 09/2016, A5E37039512-AA Guide 1.1 Documentation Guide S7 PLCSIM Advanced "mySupport" With "mySupport", your personal workspace, you make the best out of your Industry Online Support. In "mySupport", you can save filters, favorites and tags, request CAx data and compile your personal library in the Documentation area. In addition, your data is already filled out in support requests and you can get an overview of your current requests at any time. You must register once to use the full functionality of "mySupport". You can find "mySupport" on the Internet (http://support.industry.siemens.com/My/ww/en/documentation). "mySupport" - Documentation In the Documentation area in "mySupport" you can combine entire manuals or only parts of these to your own manual. You can export the manual as PDF file or in a format that can be edited later. You can find "mySupport" - Documentation on the Internet (https://support.industry.siemens.com/My/ww/en/). Application examples The application examples support you with various tools and examples for solving your automation tasks. Solutions are shown in interplay with multiple components in the system separated from the focus on individual products. You will find the application examples on the Internet (https://support.industry.siemens.com/sc/ww/en/sc/2054). TIA Selection Tool The TIA Selection Tool can be used to select, configure and order devices for Totally Integrated Automation (TIA). It assembles the configuration editors for automation technology already familiar into a single tool. With the TIA Selection Tool, you can generate a complete order list from your product selection or product configuration. You can find the TIA Selection Tool on the Internet (http://w3.siemens.com/mcms/topics/en/simatic/tia-selection-tool). S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 23 Guide 1.2 S7 PLCSIM products 1.2 S7 PLCSIM products S7 PLCSIM Advanced The version of S7-PLCSIM Advanced supports the following SIMATIC CPU series: ● S7-1500, S7-1500F, S7-1500C, S7-1500T and S7-1500TF ● ET 200SP and ET 200SP F Communication S7-PLCSIM Advanced supports communication via Softbus or TCP/IP. S7 PLCSIM Advanced enables C++ and C# programs and simulation software to access SIMATIC CPU series supported by S7-PLCSIM Advanced via the user interface (API). S7-PLCSIM Advanced and S7-PLCSIM V12 cannot be installed on the same PC or the same virtual machine. The communication between the two applications cannot be simulated. S7-PLCSIM V5.4 SP7 is automatically installed with S7-PLCSIM Advanced. The communication between the two applications can be simulated. S7-PLCSIM V14 The version of S7-PLCSIM supports the following SIMATIC CPU series: ● S7-1200 and S7-1200F ● S7-1500, S7-1500F, S7-1500C, S7-1500T and S7-1500TF ● ET 200SP and ET 200SP F Communication S7-PLCSIM V14 supports communication via Softbus. S7-PLCSIM V5.x S7-PLCSIM V5.x simulates the following SIMATIC CPU series: ● S7-300 and S7-300F ● S7-400 and S7-400F S7-PLCSIM V5.x cannot be installed on the same PC or the same virtual machine S7-PLCSIM as of V12. S7-PLCSIM V5.4 SP7 is automatically installed with S7-PLCSIM Advanced. Communication S7 PLCSIM V5.x can communicate via Softbus with instances of S7-PLCSIM as of V12. S7-PLCSIM V5.4 SP7 can communicate via Softbus with instances of S7-PLCSIM Advanced. S7-PLCSIM Advanced 24 Function Manual, 09/2016, A5E37039512-AA Product overview 2.1 2 What is PLCSIM Advanced? Simulation systems support the development of programs and the deployment in production that follows. In the automation world, a simulated test environment shortens commissioning times. It is possible to test the program after program changes in the virtual controller before it is loaded into the corresponding real controller and the plant is put into operation. S7 PLCSIM Advanced Using S7-PLCSIM Advanced, you can simulate your CPU programs on a virtual controller. You do not need a real controller for this. You can configure your CPU in STEP 7 V14, program your application logic and then load the hardware configuration and the program into the virtual controller. From there you can run your program logic, observe the effects of simulated inputs and outputs and adapt your programs. In addition to communicating via Softbus, S7-PLCSIM Advanced provides a full Ethernet connection and can thus also communicate distributed. User interface (API) S7 PLCSIM Advanced enables interaction with native C++/C# programs or software via the user interface. Application areas ● Software in the Loop-Simulation for virtual commissioning of machine tools ● In combination with third-party software: – Simulation of production machines and plants – Combined simulation of automation and mechanics Advantages The use of S7 PLCSIM Advanced offers numerous advantages: ● Improve quality of automation projects ● Accelerate time to market ● Reduce production times ● Reduce risk for commissioning ● Avoid costs for hardware in simulation environments ● Increase efficiency in maintenance S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 25 Product overview 2.2 Security for PLCSIM Advanced 2.2 Security for PLCSIM Advanced Restrictions for security Note the following restrictions when using PLCSIM Advanced: Authentication ● The user interfaces (API) do not have options for authentication and authorization. There is no protection using user accounts and passwords. ● The Runtime Manager communication is not protected by authentication. Communication ● The multi-computer simulation communication is not encrypted. ● A TCP/IP port is opened on the PC for cross-network communication. ● The installed WinPCap component provides access to TCP/IP network communication. Note For cross-computer communication, it is recommended to use a closed simulation network that is not connected to a production network. Know-how protection Note If know-how-protected blocks for the simulation support are enabled, the know-how protection is limited. S7-PLCSIM Advanced 26 Function Manual, 09/2016, A5E37039512-AA Product overview 2.3 Simulations support 2.3 Simulations support Requirement for simulation Note Enable simulation capability To use a STEP 7 project with simulation, you must select the "Support simulation during block compilation" option in the "Protection" tab in the project properties. Figure 2-1 Enable simulation capability Know-how protection If a know-how-protected block is to be used for the simulation, it must be unlocked by entering a password, to enable the "Simulation with SIMATIC S7-PLCSIM Advanced" option to be unlocked in the properties of the block in the tab "General > Compilation". Global libraries You cannot use know-how protection with global libraries, because the libraries are writeprotected. The "Simulation with SIMATIC S7-PLCSIM Advanced" option must be set when generating the blocks (source of the blocks). S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 27 Product overview 2.4 Supported CPUs 2.4 Supported CPUs Supported CPUs from the S7-1500 family S7-PLCSIM Advanced V1.0 supports the simulation of the following CPUs (all firmware versions, V2.0 recommended): Type Standard CPUs Fail-safe CPUs Compact CPUs1 ET 200SP CPUs Technology CPUs CPU 1511-1 PN CPU 1513-1 PN CPU 1515-2 PN CPU 1516-3 PN/DP CPU 1517-3 PN/DP3 CPU 1518-4 PN/DP3 CPU 1518-4 PN/DP ODK2, 3 CPU 1511F-1 PN CPU 1513F-1 PN CPU 1515F-2 PN CPU 1516F-3 PN/DP CPU 1517F-3 PN/DP3 CPU 1518F-4 PN/DP3 CPU 1518F-4 PN/DP ODK2, 3 CPU 1511C-1 PN CPU 1512C-1 PN CPU 1510SP-1 PN CPU 1510SP F-1 PN CPU 1512SP-1 PN CPU 1512SP F-1 PN CPU 1511T-1 PN CPU 1515T-2 PN CPU 1517T-3 PN/DP3, 4 CPU 1517TF-3 PN/DP3, 4 Article number 6ES7511-1AK01-0AB0 6ES7513-1AL01-0AB0 6ES7515-2AM01-0AB0 6ES7516-3AN01-0AB0 6ES7517-3AP00-0AB0 6ES7518-4AP00-0AB0 6ES7518-4AP00-3AB0 6ES7511-1FK01-0AB0 6ES7513-1FL01-0AB0 6ES7515-2FM01-0AB0 6ES7516-3FN01-0AB0 6ES7517-3FP00-0AB0 6ES7518-4FP00-0AB0 6ES7518-4FP00-3AB0 6ES7511-1CK00-0AB0 6ES7512-1CK00-0AB0 6ES7510-1DJ01-0AB0 6ES7512-1SJ01-0AB0 6ES7512-1DK01-0AB0 6ES7512-1SK01-0AB0 6ES7511-1TK01-0AB0 6ES7515-2TM01-0AB0 6ES7517-3TP00-0AB0 6ES7517-3UP00-0AB0 1 The on-board I/O within the compact CPUs is not simulated. The simulation interface corresponds to the process image. 2 The ODK functionality of this CPU is not simulated. 3 The simulation of this CPU only supports 5120 Motion Control resources. 4 The simulation of this CPU supports only 64 cams. Unsupported CPUs S7-PLCSIM Advanced V1.0 does not support the simulation of the following CPUs: ● S7-1200 CPUs ● ET 200pro, ET 200pro F CPUs ● ET 200SP Open Controller CPU 1515SP PC ● Software Controller S7-PLCSIM Advanced 28 Function Manual, 09/2016, A5E37039512-AA Product overview 2.5 Differences between a simulated and a real CPU 2.5 Differences between a simulated and a real CPU The virtual controller cannot fully simulate a real CPU down to the individual details. Even if a program is downloaded without errors to the CPU and running successfully, this does not necessarily mean that the virtual controller in the simulation behaves exactly like a real CPU. Deterministic S7-PLCSIM Advanced runs on a PC with the Windows operating system. Therefore, the scan cycle time and the exact time of actions in S7-PLCSIM Advanced are not the same as when these actions run on physical hardware. This is because that several programs share the processing resources on your PC. If your program depends heavily on the time required to execute actions, then make sure that you do not evaluate your program based only on the results of the simulation time. Know-how protection Projects with know-how protected blocks can only be simulated when they are enabled for simulation. You need the block password for this purpose. Instructions Instructions are simulated with a few exceptions, for example, interrupts. Programs that are based on the instructions behave different than real CPUs in the simulation. See also Restrictions for instructions (Page 306) 2.5.1 Restrictions for all supported CPUs I/O S7-PLCSIM Advanced simulates the real CPU, but not configured I/O modules and the onboard I/O of the compact CPUs. Bus systems S7-PLCSIM Advanced does not simulate bus systems (PROFINET IO, PROFIBUS DP, backplane bus). Process image partitions S7-PLCSIM Advanced always updates the address areas of the process image at the cycle control point. Process image partitions between two cycle control points are not updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 29 Product overview 2.5 Differences between a simulated and a real CPU Diagnostics S7-PLCSIM Advanced cannot simulate the complete range of all the possible diagnostic buffer entries, for example, no entries that affect the real hardware. Most I/O and program errors are simulated. Online and diagnostic functions Some online and diagnostic functions are not very useful in the simulation and are therefore not supported. These include, for example, the functions "Format memory card" and "Firmware update". Status indicators LED flashing In STEP 7, you can have the LED displayed on an CPU flash using the "Extended download to device" dialog. S7-PLCSIM Advanced does not simulate this function. Data logging S7-PLCSIM Advanced does not simulated data logging, because this function writes all output to the SD memory card and S7-PLCSIM Advanced does not support the use of an SD memory card. Recipes S7-PLCSIM Advanced does not simulate the use of recipes. Backup and Restore S7-PLCSIM Advanced does not simulate the product property "Backup and Restore". Limited support S7-PLCSIM Advanced simulates some functions to a limited extent. You can find an overview in the section Restrictions (Page 302). S7-PLCSIM Advanced 30 Function Manual, 09/2016, A5E37039512-AA Product overview 2.6 Simulating Motion Control 2.6 Simulating Motion Control Restrictions PLCSIM Advanced supports STEP 7 projects with configurations and functions for motion control for the CPUs S7-1500, S7-1500F, S7-1500C, S7-1500T, S7-1500T F, ET 200SP and ET 200SP F. PLCSIM Advanced provides only limited support for technology objects in some CPUs, see Restrictions with Motion Control (Page 307). Simulation with external simulation software In a virtual S7-1500 controller, the technology objects are connected to the process image. Simulation software can thus access the process image via the user interfaces (API) of S7PLCSIM Advanced and simulate the behavior of the other connected axes. Simulation mode in STEP 7 The simulation mode is a standard function of the technology objects. If you want to move an axis in simulation mode, select the "Activate simulation" check box in STEP 7 under "Technology Object > Configuration> Basic Parameters > Simulation". No additional setting is required for a virtual axis. Feedback of the axis position The speed setpoint of the simulated drive is integrated into the actual position value with a time delay (PT1). The result of this calculation is returned to the technology object as position actual value of the axis. Reference point approach of the axis If you selected "Use zero mark via PROFIdrive frame" in STEP 7 for the reference point approach, PLCSIM Advanced responds immediately to any active (mode 2, 3, 8) or passive (mode 4, 5) reference point approach command (MC_Home). The actual position is predefined as the reference point. Additional information Information on "Setting in the drive and encoder connection" for actual value calculation of a virtual axis and on the topic "Virtual axis/Simulation" is available in the S7-1500T Motion Control (https://support.industry.siemens.com/cs/ww/en/view/109481326) function manual. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 31 3 Installing 3.1 Introduction 3.1.1 System requirements You need high-performance computer hardware if you intend to run multiple instances of PLCSIM Advanced at the same time or to simulate communication between PLCSIM Advanced V1.0 and HMI devices as of version 14.0. Minimum requirements for hardware and software Preferably, you should install PLCSIM Advanced on a stand-alone PC, independent of STEP 7. Alternatively, you can install PLCSIM Advanced on the configuration PC on which STEP 7 is already installed. For PLCSIM Advanced to operate efficiently, the computer hardware and software must meet minimum requirements. Table 3- 1 Minimum requirements for hardware and software Hardware / software Requirement Processor 2.2 GHz Intel® Celeron® Dual Core RAM • 4 GB for one instance • 8 GB for 4 instances Free hard disk space 5 GB Operating system • 64-bit version Windows 7 Home Premium SP1 • Windows 7 Professional SP1 • Windows 7 Enterprise SP1 • Windows 7 Ultimate SP1 • Windows Server 2012 R2 StdE (full installation) Screen resolution 1024 x 768 Note Make sure that the Windows operating system you are using is up to date. S7-PLCSIM Advanced 32 Function Manual, 09/2016, A5E37039512-AA Installing 3.1 Introduction Virtualization platforms You can install STEP 7 and PLCSIM Advanced on a virtual machine. For this purpose, use one of the following virtualization platforms in the specified version or a newer version: ● VMware vSphere Hypervisor (ESXi) 6.0 ● VMware Workstation 12 Pro ● VMware Workstation Player 12 ● Microsoft Windows Server 2012 R2 Hyper-V Guest operating systems You can use the following guest operating systems on the selected virtualization platform for the installation of STEP 7 V14 and PLCSIM Advanced: ● Windows 7 Professional SP1 / Ultimate SP1 / Enterprise SP1 (64-Bit) ● Windows Server 2012 R2 (64-Bit) 3.1.2 Licenses Floating license S7 PLCSIM Advanced is supplied with a floating type license. These can be stored locally and shared for a network. Note A floating license is valid for one instance of a virtual controller within a PLCSIM Advanced installation. Handling licenses You can learn how to handle the licenses for S7 PLCSIM Advanced instances on the DVD in the description of the SIMATIC Automation License Manager (ALM). API functions for licenses ● Return values for API function PowerOn() (Page 127) and callback function OnOperatingStateChanged (Page 228) – SREC_OK when a license is available. – SREC_WARNING_TRIAL_MODE_ACTIVE when no license is available, and an instance is started in a mode that allows unrestricted use of the instance for one hour. ● Return value for callback function OnOperatingStateChanged – SREC_LICENSE_NOT_FOUND when the instance is automatically shut down after expiration of the Trial mode. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 33 Installing 3.1 Introduction Warning in spite of existing license Note A check is made for the presence of a license at power-up and after one hour during which you can test an instance without restriction (Trial Mode). When you import a license in the meantime, SREC_WARNING_TRIAL_MODE_ACTIVE is returned nevertheless. 3.1.3 Installation log The log files contains automatically recorded information on the following installation processes: ● Installation of S7-PLCSIM Advanced ● Change or update of installation of S7-PLCSIM Advanced ● Repair of an existing installation of S7-PLCSIM Advanced ● Uninstallation of S7-PLCSIM Advanced You can evaluate installation errors and warnings using the log files. You can troubleshoot the installation yourself or contact Siemens Technical Support. Product Support personnel need information from the installation log to analyze the problem. Send the folder with the log files as a ZIP file to Support. Memory location of the installation log The memory location of the log file depends on the operating system. To open the folder with the log files, enter the environment variable "%autinstlog%" in the address bar in Windows Explorer. Alternatively, you reach the appropriate directory by entering "cd %autinstlog%" in the command line. The log files are named as follows: ● SIA_S7-PLCSIM_Advanced_V01@.log ● SIA_S7-PLCSIM_Advanced_V01@ _summary.log Setup_Report (CAB file) An archive file with the installation log and all other required files is stored in CAB format. This archive file can be found at "%autinstlog%\Reports\Setup_report.cab". If you need help during installation, send this CAB file to SIEMENS Technical Support. Technical Support personnel can troubleshoot your installation based on the information in the CAB file. A separate CAB file with a date ID is saved for each installation. S7-PLCSIM Advanced 34 Function Manual, 09/2016, A5E37039512-AA Installing 3.2 Installation medium 3.2 Installation medium After installing S7-PLCSIM Advanced, keep the installation medium in a secure, easily accessible place. You can use the installation medium to change, repair or uninstall, if necessary. 3.3 Installing PLCSIM Advanced S7-PLCSIM Advanced starts the installation automatically when you insert the installation medium in your DVD drive. Installation requirements Make sure that the following conditions are met before you begin the installation process: ● The hardware and software of the PC or Siemens Field PG meet the system requirements. ● The person who performs the installation has administrator rights on the respective computer. ● No other programs are active. This also applies to the Siemens Automation License Manager and other Siemens applications. ● All S7-PLCSIM versions V12 and higher are uninstalled. Note Security settings For licensing via the ALM, when installing PLCSIM Advanced you must agree that port 4410 for TCP can be entered as an exception in the Windows Firewall (procedure step 7). S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 35 Installing 3.3 Installing PLCSIM Advanced Installing S7-PLCSIM Advanced To install PLCSIM Advanced, follow these steps: 1. Insert the installation medium into the DVD drive of your computer. The setup program is automatically started, provided you have not deactivated the Autostart function on the Field PG or PC. If the setup program does not start up automatically, start it manually by double-clicking the "Start.exe" file. The "General settings" window is displayed. 2. The check box for the English is selected. 3. Click the "Read installation notes" button to display installation information. After you have read the notes, close the file. 4. Click the "Read Product Information" button to display the "Readme file". After you have read the information, close the file. 5. Click the "Browse" button if you want to change the default installation path. The installation path must not exceed 89 characters. The path name must not contain any UNICODE characters. If you select a different installation path than the default installation path, the desktop icon may not be displayed correctly. 6. Click "Next". The window with the security settings is displayed. To continue the installation, select the check box at the bottom of the screen to accept changes to the security and permissions settings of your system. 7. Click "Next". The window with the installation settings is displayed. You can save or print a report of the settings by clicking "Save report" or "Print report". Check the settings for correctness. If you want to make any changes, click "Back" until you reach the point in the installation process where you want to make changes. Once you have completed your changes, click "Next". 8. Your installation details are displayed in the overview screen. Click the "Install" button. The installation is then started and PLCSIM Advanced is installed on your computer. 9. After completion of the setup program, you must restart your computer. Select "Yes, I want to restart the computer now" to restart the computer immediately or select "No, I will restart computer later" to restart the computer later. 10.Click "Restart". If the computer is not restarted, click "Finish". Error during installation of S7-PLCSIM Advanced When S7-PLCSIM Advanced is installed, any existing installation of S7-PLCSIM is displayed. A requirement for installation of S7-PLCSIM Advanced is that no other S7-PLCSIM installation is located on the same computer. Even though no installation of S7-PLCSIM is displayed in the "Programs and Features" list, it is still possible that the computer has an existing installation. Remedy Run the setup for S7-PLCSIM V12 or V12 SP1 and uninstall the program. When the setup is not available, download the setup files for S7-PLCSIM via Siemens Mall (https://support.industry.siemens.com/cs/document/65601780). S7-PLCSIM Advanced 36 Function Manual, 09/2016, A5E37039512-AA Installing 3.4 Changing PLCSIM Advanced 3.4 Changing PLCSIM Advanced Requirements for changing the installation The following conditions must be met before you can start changing the installation: ● The hardware and software of the computer meet the system requirements. ● You have administrator rights on the installation computer. ● No other programs are active. Procedure for changing the installation To change your PLCSIM Advanced installation, follow these steps: 1. Insert the installation medium into the drive. The setup program starts up automatically, provided you have not deactivated the Autostart function on the Field PG or PC. If the setup program does not start up automatically, start it manually by double-clicking the "Start.exe" file. 2. Follow the prompts until you reach the "Configuration" window. 3. Select the "Change upgrade" check box. 4. Follow the remaining prompts to change your installation. 5. Complete the installation operation by restarting your computer. Note Target directory You cannot change the target directory because you are changing an existing installation. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 37 Installing 3.5 Repairing PLCSIM Advanced 3.5 Repairing PLCSIM Advanced If your installation becomes damaged, you can repair it with the PLCSIM Advanced data storage medium. Requirements for repairing the installation The following conditions must be met before you can start repairing the installation: ● The hardware and software meet the system requirements. ● You have administrator rights on the installation computer. ● No other programs are active. Procedure for repairing the installation To repair your installation, follow these steps: 1. Insert the installation medium into the drive. The setup program is automatically started, provided you have not deactivated the Autostart function on the Field PG or PC. If the setup program does not start up automatically, start it manually by double-clicking the "Start.exe" file. 2. Follow the prompts until you reach the "Configuration" window. Select the "Repair" check box. 3. Follow the remaining prompts to repair your installation. 4. Complete the repair operation by restarting your computer. S7-PLCSIM Advanced 38 Function Manual, 09/2016, A5E37039512-AA Installing 3.6 Uninstalling PLCSIM Advanced 3.6 Uninstalling PLCSIM Advanced You have two options for uninstalling S7-PLCSIM Advanced on your computer: ● You uninstall the program using the Windows Control Panel. ● You uninstall the full product using the installation medium. Uninstalling PLCSIM Advanced using the Windows Control Panel To uninstall PLCSIM Advanced using the Windows Control Panel, follow these steps: 1. Double-click the "Programs and Features" option in the Windows Control Panel. 2. Right-click on "Siemens S7-PLCSIM Advanced V1.0" and select "Uninstall". 3. Follow the prompts for uninstallation. 4. Complete the uninstallation operation by restarting your computer. If you do not perform a restart, the Runtime Manager continues running. If problems occur when uninstalling PLCSIM Advanced using the Windows Control Panel, use the installation medium for uninstalling. Uninstalling PLCSIM Advanced using the installation medium To uninstall PLCSIM Advanced using the installation medium, follow these steps: 1. Insert the installation medium into the drive. The setup program is started automatically, provided you have not deactivated the Autostart function on the programming device or PC. If the setup program does not start up automatically, start it manually by doubleclicking the "Start.exe" file. If you do not perform a restart, the Runtime Manager continues running. 2. Follow the prompts until you reach the "Configuration" window. Your previous installation is detected. Select the "Uninstall" check box. 3. Follow the prompts to uninstall PLCSIM Advanced. 4. Complete the uninstallation operation by restarting your computer. If you do not perform a restart, the Runtime Manager continues running. Uninstalling additional software When PLCSIM Advanced is uninstalled, the following software remains installed: ● Automation License Manager ● S7-PLCSIM V5.4 ● .NET Framework ● WinPcap If you also want to uninstall this software, use the Windows Control Panel. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 39 4 Communication paths Local and distributed communication The following paths are open for communication between STEP 7 V14 and the instances of PLCSIM Advanced user interfaces: Communication paths Local Local Distributed Protocol Softbus TCP/IP TCP/IP Communication interface in PLCSIM Advanced PLCSIM PLCSIM Virtual PLCSIM Virtual Ethernet Adapter Ethernet Adapter STEP 7 and instances on a PC / VM on a PC / VM distributed between STEP 7 and instances Yes Yes Yes among instances Yes Yes Yes possible via OPC UA server and Web serv- No er Yes Yes between an instance and a real hardware CPU No No Yes between an instance and a real HMI V14 No No Yes between an instance and a simulated HMI V14 Yes Yes No Communication... Softbus Softbus is a communication path via a virtual software interface. The communication is limited to a local PC or a virtual machine. The advantage here is that no data can be accidentally downloaded to a hardware CPU or communicate with real hardware. Select communication interface You program the communication interface via the user interface (API) or select it in the Control Panel under "Online Access". The setting is valid for all generated instances. The default setting is the communication via "PLCSIM" (Softbus). Additional network settings are necessary for the distributed communication via the "PLCSIM Virtual Ethernet Adapter" (TCP/IP). S7-PLCSIM Advanced 40 Function Manual, 09/2016, A5E37039512-AA Communication paths 4.1 Local communication API functions for selecting the communication interface ● GetCommunicationInterface() (Page 116) ● SetCommunicationInterface() (Page 116) ● CommunicationInterface { get; set; } (Page 117) See also Interfaces - Information and settings (Page 113) S7 PLCSIM Advanced Control Panel (Page 46) 4.1 Local communication Local communication can be performed via the Softbus protocol or TCP/IP. For local communication, the PLCSIM Advanced instance is on the same PC or on the same virtualization platform (VMware) as STEP 7 or another communication partner. Local communication via Softbus For security reasons, the local communication is performed via Softbus in PLCSIM Advanced by default. Figure 4-1 Local communication via Softbus S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 41 Communication paths 4.2 Communication via TCP / IP Local communication via TCP/IP Communication is performed via the PLCSIM Virtual Ethernet Adapter, a virtual network interface that behaves like a real network interface. Figure 4-2 4.2 Local communication via TCP/IP Communication via TCP / IP Distributed communication Distributed communication via TCP/IP means that the PLCSIM Advanced instances communicate with the other devices via the Virtual Switch . Communication is possible with real or simulated CPUs, real or simulated HMIs. The PLCSIM Virtual Switch must be activated on the PLCSIM Virtual Ethernet Adapter for instances on the network to be visible. Example 1: Distributed communication In the following example, STEP 7 is on a PC and the PLCSIM Advanced instances are on another PC. The PCs are connected via the Ethernet adapter. Figure 4-3 Distributed communication via Ethernet S7-PLCSIM Advanced 42 Function Manual, 09/2016, A5E37039512-AA Communication paths 4.3 Enable distributed communication Example 2: Distributed communication In the following example, STEP 7 is on a PC and the PLCSIM Advanced instances are on a virtual machine on the same PC. PC and virtual machine are connected via the network adapters. Recommendation Use to ensure the VMware settings as the network adapter type for the Bridged Mode to ensure error-free operation. Figure 4-4 4.3 Distributed communication via network adapters Enable distributed communication By default, the PLCSIM Virtual Switch can only communicate locally. For a distributed, i.e. multi-computer, communication to be possible, you must activate the PLCSIM Virtual Switch for a real network adapter. Note Network adapter Make sure that only one network adapter of the PLCSIM Virtual Switch is activated. The Control Panel of PLCSIM Advanced checks the activation and may report an incorrect configuration (error code -50). S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 43 Communication paths 4.3 Enable distributed communication Activate PLCSIM Virtual Switch To make the PLCSIM instances visible on the network and to reach other devices, activate the PLCSIM Virtual Switch in the Control Panel of PLCSIM Advanced or under Windows: 1. To do this, open the "Network and Sharing Center" in the Windows Control Panel. 2. Open the properties of the desired network adapter, for example, for the "Local Area Connection". 3. Select the check box for the "Siemens PLCSIM Virtual Switch" and confirm with OK. Figure 4-5 Activate PLCSIM Virtual Switch Accessible devices When the PLCSIM Virtual Switch is activated, STEP 7 shows the devices available on the Virtual Ethernet Adapter in the project tree. Figure 4-6 Accessible devices on the Virtual Ethernet Adapter S7-PLCSIM Advanced 44 Function Manual, 09/2016, A5E37039512-AA Simulate CPU 5.1 5 Basic procedure for the simulation The following overview shows the basic steps to perform simulation with an instance of a virtual controller. Requirements The following requirements must be met for starting simulation via local communication: ● STEP 7 V14 and S7 PLCSIM V1.0 Advanced are installed on the same PC. ● The CPU hardware is configured in STEP 7. Note Enable simulation support In the "Protection" tab in the properties of the project in STEP 7, select the check box "Support simulation during block compilation". Create and activate an instance via the Control Panel ● Open PLCSIM Advanced Control Panel ● Open the "Start Virtual S7-1500 PLC" options ● Enter a name for an instance ● Select CPU type ● Create an instance using the "Start" button In STEP 7, perform the download and start the simulation ● Download the program to the virtual controller ● Switch the controller to RUN to start the simulation ● Perform diagnostics ● ... See also Simulations support (Page 27) S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 45 Simulate CPU 5.2 User interface 5.2 User interface 5.2.1 S7 PLCSIM Advanced Symbol After installing PLCSIM Advanced, the following icons are on the Windows desktop: Figure 5-1 PLCSIM Advanced Symbol After double-clicking the icon, the icon appears in the taskbar of the information area. You can use Windows functions to permanently display the icon in the information area of the taskbar. Opening a graphical interface Right-clicking on the icon in the taskbar opens the graphical interface of PLCSIM Advanced, the Control Panel. If the Control Panel is open, you can use the mouse-over function to display messages about the current status of the instances. Figure 5-2 5.2.2 Example: Message in the taskbar S7 PLCSIM Advanced Control Panel Control Panel The Control Panel is optional and is not needed to use PLCSIM Advanced via the API. It is available in English in version 1.0. S7-PLCSIM Advanced 46 Function Manual, 09/2016, A5E37039512-AA Simulate CPU 5.2 User interface ① ② ③ ④ Online access Switch to select the communication interface TCP/IP communication Selection of network adapter for distributed communication Virtual time Slider to adjust the scaling factor Start Virtual S7-1500 PLC Name of the instance ⑤ ⑥ ⑦ ⑧ ⑨ • IP address • Subnet mask • Standard gateway Here you enter a unique name for the instance. Enter a minimum of 3, a maximum of 64 characters. If the name is unique in the network, the "Start" button is enabled. The input boxes are visible when you switch the communication interface to "PLCSIM Virtual Ethernet Adapter". CPU type Here you select the type of CPU to be simulated. "Start" button Create with the button and start an instance with the entered name. Instance list The list shows the available local instances. LED displays The meaning of the LED is displayed when you move the mouse over it. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 47 Simulate CPU 5.2 User interface ⑩ ⑪ Runtime Manager Port Here you open a port on the local PC. Virtual SIMATIC Memory Card Open an Explorer window here with the path to the virtual memory card. Display messages ⑬ Here you disable the PLCSIM Advanced messages in the Windows task bar for the duration of the operation. Function manual ⑭ This is where you open the S7 PLCSIM Advanced Function Manual in a standard PDF viewer. Exit Exit switches all instances off and closes the Control Panel. ⑫ Figure 5-3 Control Panel Switch for communication interface Use the switch to select the communication interface for all instances to be created: ● "PLCSIM corresponds to the local communication via Softbus (default). ● "PLCSIM Virtual Ethernet Adapter corresponds to the communication via TCP/IP. The setting applies to all other instances. The selected communication interface for starting an instance is maintained until all instances are shut down. When an instance is already started, it sets "its" communication interface as the default for other instances. Change communication interface To change the communication interface, switch off all instances and enable the other interface. TCP/IP communication You can select a real network adapter from the drop-down list during operation. You thus activate the PLCSIM Virtual Switch and establish TCP/IP communication between the instances and the real network. The setting disables the PLCSIM Virtual Switch and disconnects the instances from the real network. Only local TCP/IP communication over virtual adapter is possible in this case. Virtual time Use the slider or the mouse wheel to select the scaling factor for the virtual time. The selected scaling factor applies to the instances for which the virtual time is enabled. Clicking on "Off" restores the default (1) again. For more information, seeVirtual time response (Page 58). S7-PLCSIM Advanced 48 Function Manual, 09/2016, A5E37039512-AA Simulate CPU 5.2 User interface Create instance (local) To create an instance, enter a unique name under "Instance Name". If the name already exists in the directory of the Virtual SIMATIC Memory Card, the existing instance is started. In the "PLC-Type" drop-down list, select the Unspecified CPU 1500 or Unspecified ET 200SP CPU type. The CPU is named with the first download of the TIA Portal. Recommendation: Create up to 4 local instances on your PC or visualization platform. Remote instances cannot be created through the Control Panel. Instance list The instance list contains the instances that are started locally on the PC or virtualization platform. Instances that have already been started on the runtime API are detected and displayed in the list. The LED displays show the status of the instance that corresponds to those of the hardware CPU. RUN and STOP are displayed depending on the current operating state of the instance. You can "operate" the instance with icons: Apply scaling factor for the virtual time, Switch on instance, disable virtual time, Switch off instance, Switch off instance and log out of the Runtime Manager Runtime Manager Port A remote connection can be established to another Runtime Manager via the specified port. The value must be greater than 1024. If you select the check box, the port remains stored. You can use the remote connection without having to make this setting every time you start the Control Panel. To use this functionality, the Control Panel must be started and running in the background. Virtual SIMATIC Memory Card The user program, the hardware configuration and the retentive data are stored on the Virtual SIMATIC Memory Card. Click the link to open the directory. Default path: ...\Documents\Siemens\Simatic\Simulation\Runtime\Persistence Display messages Each time the panel starts, help information and messages relating to the Control Panel are displayed, for example, when changing the IP address or when a license is missing. Disable the display if you do not need the messages. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 49 Simulate CPU 5.3 Download Exit ● The command switches off all local instances on the PC or the VM and logs them off from the Runtime Manager. ● This command closes the Runtime Manager if there is no remote connections to other Runtime Managers. ● If the Runtime Manager has remote connections to instances on additional PCs, these instances and the Runtime Manager continue to run. Minimize Control Panel Clicking on an empty area on the desktop minimizes the Control Panel. The instances are not affected. 5.3 Download Requirements You can download the STEP 7 project to the virtual controller when the following conditions are met: ● The instance is created via the Control Panel. ● The check box "Support simulation during block compilation" is selected. Select communication interface In the Download dialog box, select the PG/PC interface: ● "PLCSIM" for download via Softbus ● "Siemens PLCSIM Virtual Ethernet Adapter" for download via TCP/IP Display in the download dialog The dialog in STEP 7 at the first download of the CPU shows the compatible PLCSIM Advanced instances. If the instance has not yet been configured after the first download only one interface is visible and it appears with the device type "CPU-1500 Simulation". If the instance has been configured, the number of interfaces visible is determined my the number the CPU type has. The lifelist shows the interfaces of an instance with their IP addresses. S7-PLCSIM Advanced 50 Function Manual, 09/2016, A5E37039512-AA Simulate CPU 5.3 Download Perform download 1. Select the PG/PC interface. 2. Click "Download". → In the "Load preview" window, STEP 7 shows the message "The downloads are performed on a simulated CPU". → After the first download, the PLCSIM Advanced instance displays the CPU type. Figure 5-4 Example: Download via the "PLCSIM Virtual Ethernet Adapter" (TCP/IP) after naming S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 51 Simulate CPU 5.4 MAC address of the instances 5.4 MAC address of the instances Detect CPUs and instances If Ethernet interfaces of CPUs and PLCSIM Advanced instances are mixed in a network, the instances can be recognized by the "PLCSIM" suffix on the station type. Structure of the MAC address for an instance The following figure shows the structure of the dynamically generated, locally managed MAC address: Figure 5-5 Structure of the MAC address for an instance The MAC address tells you the PC on which a PLCSIM Advanced instance has been started. Assignment of the Ethernet interfaces Port configurations of the Ethernet interfaces cannot be simulated in PLCSIM Advanced V1.0. Topological interconnection is not supported. A MAC address for a port is reserved internally for each Ethernet interface. Table 5- 1 Assignment of the Ethernet interfaces, for example, a CPU 1518-4 PN/DP Ethernet interface Last digit of the MAC Address IE 1 IE 1 / Port 1 ...........0 ...........1 IE 2 IE 2 / Port 1 ...........2 ...........3 IE 3 IE 3 / Port 1 ...........4 ...........5 S7-PLCSIM Advanced 52 Function Manual, 09/2016, A5E37039512-AA Simulate CPU 5.5 Simulate peripheral I/O Example 02-C0-A8-00-83-10 means: 02 → locally managed MAC address of a PLCSIM Advanced instance C0-A8-00-83 → IP of the Siemens PLCSIM Virtual Ethernet adapter = 192.168.0.131 1 → Instance 1 0 → Ethernet interface IE 1 If no Virtual SIMATIC Memory Card is loaded during startup of PLCSIM Advanced, the interfaces of PLCSIM Advanced display instances with their locally managed MAC address. 5.5 Simulate peripheral I/O The Runtime API writes to and reads from a memory area. This memory is synchronized with the internal process image of the virtual S7-1500 controller at the cycle control point. The direct I/O accesses are made to this memory area. Only one process can access this memory at a given time. The virtual controller must be in RUN to apply changes made by the API. Note Dominance of the API when synchronizing The API dominates when synchronizing. If the user program writes to the same address range as the API, the changes of the API overwrite those of the virtual controller. See also Deviating I/O values in the STEP 7 user program (Page 310) S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 53 Simulate CPU 5.6 Simulate communication 5.6 Simulate communication 5.6.1 Communication services that can be simulated S7-PLCSIM Advanced V1.0 supports the following communication options: Table 5- 2 Supported communication options Communications options Functionality / instructions PG communication On commissioning, testing, diagnostics Open communication using TCP/IP • TSEND_C / TRCV_C • TSEND / TRCV • TCON1 • T_DISCON • TSEND_C / TRCV_C • TSEND / TRCV • TCON • T_DISCON • TUSEND / TURCV • TCON • T_DISCON • MB_CLIENT • MB_SERVER E-mail2 • TMAIL_C S7 communication • PUT / GET • BSEND / BRCV • USEND / URCV Open communication using ISO-onTCP Open communication via UDP2 Communication via Modbus TCP OPC UA Server2 Web server2 Data exchange with OPC UA clients Data exchange via HTTP 1 When the "PLCSIM" interface (Softbus) is set, communication is performed internally via ISO-onTCP. 2 Only via the communication interface "PLCSIM Virtual Ethernet Adapter" (TCP/IP) Special conditions apply when communicating with TUSEND/TURCV, see Restrictions for communications services (Page 305). S7-PLCSIM Advanced 54 Function Manual, 09/2016, A5E37039512-AA Simulate CPU 5.6 Simulate communication 5.6.2 Communication between instances PLCSIM Advanced supports communication between instances. An instance may be a simulation in PLCSIM Advanced V1.0 or a simulation in WinCC Runtime as of V14. You can run two instances of PLCSIM Advanced, which then communicate with each other. To enable instances to communicate with each other, they must have a unique IP address. Each simulated CPU requires a unique IP address If the CPUs have the same IP address, you cannot run multiple simulations. Each simulated CPU requires a unique IP address. Make sure that the IP addresses in STEP 7 are unique before you start your simulations. T-block instructions and UDP S7-PLCSIM Advanced simulates T-block connections for which the UDP protocol is configured only via the communication interface "PLCSIM Virtual Ethernet Adapter" (TCP/IP). T-block instructions and data segmentation S7-PLCSIM Advanced implements T-block instructions with a data segmentation of 4 KB. A real CPU has data segmentation of 8192 bytes. If you send more than 4 KB in a single TSEND instruction and receive data in ad hoc mode with a TRCV instruction, the TRCV instruction generates new data with only 4 KB. You must perform the TRCV instruction several times to receive additional bytes. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 55 Simulate CPU 5.7 Provide project data offline for simulation 5.7 Provide project data offline for simulation Simulations regardless of STEP 7 To perform simulations independent of STEP 7, you can save the user program and the hardware configuration in STEP 7 in a directory. Provide project data offline 1. Create a "User-defined Card Reader" for your project data under Card Reader/USB storage in the project tree of STEP 7 for the CPU. 2. In the "Load preview" dialog for the target device, select "PLC Simulation Advanced" as an action, click in the selection field for this. → The project is saved to the \SIMATIC.S7S\OMSSTORE directory. 3. Save the folder \SIMATIC.S7S with the project data to a medium of your choice. Figure 5-6 Add card reader S7-PLCSIM Advanced 56 Function Manual, 09/2016, A5E37039512-AA Simulate CPU 5.7 Provide project data offline for simulation Figure 5-7 Preview of download dialog Provide project data for simulation 1. On the PC on which PLCSIM Advanced is installed, create the directory \SIMATIC_MC in the directory in which the instance saves its data. 2. Move the \SIMATIC.S7S folder to the directory you have created. → The instances can be started with the project data. API functions The project data can be used for an instance via the user interface. Use of the following functions for this: API functions ● GetStoragePath() (Page 123) ● StoragePath { get; set; } (Page 124) See also Controller - Information and settings (Page 119) S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 57 6 Virtual time response The virtual controller uses internally two types of clocks for simulation: A virtual clock and a real clock. The virtual clock is always the basis for the user program. It is used by components that are relevant for running the STEP 7 user program, such as cyclic OBs, cycle time monitoring, minimum cycle time, virtual system time and time calculations. Also, the time between two cycle control points is measured in virtual time. The virtual time can be accelerated or slowed for test purposes. The real clock always runs unchanged. It is used by components that are not subject to control processes, for example, communication with STEP 7. Virtual system time When you start PLCSIM Advanced, the virtual system time of the virtual controller starts with the system time of Windows. The virtual system time is based on the virtual clock, i.e. if a scaling factor is used, the system time runs correspondingly faster or slower. All events that the virtual controller sends to the API provides a time stamp based on the system time. Note Difference between system time and local time • System time: UTC ± 0 with daylight saving / standard time • Local time: UTC ± time zone with daylight saving time / winter time API functions ● GetSystemTime() (Page 218) ● SetSystemTime() (Page 218) ● SystemTime { get; set; } (Page 218) Time offset Note Keep in mind that the time information of virtual system time and real local time differs by the time offset that is formed in addition to the selected scaling factor from the time zone offset and the daylight saving time/standard time offset. S7-PLCSIM Advanced 58 Function Manual, 09/2016, A5E37039512-AA Virtual time response Scaling factor Using a scaling factor, you can speed up or slow down the virtual clock of the virtual controller for simulations. ● The default is 1, i.e. the course of the virtual time corresponds to the course of real time. ● Fast forward: A scaling factor greater than 1 accelerates the virtual clock. Example: Scaling factor 2.0 → The virtual time is running twice as fast. ● Slow motion: A scaling factor less than 1 decelerates the virtual clock. Example: Scaling factor 0.5 → The progress of the virtual time slows down to 50%. API functions ● GetScaleFactor() (Page 219) ● SetScaleFactor() (Page 219) ● ScaleFactor { get; set; } (Page 220) See also Settings for the virtual time (Page 218) S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 59 Virtual time response 6.1 Speed up and slow down simulation 6.1 Speed up and slow down simulation Influence of fast forward and slow motion Simulations can be accelerated and slowed down. Fast forward and slow motion only affects time-based components, for example, cyclic OBs. Compared to the real time, they are performed more frequently with fast forward and less frequently with slow motion. Fast forward and slow motion do not change the execution speed of the CPU machine codes. For example, the speed at which all operations of an OB1 cycle are executed does not change. The execution speed depends on the processor of the PC on which the virtual controller running. If you change the scaling factor, more or fewer cycle control points are reached in a given period of virtual time. Fast forward To speed up the virtual time, select a scaling factor greater than 1 in the Control Panel or in the API. Note CPU load of the PC If the scaling factor is greater than 1, the CPU load of the PC on which the virtual controller is simulated increases considerably. Note Performance The performance is depends on the size of your project, among other things. If the scaling factor is too high and the cycle-time monitoring indicates that the PC was incapable of calculating the OB1 or cyclic OBs in the specified time, the virtual controller goes to STOP. Recommendation: To avoid this, start with a small scaling factor and gradually increase it step-by-step while keeping the virtual controller in RUN. Slow motion To slow down the virtual time, select a scaling factor less than 1 in the Control Panel or in the API. API functions ● GetScaleFactor() (Page 219) ● SetScaleFactor() (Page 219) ● ScaleFactor { get; set; } (Page 220) S7-PLCSIM Advanced 60 Function Manual, 09/2016, A5E37039512-AA Virtual time response 6.2 Stop simulation See also Cycle control (Page 221) Settings for the virtual time (Page 218) Error with overflow cyclical events (Page 309) 6.2 Stop simulation Freeze state of the virtual controller To stop a simulation and to synchronize a simulation partner, a virtual controller can be set to a freeze state via the user interface. A triggered freeze state stops the virtual controller on the next cycle control point. The following occurs: ● The virtual time is stopped. ● No OBs running, not counters. ● The user program is no longer executed. ● The virtual controller is still accessible from the TIA Portal. ● The virtual controller is in a state consistent with input and output data. Note Freeze-state ≠ operating state The freeze state is an internal operating state of the virtual controller. It does not correspond to RUN/STOP mode of a CPU. In the freeze state, the virtual controller maintains the last operating state. • The LED display on the Control Panel and on the Web server accordingly shows RUN or STOP for instance. • The instance shows SROS_FREEZE / Freeze, see EOperatingState (Page 288). S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 61 Virtual time response 6.3 Synchronize simulation partner Trigger freeze state To trigger the freeze state, following modes are available for the virtual controller: ● Cycle-controlled operating mode SingleStep and ExtendedSingleStep See Synchronize simulation partner cycle-controlled (Page 62). ● Time-controlled mode TimespanSynchronized See Synchronize simulation partner time-controlled (Page 64). In Default mode, the virtual controller does not go into a freeze state. API functions ● Settings for the cycle control (Page 221) ● GetOperatingMode() (Page 221) ● SetOperatingMode() (Page 221) ● OperatingMode { get; set; } (Page 221) 6.3 Synchronize simulation partner 6.3.1 Synchronize simulation partner cycle-controlled Introduction The virtual controller must be set to the freeze state for synchronization. The SingleStep and ExtendedSingleStep modes of the virtual controller provides one way to synchronize several simulation partners (clients). SingleStep operating mode In this operating mode, the virtual controller at the cycle control point goes into a freeze state and sends an event to the API clients. The freeze state is terminated when the virtual controller issues an API command, performs the next step or changes to the default mode. API functions ● RunNextCycle() (Page 225) S7-PLCSIM Advanced 62 Function Manual, 09/2016, A5E37039512-AA Virtual time response 6.3 Synchronize simulation partner ExtendedSingleStep operating mode In this operating mode, the virtual controller at the cycle control point goes into a freeze state and sends an event to the API clients. Compared to the SingleStep operating mode, an API function in this mode also overwrites the minimum cycle time of the OB1 cycle. When you define a minimum cycle time of 200 ms, the minimum distance between two cycle control points is 200 virtual milliseconds. The default mode is 100 ms. The freeze state is terminated when the virtual controller issues an API command, performs the next step or changes to the default mode. API functions ● GetOverwrittenMinimalCycleTime_ns() (Page 223) ● SetOverwrittenMinimalCycleTime_ns() (Page 223) ● OverwrittenMinimalCycleTime_ns { get; set; } (Page 224) ● RunNextCycle() (Page 225) See also Cycle control (Page 221) S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 63 Virtual time response 6.3 Synchronize simulation partner 6.3.2 Synchronize simulation partner time-controlled Introduction The TimespanSynchronized mode of the virtual controller provides one way to synchronize several simulation partners (clients). TimespanSynchronized operating mode At least two simulation clients synchronize based on a virtual time period for this mode. A simulation client can be an instance of a virtual controller or an API client (an application that uses the Runtime API). The synchronization must be performed by a synchronization master. The synchronization master signals a simulation client that it is his turn to run over certain time period. The time period is specified by the master in nanoseconds. The client then runs for the expected length of time before he goes into the freeze state at the next cycle control point. Before switching to the freeze state, the client sends the master the exact amount of time that he currently needed. Thereafter, the master signals the next client to catch up. API client as master The API client as master signals each client when it should start. The master receives events from the clients when they occur. An API client can only "time manage" instances of a virtual controller. The API client does not receive events from other API clients. It cannot send messages to other API clients. API functions ● Settings for cycle control (Page 221) ● StartProcessing() (Page 226) ● RunNextCycle() (Page 225) S7-PLCSIM Advanced 64 Function Manual, 09/2016, A5E37039512-AA 7 User interfaces (API) 7.1 Introduction Components of the Simulation Runtime The following components are relevant for handling the Simulation Runtime of PLCSIM Advanced: ● Runtime – Siemens.Simatic.Simulation.Runtime.Manager.exe – Siemens.Simatic.Simulation.Runtime.Instance.exe ● Libraries – Siemens.Simatic.Simulation.Runtime.Api.x86.dll – Siemens.Simatic.Simulation.Runtime.Api.x64.dll – SimulationRuntimeApi.h ● Documentation of interfaces with examples in native C++ and .NET (Managed Code) Description Runtime and libraries Description Siemens.Simatic.Simulation. Runtime.Manager.exe A Windows process that runs in the background. Main component of Runtime that manages all other Runtime components. The process is started automatically as soon as an application attempts to initialize the Runtime API. It is ended automatically as soon as there is no longer any application running that initialized the Runtime API. Siemens.Simatic.Simulation. Runtime.Instance.exe The process of the instance that loads a DLL of a virtual controller. Each virtual controller generates its own process. Siemens.Simatic.Simulation. Runtime.Api.x86.dll API libraries that must load an application to use the Simulation Runtime. The libraries contain interfaces for native code and managed code. Siemens.Simatic.Simulation. Runtime.Api.x64.dll SimulationRuntimeApi.h The "Runtime.Api.x86.dll" is loaded exclusively by 32-bit applications, and the "Runtime.Api.x64.dll" by 64-bit applications. Header file that describes all data types that require a native C++ application to use the API library. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 65 User interfaces (API) 7.1 Introduction External applications and Simulation Runtime The following figure schematically presents the access of external applications to Simulation Runtime via the Runtime API. The Simulation Runtime Manager manages the Runtime instances. These load the libraries of the virtual controllers. An external application can be other simulation software or a GUI, for example. Figure 7-1 External applications and Simulation Runtime S7-PLCSIM Advanced 66 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.1 Introduction 7.1.1 Access to instances Access via the Control Panel and the API You can access only one instance that is available locally on the PC via the Control Panel. It does not matter on which PC an instance was created and started. With distributed communication, the Runtime API accesses the instance of the other PCs via the Simulation Runtime Manager. ① ② Access to a local instance via the Control Panel Access to a remote instance on the Runtime API Figure 7-2 Access to instances with distributed communication API functions ● Table 7-5 Overview of IRemoteRuntimeManager functions - Native C++ (Page 72) ● Table 7-9 Overview of IRemoteRuntimeManager functions - .NET (C#) (Page 75) ● Table 7-4 Overview of IInstances functions - Native C++ (Page 70) ● Table 7-8 Overview of IInstances functions - .NET (C#) (Page 74) See also Overview of user interfaces for managed code (Page 73) S7 PLCSIM Advanced Control Panel (Page 46) S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 67 User interfaces (API) 7.1 Introduction 7.1.2 User interfaces (API) The user interfaces of Simulation Runtime include functions you use, for example, to create instances, to change the operating state of a virtual controller, or to exchange I/O data. Simulation Runtime has the following user interfaces: ● ISimulationRuntimeManager ● IInstances ● IRemoteRuntimeManager API and external applications The Runtime API makes the interfaces available to an external application. ① ISimulationRuntimeManager Interface of the Runtime Manager. It is used to register new Runtime instances, to search through existing Runtime instances, and to receive an interface of a registered instance. ② Up to 16 instances can be registered in one Runtime Manager. IInstances Interface of a Runtime instance. It is used to change the operating state of a virtual controller and to exchange I/O data. Each instance has a unique name and an ID. Figure 7-3 API and external applications S7-PLCSIM Advanced 68 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.1 Introduction Access to API functions and data types Required functions and data types are available for native C++ and .NET (C#). ● Overview of user interfaces for native C++ (Page 69) ● Overview of data types for native C++ (Page 76) ● Overview of user interfaces for managed code (Page 73) ● Overview of data types for managed code (Page 77) Note The list of tables in this manual gives you direct access to the description of the individual functions and data types. 7.1.3 Overview of user interfaces for native C++ Initializing and shutting down API The following table shows which functions are available for initializing and shutting down the API for native C++. Table 7- 1 Overview of initializing and shutting down API - Native C++ Actions Functions Initialize API InitializeApi (Page 78) RuntimeApiEntry_Initialize (Page 79) Shut down API (Page 81) Unregister DLL API (Page 84) DestroyInterface RuntimeApiEntry DestroyInterface FreeApi ShutdownAndFreeApi Global functions Table 7- 2 Overview of global functions - Native C++ Actions Global functions (Page 86) Functions GetNameOfAreaSection() GetNameOfCPUType() GetNameOfCommunicationInterface() GetNameOfDataType() GetNameOfLEDMode() GetNameOfLEDType() GetNameOfOperatingMode() GetNameOfOperatingState() GetNameOfPrimitiveDataType() GetNameOfTagListDetails() GetNameOfErrorCode() GetNameOfRuntimeConfigChanged() GetNameOfInstanceConfigChanged() S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 69 User interfaces (API) 7.1 Introduction API ISimulationRuntimeManager The following table shows which functions are available for the API ISimulationRuntimeManager. Table 7- 3 Overview of API ISimulationRuntimeManager functions - Native C++ Settings and information Interface (Page 90) Simulation Runtime instances (Page 93) Remote connections (Page 101) Events OnConfigurationChanged (Page 106) OnRuntimeManagerLost (Page 110) Functions GetVersion() IsInitialized() IsRuntimeManagerAvailable() Shutdown() GetRegisteredInstancesCount() GetRegisteredInstanceInfoAt() RegisterInstance() RegisterCustomInstance() CreateInterface() OpenPort() ClosePort() GetPort() GetRemoteConnectionsCount() GetRemoteConnectionInfoAt() RemoteConnect() RegisterOnConfigurationChangedCallback() UnregisterOnConfigurationChangedCallback() RegisterOnConfigurationChangedEvent() UnregisterOnConfigurationChangedEvent() WaitForOnConfigurationChangedEvent() RegisterOnRuntimeManagerLostCallback() UnregisterOnRuntimeManagerLostCallback() RegisterOnRuntimeManagerLostEvent() UnregisterOnRuntimeManagerLostEvent() WaitForOnRuntimeManagerLostEvent() API IInstances The following table shows which functions are available for the API IInstances. Table 7- 4 Overview of IInstances functions - Native C++ Settings and information Interface (Page 113) Controller (Page 119) Functions GetID() GetName() GetCPUType() SetCPUType() GetCommunicationInterface() SetCommunicationInterface() GetInfo() UnregisterInstance() GetControllerName() GetControllerShortDesignation() GetControllerIPCount() GetControllerIP() GetControllerIPSuite4() SetIPSuite() GetStoragePath() SetStoragePath() ArchiveStorage() RetrieveStorage() S7-PLCSIM Advanced 70 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.1 Introduction Settings and information Operating state (Page 127) Tag list (Page 135) I/O access via address - Reading (Page 141) I/O access via address - Writing (Page 150) I/O access via tag name Reading (Page 158) I/O access via tag name Writing (Page 188) Virtual time (Page 218) Cycle control (Page 221) Events OnOperatingStateChanged (Page 228) OnEndOfCycle (Page 232) OnConfigurationChanging (Page 234) Functions GetOperatingState() PowerOn() PowerOff() MemoryReset() Run() Stop() UpdateTagList() GetTagListStatus() GetTagInfoCount() GetTagInfos() CreateConfigurationFile() GetAreaSize() ReadBit() ReadByte() ReadBytes() ReadSignals() WriteBit() WriteByte() WriteBytes() WriteSignals() Read() ReadBool() ReadChar(), ReadWChar() ReadDouble() ReadFloat() ReadInt8(), ReadInt16(), ReadInt32(), ReadInt64() ReadUInt8(), ReadUInt16(), ReadUInt32(), ReadUInt64() ReadSignals() Write() WriteBool() WriteChar(), WriteWChar() WriteDouble() WriteFloat() WriteInt8(), WriteInt16(), WriteInt32(), WriteInt64(), WriteUInt8(),WriteUInt16(), WriteUInt32(), WriteUInt64() WriteSignals() GetSystemTime() SetSystemTime() GetScaleFactor() SetScaleFactor() GetOperatingMode() SetOperatingMode() SetAlwaysSendOnEndOfCycleEnabled() IsAlwaysSendOnEndOfCycleEnabled() GetOverwrittenMinimalCycleTime_ns() SetOverwrittenMinimalCycleTime_ns() RunNextCycle() StartProcessing() RegisterOnOperatingStateChangedCallback() UnregisterOnOperatingStateChangedCallback() RegisterOnOperatingStateChangedEvent() UnregisterOnOperatingStateChangedEvent() WaitForOnOperatingStateChangedEvent() RegisterOnEndOfCycleCallback() UnregisterOnEndOfCycleCallback() RegisterOnEndOfCycleEvent() UnregisterOnEndOfCycleEvent() WaitForOnEndOfCycleEvent() RegisterOnConfigurationChangingCallback() UnregisterOnConfigurationChangingCallback() RegisterOnConfigurationChangingEvent() UnregisterOnConfigurationChangingEvent() WaitForOnConfigurationChangingEvent() S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 71 User interfaces (API) 7.1 Introduction Settings and information OnConfigurationChanged (Page 237) OnLedChanged (Page 239) Functions RegisterOnConfigurationChangedCallback() UnregisterOnConfigurationChangedCallback() RegisterOnConfigurationChangedEvent() UnregisterOnConfigurationChangedEvent() WaitForOnConfigurationChangedEvent() RegisterOnLedChangedCallback() UnregisterOnLedChangedCallback() RegisterOnLedChangedEvent() UnregisterOnLedChangedEvent() WaitForOnLedChangedEvent() API IRemoteRuntimeManager The following table shows which functions are available for the API IRemoteRuntimeManager (remote connections): Table 7- 5 Overview of IRemoteRuntimeManager functions - Native C++ Settings and information Interface (Page 242) Simulation Runtime instances (Page 246) Events OnConnectionLost (Page 254) Functions GetVersion() GetIP() GetPort() GetRemoteComputerName() Disconnect() GetRegisteredInstancesCount() GetRegisteredInstanceInfoAt() RegisterInstance() RegisterCustomInstance() CreateInterface() RegisterOnConnectionLostCallback() UnregisterOnConnectionLostCallback() RegisterOnConnectionLostEvent() UnregisterOnConnectionLostEvent() WaitForOnConnectionLostEvent() S7-PLCSIM Advanced 72 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.1 Introduction 7.1.4 Overview of user interfaces for managed code Initializing and shutting down API Table 7- 6 Overview of initializing and shutting down API - .NET (C#) Actions Functions Initialize API (Page 80) Shut down API (Page 86) Siemens.Simatic.Simulation.Runtime.SimulationRuntimeManager API ISimulationRuntimeManager The following table shows which functions are available for the API ISimulationRuntimeManager. Table 7- 7 Overview of ISimulationRuntimeManager functions - .NET (C#) Settings and information Interface (Page 90) Simulation Runtime instances (Page 93) Remote connections (Page 101) Events OnConfigurationChanged (Page 106) OnRuntimeManagerLost (Page 110) Functions Version { get; } IsInitialized { get; } IsRuntimeManagerAvailable { get; } Shutdown() RegisterInstanceInfo { get; } RegisterInstance() RegisterCustomInstance() CreateInterface() OpenPort() ClosePort() Port { get; } RemoteConnectionInfo { get; } RemoteConnect() OnConfigurationChanged RegisterOnConfigurationChangedEvent() UnregisterOnConfigurationChangedEvent() WaitForOnConfigurationChangedEvent() OnRuntimeManagerLost() RegisterOnRuntimeManagerLostEvent() UnregisterOnRuntimeManagerLostEvent() WaitForOnRuntimeManagerLostEvent() S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 73 User interfaces (API) 7.1 Introduction API IInstances The following table shows which functions are available for the API IInstances. Table 7- 8 Overview of IInstances functions - .NET (C#) Settings and information Functions Dispose () ID { get; } Name { get; } CPUType { get; set; } CommunicationInterface { get; } Info { get; } UnregisterInstance() ControllerName { get; } Controller - Information and ControllerShortDesignation { get; } settings (Page 119) ControllerIPSuite4 { get; } SetIPSuite() StoragePath { get; set; } ArchiveStorage() RetrieveStorage() OperatingState { get; } Operating state (Page 127) PowerOn() PowerOff() MemoryReset() Run() Stop() UpdateTagList() Tag list (Page 135) GetTagListStatus() TagInfos { get; } CreateConfigurationFile() I/O access via address - Read- InputArea | MarkerArea | OutputArea { get; } AreaSize { get; } ing (Page 141) ReadBit() ReadByte() ReadBytes() ReadSignals() I/O access via address - Writ- WriteBit() WriteByte() ing (Page 150) WriteBytes() WriteSignals() Read() I/O access via tag name ReadBool() Reading (Page 158) ReadChar(), ReadWChar() ReadDouble() ReadFloat() ReadInt8(), ReadInt16(), ReadInt32(), ReadInt64() ReadUInt8(), ReadUInt16(), ReadUInt32(), ReadUInt64() ReadSignals() Write() I/O access via tag name WriteBool() Writing (Page 188) WriteChar(), WriteWChar() WriteDouble() WriteFloat() WriteInt8(), WriteInt16(), WriteInt32(), WriteInt64(), WriteUInt8(),WriteUInt16(), WriteUInt32(), WriteUInt64() WriteSignals() SystemTime { get; set; } Virtual time (Page 218) ScaleFactor { get; set; } OperatingMode { get; set; } Cycle control (Page 221) IsAlwaysSendOnEndOfCycleEnabled { get; set; } OverwrittenMinimalCycleTime_ns { get; set; } RunNextCycle() StartProcessing() Interface (Page 113) S7-PLCSIM Advanced 74 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.1 Introduction Settings and information Events OnOperatingStateChanged (Page 228) OnEndOfCycle (Page 232) OnConfigurationChanging (Page 234) OnConfigurationChanged (Page 106) OnLedChanged (Page 239) Functions OnOperatingStateChanged RegisterOnOperatingStateChangedEvent() UnregisterOnOperatingStateChangedEvent() WaitForOnOperatingStateChangedEvent() OnEndOfCycle RegisterOnEndOfCycleEvent() UnregisterOnEndOfCycleEvent() WaitForOnEndOfCycleEvent() OnConfigurationChanging RegisterOnConfigurationChangingEvent() UnregisterOnConfigurationChangingEvent() WaitForOnConfigurationChangingEvent() OnConfigurationChanged RegisterOnConfigurationChangedEvent() UnregisterOnConfigurationChangedEvent() WaitForOnConfigurationChangedEvent() OnLedChanged RegisterOnLedChangedEvent() UnregisterOnLedChangedEvent() WaitForOnLedChangedEvent() API IRemoteRuntimeManager The following table shows which functions are available for the API IRemoteRuntimeManager. Table 7- 9 Overview of IRemoteRuntimeManager functions - .NET (C#) Settings and information Interface (Page 242) Simulation Runtime instances (Page 93) Events OnConnectionLost() (Page 254) Functions Dispose() Version { get; } IP { get; } Port { get; } RemoteComputerName { get; } Disconnect() RegisterInstanceInfo { get; } RegisterInstance() RegisterCustomInstance() CreateInterface() OnConnectionLost() RegisterOnConnectionLostEvent() UnregisterOnConnectionLostEvent() WaitForOnConnectionLostEvent() S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 75 User interfaces (API) 7.1 Introduction 7.1.5 Overview of data types for native C++ The following table shows which data types are available for the simulation in Runtime Manager. Table 7- 10 Overview of data types - Native C++ Data type DLL import functions (Page 258) ApiEntry_Initialize ApiEntry_DestroyInterface Event callback functions (Page 259) EventCallback_VOID EventCallback_II_SREC_ST EventCallback_II_SREC_ST_SROS_SROS EventCallback_II_SREC_ST_SRLT_SRLM EventCallback_II_SREC_ST_INT64_UINT32 EventCallback_IRRTM EventCallback_SRCC_UINT32_UINT32_INT32 EventCallback II SREC ST SRICC UINT32 UINT32 UINT32 UINT32 Definitions and constants (Page 271) Unions (Page 272) Structures (Page 274) Enumerations (Page 284) UIP UDataValue SDataValue SDataValueByAddress SDataValueByName SConnectionInfo SInstanceInfo SDimension STagInfo SIP SIPSuite4 ERuntimeErrorCode EArea EOperatingState EOperatingMode ECPUType ECommunicationInterface ELEDType ELEDMode EPrimitiveDataTypes EDataType ETagListDetails ERuntimeConfigChanged EInstanceConfigChanged S7-PLCSIM Advanced 76 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.1 Introduction 7.1.6 Overview of data types for managed code The following table shows which data types are available for the simulation in Runtime Manager. Table 7- 11 Overview of data types - .NET (C#) Data type Delegate definitions (Page 265) - Event handler methods Delegate_Void Delegate_II_EREC_DT Delegate_II_EREC_DT_EOS_EOS Delegate_II_EREC_DT_ELT_ELM Delegate_II_EREC_DT_INT64_UINT32 Delegate_IRRTM Delegate_SRCC_UINT32_UINT32_INT32 Delegate II EREC DT SRICC UINT32 UINT32 UINT32 UINT32 Definitions and constants (Page 271) Structures (Page 274) Enumerations (Page 284) SDataValue SDataValueByAddress SDataValueByName SConnectionInfo SInstanceInfo SDimension STagInfo SIP SIPSuite4 ERuntimeErrorCode EArea EOperatingState EOperatingMode ECPUType ECommunicationInterface ELEDType ELEDMode EPrimitiveDataTypes EDataType ETagListDetails ERuntimeConfigChanged EInstanceConfigChanged S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 77 User interfaces (API) 7.2 Initialize API 7.2 Initialize API 7.2.1 Native C++ 7.2.1.1 InitializeApi() Description The InitializeApi function loads the API library (DLL) and initializes the API. The function loads the version of the DLL that is compatible with the architecture of your application. The DLL is loaded from the Startup directory of each application that calls this function or from the directory that provides the path parameter. The function returns an interface to the Simulation Runtime Manager. Use this interface to create a new instance of the virtual controller or to obtain access to an existing instance. Table 7- 12 InitializeApi() - Native C++ Syntax Parameters ERuntimeErrorCode InitializeApi( ISimulationRuntimeManager** out_SimulationRuntimeManagerInterface ); ERuntimeErrorCode InitializeApi( WCHAR* in_SimulationRuntimeApiDllPath, ISimulationRuntimeManager** inout_SimulationRuntimeManagerInterface ); • ISimulationRuntimeManager** out_SimulationRuntimeManagerInterface: Pointer to a Runtime Manager interface pointer. The pointer must be initialized with ZERO. The interface is created within the function. See Data types (Page 257). • WCHAR* in_SimulationRuntimeApiDllPath: The path to the Runtime API library (DLL). Return values Runtime error code Condition SREC_OK The function is successful. SREC_WRONG_ARGUMENT The pointer to the Runtime Manager interface does not equal ZERO. SREC_WRONG_VERSION SREC_CONNECTION_ERROR SREC_ERROR_LOADING_DLL The required version of the interface is incompatible with the version used to compile the API. Unable to establish a connection to the Runtime Manager. The API library (DLL) cannot be loaded. S7-PLCSIM Advanced 78 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.2 Initialize API Example C++ // Include The Headerfile Of The API #include "SimulationRuntimeApi.h" // Prepare The Variables ERuntimeErrorCode result = SREC_INVALID_ERROR_CODE; ISimulationRuntimeManager* api = ZERO; // Initialize The API And Get The RuntimeManager Interface result = InitializeApi(&api); Note If you no longer require the interface, delete it. See DestroyInterface() (Page 82). 7.2.1.2 RuntimeApiEntry_Initialize Description Use the RuntimeApiEntry_Initialize function only if the API library (DLL) is to be loaded from a different directory than the Startup directory of the application that calls this function. When the API is initialized, the API library is first loaded and the Initialize function is then imported and called. The function returns an interface to the Simulation Runtime Manager. Use this interface to create a new instance of the virtual controller or to obtain access to an existing instance. Table 7- 13 RuntimeApiEntry_Initialize - Native C++ Syntax Parameters __declspec(dllexport) ERuntimeErrorCode RuntimeApiEntry_Initialize( ISimulationRuntimeManager** out_SimulationRuntimeManagerInterface, UINT32 in_InterfaceVersion ); • ISimulationRuntimeManager** out_SimulationRuntimeManagerInterface: Pointer to a Runtime Manager interface pointer. The pointer must be initialized with NULL. The interface is created within the function. See Data types (Page 257). • UINT32 in_InterfaceVersion: Version of the API interface to be downloaded: Return values DAPI_DLL_INTERFACE_VERSION. Runtime error code Condition SREC_OK The function is successful. SREC_WRONG_ARGUMENT SREC_WRONG_VERSION The pointer to the Runtime Manager interface does not equal NULL. The required version of the interface is incompatible with the version used to compile the API. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 79 User interfaces (API) 7.2 Initialize API SREC_CONNECTION_ERROR Example C++ Unable to establish a connection to the Runtime Manager. // Include The Headerfile Of The API #include "SimulationRuntimeApi.h" // Prepare The Variables ERuntimeErrorCode result = SREC_INVALID_ERROR_CODE; HMODULE dllHandle = NULL; ApiEntry_Initialize Initialize = NULL; ISimulationRuntimeManager* api = NULL; // Load The DLL And Import The "Initialize" Function (using the Win32 API) dllHandle = LoadLibrary(DAPI_DLL_NAME_X86); if ( dllHandle != NULL ) { Initialize = (ApiEntry_Initialize)GetProcAddress(dllHandle, DAPI_ENTRY_INITIALIZE); } // Initialize The API And Get The RuntimeManager Interface if ( Initialize != NULL ) { result = Initialize(&api, DAPI_DLL_INTERFACE_VERSION); } Note If you no longer require the interface, delete it. See DestroyInterface() (Page 82). 7.2.2 .NET (C#) 7.2.2.1 Initialize Description The entry point to the API is the static class Siemens.Simatic.Simulation.Runtime.SimulationRuntimeManager. The API is initialized when a function of this class is used the first time. Table 7- 14 Exceptions Initialize - .NET (C#) Siemens.Simatic.Simulation.Runtime.SimulationInitializationException Runtime error code Condition ERuntimeErrorCode.ConnectionError Unable to establish a connection to the Runtime Manager. S7-PLCSIM Advanced 80 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.3 Shut down API 7.3 Shut down API 7.3.1 Native C++ Basic procedure for deleting the user interfaces To delete all user interfaces, generally follow these steps: 1. Delete the interfaces IInstances and IRemoteRuntimeManager. 2. Call the Shutdown() function of the ISimulationRuntimeManager interface. 3. Delete the ISimulationRuntimeManager interface. 4. Unload the API library (DLL) with the Win32 API-Funktion FreeLibrary(). Deleting the user interfaces via functions Deleting the user interfaces is also possible via functions. If the API was initialized using the InitializeApi() function, you delete the user interfaces using the following functions: ● FreeApi() (Page 84) ● ShutdownAndFreeApi() (Page 85) S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 81 User interfaces (API) 7.3 Shut down API 7.3.1.1 DestroyInterface() Description A function pointer to the RuntimeApiEntry_DestroyInterface function. The function pointer DestoyInterface() is only valid if the InitializeApi function has been successfully called. The function unloads the memory of an ISimulationRuntimeManager, IRemoteRuntimeManager or IInstance interface. Table 7- 15 DestroyInterface() - Native C++ Syntax ERuntimeErrorCode DestroyInterface( IBaseInterface* in_Interface ); Parameters • Return values Runtime error code Condition SREC_OK The function is successful. IBaseInterface* in_Interface: The interface to be deleted. SREC_WRONG_ARGUMENT Example C++ The pointer to the interface is NULL. // Include The Headerfile Of The API #include "SimulationRuntimeApi.h" // The Interfaces ERuntimeErrorCode result; ISimulationRuntimeManager* api = NULL; IInstance* instance = NULL; // Init the DLL and create an instance result = InitializeApi(&api); result = api->RegisterInstance(&instance); // Destroy Instance Interfaces result = DestroyInterface(instance); instance = NULL; S7-PLCSIM Advanced 82 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.3 Shut down API 7.3.1.2 RuntimeApiEntry_DestroyInterface Description Use the RuntimeApiEntry_DestroyInterface function only if the API library (DLL) is to be loaded from a different directory than the Startup directory of the application that calls this function. If the API was initialized using the InitializeApi function, you select the DestroyInterface() (Page 82) function. The function unloads the memory of an ISimulationRuntimeManager, IRemoteRuntimeManager or IInstance interface. Table 7- 16 RuntimeApiEntry_DestroyInterface() - Native C++ Syntax Parameters __declspec(dllexport) ERuntimeErrorCode RuntimeApiEntry_DestroyInterface( IBaseInterface* in_Interface ); • IBaseInterface* in_Interface: The interface to be deleted. Return values Runtime error code SREC_OK SREC_WRONG_ARGUMENT Example C++ Condition The function is successful. The pointer to the interface is NULL. // Include The Headerfile Of The API #include "SimulationRuntimeApi.h" // Prepare The Variables ERuntimeErrorCode result = SREC_INVALID_ERROR_CODE; HMODULE dllHandle = NULL; ApiEntry_DestroyInterface Destroy = NULL; IInstance* instance = NULL; // Load The DLL And Import The “DestroyInterface” Function (using the Win32 API) dllHandle = LoadLibraryA(DAPI_DLL_NAME_X86); if ( dllHandle != NULL ) { Destroy = (ApiEntry_ DestroyInterface)GetProcAddress(dllHandle, DAPI_ENTRY_DESTROY_INTERFACE); } … // Frees the memory of an IInstance interface result = Destroy(instance); S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 83 User interfaces (API) 7.3 Shut down API 7.3.1.3 FreeApi() Description The FreeApi() function unloads the library of the Runtime API. This function can only be called after the successful call of the InitializeApi function. If the not called, the library must be unloaded using the Win32 API InitializeApi function was function FreeLibrary(). Table 7- 17 FreeApi() - Native C++ Syntax ERuntimeErrorCode FreeApi(); Parameters None Return values Runtime error code Condition SREC_OK The function is successful. SREC_API_NOT_INITIALIZED The InitializeApi function was not called successfully. Example C++ // Include The Headerfile Of The API #include "SimulationRuntimeApi.h" // The Interfaces ERuntimeErrorCode result; ISimulationRuntimeManager* api = NULL; IInstance* instance = NULL; // Init the API result = InitializeApi(&api); … // Shutdown The API api->Shutdown(); result = DestroyInterface(api); api = NULL; result = FreeApi(); S7-PLCSIM Advanced 84 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.3 Shut down API 7.3.1.4 ShutdownAndFreeApi() Description The ShutdownAndFreeApi() function shuts down the Runtime API, deletes the IRuntimeManager interface and unloads the library of the Runtime API. This function can only be called after the successful call of the InitializeApi function. If the InitializeApi function was not called, the library must be unloaded using the Win32 APIFunktion FreeLibrary(). Table 7- 18 ShutdownAndFreeApi() - Native C++ Syntax ERuntimeErrorCode ShutdownAndFreeApi( ISimulationRuntimeManager* in_SimulationRuntimeManagerInterface ); Parameters • Return values Runtime error code Condition SREC_OK The function is successful. ISimulationRuntimeManager* in_SimulationRuntimeManagerInterface: The interface of the Runtime Manager to be deleted. SREC_API_NOT_INITIALIZED SREC_WRONG_ARGUMENT Example C++ The InitializeApi function was not called successfully. The pointer to the interface is NULL. // Include The Headerfile Of The API #include "SimulationRuntimeApi.h" // The Interfaces ERuntimeErrorCode result; ISimulationRuntimeManager* api = NULL; IInstance* instance = NULL; // Init the API result = InitializeApi(&api); … // Shutdown The API result = ShutdownAndFreeApi(api); api = NULL; S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 85 User interfaces (API) 7.4 Global functions (Native C++) 7.3.2 .NET (C#) 7.3.2.1 Shut down API You can end the .NET components of the API in the following ways: ● By a clearing operation using the .NET Garbage Collector. ● For the IInstance and IRemoteRuntimeManager interfaces, by calling the Dispose (Page 113) function. Manually clearing the API To manually clear the API, follow these steps: 1. Delete all interfaces. Interfaces - Information and settings (Page 113) 2. Call the Shutdown() (Page 90) function of the ISimulationRuntimeManager interface. 7.4 Global functions (Native C++) GetNameOfAreaSection() Returns the name of the enumeration entry. Table 7- 19 GetNameOfAreaSection() - Native C++ const WCHAR* GetNameOfAreaSection( EArea in_AreaSection ); Syntax Parameters • Return values const WCHAR*: Name of the enumeration entry EArea in_AreaSection: Enumeration entry GetNameOfCPUType() Returns the name of the enumeration entry. Table 7- 20 GetNameOfCPUType() - Native C++ Syntax const WCHAR* GetNameOfCPUType( ECPUType in_CPUType ); Parameters • Return values const WCHAR*: Name of the enumeration entry ECPUType in_CPUType: Enumeration entry S7-PLCSIM Advanced 86 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.4 Global functions (Native C++) GetNameOfCommunicationInterface() Returns the name of the enumeration entry. Table 7- 21 GetNameOfCommunicationInterface() - Native C++ const WCHAR* GetNameOfCommunicationInterface( ECommunicationInterface in_CommunicationInterface ); Syntax Parameters • ECommunicationInterface in_CommunicationInterface: Enumeration entry Return values const WCHAR*: Name of the enumeration entry GetNameOfDataType() Returns the name of the enumeration entry. Table 7- 22 GetNameOfDataType() - Native C++ const WCHAR* GetNameOfDataType( EDataType in_DataType ); Syntax Parameters • EDataType in_DataType: Enumeration entry Return values const WCHAR*: Name of the enumeration entry GetNameOfErrorCode() Returns the name of the enumeration entry. Table 7- 23 GetNameOfErrorCode() - Native C++ const WCHAR* GetNameOfErrorCode( ERuntimeErrorCode in_ErrorCode ); Syntax Parameters • Return values const WCHAR*: Name of the enumeration entry ERuntimeErrorCode in_ErrorCode: Enumeration entry GetNameOfLEDMode() Returns the name of the enumeration entry. Table 7- 24 GetNameOfLEDMode() - Native C++ Syntax const WCHAR* GetNameOfLEDMode( ELEDMode in_LEDMode ); Parameters • Return values const WCHAR*: Name of the enumeration entry ELEDMode in_LEDMode: Enumeration entry S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 87 User interfaces (API) 7.4 Global functions (Native C++) GetNameOfLEDType() Returns the name of the enumeration entry. Table 7- 25 GetNameOfLEDType() - Native C++ const WCHAR* GetNameOfLEDType( ELEDType in_LEDType ); Syntax Parameters • ELEDType in_LEDType: Enumeration entry. Return values const WCHAR*: Name of the enumeration entry GetNameOfOperatingMode() Returns the name of the enumeration entry. Table 7- 26 GetNameOfOperatingMode() - Native C++ const WCHAR* GetNameOfOperatingMode( EOperatingMode in_OperatingMode ); Syntax Parameters • EOperatingMode in_OperatingMode: Enumeration entry Return values const WCHAR*: Name of the enumeration entry GetNameOfErrorCode() Returns the name of the enumeration entry. Table 7- 27 GetNameOfErrorCode() - Native C++ const WCHAR* GetNameOfErrorCode( ERuntimeErrorCode in_ErrorCode ); Syntax Parameters • Return values const WCHAR*: Name of the enumeration entry ERuntimeErrorCode in_ErrorCode: Enumeration entry GetNameOfOperatingState Returns the name of the enumeration entry. Table 7- 28 GetNameOfOperatingState() - Native C++ Syntax const WCHAR* GetNameOfOperatingState( EOperatingState in_OperatingState ); Parameters • Return values const WCHAR*: Name of the enumeration entry EOperatingState in_OperatingState: Enumeration entry S7-PLCSIM Advanced 88 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.4 Global functions (Native C++) GetNameOfPrimitiveDataType Returns the name of the enumeration entry. Table 7- 29 GetNameOfPrimitiveDataType() - Native C++ const WCHAR* GetNameOfPrimitiveDataType( EPrimitiveDataType in_DataType ); Syntax Parameters • EPrimitiveDataType in_DataType: Enumeration entry Return values const WCHAR*: Name of the enumeration entry GetNameOfTagListDetails Returns the name of the enumeration entry. Table 7- 30 GetNameOfTagListDetails() - Native C++ const WCHAR* GetNameOfTagListDetails( ETagListDetails in_TagListDetails ); Syntax Parameters • ETagListDetails in_TagListDetails: Enumeration entry Return values const WCHAR*: Name of the enumeration entry GetNameOfRuntimeConfigChanged() Returns the name of the enumeration entry. Table 7- 31 GetNameOfRuntimeConfigChanged() - Native C++ const WCHAR* GetNameOfRuntimeConfigChanged( ERuntimeConfigChanged in_RuntimeConfigChanged); ); Syntax Parameters • Return values const WCHAR*: Name of the enumeration entry ERuntimeConfigChanged in_RuntimeConfigChanged: Enumeration entry GetNameOfInstanceConfigChanged() Returns the name of the enumeration entry. Table 7- 32 GetNameOfInstanceConfigChanged() - Native C++ Syntax const WCHAR* GetNameOfInstanceConfigChanged( EInstanceConfigChanged in_InstanceConfigChanged); ); Parameters • Return values const WCHAR*: Name of the enumeration entry EInstanceConfigChanged in_InstanceConfigChanged: Enumeration entry S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 89 User interfaces (API) 7.5 API ISimulationRuntimeManager See also EPrimitiveDataType (Page 294) EDataType (Page 296) 7.5 API ISimulationRuntimeManager 7.5.1 Interfaces - Information and settings GetVersion() / Version { get; } Returns the version of Runtime Manager. If the function fails, version 0.0 is returned. Table 7- 33 GetVersion() - Native C++ Syntax UINT32 GetVersion(); Parameters None Return values UINT32: Runtime Manager Version (HIWORD = Major, LOWORD = Minor) Table 7- 34 Version { get; } - .NET (C#) Syntax UInt32 Version { get; } Parameters None Return values Uint32: Runtime Manager Version (HIWORD = Major, LOWORD = Minor) S7-PLCSIM Advanced 90 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.5 API ISimulationRuntimeManager IsInitialized() / IsInitialized { get; } Returns a value that indicates whether the API was successfully initialized. Table 7- 35 IsInitialized() - Native C++ Syntax bool IsInitialized(); Parameters None Return values • • Table 7- 36 false: If the API was not initialized. true: If the API was initialized. IsInitialized { get; } - .NET (C#) Syntax bool IsInitialized { get; } Parameters None Return values • • false: If the API was not initialized. true: If the API was initialized. IsRuntimeManagerAvailable() / IsRuntimeManagerAvailable { get; } The function returns false when the connection to Runtime Manager is interrupted. This happens only when the Runtime Manager process is closed. Subscribe to the OnRuntimeManagerLost() event to find out whether the connection is interrupted. See Events (Page 106). Table 7- 37 IsRuntimeManagerAvailable() - Native C++ Syntax bool IsRuntimeManagerAvailable(); Parameters None Return values • • Table 7- 38 false: If the connection is interrupted. true: If the connection is active. IsRuntimeManagerAvailable { get; } - .NET (C#) Syntax bool IsRuntimeManagerAvailable{ get; } Parameters None Return values • • false: If the connection is interrupted. true: If the connection is active. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 91 User interfaces (API) 7.5 API ISimulationRuntimeManager Shutdown() Ends communication with Runtime Manager and clears the interfaces. Call this function in the following cases: ● Immediately before the API library (DLL) is unregistered (native C++). ● When your application is no longer using Runtime Manager. Table 7- 39 Shutdown() - Native C++ ERuntimeErrorCode Shutdown() Syntax Parameters None Return values Runtime error code Condition SREC_OK The function is successful. Table 7- 40 Shutdown() - .NET (C#) Syntax void Shutdown() Parameters None Return values None S7-PLCSIM Advanced 92 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.5 API ISimulationRuntimeManager 7.5.2 Simulation Runtime instances GetRegisteredInstancesCount() Returns the number of instances that are registered in Runtime Manager. If the function fails, the return value is 0. Table 7- 41 GetRegisteredInstancesCount() - Native C++ Syntax UINT32 GetRegisteredInstancesCount(); Parameters None Return values UINT32: Number of available instances. GetRegisteredInstanceInfoAt() Returns information about an already registered instance. You can use the ID or name to create an interface of this instance, see CreateInterface(). Table 7- 42 GetRegisteredInstanceInfoAt() - Native C++ Syntax Parameters ERuntimeErrorCode GetRegisteredInstanceInfoAt( UINT32 in_Index, SInstanceInfo* out_InstanceInfo ); • UINT32 in_Index: Index of the created instance from which you want to receive the information. The index must be less than the value you receive when you call GetRegisteredInstanceCount(). • SInstanceInfo* out_InstanceInfo: The information with name and ID of the instance. See Data types (Page 271). Return values Runtime error code SREC_OK SREC_TIMEOUT SREC_INDEX OUT_OF_RANGE Condition The function is successful. The function does not return on time. There is no instance information for this index. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 93 User interfaces (API) 7.5 API ISimulationRuntimeManager RegisteredInstanceInfo { get; } Returns information about all already registered instances. Use the ID or name of this instance to create an interface of this instance, see CreateInterface(). Table 7- 43 RegisteredInstanceInfo { get; } - .NET (C#) Syntax Parameters Return values Exceptions SInstanceInfo[] RegisteredInstanceInfo { get; } None SInstanceInfo[]: An array of information about all registered instances. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code ERuntimeErrorCode.Timeout Condition The function does not return on time. S7-PLCSIM Advanced 94 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.5 API ISimulationRuntimeManager RegisterInstance() Registers a new instance of a virtual controller in Runtime Manager. Creates and returns an interface of this instance. Table 7- 44 RegisterInstance() - Native C++ Syntax Parameters ERuntimeErrorCode RegisterInstance( IInstance** out_InstanceInterface ); ERuntimeErrorCode RegisterInstance( WCHAR* in_InstanceName, IInstance** out_InstanceInterface ); ERuntimeErrorCode RegisterInstance( ECPUType in_CPUType, IInstance** out_InstanceInterface ); ERuntimeErrorCode RegisterInstance( ECPUType in_CPUType, WCHAR* in_InstanceName, IInstance** out_InstanceInterface ); • ECPUType in_CPUType: Defines which CPU type is simulated at the start of the instance. The default setting is "SRCT_1500_Unspecified". When a different CPU type is loaded via STEP 7 or from the Virtual Memory Card, this CPU type applies. • WCHAR* in_InstanceName: Name to be assigned to the instance. Every instance must have a unique name. If no name is assigned when registering a new instance, the instance is given the name "Instance_#" (# is the ID of the instance). If this name already exists, the name "Instance_#.#" is used, in which the second # is a counter that is incremented until the name is unique. The length of the name must be less than DINSTANCE_NAME_LENGTH. See Data types (Page 271). • Return values Example C++ IInstance** out_InstanceInterface: Pointer to a Simulation Runtime interface pointer. The pointer must be initialized with ZERO. The interface is created within the function. Runtime error code SREC_OK Condition The function is successful. SREC_TIMEOUT The function does not return on time. SREC_WRONG_ARGUMENT The name or the IInstance pointer is invalid. SREC_LIMIT_REACHED There are already 16 instances registered in Runtime Manager. SREC_ALREADY_EXISTS An instance with this name already exists. ISimulationRuntimeManager * api = ZERO; ERuntimeErrorCode result = Initialize(&api); // Example: How To Create And Register An Instance IInstance* psa = ZERO; if (result == SREC_OK) { result = api->RegisterInstance(&psa); } S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 95 User interfaces (API) 7.5 API ISimulationRuntimeManager Note Native C++ If you no longer require the interface, delete it. See DestroyInterface() (Page 82). Table 7- 45 RegisterInstance() - .NET (C#) Syntax Parameters IInstance RegisterInstance(); IInstance RegisterInstance( string in_InstanceName ); IInstance RegisterInstance( ECPUType in_CPUType ); IInstance RegisterInstance( ECPUType in_CPUType string in_InstanceName ); • ECPUType in_CPUType: Defines which CPU type is simulated at the start of the instance. The default setting is "ECPUType.Unspecified". When a different CPU type is loaded via STEP 7 or from the Virtual Memory Card, this CPU type applies. • string in_InstanceName: Name to be assigned to the instance. Every instance must have a unique name. If no name is assigned when registering a new instance, the instance is given the name "Instance_#" (# is the ID of the instance). If this name already exists, the name "Instance_#.#" is used, in which the second # is a counter that is incremented until the name is unique. The length of the name must be less than DINSTANCE_NAME_LENGTH. See Data types (Page 271). Return values If the function is successful, an interface of a virtual controller, otherwise a null pointer. Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code ERuntimeErrorCode.Timeout Condition The function does not return on time. ERuntimeErrorCode.WrongArgument The name is invalid. ERuntimeErrorCode.LimitReached There are already 16 instances registered in Runtime Manager. ERuntimeErrorCode.AlreadyExists An instance with this name already exists. S7-PLCSIM Advanced 96 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.5 API ISimulationRuntimeManager RegisterCustomInstance() Registers a new instance of a virtual controller in Runtime Manager. Creates and returns an interface of this instance. Table 7- 46 RegisterCustomInstance() - Native C++ Syntax Parameters ERuntimeErrorCode RegisterCustomInstance( WCHAR* in_VplcDll, IInstance** out_InstanceInterface ); ERuntimeErrorCode RegisterCustomInstance( WCHAR* in_VplcDll, WCHAR* in_InstanceName, IInstance** out_InstanceInterface ); • WCHAR* in_VplcDll: The complete path to the DLL of the virtual controller that Siemens.Simatic.Simulation.Runtime.Instance.exe loads at PowerOn. • WCHAR* in_InstanceName: Name to be assigned to the instance. Every instance must have a unique name. If no name is assigned when registering a new instance, the instance is given the name "Instance_#" (# is the ID of the instance). If this name already exists, the name "Instance_#.#" is used, in which the second # is a counter that is incremented until the name is unique. The length of the name must be less than DINSTANCE_NAME_LENGTH. See Data types (Page 271). • Return values Example C++ IInstance** out_InstanceInterface: Pointer to a Simulation Runtime interface pointer. The pointer must be initialized with ZERO. The interface is created within the function. Runtime error code SREC_OK Condition The function is successful. SREC_TIMEOUT The function does not return on time. SREC_WRONG_ARGUMENT The DLL name, the instance name or the IInstance pointer is invalid. SREC_LIMIT_REACHED There are already 16 instances registered in Runtime Manager. SREC_ALREADY_EXISTS An instance with this name already exists. ISimulationRuntimeManager * api = ZERO; ERuntimeErrorCode result = Initialize(&api); // Example: How To Create And Register An Instance IInstance* psa = ZERO; if (result == SREC_OK) { result = api->RegisterCustomInstance("C:\\Temp\\vplc.dll"); } S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 97 User interfaces (API) 7.5 API ISimulationRuntimeManager Note Native C++ If you no longer require the interface, delete it. See DestroyInterface() (Page 82). Table 7- 47 RegisterCustomInstance() - .NET (C#) Syntax Parameters IInstance RegisterCustomInstance( string in_VplcDll ); IInstance RegisterCustomInstance( string in_VplcDll, string in_InstanceName ); • string in_VplcDll: The complete path to the DLL of the virtual controller that Siemens.Simatic.Simulation.Runtime.Instance.exe loads at PowerOn. • Return values Exceptions string in_InstanceName: Name to be assigned to the instance. Every instance must have a unique name. If no name is assigned when registering a new instance, the instance is given the name "Instance_#" (# is the ID of the instance). If this name already exists, the name "Instance_#.#" is used, in which the second # is a counter that is incremented until the name is unique. The length of the name must be less than DINSTANCE_NAME_LENGTH. See Data types (Page 271). If the function is successful, an interface of a virtual controller; otherwise a Null pointer. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.WrongArgument The name or the ID is invalid. ERuntimeErrorCode.LimitReached ERuntimeErrorCode.AlreadyExists There are already 16 instances registered in Runtime Manager. An instance with this name already exists. S7-PLCSIM Advanced 98 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.5 API ISimulationRuntimeManager CreateInterface() Creates and returns an interface of an already registered instance of a virtual controller. The instance could have been registered via the application or another application that uses the Simulation Runtime API. Table 7- 48 CreateInterface() - Native C++ Syntax Parameters ERuntimeErrorCode CreateInterface( WCHAR* in_InstanceName, IInstance** out_InstanceInterface ); ERuntimeErrorCode CreateInterface( INT32 in_InstanceID, IInstance** out_InstanceInterface ); • INT32 in_InstanceID: The ID of the registered instance from which you want to receive the interface. • WCHAR* in_InstanceName: The name of the registered instance from which you want to receive the interface. • Return values IInstance** out_InstanceInterface: Pointer to a Simulation Runtime interface pointer. The pointer must be initialized with ZERO. The interface is created within the function. Runtime error code Condition SREC_OK The function is successful. SREC_TIMEOUT Example C++ The function does not return on time. SREC_WRONG_ARGUMENT The name, the ID or the IInstance pointer is invalid. SREC_DOES_NOT_EXIST The instance is not registered in Runtime Manager. ISimulationRuntimeManager * api = ZERO; ERuntimeErrorCode result = Initialize(&api); IInstance* psa1 = ZERO; IInstance* psa2 = ZERO; if (result == SREC_OK) { result = api->CreateInterface(0, &psa1); Example C++ result = api->CreateInterface(0, &psa2); // psa2 will be the same as psa1 } ISimulationRuntimeManager * api = ZERO; ERuntimeErrorCode result = Initialize(&api); IInstance* psa = ZERO; if (result == SREC_OK) { result = api->CreateInterface(L"My SimulationRuntime Instance", &psa); } S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 99 User interfaces (API) 7.5 API ISimulationRuntimeManager Note Native C++ If you no longer require the interface, delete it. See DestroyInterface() (Page 82). Table 7- 49 CreateInterface() - .NET (C#) Syntax Parameters IInstance CreateInterface( string in_InstanceName ); IInstance CreateInterface( INT32 in_InstanceID ); • INT32 in_InstanceID: The ID of the registered instance from which you want to receive the interface. • string in_InstanceName: The name of the registered instance from which you want to receive the interface. Return values Exceptions If the function is successful, an interface of a virtual controller; otherwise a Null pointer. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.WrongArgument The name or the ID is invalid. ERuntimeErrorCode.DoesNotExists The instance is not registered in Runtime Manager. S7-PLCSIM Advanced 100 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.5 API ISimulationRuntimeManager 7.5.3 Remote connections OpenPort() Opens a port to which another Runtime Manager can connect. Table 7- 50 OpenPort() - Native C++ ERuntimeErrorCode OpenPort( UINT16 in_Port ); Syntax Parameters • Return values Runtime error code UINT16 in_Port: The port. The value must be greater than 1024. SREC_OK SREC_TIMEOUT SREC_ALREADY_EXISTS Table 7- 51 Condition The function is successful. The function does not return on time. A port is already open. SREC_WRONG_ARGUMENT The port is invalid. SREC_CONNECTION_ERROR The port cannot be opened. OpenPort() - .NET (C#) Syntax void OpenPort( UInt16 in_Port ); Parameters • Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException UInt16 in_Port: The port. The value must be greater than 1024. Runtime error code Condition ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.AlreadyExists A port is already open. ERuntimeErrorCode.WrongArgument The port is invalid. ERuntimeErrorCode.ConnectionError The port cannot be opened. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 101 User interfaces (API) 7.5 API ISimulationRuntimeManager ClosePort() Closes an open port and all open connections that another Runtime Manager has created to this open port. Table 7- 52 ClosePort() - Native C++ Syntax ERuntimeErrorCode ClosePort(); Parameters None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition SREC_OK The function is successful. SREC_TIMEOUT SREC_WARNING_INVALID_CALL Table 7- 53 The function does not return on time. No port is open. ClosePort() - .NET (C#) void ClosePort( UInt16 in_Port ); Syntax Parameters None Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code ERuntimeErrorCode.Timeout Condition The function does not return on time. GetPort() / Port { get; } Returns the open port. If no port is open or the function fails, the return value is 0. Table 7- 54 GetPort() - Native C++ Syntax UINT16 GetPort(); Parameters None Return values UINT16: The open port. 0, if no port is open. Table 7- 55 Port { get; } - .NET (C#) Syntax UInt16 Port { get; } Parameters None Return values UInt16: The open port. 0, if no port is open. Exceptions None S7-PLCSIM Advanced 102 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.5 API ISimulationRuntimeManager GetRemoteConnectionsCount() Supplies the number of open remote connections. Table 7- 56 GetRemoteConnectionsCount() - Native C++ Syntax UINT32 GetRemoteConnectionsCount(); Parameters None Return values UINT32: Number of open remote connections. GetRemoteConnectionInfoAt() Returns information about an open connection. Table 7- 57 GetRemoteConnectionInfoAt()- Native C++ ERuntimeErrorCode GetRemoteConnectionInfoAt( UINT32 in_Index, SConnectionInfo* out_ConnectionInfo ); Syntax Parameters • UINT32 in_Index: Index of the connection information that is expected. • SConnectionInfo* out_ConnectionInfo: The connection information for this index. Return values Runtime error code SREC_OK SREC_TIMEOUT SREC_INDEX_OUT_OF_RANGE Condition The function is successful. The function does not return on time. Connection information for this index does not exist. RemoteConnectionInfo { get; } Returns an array of information about all open connections. Table 7- 58 RemoteConnectionInfo { get; } - .NET (C#) Syntax SConnectionInfo[] RemoteConnectionInfo { get; } Parameters None Return values SConnectionInfo[]: An array of information about all open connections. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Exceptions Runtime error code ERuntimeErrorCode.Timeout Condition The function does not return on time. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 103 User interfaces (API) 7.5 API ISimulationRuntimeManager RemoteConnect() Creates a new connection to a remote Runtime Manager or uses an existing connection to create an IRemoteRuntimeManager interface. Table 7- 59 RemoteConnect() - Native C++ Syntax Parameters ERuntimeErrorCode RemoteConnect( UINT8 in_IP3, UINT8 in_IP2, UINT8 in_IP1, UINT8 in_IP0, UINT16 in_Port, IRemoteRuntimeManager** out_RemoteRuntimeManagerInterface ERuntimeErrorCode RemoteConnect( UIP in_IP, UINT16 in_Port, IRemoteRuntimeManager** out_RunTimeManagerInterface ); • UINT8 in_IP3: First part of the IP address of the remote PC. • UINT8 in_IP2: Second part of the IP address of the remote PC. • UINT8 in_IP1: Third part of the IP address of the remote PC. UINT8 in_IP0: Last part of the IP address of the remote PC. • UIP in_IP: IP address of the remote PC. • UINT16 in_Port: • IRemoteRuntimeManager** out_RemoteRuntimeManagerInterface: The port that is open on the remote PC. Return values Pointer to a remote Runtime Manager interface pointer. The pointer must be initialized with ZERO. The interface is created in the function. Runtime error code Condition SREC_OK The function is successful. SREC_TIMEOUT The function does not return on time. SREC_CONNECTION_ERROR SREC_WRONG_ARGUMENT Example C++ The connection to the remote Runtime Manager cannot be established. IP, port or IInstance pointer is invalid. ISimulationRuntimeManager* api = ZERO; ERuntimeErrorCode result = Initialize(&api); IRemoteRuntimeManager * client = ZERO; if (result == SREC_OK) { result = api->RemoteConnect(192,203,145,144, 4444, &client); } S7-PLCSIM Advanced 104 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.5 API ISimulationRuntimeManager Note Native C++ If you no longer require the interface, delete it. See DestroyInterface() (Page 82). Table 7- 60 RemoteConnect() - .NET (C#) Syntax Parameters IRemoteRuntimeManager RemoteConnect( string in_ConnectionString ); IRemoteRuntimeManager RemoteConnect( SIP in_IP, UInt16 in_Port ); IRemoteRuntimeManager RemoteConnect( Byte in_IP3, Byte in_IP2, Byte in_IP1, Byte in_IP0, UInt16 in_Port ); • Byte in_IP3: First part of the IP address of the remote PC. • Byte in_IP2: Second part of the IP address of the remote PC. • Byte in_IP1: Third part of the IP address of the remote PC. • Byte in_IP0: Last part of the IP address of the remote PC. • string in_ConnectionString: A string in the form of " . . . : " Example: "182.203.145.144:4444". • SIP in_IP: IP address of the remote PC. • UInt16 in_Port: The port that is open on the remote PC. Return values Exceptions IRemoteRuntimeManager: Interface to the remote Runtime Manager. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.ConnectionError Connection to the remote Runtime Manager cannot be established. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.WrongArgument IP or port is invalid. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 105 User interfaces (API) 7.5 API ISimulationRuntimeManager See also Data types (Page 257) Tag list (Page 135) 7.5.4 Events Events for the ISimulationRuntimeManager interface The following events are differentiated in the API: Table 7- 61 Events for the ISimulationRuntimeManager interface Event Cause OnConfigurationChanged (Page 106) This event is triggered at a change of the Runtime Manager configuration. For example, when a new instance is registered, an instance is removed or a connection to a client is established. The Control Panel uses such an event to update the list of available instances. OnRuntimeManagerLost (Page 110) 7.5.4.1 The event is triggered when the connection to Runtime Manager is interrupted. OnConfigurationChanged OnConfigurationChanged Registers or unregisters an event handler method. Table 7- 62 OnConfigurationChanged - .NET (C#) Syntax event Delegate_SRCC_UINT32_UINT32_INT32 OnConfigurationChanged; Parameters None. See Delegate_SRCC_UINT32_UINT32_INT32 (Page 269). Return values None Exceptions None Note The event handler method runs in a separate thread. S7-PLCSIM Advanced 106 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.5 API ISimulationRuntimeManager RegisterOnConfigurationChangedCallback() When the event occurs, the registered callback function is called. Only one callback function can be registered for the event. The registration of a new callback function causes the previous callback function to be deleted. Table 7- 63 RegisterOnConfigurationChangedCallback() - Native C++ void RegisterOnConfigurationChangedCallback( EventCallback_SRCC_UINT32_UINT32_INT32 in_CallbackFunction ); Syntax Parameters • EventCallback_SRCC_UINT32_UINT32_INT32 in_CallbackFunction: A callback function to subscribe to an event. See EventCallback_SRCC_UINT32_UINT32_INT32 (Page 263). Return values None Note The event handler method runs in a separate thread. RegisterOnConfigurationChangedEvent() When the event occurs, the registered event object is set to the signaled state. Only one event object can be registered for the event. Registration of a new event object causes the previous event object to be deleted. Table 7- 64 RegisterOnConfigurationChangedEvent() - Native C++ void RegisterOnConfigurationChangedEvent(); void RegisterOnConfigurationChangedEvent( HANDLE* in_Event ); Syntax Parameters • None: An internal event object is registered. • HANDLE* in_Event: A handle for a user-specific event object. The event object is registered. Return values Table 7- 65 None RegisterOnConfigurationChangedEvent() - .NET (C#) Syntax void RegisterOnConfigurationChangedEvent(); Parameters None Return values None S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 107 User interfaces (API) 7.5 API ISimulationRuntimeManager UnregisterOnConfigurationChangedCallback() Unregisters the callback function. When the event occurs, no callback function is called. Table 7- 66 UnregisterOnConfigurationChangedCallback() - Native C++ Syntax void UnregisterOnConfigurationChangedCallback(); Parameters None Return values None UnregisterOnConfigurationChangedEvent() Unregisters the event object. Table 7- 67 UnregisterOnConfigurationChangedEvent() - Native C++ Syntax void UnregisterOnConfigurationChangedEvent(); Parameters None Return values None Table 7- 68 UnregisterOnConfigurationChangedEvent() - .NET (C#) Syntax void UnregisterOnConfigurationChangedEvent(); Parameters None Return values None S7-PLCSIM Advanced 108 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.5 API ISimulationRuntimeManager WaitForOnConfigurationChangedEvent() The function blocks the program until the registered event object is set to the signaled state or the timeout interval is exceeded. Table 7- 69 WaitForOnConfigurationChangedEvent() - Native C++ bool WaitForOnConfigurationChangedEvent(); bool WaitForOnConfigurationChangedEvent( UINT32 in_Time_ms ); Syntax Parameters • None: The time limit is set to INFINITE. • UINT32 in_Time_ms: Value for the time limit in milliseconds. Return values • • Table 7- 70 true: If the event object was set to the signaled state. false: If no event was received during the defined time limit. WaitForOnConfigurationChangedEvent - .NET (C#) Syntax Parameters bool WaitForOnConfigurationChangedEvent(); bool WaitForOnConfigurationChangedEvent( UInt32 in_Time_ms ); • None: The time limit is set to INFINITE. • UInt32 in_Time_ms: Value for the time limit in milliseconds. Return values • • true: If the event object was set to the signaled state. false: If no event was received during the defined time limit. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 109 User interfaces (API) 7.5 API ISimulationRuntimeManager 7.5.4.2 OnRuntimeManagerLost OnRuntimeManagerLost Registers or unregisters an event handler method. Table 7- 71 OnRuntimeManagerLost - .NET (C#) event Delegate_Void OnRuntimeManagerLost; Syntax Parameters None. See Delegate_Void (Page 265). Return values None Exceptions None Note The event handler method runs in a separate thread. RegisterOnRuntimeManagerLostCallback() When the event occurs, the registered callback function is called. Only one callback function can be registered for the event. The registration of a new callback function causes the previous callback function to be deleted. Table 7- 72 RegisterOnRuntimeManagerLostCallback() - Native C++ Syntax Parameters void RegisterOnRuntimeManagerLostCallback( EventCallback_VOID in_CallbackFunction ); • EventCallback_VOID in_CallbackFunction: A callback function that subscribes to the event. See EventCallback_VOID (Page 259). Return values None Note The event handler method runs in a separate thread. S7-PLCSIM Advanced 110 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.5 API ISimulationRuntimeManager RegisterOnRuntimeManagerLostEvent() When the event occurs, the registered event object is set to the signaled state. Only one event object can be registered for the event. Registration of a new event object causes the previous event object to be deleted. Table 7- 73 RegisterOnRuntimeManagerLostEvent() - Native C++ void RegisterOnRuntimeManagerLostEvent(); void RegisterOnRuntimeManagerLostEvent( HANDLE* in_Event ); Syntax Parameters • None: An internal event handle is registered. • HANDLE* in_Event: A user-specific event handle is registered. Return values Table 7- 74 None RegisterOnRuntimeManagerLostEvent() - .NET (C#) Syntax void RegisterOnRuntimeManagerLostEvent(); Parameters None Return values None UnregisterOnRuntimeManagerLostCallback() Unregisters the callback function. When the event occurs, no callback function is called. Table 7- 75 UnregisterOnRuntimeManagerLostCallback() - Native C++ Syntax void UnregisterOnRuntimeManagerLostCallback(); Parameters None Return values None S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 111 User interfaces (API) 7.5 API ISimulationRuntimeManager UnregisterOnRuntimeManagerLostEvent() Unregisters the event object. Table 7- 76 UnregisterOnRuntimeManagerLostEvent() - Native C++ Syntax void UnregisterOnRuntimeManagerLostEvent(); Parameters None Return values None Table 7- 77 UnregisterOnRuntimeManagerLostEvent() - .NET (C#) Syntax void UnregisterOnRuntimeManagerLostEvent(); Parameters None Return values None WaitForOnRuntimeManagerLostEvent() The function will block the program until the registered event object is set to the signaled state or the timeout interval is exceeded. Table 7- 78 WaitForOnRuntimeManagerLostEvent() - Native C++ bool WaitForOnRuntimeManagerLostEvent(); bool WaitForOnRuntimeManagerLostEvent( UINT32 in_Time_ms ); Syntax Parameters • None: The time limit is set to INFINITE. • UINT32 in_Time_ms: Value for the time limit in milliseconds. Return values • • Table 7- 79 true: If the event object was set to the signaled state. false: If no event was received during the defined timeout interval. WaitForOnRuntimeManagerLostEvent() - .NET (C#) Syntax Parameters bool WaitForOnRuntimeManagerLostEvent(); bool WaitForOnRuntimeManagerLostEvent( UInt32 in_Time_ms ); • None: The time limit is set to INFINITE. • UInt32 in_Time_ms: Value for the time limit in milliseconds. Return values • • true: If the event object was set to the signaled state. false: If no event was received during the defined timeout interval. S7-PLCSIM Advanced 112 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances 7.6 API IInstances 7.6.1 Interfaces - Information and settings Dispose() Deletes the managed interface and unloads the native components of the user interfaces. Table 7- 80 Dispose() - .NET (C#) Syntax void Dispose() Parameters None Return values None GetID() / ID { get; } Returns the instance ID. The ID is assigned by Runtime Manager when the instance is registered. Table 7- 81 GetID() - Native C++ Syntax INT32 GetID(); Parameters None Return values INT32: Instance ID Table 7- 82 ID { get; } - .NET (C#) Syntax UInt32 ID { get; } Parameters None Return values Uint32: Instance ID Exceptions None S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 113 User interfaces (API) 7.6 API IInstances GetName() / Name { get; } Returns the name of the instance. Table 7- 83 GetName() - Native C++ ERuntimeErrorCode GetName( WCHAR inout_Name[], UINT32 in_ArrayLength ); Syntax Parameters • WCHAR inout_Name[]: A user-allocated storage for the name of the instance. The field length should be at least as long as DINSTANCE_NAME_MAX_LENGTH. See Definitions and constants (Page 271). • UINT32 in_ArrayLength: Field length (Wide character) Return values Example C++ Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_WRONG_ARGUMENT The name does not fit in the storage. ISimulationRuntimeManager * api = NULL; ERuntimeErrorCode result = Initialize(&api); IInstance* psa = NULL; if (result == SREC_OK) { result = api->RegisterInstance(&psa); } WCHAR name[DINSTANCE_NAME_MAX_LENGTH]; if (result == SREC_OK) { result = psa->GetName(name, DINSTANCE_NAME_MAX_LENGTH); } Table 7- 84 Name { get; } - .NET (C#) Syntax string Name { get; } Parameters None Return values Name of the instance. Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code ERuntimeErrorCode.InterfaceRemoved Condition The instance is not registered in Runtime Manager. S7-PLCSIM Advanced 114 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances GetCPUType() Returns the CPU type of the virtual controller. Table 7- 85 GetCPUType() - Native C++ Syntax ECPUType GetCPUType(); Parameters None Return values An enumeration element that defines the CPU type. See ECPUType (Page 289). SetCPUType() Sets the CPU type of the virtual controller. A change of CPU type occurs only when the controller is restarted. Table 7- 86 SetCPUType() - Native C++ Syntax void SetCPUType(ECPUType in_Value); Parameters • ECPUType in_Value: Defines which CPU type is simulated at the start of the instance. When a different CPU type is loaded via STEP 7 or from the Virtual Memory Card, this CPU type applies. Return values None CPUType { get; set; } Returns or sets the CPU type of the virtual controller. A change of CPU type occurs only when the controller is restarted. When a different CPU type is loaded via STEP 7 or from the Virtual Memory Card, this CPU type applies. Table 7- 87 CPUType { get; set; } - .NET (C#) Syntax ECPUType CPUType { get; set; } Parameters None Return values An enumeration element that defines the CPU type. Exceptions None S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 115 User interfaces (API) 7.6 API IInstances GetCommunicationInterface() Returns the communication interface of the virtual controller: Local communication (Softbus) or TCPIP. A change of communication interface occurs only when the controller is restarted. All instances that are started must use the same communication interface. PowerOn is prevented if a communication interface that is not used by the started instances is selected. Table 7- 88 GetCommunicationInterface() - Native C++ Syntax ECommunicationInterface GetCommunicationInterface(); Parameters None Return values • SRCI_NONE Cannot be selected. Is returned if the instance interface is no longer valid. • SRCI_SOFTBUS • SRCI_TCPIP Is returned if the virtual controller uses the Softbus. Is returned if the virtual controller communicates over the virtual adapter. SetCommunicationInterface() Sets the communication interface of the virtual controller: Local communication (Softbus) or TCPIP. A change of communication interface occurs only when the controller is restarted. All instances that are started must use the same communication interface. PowerOn is prevented if a communication interface that is not used by the started instances is selected. Table 7- 89 SetCommunicationInterface() - Native C++ Syntax void SetCommunicationInterface(ECommunicationInterface in_Value); Parameters • SRCI_NONE Cannot be selected. • SRCI_SOFTBUS Is set to activate communication via Softbus. • SRCI_TCPIP Is set to activate communication over the virtual adapter. Return values None S7-PLCSIM Advanced 116 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances CommunicationInterface { get; set; } Sets or returns the communication interface of the virtual controller: Local communication (Softbus) or TCPIP. A change of communication interface occurs only when the controller is restarted. All instances that are started must use the same communication interface. PowerOn is prevented if a communication interface that is not used by the started instances is selected. Table 7- 90 CommunicationInterface { get; set; } - .NET (C#) Syntax ECommunicationInterface CommunicationInterface { get; set; } Parameters None Return values • ECommunicationInterface.None Cannot be selected. Is returned if the instance interface is no longer valid. • ECommunicationInterface.Softbus • ECommunicationInterface.TCPIP Is returned if the virtual controller uses the Softbus. Is returned if the virtual controller communicates over the virtual adapter. Exceptions None GetInfo() / Info { get; } Returns a structure that provides information about the instance. Table 7- 91 GetInfo() - Native C++ Syntax SInstanceInfo GetInfo(); Parameters None Return values SInstanceInfo: A structure that provides information about the instance. See Table 7- 92 SInstanceInfo (Page 278). Info { get; } - .NET (C#) Syntax SInstanceInfo Info { get; } Parameters None Return values SInstanceInfo: A structure that provides information about the instance. Exceptions None S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 117 User interfaces (API) 7.6 API IInstances UnregisterInstance() Unregisters this instance from Runtime Manager. Note Loss of the interfaces Other applications that are connected to this instance will lose their interface to this instance. Table 7- 93 UnregisterInstance() - Native C++ Syntax ERuntimeErrorCode UnregisterInstance(); Parameters None Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED SREC_TIMEOUT Table 7- 94 The function does not return on time. UnregisterInstance() - .NET (C#) Syntax void UnregisterInstance(); Parameters None Return values None Exceptions The instance is not registered in Runtime Manager. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. S7-PLCSIM Advanced 118 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances 7.6.2 Controller - Information and settings GetControllerName() / ControllerName { get; } Returns the downloaded name of the virtual controller. Table 7- 95 GetControllerName() - Native C++ ERuntimeErrorCode GetControllerName( WCHAR inout_Name[], UINT32 in_ArrayLength ); Syntax Parameters • WCHAR inout_Name[]: A user-allocated storage for the name. • UINT32 in_ArrayLength: The length of the storage. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INDEX_OUT_OF_RANGE Table 7- 96 The name does not fit in the storage. ControllerName { get; } - .NET (C#) Syntax string ControllerName { get; } Parameters None Return values string: Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException The downloaded name of the virtual controller. Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 119 User interfaces (API) 7.6 API IInstances GetControllerShortDesignation() / ControllerShortDesignation { get; } Returns the downloaded short designation of the virtual controller. Table 7- 97 GetControllerShortDesignation() - Native C++ ERuntimeErrorCode GetControllerShortDesignation( WCHAR inout_ShortDesignation[], UINT32 in_ArrayLength ); Syntax Parameters • WCHAR inout_ShortDesignation[]: A user-allocated storage for the short designation. • UINT32 in_ArrayLength: The length of the storage. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INDEX_OUT_OF_RANGE Table 7- 98 The name does not fit in the storage. ControllerShortDesignation { get; } - .NET (C#) Syntax string ControllerShortDesignation { get; } Parameters None Return values string: Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException The downloaded short designation of the virtual controller. Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. GetControllerIPCount() Returns the number of configured IP addresses of the virtual controller. If the function fails, the return value is 0. Table 7- 99 GetControllerIPCount() - Native C++ Syntax UINT32 GetControllerIPCount(); Parameters None Return values INT32: Number of configured IP addresses of the virtual controller. S7-PLCSIM Advanced 120 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances GetControllerIP() / ControllerIP { get; } Returns a configured IP address of the instance. Table 7- 100 GetControllerIP() - Native C++ UIP GetControllerIP(); UIP GetControllerIP( UINT32 in_Index ); Syntax Parameters • WCHAR in_Index: The index of the IP address you want to receive. The index must be less than the value you receive from GetControllerIPCount(). The default setting is 0. Return values UIP: IP address of the virtual controller. If the function fails, the return value is 0. Table 7- 101 ControllerIP { get; } - .NET (C#) Syntax string[] ControllerIP { get; } Parameters None Return values string: All downloaded IP addresses of the virtual controller. If the function Exceptions None fails, the field is empty. GetControllerIPSuite4() / ControllerIPSuite4 { get; } Returns the IP suite instance. If the "Softbus" communication interface is used, the subnet mask and default gateway are 0. Table 7- 102 GetControllerIPSuite4() Native C++ Syntax Parameters Return values SIPSuite4 GetControllerIPSuite4(); SIPSuite4 GetControllerIPSuite4( UINT32 in_Index ); • WCHAR in_Index: The index of the IP address you want to receive. The index must be less than the value you receive from GetControllerIPCount(). The default setting is 0. SIPSuite4: The IP suite of the virtual controller. If the function fails, the return values are 0. Table 7- 103 ControllerIPSuite4 { get; } - .NET (#) Syntax SIPSuite4[] ControllerIPSuite4 { get; }; Parameters None Return values SIPSuite4[]: All downloaded IP suites of the virtual controller. If the function fails, the field is empty. Exceptions None S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 121 User interfaces (API) 7.6 API IInstances SetIPSuite() Sets the IP suite of the network interface of a virtual controller. Table 7- 104 SetIPSuite() - Native C++ Syntax Parameters ERuntimeErrorCode SetIPSuite( UINT32 in_InterfaceID, SIPSuite4 in_IPSuite, bool in_IsRemanent ); • UINT32 in_InterfaceID: The ID of the network interface. • SIPSuite4 in_IPSuite: The IP suite that is to be assigned to the network interface. The IP suite contains the IP address, the subnet mask and the standard gateway. If the communication interface is "Softbus", the subnet mask and standard gateway are ignored. • bool in_IsRemanent: If true, the IP suite is saved after restart of the virtual controller. If the communication interface is "Softbus", this flag is ignored. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING SREC_DOES_NOT_EXIST SREC_INVALID_OPERATING_STATE The process of the virtual controller is not running. There is no network interface with this ID. The virtual controller has not yet completed the boot process or is already in the shutdown phase. Table 7- 105 SetIPSuite() - .NET (C#) Syntax Parameters void SetIPSuite( UInt32 in_InterfaceID, SIPSuite4 in_IPSuite, bool in IsRemanent ); • UInt32 in_InterfaceID: The ID of the network interface. • SIPSuite4 in_IPSuite: If the communication interface is "Softbus", the subnet mask and standard gateway are ignored. • bool in_IsRemanent: If true, the IP suite is saved after restart of the virtual controller. If the communication interface is "Softbus", this flag is ignored. S7-PLCSIM Advanced 122 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Return values Exceptions None Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist There is no network interface with this ID. ERuntimeErrorCode.InvalidOperatingState The virtual controller has not yet completed the boot process or is already in the shutdown phase. GetStoragePath() Returns the full directory in which the instance stores its data. Table 7- 106 GetStoragePath() - Native C++ Syntax Parameters ERuntimeErrorCode GetStoragePath( WCHAR inout_StoragePath[], UINT32 in_ArrayLength ); • WCHAR inout_StoragePath[]: A user-allocated storage for the storage path. The length of the array should be at least as long as DSTORAGE_PATH_MAX_LENGTH. See Data types (Page 257). • UINT32 in_ArrayLength: Length of the array (Wide character) Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED SREC_TIMEOUT SREC_INDEX_OUT_OF_RANGE The instance is not registered in Runtime Manager. The function does not return on time. The path does not fit in the storage. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 123 User interfaces (API) 7.6 API IInstances SetStoragePath() Sets the full path of the directory in which the instance stores its data. This can also be a network share. Set the path before you start the instance. A change to the path takes effect only when the controller is restarted. If no path is set, the default setting: >\Siemens\Simatic\Simulation\Runtime\Persistence\ is used. Table 7- 107 SetStoragePath() - Native C++ Syntax Parameters Return values ERuntimeErrorCode SetStoragePath( WCHAR* in_StoragePath ); • WCHAR* in_StoragePath: Full name of the storage path. The length of the name must be less than DSTORAGE_PATH_MAX_LENGTH. See Data types (Page 257). Runtime error code SREC_OK Condition The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INDEX_OUT_OF_RANGE The length of the path exceeds the limit. SREC_WRONG_ARGUMENT The path contains invalid characters. StoragePath { get; set; } Returns or sets the full path of the directory in which the instance stores its retentive data. This can also be a network share. Set the path before you start the instance. A change to the path takes effect only when the controller is restarted. If no path is set, the default setting: >\Siemens\Simatic\Simulation\Runtime\Persistence\ is used. Table 7- 108 StoragePath { get; set; } - .NET (C#) Syntax string StoragePath { get; set; } Parameters None Return values string: The configured storage path. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Exceptions Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.IndexOutOfRange ERuntimeErrorCode.WrongArgument The length of the path exceeds the limit. The path contains invalid characters. S7-PLCSIM Advanced 124 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances ArchiveStorage() The user program, the hardware configuration and the retentive data are stored in a file, the Virtual SIMATIC Memory Card. ArchiveStorage() stores this file as a ZIP file. The instance of the virtual controller must be in OFF operating state for this. Table 7- 109 ArchiveStorage() - Native C++ Syntax Parameters ERuntimeErrorCode ArchiveStorage( WCHAR* in_FullFileName ); • WCHAR in_FullFileName: The full path to the ZIP file. Return values Runtime error code SREC_OK Condition The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INVALID_OPERATING_STATE The instance is not in OFF operating state. SREC_INVALID_ARCHIVE_PATH The archive path is invalid. SREC_CREATE_DIRECTORIES_FAILED SREC_ARCHIVE_STORAGE_FAILED The directory for the ZIP file could not be created. The ZIP file could not be created. Table 7- 110 ArchiveStorage() - .NET (C#) Syntax Parameters void ArchiveStorage( string in_ArchiveStorageFile ); • string in_ArchiveStorageFile: The full path to the ZIP file. The path relates to directories of the computer on which the instance runs. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code ERuntimeErrorCode.InterfaceRemoved ERuntimeErrorCode.Timeout ERuntimeErrorCode.InvalidOperatingState ERuntimeErrorCode.InvalidArchivePath ERuntimeErrorCode.CreateDirectoriesFailed ERuntimeErrorCode.ArchiveStorageNotCreated Condition The instance is not registered in Runtime Manager. The function does not return on time. The instance is not in OFF operating state. The archive path is invalid. The directory for the ZIP file could not be created. The ZIP file could not be created. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 125 User interfaces (API) 7.6 API IInstances RetrieveStorage() RetrieveStorage() creates a Virtual SIMATIC Memory Card from the archived ZIP file. The virtual controller must be in OFF operating state for this. Table 7- 111 RetrieveStorage() - Native C++ Syntax Parameters ERuntimeErrorCode RetrieveStorage( WCHAR* in_FullFileName ); • WCHAR* in_FullFileName: The full path to the ZIP file. The path relates to directories of the computer on which the instance runs. Return values Runtime error code SREC_OK Condition The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INVALID_OPERATING_STATE The instance is not in OFF operating state. SREC_INVALID_ARCHIVE_PATH The archive path is invalid. SREC_DELETE_EXISTING_STORAGE_FAI LED SREC_RETRIEVE_STORAGE_FAILURE The old storage cannot be deleted. The ZIP file cannot be unzipped. Table 7- 112 RetrieveStorage() - .NET (C#) Syntax Parameters void RetrieveStorage( string in_ArchiveStorageFile ); • string in_ArchiveStorageFile: The full path to the ZIP file. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code ERuntimeErrorCode.InterfaceRemoved ERuntimeErrorCode.Timeout Condition The instance is not registered in Runtime Manager. The function does not return on time. ERuntimeErrorCode.InvalidOperatingState The instance is not in OFF operating state. ERuntimeErrorCode.InvalidArchivePath ERuntimeErrorCode.DeleteExistingStorageFailed ERuntimeErrorCode.RetrieveStorageFailure The archive path is invalid. The old storage cannot be deleted. The ZIP file cannot be unzipped. S7-PLCSIM Advanced 126 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances 7.6.3 Operating state GetOperatingState() / OperatingState { get; } Returns the operating state of the virtual controller. If the operating state changes, the event OnOperatingStateChanged() (Page 228) is triggered. For details about the operating state, see Data types (Page 287). Table 7- 113 GetOperatingState() - Native C++ Syntax EOperatingState GetOperatingState(); Parameters None Return values • SROS_INVALID_OPERATING_STATE: If the function fails. • SROS_OFF: If the Simulation Runtime instance is not running. • SROS_BOOTING: If PowerOn() was called while in this state and the virtual controller is not yet • SROS_STOP: ready to start the user program. If the virtual controller is in STOP state. • SROS_STARTUP: If the user program is currently changing from STOP to RUN. • SROS_RUN: If the user program is running. • SROS_FREEZE: If the user program is being stopped (Freeze status). • SROS_SHUTTING_DOWN: If PowerOff() was called but the virtual controller is still in the Shutdown phase. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 127 User interfaces (API) 7.6 API IInstances Table 7- 114 OperatingState { get; } - .NET (C#) Syntax EOperatingState OperatingState { get; } Parameters None Return values • EOperatingState.InvalidOperatingState: If the function fails. • EOperatingState.Off: If the Simulation Runtime instance is not running. • EOperatingState.Booting: If PowerOn() was called while in this state and the virtual controller is not yet ready to start the user program. • EOperatingState.Stop: If the virtual controller is in STOP state. • EOperatingState.Startup: If the user program is currently changing from STOP to RUN. • EOperatingState.Run: If the user program is running. • EOperatingState.Freeze: If the user program is being stopped (Freeze status). • EOperatingState.ShuttingDown: If PowerOff() was called but the virtual controller is still in the Shutdown phase. S7-PLCSIM Advanced 128 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances PowerOn() The function creates the process for the Simulation Runtime instance and starts the firmware of the virtual controller. Table 7- 115 PowerOn() - Native C++ Syntax Parameters ERuntimeErrorCode PowerOn(); ERuntimeErrorCode PowerOn( UINT32 in_Timeout_ms ); • UINT32 in_Timeout_ms: A timeout value in milliseconds. Return values – If no timeout value is set, the function returns immediately. Subscribe to the OnOperatingStateChanged() event to find out when the operation has been completed. – If the value is greater than 0 (a value of 60000 is recommended), the function returns when the operation has been completed or after a timeout. – Expected operating states if this function is successful: { SROS_STOP , SROS_RUN } Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED SREC_TIMEOUT The instance is not registered in Runtime Manager. The expected operating state does not occur on time. SREC_ERROR_LOADING_DLL The Siemens.Simatic.Simulation.Runtime.Instan ce.exe cannot load the Siemens.Simatic.PlcSim.Vplc1500.dll. SREC_STORAGE_PATH_ALREADY_IN_USE The selected path for this instance is already being used by another instance. SREC_NO_STORAGE_PATH_SET The path could not be created. The length of the DSTORAGE_PATH_MAX_LENGTH characters may be exceeded. SREC_WARNING_ALREADY_EXISTS Only one warning. The instance is started. SREC_WARNING_TRIAL_MODE_ACTIVE No license available. You can use the instance without restrictions for a period of one hour. Afterwards, the instance is shut down. SREC_VIRTUAL_SWITCH_MISCONFIGURE D SREC_INSTANCE_NOT_RUNNING The warning occurs even when you import a license within this hour. The instance is then not shut down. The virtual switch is configured incorrectly. The process of the virtual controller is no longer running. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 129 User interfaces (API) 7.6 API IInstances Table 7- 116 PowerOn() - .NET (C#) Syntax Parameters ERuntimeErrorCode PowerOn(); ERuntimeErrorCode PowerOn( UInt32 in_Timeout_ms ); • UInt32 in_Timeout_ms: A timeout value in milliseconds. – If no timeout value is set, the function returns immediately. Subscribe to the OnOperatingStateChanged() event to find out when the operation has been completed. – If the value is greater than 0 (a value of 60000 is recommended), the function returns when the operation has been completed or after a timeout. Expected operating states when this function is successful: Return values { EOperatingState.Run, EOperatingState.Stop } Runtime error code Condition ERuntimeErrorCode.WarningAlreadyExists Only one warning. The instance is started. ERuntimeErrorCode.OK ERuntimeErrorCode.WarningTrialModeActive The function is successful. No license available. You can use the instance without restrictions for a period of one hour. Afterwards, the instance is shut down. The warning occurs even when you import a license within this hour. The instance is then not shut down. Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code ERuntimeErrorCode.InterfaceRemoved ERuntimeErrorCode.Timeout ERuntimeErrorCode.ErrorLoadingDll Condition The instance is not registered in Runtime Manager. The expected operating state does not occur on time. The Siemens.Simatic.Simulation. Runtime.Instance.exe cannot load the Siemens.Simatic.PlcSim.Vplc1500.dll. ERuntimeErrorCode.StoragePathAlreadyInUse The selected path for this instance is already being used by another instance. ERuntimeErrorCode.NoStoragePathSet The path could not be created. The length of the DSTORAGE_PATH_MAX_LENGTH characters may be exceeded. ERuntimeErrorCode.VirtualSwitchMisconfigured The virtual switch is configured incorrectly. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is no longer running. S7-PLCSIM Advanced 130 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances PowerOff() Shuts down the Simulation Runtime and closes its process. Table 7- 117 PowerOff() - Native C++ Syntax Parameters ERuntimeErrorCode PowerOff(); ERuntimeErrorCode PowerOff( UINT32 in_Timeout_ms ); • UINT32 in_Timeout_ms: A timeout value in milliseconds. – If no timeout value is set, the function returns immediately. Subscribe to the OnOperatingStateChanged() event to find out when the operation has been completed. – If the value is greater than 0 (a value of 60000 is recommended), the function returns when the operation has been completed or after a timeout. Expected operating states when this function is successful: Return values { SROS_OFF } Runtime error code Condition SREC_INTERFACE_REMOVED The function is successful. The instance is not registered in Runtime Manager. SREC_OK SREC_TIMEOUT SREC_INSTANCE_NOT_RUNNING The expected operating state does not occur on time. The process of the virtual controller is not running. Table 7- 118 PowerOff() - .NET (C#) Syntax Parameters void PowerOff(); void PowerOff( UInt32 in_Timeout_ms ); • UInt32 in_Timeout_ms: A timeout value in milliseconds. – If no timeout value is set, the function returns immediately. Subscribe to the OnOperatingStateChanged() event to find out when the operation has been completed. – If the value is greater than 0 (a value of 60000 is recommended), the function returns when the operation has been completed or after a timeout. Expected operating states when this function is successful: Return values Exceptions None { EOperatingState.Off } Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The expected operating state does not occur on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 131 User interfaces (API) 7.6 API IInstances MemoryReset() Shuts down the virtual controller, closes its processes and performs a restart. Table 7- 119 MemoryReset() - Native C++ Syntax Parameters ERuntimeErrorCode MemoryReset(); ERuntimeErrorCode MemoryReset( UINT32 in_Timeout_ms ); • UINT32 in_Timeout_ms: A timeout value in milliseconds. – If no timeout value is set, the function returns immediately. Subscribe to the OnOperatingStateChanged() event to find out when the operation has been completed. – If the value is greater than 0 (a value of 60000 is recommended), the function returns when the operation has been completed or after a timeout. Expected operating states when this function is successful: Return values { SROS_STOP , SROS_RUN } Runtime error code Condition SREC_INTERFACE_REMOVED The function is successful. The instance is not registered in Runtime Manager. SREC_OK SREC_TIMEOUT SREC_INSTANCE_NOT_RUNNING The expected operating state does not occur on time. The process of the virtual controller is not running. Table 7- 120 MemoryReset() - .NET (C#) Syntax Parameters void MemoryReset(); void MemoryReset( UInt32 in_Timeout_ms ); • UInt32 in_Timeout_ms: A timeout value in milliseconds. – If no timeout value is set, the function returns immediately. Subscribe to the OnOperatingStateChanged() event to find out when the operation has been completed. – If the value is greater than 0 (a value of 60000 is recommended), the function returns when the operation has been completed or after a timeout. Expected operating states when this function is successful: Return values Exceptions None { EOperatingState.Run, EOperatingState.Stop } Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The expected operating state does not occur on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. S7-PLCSIM Advanced 132 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Run() Calls on the virtual controller to change to RUN operating state. Table 7- 121 Run() - Native C++ Syntax Parameters ERuntimeErrorCode Run(); ERuntimeErrorCode Run( UINT32 in_Timeout_ms ); • UINT32 in_Timeout_ms: A timeout value in milliseconds. – If no timeout value is set, the function returns immediately. Subscribe to the OnOperatingStateChanged() event to find out when the operation has been completed. – If the value is greater than 0 (a value of 60000 is recommended), the function returns when the operation has been completed or after a timeout. Expected operating states when this function is successful: Return values { SROS_STOP , SROS_RUN } Runtime error code SREC_OK SREC_INTERFACE_REMOVED SREC_TIMEOUT SREC_INSTANCE_NOT_RUNNING Condition The function is successful. The instance is not registered in Runtime Manager. The expected operating state does not occur on time. The process of the virtual controller is not running. Table 7- 122 Run() - .NET (C#) Syntax Parameters void Run(); void Run( Uint32 in_Timeout_ms ); • UInt32 in_Timeout_ms: A timeout value in milliseconds. – If no timeout value is set, the function returns immediately. Subscribe to the OnOperatingStateChanged() event to find out when the operation has been completed. – If the value is greater than 0 (a value of 60000 is recommended), the function returns when the operation has been completed or after a timeout. Expected operating states when this function is successful: { EOperatingState.Run } Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code ERuntimeErrorCode.InterfaceRemoved ERuntimeErrorCode.Timeout ERuntimeErrorCode.InstanceNotRunning Condition The instance is not registered in Runtime Manager. The expected operating state does not occur on time. The process of the virtual controller is not running. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 133 User interfaces (API) 7.6 API IInstances Stop() Calls on the virtual controller to change to STOP operating state. Table 7- 123 Stop() - Native C++ Syntax Parameters ERuntimeErrorCode Stop(); ERuntimeErrorCode Stop( UINT32 in_Timeout_ms ); • UINT32 in_Timeout_ms: A timeout value in milliseconds. – If no timeout value is set, the function returns immediately. Subscribe to the OnOperatingStateChanged() event to find out when the operation has been completed. – If the value is greater than 0 (a value of 60000 is recommended), the function returns when the operation has been completed or after a timeout. Expected operating states when this function is successful: Return values { SROS_STOP } Runtime error code SREC_OK SREC_INTERFACE_REMOVED SREC_TIMEOUT SREC_INSTANCE_NOT_RUNNING Condition The function is successful. The instance is not registered in Runtime Manager. The expected operating state does not occur on time. The process of the virtual controller is not running. Table 7- 124 Stop() - .NET (C#) Syntax Parameters void Stop(); void Stop( bool in_IsSynchronous ); • UInt32 in_Timeout_ms: A timeout value in milliseconds. – If no timeout value is set, the function returns immediately. Subscribe to the OnOperatingStateChanged() event to find out when the operation has been completed. – If the value is greater than 0 (a value of 60000 is recommended), the function returns when the operation has been completed or after a timeout. Expected operating states when this function is successful: Return values Exceptions None { EOperatingState.Stop } Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The expected operating state does not occur on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. S7-PLCSIM Advanced 134 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances 7.6.4 Tag list UpdateTagList() The function reads the tags from the virtual controller and writes them to the shared storage arranged by name. If the tag is an array or a structure, there are multiple entries. In the case of a structure, there is an entry for the structure itself and an additional entry for each structure element. Entry_1: "StructName" Entry_2: "StructName.ElementName_1" .. Entry_N: "StructName.ElementName_n" In the case of an array, in this example a two-dimensional array, there is an entry for the array itself and an additional entry for each array element. Entry_1: "ArrayName" Entry_2: "ArrayName[a,b]", where {a} and {b} correspond to the first index of the respective dimension .. Entry_N: "ArrayName[x,y]", where {x} and {y} correspond to the last index of the respective dimension Memory for up to 500000 entries (not PLC tags) is reserved for the list. If the list becomes too large, the function returns the error/exception "NOT_ENOUGH_MEMORY". If there are problems with the maximum number of entries and not all tags are needed, two filters can be used when refreshing the tag table. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 135 User interfaces (API) 7.6 API IInstances Table 7- 125 UpdateTagList() - Native C++ Syntax Parameters ERuntimeErrorCode UpdateTagList(); ERuntimeErrorCode UpdateTagList( ETagListDetails in_TagListDetails ); ERuntimeErrorCode UpdateTagList( ETagListDetails in_TagListDetails, bool in_IsHMIVisibleOnly ); • ETagListDetails in_TagListDetails: Every combination of the following four areas: IO: Inputs and Outputs M: Bit memory CT: Counters and Timers DB: Data Blocks Example: IOM reads only the tags from the area Inputs / Outputs and Bit memory. The default setting is IOMCTDB. • Return values bool in_IsHMIVisibleOnly: If true, only tags marked with "HMI Visible" are read. The default setting is true. Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED SREC_TIMEOUT The instance is not registered in Runtime Manager. The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_NOT_ENOUGH_MEMORY More than 500000 entries are requested. S7-PLCSIM Advanced 136 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 126 UpdateTagList() - .NET (C#) Syntax Parameters void UpdateTagList(); void UpdateTagList( ETagListDetails in_TagListDetails ); void UpdateTagList( ETagListDetails in_TagListDetails, bool in_IsHMIVisibleOnly ); • ETagListDetails in_TagListDetails: Every combination of the following four areas: IO: Inputs and Outputs M: Bit memory CT: Counters and Timers DB: Data Blocks Example: IOM reads only the tags from the area Inputs / Outputs and Bit memory. The default setting is IOMCTDB. • bool in_IsHMIVisibleOnly: If true, only tags marked with "HMI Visible" are read. The default setting is true. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code ERuntimeErrorCode.InterfaceRemoved ERuntimeErrorCode.Timeout Condition The instance is not registered in Runtime Manager. The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.NotEnoughMemory More than 500000 entries are requested. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 137 User interfaces (API) 7.6 API IInstances GetTagListStatus() Returns the current update status of the tag list storage. "inout_TagListDetails" is NONE, if the list needs to be updated. Table 7- 127 GetTagListStatus() - Native C++ Syntax Parameters ERuntimeErrorCode GetTagListStatus( ETagListDetails* out_TagListDetails, bool* out_IsHMIVisibleOnly ); • ETagListDetails out_TagListDetails: Status of the tag list details. SRTLD_NONE when an update of the list is required. • Return values bool out_IsHMIVisibleOnly: If true, only tags marked with "HMI Visible" are available in the list. Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. Table 7- 128 GetTagListStatus() - .NET (C#) Syntax Parameters void GetTagListStatus( out ETagListDetails out_TagListDetails, out bool out_IsHMIVisibleOnly ); • out ETagListDetails out_TagListDetails: Status of the tag list details. ETagListDetails.None when an update of the list is required. • out bool out_IsHMIVisibleOnly: If true, only tags marked with "HMI Visible" are available in the list. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. GetTagInfoCount() Returns the number of entries in the tag list storage. If the function fails, the return value is 0. Table 7- 129 GetTagInfoCount() - Native C++ Syntax UINT32 GetTagInfoCount(); Parameters None Return values Number of entries in the tag list storage. S7-PLCSIM Advanced 138 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances GetTagInfos() / TagInfos { get; } Returns a list of all tags. Table 7- 130 GetTagInfos() - Native C++ Syntax Parameters ERuntimeErrorCode GetTagInfos( UINT32 in_BufferLength, STagInfo* inout_TagInfos, UINT32* out_TagCount ); • UINT32 in_BufferLength: The number of elements that the storage can accommodate. • STagInfo* inout_TagInfos: • UINT32* out_TagCount: The user-allocated storage that accommodates the tags. Returns the number of tags that were written to the storage. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING SREC_INDEX_OUT_OF_RANGE The process of the virtual controller is not running. The elements do not fit in the storage. Table 7- 131 TagInfos { get; } - .NET (C#) Syntax STagInfo[] TagInfos { get; } Parameters None Return values An array that contains all available entries of the storage. Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 139 User interfaces (API) 7.6 API IInstances CreateConfigurationFile() Writes all entries from the tag list to an XML file. Table 7- 132 CreateConfigurationFile() - Native C++ Syntax Parameters ERuntimeErrorCode CreateConfigurationFile( WCHAR* in_FullFileName ); • WCHAR* in_FullFileName: Full file name of the XML file: + + . Return values Runtime error code SREC_OK Condition The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_WRONG_ARGUMENT The file name is invalid. Table 7- 133 CreateConfigurationFile() - .NET (C#) Syntax Parameters Return values void CreateConfigurationFile( string in_FullFileName ); None • string in_FullFileName: File name of the XML file that is to be written to: + + . Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.WrongArgument The file name is invalid. S7-PLCSIM Advanced 140 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances 7.6.5 I/O access 7.6.5.1 I/O access via address - Reading InputArea { get; }, MarkerArea { get; }, OutputArea { get; } Returns an interface that you use to call the following .NET functions of section "I/O access via address". Table 7- 134 InputArea { get; } MarkerArea { get; } OutputArea { get; } - .NET (C#) Syntax Parameters Return values IIOArea InputArea { get; } IIOArea MarkerArea { get; } IIOArea OutputArea { get; } None IIOArea: The interface is used to call the "I/O access via address" functions. GetAreaSize() / AreaSize { get; } Returns the size of the area in bytes. Table 7- 135 GetAreaSize() - Native C++ Syntax Parameters Return values UINT32 GetAreaSize( EArea in_Area ); • EArea in_Area: The area whose size you want to receive. Permissible values: {SRA_INPUT, SRA_MARKER, SRA_OUTPUT}. See EArea (Page 286). UINT32: Size of the area in bytes. If the function was successful, the value is not equal to 0. Table 7- 136 AreaSize { get; } - .NET (C#) Syntax Parameters Return values UInt32 InputArea.AreaSize { get; } UInt32 MarkerArea.AreaSize { get; } UInt32 OutputArea.AreaSize { get; } None Uint32: Size of the area in bytes. If the function was successful, the value is not equal to 0. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 141 User interfaces (API) 7.6 API IInstances ReadBit() Reads an individual bit from the area. Note The function allows access to the entire storage area of the virtual controller. Recommendation: Therefore, use access via the tag name and not via the address areas. Table 7- 137 ReadBit() - Native C++ Syntax Parameters ERuntimeErrorCode ReadBit( EArea in_Area, UINT32 in_Offset, UINT8 in_Bit, bool* out_Value ); • EArea in_Area: The area from which you want to read. Permissible values: {SRA_INPUT, SRA_MARKER, SRA_OUTPUT}. See EArea (Page 286). • UINT32 in_Offset: The byte offset within the area. The value must be between 0 and the value that GetAreaSize() returns. • UINT8 in_Bit: The bit offset within the byte. The value must be between 0 and 7. • bool* out_Value: Returns the bit value. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING SREC_INDEX_OUT_OF_RANGE SREC_WRONG_ARGUMENT The process of the virtual controller is not running. Offset or bits are invaid. The area is invalid. S7-PLCSIM Advanced 142 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 138 ReadBit() - .NET (C#) Syntax Parameters bool InputArea.ReadBit( UInt32 in_Offset, Byte in_Bit ); bool MarkerArea.ReadBit( UInt32 in_Offset, Byte in_Bit ); bool OutputArea.ReadBit( UInt32 in_Offset, Byte in_Bit ); • UInt32 in_Offset: The byte offset within the area. The value must be between 0 and the value that AreaSize returns. • Byte in_Bit: The bit offset within the byte. The value must be between 0 and 7. Return values Exceptions bool: Bit value Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning ERuntimeErrorCode.IndexOutOfRange The process of the virtual controller is not running. Offset or bits are invaid. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 143 User interfaces (API) 7.6 API IInstances ReadByte() Reads an individual bit from the area. Note The function allows access to the entire storage area of the virtual controller. Recommendation: Therefore, use access via the tag name and not via the address areas. Table 7- 139 ReadByte() - Native C++ Syntax Parameters ERuntimeErrorCode ReadByte( EArea in_Area, UINT32 in_Offset, BYTE* out Value); • EArea in_Area: The area from which you want to read. Permissible values: {SRA_INPUT, SRA_MARKER, SRA_OUTPUT}. See EArea (Page 286). • UINT32 in_Offset: The byte offset within the area. The value must be between 0 and the value that GetAreaSize() returns. • BYTE* out_Value: Returns the byte value. Return values Runtime error code SREC_OK Condition The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_INDEX_OUT_OF_RANGE Offset is invalid. SREC_WRONG_ARGUMENT The area is invalid. S7-PLCSIM Advanced 144 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 140 ReadByte() - .NET (C#) Syntax Parameters Return values Exceptions Byte InputArea.ReadByte( UInt32 in_Offset ); Byte MarkerArea.ReadByte( UInt32 in_Offset ); Byte OutputArea.ReadByte( UInt32 in_Offset ); • UInt32 in_Offset: The byte offset within the area. The value must be between 0 and the value that AreaSize returns. Byte: Byte value. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.IndexOutOfRange Offset is invalid. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 145 User interfaces (API) 7.6 API IInstances ReadBytes() Reads a byte array from the area. Note The function allows access to the entire storage area of the virtual controller. Recommendation: Therefore, use access via the tag name and not via the address areas. Table 7- 141 ReadByte() - Native C++ Syntax Parameters ERuntimeErrorCode ReadBytes( EArea in_Area, UINT32 in_Offset, UINT32 in_BytesToRead, UINT32* out_BytesRead, BYTE inout_Values[] ); • EArea in_Area: The area from which you want to read. Permissible values: {SRA_INPUT, SRA_MARKER, SRA_OUTPUT}. See EArea (Page 286). • UINT32 in_Offset: The byte offset within the area. The value must be between 0 and the value that GetAreaSize() returns. • UINT32 in_BytesToRead: Contains the size of the value storage. • UINT32* out_BytesRead: Returns the number of bytes that were just written to the value storage. • BYTE inout_Values[]: The storage for the bytes that are read from the area. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED SREC_TIMEOUT SREC_INSTANCE_NOT_RUNNING SREC_INDEX_OUT_OF_RANGE SREC_WRONG_ARGUMENT The instance is not registered in Runtime Manager. The function does not return on time. The process of the virtual controller is not running. The offset is outside the area size. No byte could be read. The area is invalid. S7-PLCSIM Advanced 146 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 142 ReadBytes() - .NET (C#) Syntax Parameters Byte[] InputArea.ReadBytes( UInt32 in_Offset, UInt32 in_BytesToRead ); Byte[] MarkerArea.ReadBytes( UInt32 in_Offset, UInt32 in_BytesToRead ); Byte[] OutputArea.ReadBytes( UInt32 in_Offset, UInt32 in_BytesToRead ); • UInt32 in_Offset: The byte offset within the area. The value must be between 0 and the value that AreaSize returns. • UInt32 in_BytesToRead: The number of bytes to be read. Return values Exceptions Byte[]: The read bytes. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning ERuntimeErrorCode.IndexOutOfRange The process of the virtual controller is not running. The offset is outside the area size. No byte could be read. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 147 User interfaces (API) 7.6 API IInstances ReadSignals() Reads a signal list altogether (structures and arrays). The function also takes into consideration the byte order (Endianness). Only primitive data type signals are supported, but the function is not typical. Note The function allows access to the entire storage area of the virtual controller. Recommendation: Therefore, use access via the tag name and not via the address areas. Table 7- 143 ReadSignals() - Native C++ Syntax Parameters ERuntimeErrorCode ReadSignals( EArea in_Area, SDataValueByAddress* inout_Signals, UINT32 in_SignalCount ); • EArea in_Area: The area from which you want to read. Permissible values: {SRA_INPUT, SRA_MARKER, SRA_OUTPUT}. See EArea (Page 286). • SDataValueByAddress* inout_Signals: The signal list to be read. The result is stored in the structure. • UINT32 in_SignalCount: Number of signals in the list. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING SREC_INDEX_OUT_OF_RANGE SREC_WRONG_ARGUMENT The process of the virtual controller is not running. Offset or bits are invaid. The area is invalid. S7-PLCSIM Advanced 148 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 144 ReadSignals() - .NET (C#) Syntax Parameters void ReadSignals( ref SDataValueByAddress[] inout_Signals ); • ref SDataValueByAddress[] inout_Signals: The signal list to be read. Return values Exceptions None Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.IndexOutOfRange Offset or bits are invaid. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 149 User interfaces (API) 7.6 API IInstances 7.6.5.2 I/O access via address - Writing WriteBit() Writes an individual bit to the area. Note Data can be overwritten The function allows access to the entire storage area of the virtual controller. Recommendation: Therefore, use access via the tag name and not via the address areas. Table 7- 145 WriteBit() - Native C++ Syntax Parameters ERuntimeErrorCode WriteBit( EArea in_Area, UINT32 in_Offset, UINT8 in_Bit, bool in_Value ); • EArea in_Area: The area that is to be written. Permissible values: {SRA_INPUT, SRA_MARKER, SRA_OUTPUT}. See EArea (Page 286). • UINT32 in_Offset: The byte offset within the area. The value must be between 0 and the value that GetAreaSize() returns. • UINT8 in_Bit: The bit offset within the byte. The value must be between 0 and 7. • bool in_Value: Bit value. Return values Runtime error code SREC_OK Condition The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_INDEX_OUT_OF_RANGE Offset or bits are invaid. SREC_WRONG_ARGUMENT Area is invalid. S7-PLCSIM Advanced 150 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 146 WriteBit() - .NET (C#) Syntax Parameters void InputArea WriteBit( UInt32 in_Offset, Byte in_Bit, bool in_Value ); void MarkerArea WriteBit( UInt32 in_Offset, Byte in_Bit, bool in_Value ); void OutputArea WriteBit( UInt32 in_Offset, Byte in_Bit, bool in_Value ); • UInt32 in_Offset: The byte offset within the area. The value must be between 0 and the value that AreaSize returns. • Byte in_Bit: The bit offset within the byte. The value must be between 0 and 7. • bool in_Value: Bit value. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code ERuntimeErrorCode.InterfaceRemoved Condition The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.IndexOutOfRange Offset or bits are invaid. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 151 User interfaces (API) 7.6 API IInstances WriteByte() Writes an individual byte to the area. Note Data can be overwritten The function allows access to the entire storage area of the virtual controller. Recommendation: Therefore, use access via the tag name and not via the address areas. Table 7- 147 WriteByte() - Native C++ Syntax Parameters ERuntimeErrorCode WriteByte( EArea in_Area, UINT32 in_Offset, BYTE in Value); • EArea in_Area: The area that is to be written. Permissible values: {SRA_INPUT, SRA_MARKER, SRA_OUTPUT}. See EArea (Page 286). • UINT32 in_Offset: The byte offset within the area. The value must be between 0 and the value that GetAreaSize() returns. • BYTE in_Value: Byte value. Return values Runtime error code SREC_OK Condition The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_INDEX_OUT_OF_RANGE Offset is invalid. SREC_WRONG_ARGUMENT Area is invalid. S7-PLCSIM Advanced 152 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 148 WriteByte() - .NET (C#) Syntax Parameters void InputArea.WriteByte( UInt32 in_Offset, Byte in_Value ); void MarkerArea.WriteByte( UInt32 in_Offset, Byte in_Value ); void OutputArea.WriteByte( UInt32 in_Offset, Byte in_Value ); • UINT32 in_Offset: The byte offset within the area. The value must be between 0 and the value that AreaSize returns. • BYTE in_Value: Byte value. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning ERuntimeErrorCode.IndexOutOfRange The process of the virtual controller is not running. Offset is invalid. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 153 User interfaces (API) 7.6 API IInstances WriteBytes() Writes a byte array to the area. Note Data can be overwritten The function allows access to the entire storage area of the virtual controller. Recommendation: Therefore, use access via the tag name and not via the address areas. Table 7- 149 WriteBytes() - Native C++ Syntax Parameters ERuntimeErrorCode WriteBytes( EArea in_Area, UINT32 in_Offset, UINT32 in_BytesToWrite, UINT32* out_BytesWritten, BYTE in_Values[]) ; • EArea in_Area: The area that is to be written. Permissible values: {SRA_INPUT, SRA_MARKER, SRA_OUTPUT}. See EArea (Page 286). • UINT32 in_Offset: The byte offset within the area. The value must be between 0 and the value that GetAreaSize() returns. • UINT32 in_BytesToWrite: Contains the size of the array value to be written. • UINT32* out_BytesWritten: Contains the number of bytes that were just written. • BYTE in_Values[]: Byte array that is to be written to the area. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED SREC_TIMEOUT SREC_INSTANCE_NOT_RUNNING SREC_INDEX_OUT_OF_RANGE SREC_WRONG_ARGUMENT The instance is not registered in Runtime Manager. The function does not return on time. The process of the virtual controller is not running. The offset is outside the area size. No byte could be written. The area is invalid. S7-PLCSIM Advanced 154 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 150 WriteBytes() - .NET (C#) Syntax Parameters UInt32 InputArea.WriteBytes( UInt32 in_Offset, Byte[] in_Values ); UInt32 InputArea.WriteBytes( UInt32 in_Offset, UInt32 in_BytesToWrite, Byte[] in_Values ); UInt32 MarkerArea.WriteBytes( UInt32 in_Offset, Byte[] in_Values ); UInt32 MarkerArea.WriteBytes( UInt32 in_Offset, UInt32 in_BytesToWrite, Byte[] in_Values ); UInt32 OutputArea.WriteBytes( UInt32 in_Offset, Byte[] in_Values ); UInt32 OutputArea.WriteBytes( UInt32 in_Offset, UInt32 in_BytesToWrite, Byte[] in_Values ); • UINT32 in_Offset: The byte offset within the area. The value must be between 0 and the value that AreaSize returns. • UInt32 in_BytesToWrite: Contains the number of bytes to be written. The value must be between 1 and the size of the array value. • BYTE in_Value: Byte value. Return values Exceptions Uint32: Contains the number of bytes that were just written. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.IndexOutOfRange The offset is outside the area size. No byte could be written. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 155 User interfaces (API) 7.6 API IInstances WriteSignals() Writes a signal list altogether (structures and arrays). The function also takes into consideration the byte order (Endianness). The function supports only primitive data type signals. The function is not typical, however. Note Data can be overwritten The function allows access to the entire storage area of the virtual controller. Recommendation: Therefore, use access via the tag name and not via the address areas. Table 7- 151 WriteSignals() - Native C++ Syntax Parameters ERuntimeErrorCode WriteSignals( EArea in_Area, SDataValueByAddress* in_Signals, UINT32 in_SignalCount ); • EArea in_Area: The area that is to be written. Permissible values: {SRA_INPUT, SRA_MARKER, SRA_OUTPUT}. See EArea (Page 286). • SDataValueByAddress* inout_Signals: The signal list to be written. • UINT32 in_SignalCount: Number of signals in the list. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING SREC_INDEX_OUT_OF_RANGE SREC_WRONG_ARGUMENT The process of the virtual controller is not running. Offset or bits are invaid. The area is invalid. S7-PLCSIM Advanced 156 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 152 WriteSignals() - .NET (C#) Syntax Parameters void InputArea.WriteSignals( SDataValueByAddress[] in_Signals ); void MarkerArea.WriteSignals( SDataValueByAddress[] in_Signals ); void OutputArea.WriteSignals( SDataValueByAddress[] in_Signals ); • SDataValueByAddress[] in_Signals: The signal list to be written. Return values Exceptions None Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.IndexOutOfRange Offset or bits are invaid. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 157 User interfaces (API) 7.6 API IInstances 7.6.5.3 I/O access via tag name - Reading Read() Reads the value of a PLC tag. Table 7- 153 Read() - Native C++ Syntax Parameters ERuntimeErrorCode Read( WCHAR* in_Tag, SDataValue* inout_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be read. • SDataValue* inout_Value: Contains the value and the expected type of the PLC tag. If the expected type is UNSPECIFIC, it is set to the stored type when the function was successful. The STRUCT type is not supported. Structures and arrays can be read altogether with ReadSignals(). Return values Runtime error code SREC_OK SREC_INTERFACE_REMOVED SREC_TIMEOUT Condition The function is successful. The instance is not registered in Runtime Manager. The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 158 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 154 Read() - .NET (C#) Syntax Parameters SDataValue Read( string in_Tag ) • string in_Tag: The name of the PLC tag that is to be read. Return values Exceptions SDataValue: Contains the value and the type of the PLC tag. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types. ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 159 User interfaces (API) 7.6 API IInstances ReadBool() Reads the value of a PLC tag. Table 7- 155 ReadBool() - Native C++ Syntax Parameters ERuntimeErrorCode ReadBool( WCHAR* in_Tag, bool* out_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be read. • bool* out_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 160 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 156 ReadBool() - .NET (C#) Syntax Parameters bool ReadBool( string in_Tag ) • string in_Tag: The name of the PLC tag that is to be read. Return values Exceptions bool: Contains the value of the PLC tag. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 161 User interfaces (API) 7.6 API IInstances ReadInt8() Reads the value of a PLC tag. Table 7- 157 ReadInt8() - Native C++ Syntax Parameters ERuntimeErrorCode ReadInt8( WCHAR* in_Tag, INT8* out_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be read. • INT8* out_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 162 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 158 ReadInt8() - .NET (C#) Syntax Parameters Int8 ReadInt8( string in_Tag ) • string in_Tag: The name of the PLC tag that is to be read. Return values Exceptions Int8: Contains the value and the type of the PLC tag. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 163 User interfaces (API) 7.6 API IInstances ReadInt16() Reads the value of a PLC tag. Table 7- 159 ReadInt16() - Native C++ Syntax Parameters ERuntimeErrorCode ReadInt16( WCHAR* in_Tag, INT16* out_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be read. • INT16* out_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 164 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 160 ReadInt16() - .NET (C#) Syntax Parameters Int16 ReadInt16( string in_Tag ) • string in_Tag: The name of the PLC tag that is to be read. Return values Exceptions Int16: Contains the value and the type of the PLC tag. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 165 User interfaces (API) 7.6 API IInstances ReadInt32() Reads the value of a PLC tag. Table 7- 161 ReadInt32() - Native C++ Syntax Parameters ERuntimeErrorCode ReadInt32( WCHAR* in_Tag, INT32* out_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be read. • INT32* out_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 166 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 162 ReadInt32() - .NET (C#) Syntax Parameters Int32 ReadInt32( string in_Tag ) • string in_Tag: The name of the PLC tag that is to be read. Return values Exceptions Int32: Contains the value and the type of the PLC tag. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 167 User interfaces (API) 7.6 API IInstances ReadInt64() Reads the value of a PLC tag. Table 7- 163 ReadInt64() - Native C++ Syntax Parameters ERuntimeErrorCode ReadInt64( WCHAR* in_Tag, INT64* out_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be read. • INT64* out_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 168 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 164 ReadInt64() - .NET (C#) Syntax Parameters Int64 ReadInt64( string in_Tag ) • string in_Tag: The name of the PLC tag that is to be read. Return values Exceptions Int64: Contains the value and the type of the PLC tag. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 169 User interfaces (API) 7.6 API IInstances ReadUInt8() Reads the value of a PLC tag. Table 7- 165 ReadUInt8() - Native C++ Syntax Parameters ERuntimeErrorCode ReadUInt8( WCHAR* in_Tag, UINT8* out_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be read. • UINT8* out_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 170 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 166 ReadUInt8() - .NET (C#) Syntax Parameters UInt8 ReadUInt8( string in_Tag ) • string in_Tag: The name of the PLC tag that is to be read. Return values Exceptions UInt8: Contains the value and the type of the PLC tag. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 171 User interfaces (API) 7.6 API IInstances ReadUInt16() Reads the value of a PLC tag. Table 7- 167 ReadUInt16() - Native C++ Syntax Parameters ERuntimeErrorCode ReadUInt16( WCHAR* in_Tag, UINT16* out_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be read. • UINT16* out_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 172 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 168 ReadUInt16() - .NET (C#) Syntax Parameters UInt16 ReadUInt16( string in_Tag ) • string in_Tag: The name of the PLC tag that is to be read. Return values Exceptions UInt16: Contains the value and the type of the PLC tag. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 173 User interfaces (API) 7.6 API IInstances ReadUInt32() Reads the value of a PLC tag. Table 7- 169 ReadUInt32() - Native C++ Syntax Parameters ERuntimeErrorCode ReadUInt32( WCHAR* in_Tag, UINT32* out_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be read. • UINT32* out_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 174 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 170 ReadUInt32() - .NET (C#) Syntax Parameters UInt32 ReadUInt32( string in_Tag ) • string in_Tag: The name of the PLC tag that is to be read. Return values Exceptions Uint32: Contains the value and the type of the PLC tag. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 175 User interfaces (API) 7.6 API IInstances ReadUInt64() Reads the value of a PLC tag. Table 7- 171 ReadInt64() - Native C++ Syntax Parameters ERuntimeErrorCode ReadUInt64( WCHAR* in_Tag, UINT64* out_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be read. • UINT64* out_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 176 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 172 ReadUInt64() - .NET (C#) Syntax Parameters UInt64 ReadUInt64( string in_Tag ) • string in_Tag: The name of the PLC tag that is to be read. Return values Exceptions UInt64: Contains the value and the type of the PLC tag. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 177 User interfaces (API) 7.6 API IInstances ReadFloat() Reads the value of a PLC tag. Table 7- 173 ReadFloat() - Native C++ Syntax Parameters ERuntimeErrorCode ReadFloat( WCHAR* in_Tag, float* out_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be read. • float* out_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 178 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 174 ReadFloat() - .NET (C#) Syntax Parameters float ReadFloat( string in_Tag ) • string in_Tag: The name of the PLC tag that is to be read. Return values Exceptions float: Contains the value and the type of the PLC tag. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 179 User interfaces (API) 7.6 API IInstances ReadDouble() Reads the value of a PLC tag. Table 7- 175 ReadDouble() - Native C++ Syntax Parameters ERuntimeErrorCode ReadDouble( WCHAR* in_Tag, double* out_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be read. • double* out_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 180 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 176 ReadDouble() - .NET (C#) Syntax Parameters double ReadDouble( string in_Tag ) • string in_Tag: The name of the PLC tag that is to be read. Return values Exceptions double: Contains the value and the type of the PLC tag. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 181 User interfaces (API) 7.6 API IInstances ReadChar() Reads the value of a PLC tag. Table 7- 177 ReadChar() - Native C++ Syntax Parameters ERuntimeErrorCode ReadChar( WCHAR* in_Tag, char* out_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be read. • char* out_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 182 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 178 ReadChar() - .NET (C#) Syntax Parameters sbyte ReadChar( string in_Tag ) • string in_Tag: The name of the PLC tag that is to be read. Return values Exceptions sbyte: Contains the value and the type of the PLC tag. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 183 User interfaces (API) 7.6 API IInstances ReadWChar() Reads the value of a PLC tag. Table 7- 179 ReadWChar() - Native C++ Syntax Parameters ERuntimeErrorCode ReadWChar( WCHAR* in_Tag, WCHAR* out_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be read. • WCHAR* out_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 184 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 180 ReadWChar() - .NET (C#) Syntax Parameters char ReadWChar( string in_Tag ) • string in_Tag: The name of the PLC tag that is to be read. Return values Exceptions char: Contains the value and the type of the PLC tag. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 185 User interfaces (API) 7.6 API IInstances ReadSignals() Reads multiple signals within an API call. Reads multiple signals within a single API call. Table 7- 181 ReadSignals() - Native C++ Syntax ERuntimeErrorCode ReadSignals( SDataValueByName* inout_Signals, UINT32 in_SignalCount ); Parameters • SDataValueByName* inout_Signals: Contains the name, the value and the expected type of the PLC tag. If the expected type is UNSPECIFIC, it is set to the stored type when the function was successful. The STRUCT type is not supported. • UINT32 in_SignalCount: The number of signals to be read. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED SREC_TIMEOUT SREC_INSTANCE_NOT_RUNNING SREC_DOES_NOT_EXIST SREC_NOT_SUPPORTED SREC_TYPE_MISMATCH SREC_NOT_UP_TO_DATE The instance is not registered in Runtime Manager. The function does not return on time. The process of the virtual controller is not running. The entry does not exist in the stored tag list. Access to entire structures or arrays is not supported. The expected type does not match the stored type. See Compatible primitive data types (Page 294). The stored tag list must be updated. S7-PLCSIM Advanced 186 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 182 ReadSignals() - .NET (C#) Syntax Parameters Return values Exceptions void ReadSignals( ref SDataValueByName[] inout_Signals ) • ref SDataValueByName[] inout_Signals: Contains the name, the value and the expected type of the PLC tag. If the expected type is UNSPECIFIC, it is set to the stored type when the function was successful. The STRUCT type is not supported. SDataValue: Contains the value and the type of the PLC tag. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 187 User interfaces (API) 7.6 API IInstances 7.6.5.4 I/O access via tag name - Writing Write() Writes the value of a PLC tag. Table 7- 183 Write() - Native C++ Syntax Parameters ERuntimeErrorCode Write( WCHAR* in_Tag, SDataValue* in_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be written. • Return values SDataValue* in_Value: Contains the value and the expected type of the PLC tag. The UNSPECIFIC and STRUCT types are not supported. Structures and arrays can be written altogether with WriteSignals(). Runtime error code SREC_OK SREC_INTERFACE_REMOVED SREC_TIMEOUT Condition The function is successful. The instance is not registered in Runtime Manager. The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. SREC_WRONG_ARGUMENT The expected type is UNSPECIFIC. S7-PLCSIM Advanced 188 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 184 Write() - .NET (C#) Syntax Parameters void Write( string in_Tag SDataValue in_Value ) • string in_Tag: The name of the PLC tag that is to be written. • SDataValue in_Value: Contains the value and the expected type of the PLC tag. The UNSPECIFIC and STRUCT types are not supported. Structures and arrays can be written altogether with WriteSignals(). Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData ERuntimeErrorCode.WrongArgument The stored tag list must be updated. The expected type is UNSPECIFIC. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 189 User interfaces (API) 7.6 API IInstances WriteBool() Writes the value of a PLC tag. Table 7- 185 WriteBool() - Native C++ Syntax Parameters ERuntimeErrorCode WriteBool( WCHAR* in_Tag, bool in_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be written. • bool in_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 190 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 186 WriteBool() - .NET (C#) Syntax Parameters void WriteBool( string in_Tag bool in_Value ) • string in_Tag: The name of the PLC tag that is to be written. • bool in_Value: Contains the value of the PLC tag. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types. ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 191 User interfaces (API) 7.6 API IInstances WriteInt8() Writes the value of a PLC tag. Table 7- 187 WriteInt8() - Native C++ Syntax Parameters ERuntimeErrorCode WriteInt8( WCHAR* in_Tag, INT8 in_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be written. • INT8 in_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 192 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 188 WriteInt8() - .NET (C#) Syntax Parameters void WriteInt8( string in_Tag Int8 in_Value ) • string in_Tag: The name of the PLC tag that is to be written. • Int8 in_Value: Contains the value of the PLC tag. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMissmatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 193 User interfaces (API) 7.6 API IInstances WriteInt16() Writes the value of a PLC tag. Table 7- 189 WriteInt16() - Native C++ Syntax Parameters ERuntimeErrorCode WriteInt16( WCHAR* in_Tag, INT16 in_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be written. • INT16 in_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 194 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 190 WriteInt16() - .NET (C#) Syntax Parameters void WriteInt16( string in_Tag Int16 in_Value ) • string in_Tag: The name of the PLC tag that is to be written. • Int16 in_Value: Contains the value of the PLC tag. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMissmatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 195 User interfaces (API) 7.6 API IInstances WriteInt32() Writes the value of a PLC tag. Table 7- 191 WriteInt32() - Native C++ Syntax Parameters ERuntimeErrorCode WriteInt32( WCHAR* in_Tag, INT32 in_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be written. • INT32 in_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 196 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 192 WriteInt32() - .NET (C#) Syntax Parameters void WriteInt32( string in_Tag Int32 in_Value ) • string in_Tag: The name of the PLC tag that is to be written. • Int32 in_Value: Contains the value of the PLC tag. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMissmatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 197 User interfaces (API) 7.6 API IInstances WriteInt64() Writes the value of a PLC tag. Table 7- 193 WriteInt64() - Native C++ Syntax Parameters ERuntimeErrorCode WriteInt64( WCHAR* in_Tag, INT64 in_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be written. • INT64 in_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 198 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 194 WriteInt64() - .NET (C#) Syntax Parameters void WriteInt64( string in_Tag Int64 in_Value ) • string in_Tag: The name of the PLC tag that is to be written. • Int64 in_Value: Contains the value of the PLC tag. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMissmatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 199 User interfaces (API) 7.6 API IInstances WriteInt8() Writes the value of a PLC tag. Table 7- 195 WriteUInt8() - Native C++ Syntax Parameters ERuntimeErrorCode WriteUInt8( WCHAR* in_Tag, UINT8 in_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be written. • UINT8 in_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 200 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 196 WriteUInt8() - .NET (C#) Syntax Parameters void WriteUInt8( string in_Tag UInt8 in_Value ) • string in_Tag: The name of the PLC tag that is to be written. • UInt8 in_Value: Contains the value of the PLC tag. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMissmatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 201 User interfaces (API) 7.6 API IInstances WriteUInt16() Reads the value of a PLC tag. Table 7- 197 WriteUInt16() - Native C++ Syntax Parameters ERuntimeErrorCode WriteUInt16( WCHAR* in_Tag, UINT16 in_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be written. • UINT16 in_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 202 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 198 WriteUInt16() - .NET (C#) Syntax Parameters void WriteUInt16( string in_Tag UInt16 in_Value ) • string in_Tag: The name of the PLC tag that is to be written. • UInt16 in_Value: Contains the value of the PLC tag. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMissmatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 203 User interfaces (API) 7.6 API IInstances WriteUInt32() Writes the value of a PLC tag. Table 7- 199 WriteUInt32() - Native C++ Syntax Parameters ERuntimeErrorCode WriteUInt32( WCHAR* in_Tag, UINT32 in_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be written. • UINT32 in_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 204 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 200 WriteUInt32() - .NET (C#) Syntax Parameters void WriteUInt32( string in_Tag UInt32 in_Value ) • string in_Tag: The name of the PLC tag that is to be written. • UInt32 in_Value: Contains the value of the PLC tag. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMissmatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 205 User interfaces (API) 7.6 API IInstances WriteUInt64() Writes the value of a PLC tag. Table 7- 201 WriteUInt64() - Native C++ Syntax Parameters ERuntimeErrorCode WriteUInt64( WCHAR* in_Tag, UINT64 in_Value ); • WCHAR* in_Tag: • UINT64 in_Value: The name of the PLC tag that is to be written. Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 206 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 202 WriteUInt64() - .NET (C#) Syntax Parameters void WriteUInt64( string in_Tag UInt64 in_Value ) • string in_Tag: The name of the PLC tag that is to be written. • UInt64 in_Value: Contains the value of the PLC tag. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMissmatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 207 User interfaces (API) 7.6 API IInstances WriteFloat() Writes the value of a PLC tag. Table 7- 203 WriteFloat() - Native C++ Syntax Parameters ERuntimeErrorCode WriteFloat( WCHAR* in_Tag, float in_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be written. • float in_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 208 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 204 WriteFloat() - .NET (C#) Syntax Parameters void WriteFloat( string in_Tag float in_Value ) • string in_Tag: The name of the PLC tag that is to be written. • float in_Value: Contains the value of the PLC tag. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMissmatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 209 User interfaces (API) 7.6 API IInstances WriteDouble() Writes the value of a PLC tag. Table 7- 205 WriteDouble() - Native C++ Syntax Parameters ERuntimeErrorCode WriteDouble( WCHAR* in_Tag, double in_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be written. • double in_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 210 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 206 WriteDouble() - .NET (C#) Syntax Parameters void WriteDouble( string in_Tag double in_Value ) • string in_Tag: The name of the PLC tag that is to be written. • double in_Value: Contains the value of the PLC tag. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMissmatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 211 User interfaces (API) 7.6 API IInstances WriteChar() Writes the value of a PLC tag. Table 7- 207 WriteChar() - Native C++ Syntax Parameters ERuntimeErrorCode WriteChar( WCHAR* in_Tag, char in_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be written. • char in_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 212 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 208 WriteChar() - .NET (C#) Syntax Parameters void WriteChar( string in_Tag sbyte in_Value ) • string in_Tag: The name of the PLC tag that is to be written. • sbyte in_Value: Contains the value of the PLC tag. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMissmatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 213 User interfaces (API) 7.6 API IInstances WriteWChar() Writes the value of a PLC tag. Table 7- 209 WriteWChar() - Native C++ Syntax Parameters ERuntimeErrorCode WriteWChar( WCHAR* in_Tag, WCHAR in_Value ); • WCHAR* in_Tag: The name of the PLC tag that is to be written. • WCHAR in_Value: Contains the value of the PLC tag. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_DOES_NOT_EXIST The entry does not exist in the stored tag list. SREC_NOT_SUPPORTED Access to entire structures or arrays is not supported. SREC_TYPE_MISMATCH The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. S7-PLCSIM Advanced 214 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 210 WriteWChar() - .NET (C#) Syntax Parameters void WriteWChar( string in_Tag char in_Value ) • string in_Tag: The name of the PLC tag that is to be written. • char in_Value: Contains the value of the PLC tag. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMissmatch The expected type does not match the stored type. See Compatible primitive data types (Page 294). ERuntimeErrorCode.NotUpToData The stored tag list must be updated. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 215 User interfaces (API) 7.6 API IInstances WriteSignals() Writes multiple signals within an API call. Table 7- 211 WriteSignals() - Native C++ Syntax ERuntimeErrorCode WriteSignals( SDataValueByName* inout_Signals, UINT32 in_SignalCount ); Parameters • SDataValueByName* inout_Signals: Contains the name, the value and the expected type of the PLC tag. The UNSPECIFIC and STRUCT types are not supported. • UINT32 in_SignalCount: Number of signals. Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED SREC_TIMEOUT SREC_INSTANCE_NOT_RUNNING SREC_DOES_NOT_EXIST SREC_NOT_SUPPORTED SREC_TYPE_MISMATCH The instance is not registered in Runtime Manager. The function does not return on time. The process of the virtual controller is not running. The entry does not exist in the stored tag list. Access to entire structures or arrays is not supported. The expected type does not match the stored type. See Compatible primitive data types (Page 294). SREC_NOT_UP_TO_DATE The stored tag list must be updated. SREC_WRONG_ARGUMENT The expected type is UNSPECIFIC. S7-PLCSIM Advanced 216 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances Table 7- 212 WriteSignals() - .NET (C#) Syntax Parameters Return values Exceptions void WriteSignals( SDataValueByName[] in_Signals ) • SDataValueByName: Contains the name, the value and the expected type of the PLC tag. The UNSPECIFIC and STRUCT types are not supported. None Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. ERuntimeErrorCode.DoesNotExist The entry does not exist in the stored tag list. ERuntimeErrorCode.NotSupported Access to entire structures or arrays is not supported. ERuntimeErrorCode.TypeMismatch The expected type does not match the stored type. See Compatible primitive data types. ERuntimeErrorCode.NotUpToData ERuntimeErrorCode.WrongArgument The stored tag list must be updated. The expected type is UNSPECIFIC. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 217 User interfaces (API) 7.6 API IInstances 7.6.6 Settings for the virtual time GetSystemTime() Returns the virtual system time of the virtual controller. Returns an empty structure when the function fails. Table 7- 213 GetSystemTime() - Native C++ Syntax SYSTEMTIME GetSystemTime(); Parameters None Return values SYSTEMTIME: System time of the virtual controller. SetSystemTime() Sets the virtual system time of the virtual controller. A system time between "Jan 1 1970 00:00:00:000" and "Dec 31 2200 23:59:59:999" is valid. Table 7- 214 SetSystemTime() - Native C++ Syntax Parameters ERuntimeErrorCode SetSystemTime( SYSTEMTIME in_SystemTime ); • SYSTEMTIME in_SystemTime: System time that is to be set for the virtual controller. Return values Runtime error code SREC_OK Condition The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_WRONG_ARGUMENT The value is outside the limits. SystemTime { get; set; } Sets or returns the virtual system time of the virtual controller. A system time between "Jan 1 1970 00:00:00:000" and "Dec 31 2200 23:59:59:999" is valid. Table 7- 215 SystemTime { get; set; } - .NET (C#) Syntax DateTime SystemTime { get; set; } Parameters None Return values Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code ERuntimeErrorCode.InterfaceRemoved ERuntimeErrorCode.Timeout ERuntimeErrorCode.WrongArgument Condition The instance is not registered in Runtime Manager. The function does not return on time. The value is outside the limits. S7-PLCSIM Advanced 218 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances GetScaleFactor() Returns the scaling factor with which the virtual time advances. Table 7- 216 GetScaleFactor() - Native C++ Syntax double GetScaleFactor(); Parameters None Return values double: Scaling factor of the virtual time. SetScaleFactor() Sets the scaling factor with which the virtual time advances. Start with a small scaling factor and incrementally approach a scaling factor at which the virtual controller remains in RUN. A value between 0.01 and 100 is valid. The default setting is 1. ● If the value is less than 1, the virtual time of the virtual controller runs X-times slower than the real time. ● If the value is greater than 1, the virtual time of the virtual controller runs X-times faster than the real time. A change in the value during runtime only takes effect at the cycle control point. Table 7- 217 SetScaleFactor() - Native C++ Syntax Parameters ERuntimeErrorCode SetScaleFactor ( double in_Value ); • double in_Value: Scaling factor of the virtual time. Return values Runtime error code SREC_OK Condition The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_WRONG_ARGUMENT The value is outside the limits. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 219 User interfaces (API) 7.6 API IInstances ScaleFactor { get; set; } Sets or returns the scaling factor with which the virtual time advances. Start with a small scaling factor and incrementally approach a scaling factor at which the virtual controller remains in RUN. A value between 0.01 and 100 is valid. The default setting is 1. ● If the value is less than 1, the virtual time of the virtual controller runs X-times slower than the real time. ● If the value is greater than 1, the virtual time of the virtual controller runs X-times faster than the real time. A change in the value during runtime only takes effect at the cycle control point. Table 7- 218 ScaleFactor { get; set; } - .NET (C#) Syntax double ScaleFactor { get; set; } Parameters None Return values double: Scaling factor of the virtual time. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Exceptions Runtime error code ERuntimeErrorCode.InterfaceRemoved ERuntimeErrorCode.Timeout ERuntimeErrorCode.WrongArgument Condition The instance is not registered in Runtime Manager. The function does not return on time. The value is outside the limits. S7-PLCSIM Advanced 220 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances 7.6.7 Cycle control GetOperatingMode() Returns the operating mode of the virtual controller. Table 7- 219 GetOperatingMode() - Native C++ Syntax EOperatingMode GetOperatingMode(); Parameters None Return values EOperatingMode: Operating mode of the virtual controller SetOperatingMode() Sets the operating mode of the virtual controller. A change in the value during runtime only takes effect at the cycle control point. Table 7- 220 SetOperatingMode() - Native C++ Syntax void SetOperatingMode( EOperatingMode in_OperatingMode ); Parameters • Return values Runtime error code EOperatingMode in_OperatingMode: Operating mode of the virtual controller SREC_OK Condition The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. OperatingMode { get; set; } Returns or sets the operating mode of the virtual controller. A change in the value during runtime only takes effect at the cycle control point. Table 7- 221 OperatingMode { get; set; } - .NET (C#) Syntax EOperatingMode OperatingMode { get; set; } Parameters None Return values EOperatingMode: Operating mode of the virtual controller Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Exceptions Runtime error code ERuntimeErrorCode.InterfaceRemoved ERuntimeErrorCode.Timeout Condition The instance is not registered in Runtime Manager. The function does not return on time. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 221 User interfaces (API) 7.6 API IInstances SetAlwaysSendOnEndOfCycleEnabled() Sets the AlwaysSendOnEndOfCycle mode. If the mode is set, the OnEndOfCycle event is triggered after every cycle end for each operating mode. If the event is also to be received in Default operating mode, set the return value to true. See OnEndOfCycle (Page 232). Table 7- 222 SetAlwaysSendOnEndOfCycleEnabled() - Native C++ Syntax Parameters Return values ERuntimeErrorCode SetAlwaysSendOnEndOfCycleEnabled( bool in_Enable ); • bool in_Enable: If true, the OnEndOfCycle event is triggered after every cycle. Runtime error code SREC_OK Condition The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. IsAlwaysSendOnEndOfCycleEnabled() Returns the AlwaysSendOnEndOfCycle mode. When the function fails, the return value is false. Table 7- 223 IsAlwaysSendOnEndOfCycleEnabled() - Native C++ Syntax bool IsAlwaysSendOnEndOfCycleEnabled(); Parameters None Return values • • false: The event is not triggered (unless the Sync-Freeze mode is active). true: The event is triggered after every cycle. IsAlwaysSendOnEndOfCycleEnabled { get; set; } Returns or sets the AlwaysSendOnEndOfCycle mode. If the mode is set, the OnEndOfCycle event is triggered after every cycle end for each operating mode. If the event is also to be received in Default operating mode, set the return value to true. See OnEndOfCycle (Page 232). Table 7- 224 IsAlwaysSendOnEndOfCycleEnabled { get; set; } - .NET (C#) Syntax bool IsAlwaysSendOnEndOfCycleEnabled { get; set;} Parameters None Return values • • Exceptions false: The event is not triggered (unless the Sync-Freeze mode is active). true: The event is triggered after every cycle. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code ERuntimeErrorCode.InterfaceRemoved ERuntimeErrorCode.Timeout Condition The instance is not registered in Runtime Manager. The function does not return on time. S7-PLCSIM Advanced 222 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances GetOverwrittenMinimalCycleTime_ns() Returns the overwritten minimum cycle time (in nanoseconds) that is used in the ExtendedSingleStep operating mode. Table 7- 225 GetOverwrittenMinimalCycleTime_ns() - Native C++ Syntax INT64 GetOverwrittenMinimalCycleTime_ns(); Parameters None Return values INT64: The overwritten minimum cycle time in nanoseconds. SetOverwrittenMinimalCycleTime_ns() Sets the overwritten minimum cycle time (in nanoseconds) that is used in the ExtendedSingleStep operating mode. A value between 0 and 6000000000 is valid. The default setting is 100 ms. A change in the value during runtime only takes effect at the cycle control point. Table 7- 226 SetOverwrittenMinimalCycleTime_ns() - Native C++ Syntax ERuntimeErrorCode SetOverwrittenMinimalCycleTime_ns( INT64 in_CycleTime_ns ); Parameters • Return values Runtime error code INT64 in_CycleTime_ns: The overwritten minimum cycle time in nanoseconds. SREC_OK Condition The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_WRONG_ARGUMENT The value is outside the limits. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 223 User interfaces (API) 7.6 API IInstances OverwrittenMinimalCycleTime_ns { get; set; } Returns or sets the overwritten minimum cycle time in nanoseconds that is used in the ExtendedSingleStep operating mode. A value between 0 and 6000000000 is valid. The default setting is 100 ms. A change in the value during runtime only takes effect at the cycle control point. Table 7- 227 OverwrittenMinimalCycleTime_ns { get; set; } - .NET (C#) Syntax Int64 OverwrittenMinimalCycleTime_ns { get; set; } Parameters None Return values Int64: The overwritten minimum cycle time in nanoseconds. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Exceptions Runtime error code ERuntimeErrorCode.InterfaceRemoved ERuntimeErrorCode.Timeout ERuntimeErrorCode.WrongArgument Condition The instance is not registered in Runtime Manager. The function does not return on time. The value is outside the limits. S7-PLCSIM Advanced 224 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances RunNextCycle() If the virtual controller is being operated in SingleStep or ExtendedSingleStep operating mode, it is stopped at the cycle control point (Freeze state). The RunNextCycle() function is used to trigger the next cycle. Table 7- 228 RunNextCycle() - Native C++ Syntax ERuntimeErrorCode RunNextCycle(); Parameters None Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED SREC_TIMEOUT SREC_INSTANCE_NOT_RUNNING The instance is not registered in Runtime Manager. The function does not return on time. The process of the virtual controller is not running. Table 7- 229 RunNextCycle() - .NET (C#) Syntax void RunNextCycle(); Parameters None Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning The process of the virtual controller is not running. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 225 User interfaces (API) 7.6 API IInstances StartProcessing() If the virtual controller is running in TimespanSynchronized operating mode, it is stopped at the cycle control point (Freeze state). The StartProcessing() function wakes up the virtual controller from the Freeze state. The virtual controller will now run for at least the requested time before it changes to Freeze state (stops) at the next cycle control point. Table 7- 230 StartProcessing() - Native C++ Syntax Parameters ERuntimeErrorCode StartProcessing( INT64 in_MinimalTimeToRun_ns ); • INT64 in_CycleTime_ns: The minimum virtual time (in nanoseconds) that the virtual controller runs before it changes to Freeze state. Return values Runtime error code SREC_OK Condition The function is successful. SREC_INTERFACE_REMOVED The instance is not registered in Runtime Manager. SREC_TIMEOUT The function does not return on time. SREC_INSTANCE_NOT_RUNNING The process of the virtual controller is not running. SREC_WRONG_ARGUMENT The value is less than 0. Table 7- 231 StartProcessing() - .NET (C#) Syntax Parameters void StartProcessing( Int64 in_MinimalTimeToRun_ns ); • Int64 in_CycleTime_ns: The minimum virtual time (in nanoseconds) that the virtual controller runs before it changes to Freeze state. Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The instance is not registered in Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. ERuntimeErrorCode.InstanceNotRunning ERuntimeErrorCode.WrongArgument The process of the virtual controller is not running. The value is less than 0. Additional information For more information, please refer to the section titled Time response (Page 58), Stopping the simulation (Page 61) S7-PLCSIM Advanced 226 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances See also OnOperatingStateChanged (Page 228) 7.6.8 Events Events for IInstances The following events are differentiated in the API: Table 7- 232 Events for the IInstances interface Event Cause OnOperatingStateChanged (Page 228) This event is always triggered when the operating state of the virtual controller has changed. OnEndOfCycle (Page 232) This event is triggered when the virtual controller reaches the end of the main cycle. If the virtual controller is being operated in Default operating mode, the AlwaysSendOnEndOfCycle flag must be set to receive the event. See AlwaysSendOnEndOfCycle (Page 221). OnConfigurationChanging (Page 234) This event is triggered when changing of the configuration of the virtual controller starts. • During power up from the Virtual SIMATIC Memory Card • At the start of a download When this event is triggered, the stored tag list is reset. OnConfigurationChanged (Page 237) OnLedChanged (Page 239) This event is triggered when the configuration of the virtual controller has changed: • After power up from the Virtual SIMATIC Memory Card • At the end of a download • When the IP address changes This event is triggered when the LED display of the virtual controller has changed. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 227 User interfaces (API) 7.6 API IInstances 7.6.8.1 OnOperatingStateChanged OnOperatingStateChanged Registers or unregisters an event handler method. Table 7- 233 OnOperatingStateChanged - .NET (C#) Syntax event Delegate_II_EREC_DT_EOS_EOS OnOperatingStateChanged; Parameters None. See Delegate_II_EREC_DT_EOS_EOS (Page 266). Return values None Exceptions None Note The event handler method runs in a separate thread. RegisterOnOperatingStateChangedCallback() When the event occurs, the registered callback function is called. Only one callback function can be registered for the event. Registering a new callback function causes the previous callback function to be deleted. Table 7- 234 RegisterOnOperatingStateChangedCallback() - Native C++ Syntax Parameters void RegisterOnOperatingStateChangedCallback( EventCallback_II_SREC_ST_SROS_SROS in_CallbackFunction ); • EventCallback_II_SREC_ST_SROS_SROS in_CallbackFunction: A callback function that subscribes to the event. See EventCallback_II_SREC_ST_SROS_SROS (Page 260). Return values None Note The callback function runs in a separate thread. S7-PLCSIM Advanced 228 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances RegisterOnOperatingStateChangedEvent() When the event occurs, the registered event object is set to the signaled state. Only one event object can be registered for the event. Registering a new event object causes the previous event object to be deleted. Table 7- 235 RegisterOnOperatingStateChangedEvent() - Native C++ Syntax Parameters void RegisterOnOperatingStateChangedEvent(); void RegisterOnOperatingStateChangedEvent( HANDLE* in_Event ); • None: An internal event object is registered. • HANDLE* in_Event: A handle for a user-specific event object. The event object is registered. Return values None Example C++ // Thread 1 -------------------------------------------------ISimulationRuntimeManager * api = ZERO; ERuntimeErrorCode result = Initialize(&api); IInstance* psa = ZERO; if (result == SREC_OK) { result = api->RegisterInstance(&psa); } // Register the internal event object psa->RegisterOnOperatingStateChangedEvent(); // Thread 2 -------------------------------------------------while (condition) { // Wait for the event to be set (timeout after 10s) bool isEventSet = psa>WaitForOnOperatingStateChangedEvent(10000); if (isEventSet) { // Do Something … } } S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 229 User interfaces (API) 7.6 API IInstances Example C++ // Thread 1 -------------------------------------------------ISimulationRuntimeManager * api = ZERO; ERuntimeErrorCode result = Initialize(&api); IInstance* psa = ZERO; if (result == SREC_OK) { result = api->RegisterInstance(&psa); } // Create an event object HANDLE eventHandle = CreateEvent(ZERO, FALSE, FALSE, ZERO); // Register the user created event object psa->RegisterOnOperatingStateChangedEvent(&eventHandle); // Do Something … // Clean up the handle CloseHandle(eventHandle); // Thread 2 -------------------------------------------------while (condition) { // Wait for the event to be set //OR: WaitForSingleObject(eventHandle, INFINITE); //psa>WaitForOnOperatingStateChangedEvent(); // Do Something … } UnregisterOnOperatingStateChangedCallback() Unregisters the callback function. When the event occurs, no callback function is called. Table 7- 236 UnregisterOnOperatingStateChangedCallback() - Native C++ Syntax void UnregisterOnOperatingStateChangedCallback(); Parameters None Return values None S7-PLCSIM Advanced 230 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances UnregisterOnOperatingStateChangedEvent() Unregisters the event object. Table 7- 237 UnregisterOnOperatingStateChangedEvent() - Native C++ Syntax void UnregisterOnOperatingStateChangedEvent(); Parameters None Return values None Table 7- 238 UnregisterOnOperatingStateChangedEvent() - .NET (C#) Syntax void UnregisterOnOperatingStateChangedEvent(); Parameters None Return values None WaitForOnOperatingStateChangedEvent() The function blocks the program until the registered event object is in the signaled state or the timeout interval is exceeded. Table 7- 239 WaitForOnOperatingStateChangedEvent() - Native C++ Syntax Parameters bool WaitForOnOperatingStateChangedEvent(); bool WaitForOnOperatingStateChangedEvent( UINT32 in_Time_ms ); • None: The time limit is set to INFINITE. • UINT32 in_Time_ms: Value for the time limit in milliseconds. Return values • • true: If the event object was set to the signaled state. false: If no event was received during the defined time limit. Table 7- 240 WaitForOnOperatingStateChangedEvent() - .NET (C#) Syntax Parameters bool WaitForOnOperatingStateChangedEvent(); bool WaitForOnOperatingStateChangedEvent( UInt32 in_Time_ms ); • None: The time limit is set to INFINITE. • UInt32 in_Time_ms: Value for the time limit in milliseconds. Return values • • true: If the event object was set to the signaled state. false: If no event was received during the defined time limit. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 231 User interfaces (API) 7.6 API IInstances 7.6.8.2 OnEndOfCycle OnEndOfCycle Registers or unregisters an event handler method. Table 7- 241 OnEndOfCycle - .NET (C#) Syntax event Delegate_II_EREC_DT OnEndOfCycle; Parameters None. See Delegate_II_EREC_DT (Page 265). Return values None Exceptions None Note The event handler method runs in a separate thread. RegisterOnEndOfCycleCallback() When the event occurs, the registered callback function is called. Only one callback function can be registered for the event. Registering a new callback function causes the previous callback function to be deleted. Table 7- 242 RegisterOnEndOfCycleCallback() - Native C++ Syntax Parameters void RegisterOnEndOfCycleCallback( EventCallback_II_SREC_ST in_CallbackFunction ); • EventCallback_II_SREC_ST in_CallbackFunction: A callback function that subscribes to an event. See EventCallback_II_SREC_ST (Page 259). Return values None Note The callback function runs in a separate thread. RegisterOnEndOfCycleEvent() When the event occurs, the registered event object is set to the signaled state. Only one event object can be registered for the event. Registering a new event object causes the previous event object to be deleted. Table 7- 243 RegisterOnEndOfCycleEvent() - Native C++ Syntax Parameters void RegisterOnEndOfCycleEvent(); void RegisterOnEndOfCycleEvent( HANDLE* in_Event ); • None: An internal event object is registered. • HANDLE* in_Event: A handle for a user-specific event object. The event object is registered. Return values None S7-PLCSIM Advanced 232 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances UnregisterOnEndOfCycleCallback() Unregisters the callback function. When the event occurs, no callback function is called. Table 7- 244 UnregisterOnEndOfCycleCallback() - Native C++ Syntax void UnregisterOnEndOfCycleCallback(); Parameters None Return values None UnregisterOnEndOfCycleEvent() Unregisters the event object. Table 7- 245 RegisterOnEndOfCycleEvent() - Native C++ Syntax void UnregisterOnEndOfCycleEvent(); Parameters None Return values None Table 7- 246 UnregisterOnEndOfCycleEvent() - .NET (C#) Syntax void UnregisterOnEndOfCycleEvent(); Parameters None Return values None S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 233 User interfaces (API) 7.6 API IInstances WaitForOnEndOfCycleEvent() The function blocks the program until the registered event object is in the signaled state or the timeout interval is exceeded. Table 7- 247 WaitForOnEndOfCycleEvent() - Native C++ Syntax Parameters bool WaitForOnEndOfCycleEvent(); bool WaitForOnEndOfCycleEvent( UINT32 in_Time_ms ); • None: The time limit is set to INFINITE. • UINT32 in_Time_ms: Value for the time limit in milliseconds. Return values • • true: If the event object was set to the signaled state. false: If no event was received during the defined time limit. Table 7- 248 WaitForOnEndOfCycleEvent() - .NET (C#) Syntax Parameters bool WaitForOnEndOfCycleEvent(); bool WaitForOnEndOfCycleEvent( UInt32 in_Time_ms ); • None: The time limit is set to INFINITE. • UInt32 in_Time_ms: Value for the time limit in milliseconds. Return values • • 7.6.8.3 true: If the event object was set to the signaled state. false: If no event was received during the defined time limit. OnConfigurationChanging OnConfigurationChanging Registers or unregisters an event handler method. Table 7- 249 OnConfigurationChanging - .NET (C#) Syntax event Delegate_II_EREC_DT OnConfigurationChanging; Parameters None. See Delegate_II_EREC_DT (Page 265). Return values None Exceptions None Note The event handler method runs in a separate thread. S7-PLCSIM Advanced 234 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances RegisterOnConfigurationChangingCallback() When the event occurs, the registered callback function is called. Only one callback function can be registered for the event. Registering a new callback function causes the previous callback function to be deleted. Table 7- 250 RegisterOnConfigurationChangingCallback() - Native C++ Syntax Parameters void RegisterOnConfigurationChangingCallback( EventCallback_II_SREC_ST in_CallbackFunction ); • EventCallback_II_SREC_ST in_CallbackFunction: A callback function that subscribes to an event. See EventCallback_II_SREC_ST (Page 259). Return values None Note The callback function runs in a separate thread. RegisterOnConfigurationChangingEvent() When the event occurs, the registered event object is set to the signaled state. Only one event object can be registered for the event. Registration of a new event object causes the previous event object to be deleted. Table 7- 251 RegisterOnConfigurationChangingEvent() - Native C++ Syntax Parameters void RegisterOnConfigurationChangingEvent(); void RegisterOnConfigurationChangingEvent( HANDLE* in_Event ); • None: An internal event object is registered. • HANDLE* in_Event: A handle for a user-specific event object. The event object is registered. Return values None UnregisterOnConfigurationChangingCallback() Unregisters the callback function. When the event occurs, no callback function is called. Table 7- 252 UnregisterOnConfigurationChangingCallback() - Native C++ Syntax void UnregisterOnConfigurationChangingCallback(); Parameters None Return values None S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 235 User interfaces (API) 7.6 API IInstances UnregisterOnConfigurationChangingEvent() Unregisters the event object. Table 7- 253 UnregisterOnConfigurationChangingEvent() - Native C++ Syntax void UnregisterOnConfigurationChangingEvent(); Parameters None Return values None Table 7- 254 UnregisterOnConfigurationChangingEvent() - .NET (C#) Syntax void UnregisterOnConfigurationChangingEvent(); Parameters None Return values None WaitForOnConfigurationChangingEvent() The function blocks the program until the registered event object is in the signaled state or the timeout interval is exceeded. Table 7- 255 WaitForOnConfigurationChangingEvent() - Native C++ Syntax Parameters bool WaitForOnConfigurationChangingEvent(); bool WaitForOnConfigurationChangingEvent( UINT32 in_Time_ms ); • None: The time limit is set to INFINITE. • UINT32 in_Time_ms: Value for the time limit in milliseconds. Return values • • true: If the event object was set to the signaled state. false: If no event was received during the defined time limit. Table 7- 256 WaitForOnConfigurationChangingEvent() - .NET (C#) Syntax Parameters bool WaitForOnConfigurationChangingEvent(); bool WaitForOnConfigurationChangingEvent( UInt32 in_Time_ms ); • None: The time limit is set to INFINITE. • UInt32 in_Time_ms: Value for the time limit in milliseconds. Return values • • true: If the event object was set to the signaled state. false: If no event was received during the defined time limit. S7-PLCSIM Advanced 236 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances 7.6.8.4 OnConfigurationChanged OnConfigurationChanged Registers or unregisters an event handler method. Table 7- 257 OnConfigurationChanged - .NET (C#) Syntax event Delegate_II_EREC_DT_SRICC_UINT32_UINT32_UINT32_UINT32 OnConfigurationChanged; Parameters None. See Delegate_II_EREC_DT_SRICC_UINT32_UINT32_UINT32_UINT32 (Page 270). Return values None Exceptions None Note The event handler method runs in a separate thread. RegisterOnConfigurationChangedCallback() When the event occurs, the registered callback function is called. Only one callback function can be registered for the event. Registering a new callback function causes the previous callback function to be deleted. Table 7- 258 RegisterOnConfigurationChangedCallback() - Native C++ Syntax Parameters void RegisterOnConfigurationChangedCallback( EventCallback_SRCC_UINT32_UINT32_INT32 in_CallbackFunction ); • EventCallback_SRCC_UINT32_UINT32_INT32 in_CallbackFunction: A callback function that subscribes to an event. See EventCallback_SRCC_UINT32_UINT32_INT32 (Page 263). Return values None Note The callback function runs in a separate thread. RegisterOnConfigurationChangedEvent() When the event occurs, the registered event object is set to the signaled state. Only one event object can be registered for the event. Registering a new event object causes the previous event object to be deleted. Table 7- 259 RegisterOnConfigurationChangedEvent() - Native C++ Syntax Parameters void RegisterOnConfigurationChangedEvent(); void RegisterOnConfigurationChangedEvent( HANDLE* in_Event ); • None: An internal event object is registered. • HANDLE* in_Event: A handle for a user-specific event object. The event object is registered. Return values None S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 237 User interfaces (API) 7.6 API IInstances UnregisterOnConfigurationChangedCallback() Unregisters the callback function. When the event occurs, no callback function is called. Table 7- 260 UnregisterOnConfigurationChangedCallback() - Native C++ Syntax void UnregisterOnConfigurationChangedCallback(); Parameters None Return values None UnregisterOnConfigurationChangedEvent() Unregisters the event object. Table 7- 261 UnregisterOnConfigurationChangedEvent() - Native C++ Syntax void UnregisterOnConfigurationChangedEvent(); Parameters None Return values None Table 7- 262 UnregisterOnConfigurationChangedEvent() - .NET (C#) Syntax void UnregisterOnConfigurationChangedEvent(); Parameters None Return values None S7-PLCSIM Advanced 238 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances WaitForOnConfigurationChangedEvent() The function blocks the program until the registered event object is in the signaled state or the timeout interval is exceeded. Table 7- 263 WaitForOnConfigurationChangedEvent() - Native C++ Syntax Parameters bool WaitForOnConfigurationChangedEvent(); bool WaitForOnConfigurationChangedEvent( UINT32 in_Time_ms ); • None: The time limit is set to INFINITE. • UINT32 in_Time_ms: Value for the time limit in milliseconds. Return values • • true: If the event object was set to the signaled state. false: If no event was received during the defined time limit. Table 7- 264 WaitForOnConfigurationChangedEvent() - .NET (C#) Syntax Parameters bool WaitForOnConfigurationChangedEvent(); bool WaitForOnConfigurationChangedEvent( UInt32 in_Time_ms ); • None: The time limit is set to INFINITE. • UInt32 in_Time_ms: Value for the time limit in milliseconds. Return values • • 7.6.8.5 true: If the event object was set to the signaled state. false: If no event was received during the defined time limit. OnLedChanged OnLedChanged Registers or unregisters an event handler method. Table 7- 265 OnLedChanged - .NET (C#) Syntax event Delegate_II_EREC_DT_ELT_ELM OnLedChanged; Parameters None. See Delegate_II_EREC_DT_ELT_ELM (Page 267). Return values None Exceptions None Note The event handler method runs in a separate thread. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 239 User interfaces (API) 7.6 API IInstances RegisterOnLedChangedCallback() When the event occurs, the registered callback function is called. Only one callback function can be registered for the event. Registering a new callback function causes the previous callback function to be deleted. Table 7- 266 RegisterOnLedChangedCallback() - Native C++ Syntax Parameters void RegisterOnLedChangedCallback( EventCallback_II_SREC_ST_SRLT_SRLM in_CallbackFunction ); • EventCallback_II_SREC_ST_SRLT_SRLM in_CallbackFunction: A callback function that subscribes to an event. See EventCallback_II_SREC_ST_SRLT_SRLM (Page 261). Return values None Note The callback function runs in a separate thread. RegisterOnLedChangedEvent() When the event occurs, the registered event object is set to the signaled state. Only one event object can be registered for the event. Registering a new event object causes the previous event object to be deleted. Table 7- 267 RegisterOnLedChangedEvent() - Native C++ Syntax Parameters void RegisterOnLedChangedEvent(); void RegisterOnLedChangedEvent( HANDLE* in_Event ); • None: An internal event object is registered. • HANDLE* in_Event: A handle for a user-specific event object. The event object is registered. Return values None UnregisterOnLedChangedCallback() Unregisters the callback function. When the event occurs, no callback function is called. Table 7- 268 UnregisterOnLedChangedCallback() - Native C++ Syntax void UnregisterOnLedChangedCallback(); Parameters None Return values None S7-PLCSIM Advanced 240 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.6 API IInstances UnregisterOnLedChangedEvent() Unregisters the event object. Table 7- 269 UnregisterOnLedChangedEvent() - Native C++ Syntax void UnregisterOnLedChangedEvent(); Parameters None Return values None Table 7- 270 UnregisterOnLedChangedEvent() - .NET (C#) Syntax void UnregisterOnLedChangedEvent(); Parameters None Return values None WaitForOnLedChangedEvent() The function blocks the program until the registered event object is in the signaled state or the timeout interval is exceeded. Table 7- 271 WaitForOnLedChangedEvent() - Native C++ Syntax Parameters bool WaitForOnLedChangedEvent(); bool WaitForOnLedChangedEvent( UINT32 in_Time_ms ); • None: The time limit is set to INFINITE. • UINT32 in_Time_ms: Value for the time limit in milliseconds. Return values • • true: If the event object was set to the signaled state. false: If no event was received during the defined time limit. Table 7- 272 WaitForOnLedChangedEvent() - .NET (C#) Syntax Parameters bool WaitForOnLedChangedEvent(); bool WaitForOnLedChangedEvent( UInt32 in_Time_ms ); • None: The time limit is set to INFINITE. • UInt32 in_Time_ms: Value for the time limit in milliseconds. Return values • • true: If the event object was set to the signaled state. false: If no event was received during the defined time limit. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 241 User interfaces (API) 7.7 API IRemoteRuntimeManager 7.7 API IRemoteRuntimeManager 7.7.1 Interfaces - Information and settings Dispose() Deletes the managed interface and unloads the native components of the user interfaces. Table 7- 273 Dispose() - .NET (C#) Syntax void Dispose() Parameters None Return values None GetVersion() Returns the version of the remote Runtime Manager. If the function fails, version 0.0 is returned. Table 7- 274 GetVersion() - Native C++ Syntax UINT32 GetVersion(); Parameters None Return values UINT32: Remote Runtime Manager Version (HIWORD = Major, LOWORD = Minor) Table 7- 275 Version { get; } - .NET (C#) Syntax UInt32 Version { get; } Parameters None Return values Uint32: Remote Runtime Manager Version (HIWORD = Major, LOWORD = Minor) S7-PLCSIM Advanced 242 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.7 API IRemoteRuntimeManager GetIP() / IP { get; } Returns the IP address of the PC on which the remote Runtime Manager is running. If the function fails, the return value is 0. Table 7- 276 GetIP() - Native C++ Syntax UIP GetIP(); Parameters None Return values UIP: Returns the IP address of the PC on which the Runtime Manager is run- ning. Table 7- 277 IP { get; } - .NET (C#) Syntax SIP IP { get; } Parameters None Return values SIP: Returns the IP address of the PC on which the Runtime Manager is run- ning. GetPort() / Port { get; } Returns the open port of the PC on which the remote Runtime Manager is running. If the function fails, the return value is 0. Table 7- 278 GetPort() - Native C++ Syntax UINT16 GetPort(); Parameters None Return values UINT16: Open port of the PC on which the remote Runtime Manager is running. Table 7- 279 Port { get; } - .NET (C#) Syntax UInt16 Port { get; } Parameters None Return values UInt16: Open port of the PC on which the remote Runtime Manager is running. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 243 User interfaces (API) 7.7 API IRemoteRuntimeManager GetRemoteComputerName() / RemoteComputerName { get; } Returns the name of the PC on which the remote Runtime Manager is running. Table 7- 280 GetRemoteComputerName() - Native C++ Syntax Parameters ERuntimeErrorCode GetRemoteComputerName( WCHAR* inout_Name, UINT32 in_ArrayLength ); • WCHAR* inout_Name: A user-allocated array for the computer name. • Return values UINT32 in_ArrayLength: The array length. The array should be longer than MAX_COMPUTERNAME_LENGTH. Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED The interface is disconnected from the remote Runtime Manager. SREC_INDEX_OT_OF_RANGE The array is too small to accommodate the computer name. Table 7- 281 RemoteComputerName { get; } - .NET (C#) Syntax string RemoteComputerName { get; } Parameters None Return values string: Name of the PC on which the remote Runtime Manager is running. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Exceptions Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The interface is disconnected from the remote Runtime Manager. ERuntimeErrorCode.IndexOutOfRange The array is too small to accommodate the computer name. S7-PLCSIM Advanced 244 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.7 API IRemoteRuntimeManager Disconnect() Closes the connection to the remote Runtime Manager. Note All applications that are connected to the remote Runtime Manager lose this connection. Table 7- 282 Disconnect() - Native C++ Syntax ERuntimeErrorCode Disconnect(); Parameters None Return values Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED SREC_TIMEOUT The interface is disconnected from the remote Runtime Manager. The function does not return on time. Table 7- 283 Disconnect() - .NET (C#) Syntax void Disconnect(); Parameters None Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The interface is disconnected from the remote Runtime Manager. ERuntimeErrorCode.Timeout The function does not return on time. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 245 User interfaces (API) 7.7 API IRemoteRuntimeManager 7.7.2 Simulation Runtime instances 7.7.2.1 Simulation Runtime instances (remote) GetRegisteredInstancesCount() Returns the number of instances that are registered in Runtime Manager. If the function fails, the return value is 0. Table 7- 284 GetRegisteredInstancesCount() - Native C++ Syntax UINT32 GetRegisteredInstancesCount(); Parameters None Return values UINT32: Number of available instances. GetRegisteredInstanceInfoAt() Returns information about an already registered instance. You can use the ID or name to create an interface of this instance (see CreateInterface()). Table 7- 285 GetRegisteredInstanceInfoAt() - Native C++ Syntax Parameters ERuntimeErrorCode GetRegisteredInstanceInfoAt( UINT32 in_Index, SInstanceInfo* out_InstanceInfo ); • UINT32 in_Index: Index of the created instance from which you want to receive the information. The index must be less than the value you receive when you call GetRegisteredInstanceCount(). • SInstanceInfo* out_InstanceInfo: The information with name and ID of the instance. See SInstanceInfo (Page 278). Return values Runtime error code SREC_OK SREC_INTERFACE_REMOVED SREC_TIMEOUT SREC_INDEX OUT_OF_RANGE Condition The function is successful. The interface is disconnected from the remote Runtime Manager. The function does not return on time. There is no instance information for this index. S7-PLCSIM Advanced 246 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.7 API IRemoteRuntimeManager RegisteredInstanceInfo { get; } Returns information about an already registered instance. You can use the ID or name of this instance to create an interface of this instance, see CreateInterface(). Table 7- 286 RegisterInstanceInfo { get; } - .NET (C#) Syntax Parameters SInstanceInfo[] RegisteredInstanceInfo { get; } None Return values None Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code ERuntimeErrorCode.InterfaceRemoved ERuntimeErrorCode.Timeout Condition The interface is disconnected from the remote Runtime Manager. The function does not return on time. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 247 User interfaces (API) 7.7 API IRemoteRuntimeManager RegisterInstance() Registers a new instance of a virtual controller in Runtime Manager. Creates and returns an interface of this instance. Table 7- 287 RegisterInstance() - Native C++ Syntax Parameters ERuntimeErrorCode RegisterInstance( IInstance** out_InstanceInterface ); ERuntimeErrorCode RegisterInstance( WCHAR* in_InstanceName, IInstance** out_InstanceInterface ); ERuntimeErrorCode RegisterInstance( ECPUType in_CPUType, IInstance** out_InstanceInterface ); ERuntimeErrorCode RegisterInstance( ECPUType in_CPUType, WCHAR* in_InstanceName, IInstance** out_InstanceInterface ); • ECPUType in_CPUType: Defines which CPU type is simulated at the start of the instance. The default setting is "SRCT_1500_Unspecified". When a different CPU type is loaded via STEP 7 or from the Virtual Memory Card, this CPU type applies. • WCHAR* in_InstanceName: Name to be assigned to the instance. Every instance must have a unique name. If no name is assigned when registering a new instance, the instance is given the name "Instance_#" (# is the ID of the instance). If this name already exists, the name "Instance_#.#" is used, in which the second # is a counter that is incremented until the name is unique. The length of the name must be less than DINSTANCE_NAME_LENGTH. See Data types (Page 271). • Return values IInstance** out_InstanceInterface: Pointer to a Simulation Runtime interface pointer. The pointer must be initialized with NULL. The interface is created within the function. Runtime error code SREC_OK SREC_INTERFACE_REMOVED SREC_TIMEOUT Condition The function is successful. The interface is disconnected from the remote Runtime Manager. The function does not return on time. SREC_WRONG_ARGUMENT The name or the IInstance pointer is invalid. SREC_LIMIT_REACHED There are already 16 instances registered in Runtime Manager. SREC_ALREADY_EXISTS An instance with this name already exists. S7-PLCSIM Advanced 248 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.7 API IRemoteRuntimeManager Example C++ ISimulationRuntimeManager * api = NULL; ERuntimeErrorCode result = Initialize(&api); // Example: How To Create And Register An Instance // And To Get An Interface Of The Instance The Same Time IInstance* psa = NULL; if (result == SREC_OK) { result = api->RegisterInstance(&psa); } Note Native C++ If you no longer require the interface, delete it. See DestroyInterface() (Page 82). Table 7- 288 RegisterInstance() - .NET (C#) Syntax Parameters IInstance RegisterInstance(); IInstance RegisterInstance( string in_InstanceName ); IInstance RegisterInstance( ECPUType in_CPUType ); IInstance RegisterInstance( ECPUType in_CPUType string in_InstanceName ); • ECPUType in_CPUType: Defines which CPU type is simulated at the start of the instance. The default setting is "ECPUType.Unspecified". When a different CPU type is loaded via STEP 7 or from the Virtual Memory Card, this CPU type applies. • Return values string in_InstanceName: Name to be assigned to the instance. Every instance must have a unique name. If no name is assigned when registering a new instance, the instance is given the name "Instance_#" (# is the ID of the instance). If this name already exists, the name "Instance_#.#" is used, in which the second # is a counter that is incremented until the name is unique. The length of the name must be less than DINSTANCE_NAME_LENGTH. See Data types (Page 271). If the function is successful, an interface of a virtual controller. Otherwise, a Null pointer. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 249 User interfaces (API) 7.7 API IRemoteRuntimeManager Exceptions Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code ERuntimeErrorCode.InterfaceRemoved ERuntimeErrorCode.Timeout Condition The interface is disconnected from the remote Runtime Manager. The function does not return on time. ERuntimeErrorCode.WrongArgument The name is invalid. ERuntimeErrorCode.LimitReached There are already 16 instances registered in Runtime Manager. ERuntimeErrorCode.AlreadyExists An instance with this name already exists. RegisterCustomInstance() Registers a new instance of a virtual controller in Runtime Manager. Creates and returns an interface of this instance. Table 7- 289 RegisterCustomInstance() - Native C++ Syntax Parameters ERuntimeErrorCode RegisterCustomInstance( WCHAR* in_VplcDll, IInstance** out_InstanceInterface ); ERuntimeErrorCode RegisterCustomInstance( WCHAR* in_VplcDll, WCHAR* in_InstanceName, IInstance** out_InstanceInterface ); • WCHAR* in_VplcDll: The complete path to the DLL of the virtual controller that Siemens.Simatic.Simulation.Runtime.Instance.exe loads at PowerOn. • WCHAR* in_InstanceName: Name to be assigned to the instance. Every instance must have a unique name. If no name is assigned when registering a new instance, the instance is given the name "Instance_#" (# is the ID of the instance). If this name already exists, the name "Instance_#.#" is used, in which the second # is a counter that is incremented until the name is unique. The length of the name must be less than DINSTANCE_NAME_LENGTH. See Data types (Page 271). • Return values IInstance** out_InstanceInterface: Pointer to a Simulation Runtime interface pointer. The pointer must be initialized with NULL. The interface is created within the function. Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED SREC_TIMEOUT SREC_WRONG_ARGUMENT SREC_LIMIT_REACHED SREC_ALREADY_EXISTS The interface is disconnected from the remote Runtime Manager. The function does not return on time. The DLL name, the instance name or the IInstance pointer is invalid. There are already 16 instances registered in Runtime Manager. An instance with this name already exists. S7-PLCSIM Advanced 250 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.7 API IRemoteRuntimeManager Example C++ ISimulationRuntimeManager * api = NULL; ERuntimeErrorCode result = Initialize(&api); // Example: How To Create And Register An Instance // And To Get An Interface Of The Instance The Same Time IInstance* psa = NULL; if (result == SREC_OK) { result = api->RegisterCustomInstance("C:\\Temp\\vplc.dll"); } Note Native C++ If you no longer require the interface, delete it. See DestroyInterface() (Page 82). Table 7- 290 RegisterCustomInstance() - .NET (C#) Syntax Parameters IInstance RegisterCustomInstance( string in_VplcDll ); IInstance RegisterCustomInstance( string in_VplcDll, string in_InstanceName ); • string in_VplcDll: The complete path to the DLL of the virtual controller that Siemens.Simatic.Simulation.Runtime.Instance.exe loads at PowerOn. • Return values Exceptions string in_InstanceName: Name to be assigned to the instance. Every instance must have a unique name. If no name is assigned when registering a new instance, the instance is given the name "Instance_#" (# is the ID of the instance). If this name already exists, the name "Instance_#.#" is used, in which the second # is a counter that is incremented until the name is unique. The length of the name must be less than DINSTANCE_NAME_LENGTH. See Data types (Page 271). If the function is successful, an interface of a virtual controller; otherwise a Null pointer. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code ERuntimeErrorCode.InterfaceRemoved ERuntimeErrorCode.Timeout Condition The interface is disconnected from the remote Runtime Manager. The function does not return on time. ERuntimeErrorCode.WrongArgument The name or the ID is invalid. ERuntimeErrorCode.LimitReached There are already 16 instances registered in Runtime Manager. ERuntimeErrorCode.AlreadyExists An instance with this name already exists. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 251 User interfaces (API) 7.7 API IRemoteRuntimeManager CreateInterface() Creates and returns an interface of an already registered instance of a virtual controller. The instance could have been registered via the application or another application that uses the Simulation Runtime API. Table 7- 291 CreateInterface() - Native C++ Syntax Parameters ERuntimeErrorCode CreateInterface( WCHAR* in_InstanceName, IInstance** out_InstanceInterface ); ERuntimeErrorCode CreateInterface( INT32 in_InstanceID, IInstance** out_InstanceInterface ); • INT32 in_InstanceID: The ID of the registered instance from which you want to receive the interface. • WCHAR* in_InstanceName: The name of the registered instance from which you want to receive the interface. • Return values IInstance** out_InstanceInterface: Pointer to a Simulation Runtime interface pointer. The pointer must be initialized with NULL. The interface is created within the function. Runtime error code Condition SREC_OK The function is successful. SREC_INTERFACE_REMOVED SREC_TIMEOUT Example C++ The interface is disconnected from the remote Runtime Manager. The function does not return on time. SREC_WRONG_ARGUMENT The name, the ID or the IInstance- pointer is invalid. SREC_DOES_NOT_EXIST The instance is not registered in Runtime Manager. ISimulationRuntimeManager * api = NULL; ERuntimeErrorCode result = Initialize(&api); IInstance* psa1 = NULL; IInstance* psa2 = NULL; if (result == SREC_OK) { result = api->CreateInterface(0, &psa1); Example C++ result = api->CreateInterface(0, &psa2); // psa2 will be the same as psa1 } ISimulationRuntimeManager * api = NULL; ERuntimeErrorCode result = Initialize(&api); IInstance* psa = NULL; if (result == SREC_OK) { result = api->CreateInterface(L"My SimulationRuntime Instance", &psa); } S7-PLCSIM Advanced 252 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.7 API IRemoteRuntimeManager Note Native C++ If you no longer require the interface, delete it. See DestroyInterface() (Page 82) Table 7- 292 CreateInterface() - .NET (C#) Syntax Parameters IInstance CreateInterface( string in_InstanceName ); IInstance CreateInterface( INT32 in_InstanceID ); • INT32 in_InstanceID: The ID of the registered instance from which you want to receive the interface. • string in_InstanceName: The name of the registered instance from which you want to receive the interface. Return values Exceptions If the function is successful, an interface of a virtual controller; otherwise a Null pointer. Siemens.Simatic.Simulation.Runtime.SimulationRuntimeException Runtime error code Condition ERuntimeErrorCode.InterfaceRemoved The interface is disconnected from the remote Runtime Manager. ERuntimeErrorCode.Timeout ERuntimeErrorCode.WrongArgument ERuntimeErrorCode.DoesNotExists The function does not return on time. The name or the ID is invalid. The instance is not registered in Runtime Manager. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 253 User interfaces (API) 7.7 API IRemoteRuntimeManager 7.7.3 Events 7.7.3.1 OnConnectionLost Description The event is triggered when the connection to the Remote Runtime Manager has been terminated. OnConnectionLost Registers or unregisters an event handler method. Table 7- 293 OnConnectionLost - .NET (C#) Syntax event Delegate_IRRTM OnConnectionLost; Parameters None. See Delegate_IRRTM (Page 269) Return values None Exceptions None Note The event handler method runs in a separate thread. RegisterOnConnectionLostCallback() When the event occurs, the registered callback function is called. Only one callback function can be registered for the event. Registering a new callback function causes the previous callback function to be unregistered. Table 7- 294 RegisterOnConnectionLostCallback() - Native C++ Syntax Parameters void RegisterOnConnectionLostCallback( EventCallback_IRRTM in_CallbackFunction ); • EventCallback_IRRTM in_CallbackFunction: A callback function that subscribes to an event. See EventCallback_IRRTM (Page 263). Return values None Note The callback function runs in a separate thread. S7-PLCSIM Advanced 254 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.7 API IRemoteRuntimeManager RegisterOnConnectionLostEvent() When the event occurs, the registered event object is set to the signaled state. Only one event object can be registered for the event. Registration of a new event object causes the previous event object to be deleted. Table 7- 295 RegisterOnConnectionLostEvent() - Native C++ Syntax Parameters void RegisterOnConnectionLostEvent(); void RegisterOnConnectionLostEvent( HANDLE* in_Event ); • None: An internal event object is registered. • HANDLE* in_Event: A handle for a user-specific event object. The event object is registered. Return values None Table 7- 296 RegisterOnConnectionLostEvent() - .NET (C#) Syntax void RegisterOnConnectionLostEvent(); Parameters None Return values None UnregisterOnConnectionLostCallback() Unregisters the callback function. When the event occurs, no callback function is called. Table 7- 297 UnregisterOnConnectionLostCallback() - Native C++ Syntax void UnregisterOnConnectionLostCallback(); Parameters None Return values None S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 255 User interfaces (API) 7.7 API IRemoteRuntimeManager UnregisterOnConnectionLostEvent() Unregisters the event object. Table 7- 298 UnregisterOnConnectionLostEvent() - Native C++ Syntax void UnregisterOnConnectionLostEvent(); Parameters None Return values None Table 7- 299 UnregisterOnConnectionLostEvent() - .NET (C#) Syntax void UnregisterOnConnectionLostEvent(); Parameters None Return values None WaitForOnConnectionLostEvent() The function blocks the program until the registered event object is in the signaled state or the timeout interval is exceeded. Table 7- 300 WaitForOnConnectionLostEvent() - Native C++ Syntax Parameters bool WaitForOnConnectionLostEvent(); bool WaitForOnConnectionLostEvent( UINT32 in_Time_ms ) ; • None: The time limit is set to INFINITE. • UINT32 in_Time_ms: Value for the time limit in milliseconds. Return values • • true: If the event object was set to the signaled state. false: If no event was received during the defined time limit. Table 7- 301 WaitForOnConnectionLostEvent() - .NET (C#) Syntax Parameters bool WaitForOnConnectionLostEvent(); bool WaitForOnConnectionLostEvent( UInt32 in_Time_ms ) ; • None: The time limit is set to INFINITE. • UInt32 in_Time_ms: Value for the time limit in milliseconds. Return values • • true: If the event object was set to the signaled state. false: If no event was received during the defined time limit. S7-PLCSIM Advanced 256 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types 7.8 Data types Note Unsupported data types The Runtime API does not support the STRING and WSTRING data types. Supported data types In S7-PLCSIM Advanced V1.0, the Runtime API supports the data types of the S7-1500 CPUs. Converting data types When writing, data types are not transferred BCD-coded but mapped onto primitive data types. The data types Counter, Date and Time must be transferred to the API BDC-coded so that the values are written to the counter and no incorrect values are returned when reading. For these data types, you must perform a BCD conversion before writing and a BCD backconversion after reading. Example: If the value 999 is transferred to the API as 2457H, then Write modifies the value 2457H to 999. Without BCD conversion, there is no UInt16 value and Write writes no value at all. Additional information For information on data types and conversion, refer to section "Data types" in the STEP 7 V14 System Manual (https://support.industry.siemens.com/cs/document/109011420/step-7-professional-v131?dti=0&lc=en-WW // XmlEditor.InternalXmlClipboard:d59d29c4-ec28-6b28-3f63754735fb2e2a). S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 257 User interfaces (API) 7.8 Data types 7.8.1 DLL import functions (Native C++) 7.8.1.1 ApiEntry_Initialize Description Type of the central entry point for the API DLL. Table 7- 302 ApiEntry_Initialize - Native C++ Syntax Parameters typedef ERuntimeErrorCode(*ApiEntry_Initialize)( ISimulationRuntimeManager** out_RuntimeManagerInterface ); • ISimulationRuntimeManager** out_SimulationRuntimeManagerInterface: Pointer to a Runtime Manager interface pointer. The pointer must be initialized with ZERO. The interface is created within the function. • UINT32 in_InterfaceVersion: Version of the API interface to be downloaded: Return values API_DLL_INTERFACE_VERSION. Runtime error code Condition SREC_OK The function is successful. SREC_WRONG_ARGUMENT SREC_WRONG_VERSION SREC_CONNECTION_ERROR 7.8.1.2 The pointer to the Runtime Manager interface is ZERO. The version of the interface in use does not match the version of the API DLL. Unable to establish a connection to the Runtime Manager. ApiEntry_DestroyInterface Description Type of the entry point for DestroyInterface (Page 82). Table 7- 303 ApiEntry_DestroyInterface - Native C++ Syntax Parameters typedef ERuntimeErrorCode(*ApiEntry_DestroyInterface)( IBaseInterface* in_Interface ); • IBaseInterface* in_Interface: The interface to be deleted. Return values Runtime error code Condition SREC_OK The function is successful. SREC_WRONG_ARGUMENT The pointer to the interface is ZERO. S7-PLCSIM Advanced 258 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types 7.8.2 Event callback functions (Native C++) 7.8.2.1 EventCallback_VOID Description Table 7- 304 EventCallback_VOID - Native C++ Syntax 7.8.2.2 typedef void (*EventCallback_VOID)(); Parameters None Return values None EventCallback_II_SREC_ST Description Table 7- 305 EventCallback_II_SREC_ST - Native C++ Syntax Parameters typedef void (*EventCallback_II_SREC_ST)( IInstance* in_Sender, ERuntimeErrorCode in_ErrorCode, SYSTEMTIME in_SystemTime ); • IInstance* in_Sender: An interface of the instance that receives this event. • ERuntimeErrorCode in_ErrorCode: A possible error code. • SYSTEMTIME in_SystemTime: The virtual system time of the virtual controller at the time when this event was triggered. Return values None S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 259 User interfaces (API) 7.8 Data types 7.8.2.3 EventCallback_II_SREC_ST_SROS_SROS Description Table 7- 306 EventCallback_II_SREC_ST_SROS_SROS - Native C++ Syntax Parameters typedef void (*EventCallback_II_SREC_ST_SROS_SROS)( IInstance* in_Sender, ERuntimeErrorCode in_ErrorCode, SYSTEMTIME in_SystemTime, EOperatingState in_PrevState, EOperatingState in_OperatingState ); • IInstance* in_Sender: An interface of the instance that receives this event. • ERuntimeErrorCode in_ErrorCode: A possible error code. • SYSTEMTIME in_SystemTime: The virtual system time of the virtual controller at the time when this event was triggered. • EOperatingState in_PrevState: The operating state before the change. • EOperatingState in_OperatingState: The current operating state. Return values None Error codes Runntime error code Condition SREC_OK The function is successful. SREC_WARNING_TRIAL_MODE_ACTIVE SREC_LICENSE_NOT_FOUND SREC_COMMUNICATION_INTERFACE_NOT _AVAILABLE No license available. You can use the instance without restrictions for a period of one hour. Afterwards, the instance is shut down. Test mode has expired. A problem has occurred with the selected communication interface. Check your settings. S7-PLCSIM Advanced 260 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types 7.8.2.4 EventCallback_II_SREC_ST_SRLT_SRLM Description Table 7- 307 EventCallback_II_SREC_ST_SRLT_SRLM - Native C++ Syntax Parameters typedef void (*EventCallback_II_SREC_ST_SRLT_SRLM)( IInstance* in_Sender, ERuntimeErrorCode in_ErrorCode, SYSTEMTIME in_SystemTime, ELEDType in_LEDType, ELEDMode in_LEDMode, ); • IInstance* in_Sender: An interface of the instance that receives this event. • ERuntimeErrorCode in_ErrorCode: A possible error code. • SYSTEMTIME in_SystemTime: The virtual system time of the virtual controller at the time when this event was triggered. • ELEDType in_LEDType: The LED type that changed its state. • ELEDMode in_LEDMode: The new state of the LED display. Return values None S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 261 User interfaces (API) 7.8 Data types 7.8.2.5 EventCallback_II_SREC_ST_INT64_UINT32 Description Table 7- 308 EventCallback_II_SREC_ST_INT64_UINT32 - Native C++ Syntax Parameters typedef void (*EventCallback_II_SREC_ST_INT64_UINT32)( IInstance* in_Sender, ERuntimeErrorCode in_ErrorCode, SYSTEMTIME in_SystemTime, INT64 in_CycleTime_ns, UINT32 in_CycleCount, ); • IInstance* in_Sender: An interface of the instance that receives this event. • ERuntimeErrorCode in_ErrorCode: A possible error code. • SYSTEMTIME in_SystemTime: The virtual system time of the virtual controller at the time when this event was triggered. • INT64 in_CycleTime_ns: The virtual time (in nanoseconds) since the last cycle control point. If the events are triggered faster than they are received, multiple events are combined into one event. In this case, the value contains the virtual time (in nanoseconds) since the last event was received. • UINT32 in_CycleCount: The number of cycles since the last cycle control point. If the events are triggered faster than they are received, multiple events are combined into one event. In this case, this value contains the number of cycles since the last event was received. Return values None S7-PLCSIM Advanced 262 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types 7.8.2.6 EventCallback_IRRTM Description Table 7- 309 EventCallback_IRRTM - Native C++ Syntax typedef void (*EventCallback_IRRTM)( IRemoteRuntimeManager* in_Sender ); Parameters • Return values None IRemoteRuntimeManager* in_Sender: An interface of the remote Runtime Manager that receives this event. 7.8.2.7 EventCallback_SRCC_UINT32_UINT32_INT32 Description Table 7- 310 EventCallback_SRCC_UINT32_UINT32_INT32 - Native C++ Syntax Parameters ERuntimeConfigChanged in_RuntimeConfigChanged, UINT32 in_Param1, UINT32 in_Param2, INT32 in_Param3 ); ERuntimeConUInt32 UInt32 figChanged in_Param1 in_Param2 in_RuntimeConfi gChanged SRCC_INSTANCE_R EGISTERED Int32 in_Param3 SRCC_INSTANCE_U NREGISTERED - - SRCC_CONNECTION _OPENED ID of the unregistered instance IP of the remote Runtime Manager Port of the remote Runtime Manager IP of the remote Runtime Manager Port of the remote Runtime Manager - The open port - - - - - SRCC_CONNECTION _CLOSED Return values SRCC_PORT_OPENE D SRCC_PORT_CLOSE D ID of the registered instance - None S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 263 User interfaces (API) 7.8 Data types 7.8.2.8 EventCallback_II_SREC_ST_SRICC_UINT32_UINT32_UINT32_UINT32 Description Table 7- 311 EventCallback_II_SREC_ST_SRICC_UINT32_UINT32_UINT32_UINT32 - Native C++ Syntax Parameters typedef void (*EventCallback_II_SREC_ST_SRICC_UINT32_UINT32_UINT32_UINT32)( IInstance* in_Sender, ERuntimeErrorCode in_ErrorCode, SYSTEMTIME in_SystemTime, EInstanceConfigChanged in_InstanceConfigChanged, UINT32 in_Param1, UINT32 in_Param2, UINT32 in_Param3, UINT32 in_Param4 ); • IInstance in_Sender: An interface of the instance that receives this event. • ERuntimeErrorCode in_ErrorCode: A possible error code. • SYSTEMTIME in_SystemTime: The virtual system time of the virtual controller at the time when this event was triggered. EInstanceConfigChanged in_Instance ConfigChanged SRICC_HARDW ARE_SOFTWAR E CHANGED SRICC_IP_CH ANGED Return values UINT32 in_Param1 UINT32 in_Param2 UINT32 in_Param3 UINT32 in_Param4 - - - - The ID of the interface The new IP The new subnet mask The new standard gateway None S7-PLCSIM Advanced 264 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types 7.8.3 Delegate definitions (managed code) 7.8.3.1 Delegate_Void Description Table 7- 312 Delegate_Void - .NET (C#) Syntax 7.8.3.2 delegate void Delegate_Void(); Parameters None Return values None Delegate_II_EREC_DT Description Table 7- 313 Delegate_II_EREC_DT - .NET (C#) Syntax Parameters delegate void Delegate_II_EREC_DT ( IInstance in_Sender, ERuntimeErrorCode in_ErrorCode, DateTime in_DateTime ); • IInstance in_Sender: An interface of the instance that receives this event. • ERuntimeErrorCode in_ErrorCode: A possible error code. • DateTime in_DateTime: The virtual system time of the virtual controller at the time when this event was triggered. Return values None S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 265 User interfaces (API) 7.8 Data types 7.8.3.3 Delegate_II_EREC_DT_EOS_EOS Description Table 7- 314 Delegate_II_EREC_DT_EOS_EOS - .NET (C#) Syntax Parameters delegate void Delegate_II_EREC_DT_EOS_EOS( IInstance in_Sender, ERuntimeErrorCode in_ErrorCode, DateTime in_DateTime, EOperatingState in_PrevState, EOperatingState in_OperatingState ); • IInstance in_Sender: An interface of the instance that receives this event. • ERuntimeErrorCode in_ErrorCode: A possible error code. • DateTime in_DateTime: The virtual system time of the virtual controller at the time when this event was triggered. • EOperatingState in_PrevState: The operating state before the change. • EOperatingState in_OperatingState: The current operating state. Return values None Error codes Runntime error code ERuntimeErrorCode.OK ERuntimeErrorCode.WarningTrialModeActive ERuntimeErrorCode.LicenseNotFound ERuntimeErrorCode.CommunicationInterfaceNotAv ailable Condition The function is successful. No license available. You can use the instance without restrictions for a period of one hour. Afterwards, the instance is shut down. Test mode has expired. A problem has occurred with the selected communication interface. Check your settings. S7-PLCSIM Advanced 266 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types 7.8.3.4 Delegate_II_EREC_DT_ELT_ELM Description Table 7- 315 Delegate_II_EREC_DT_ELT_ELM - .NET (C#) Syntax Parameters delegate void Delegate_II_EREC_DT_ELT_ELM( IInstance in_Sender, ERuntimeErrorCode in_ErrorCode, DateTime in_DateTime, ELEDType in_LEDType, ELEDMode in_LEDMode, ); • IInstance in_Sender: An interface of the instance that receives this event. • ERuntimeErrorCode in_ErrorCode: A possible error code. • DateTime in_DateTime: The virtual system time of the virtual controller at the time when this event was triggered. • ELEDType in_LEDType: The LED type that changed its state. • ELEDMode in_LEDMode: The new state of the LED display. Return values None S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 267 User interfaces (API) 7.8 Data types 7.8.3.5 Delegate_II_EREC_DT_INT64_UINT32 Description Table 7- 316 Delegate_II_EREC_DT_INT64_UINT32 - .NET (C#) Syntax Parameters delegate void Delegate_II_EREC_DT_INT64_UINT32( IInstance in_Sender, ERuntimeErrorCode in_ErrorCode, DateTime in_DateTime, Int64 in_CycleTime_ns, UInt32 in_CycleCount, ); • IInstance in_Sender: An interface of the instance that receives this event. • ERuntimeErrorCode in_ErrorCode: A possible error code. • DateTime in_DateTime: The virtual system time of the virtual controller at the time when this event was triggered. • Int64 in_CycleTime_ns: The virtual time (in nanoseconds) since the last cycle control point. If the events are triggered faster than they are received, multiple events are combined into one event. In this case, the value contains the virtual time (in nanoseconds) since the last event was received. • UInt32 in_CycleCount: The number of cycles since the last cycle control point. If the events are triggered faster than they are received, multiple events are combined into one event. In this case, this value contains the number of cycles since the last event was received. Return values None S7-PLCSIM Advanced 268 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types 7.8.3.6 Delegate_IRRTM Description Table 7- 317 Delegate_IRRTM - .NET (C#) Syntax Parameters delegate void Delegate_IRRTM( IRemoteRuntimeManager in_Sender, ); • IRemoteRuntimeManager in_Sender: An interface of the remote Runtime Manager that receives this event. Return values 7.8.3.7 None Delegate_SRCC_UINT32_UINT32_INT32 Description Table 7- 318 Delegate_SRCC_UINT32_UINT32_INT32 - .NET (C#) Syntax Parameters delegate void Delegate_SRCC_UINT32_UINT32_INT32( ERuntimeConfigChanged in_RuntimeConfigChanged, UInt32 in_Param1, UInt32 in_Param2, Int32 in_Param3 ); ERuntimeConUInt32 UInt32 figChanged in_Param1 in_Param2 in_RuntimeConfi gChanged InstanceRegistered ID of the registered instance InstanceUnregistered - - ConnectionOpened IP of the Remote Runtime Manager Port of the remote Runtime Manager IP of the Remote Runtime Manager Port of the remote Runtime Manager - The open port - - - - - ConnectionClosed PortOpened Return values Int32 in_Param3 PortClosed None ID of the unregistered instance - S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 269 User interfaces (API) 7.8 Data types 7.8.3.8 Delegate_II_EREC_DT_SRICC_UINT32_UINT32_UINT32_UINT32 Description Table 7- 319 Delegate_II_EREC_DT_SRICC_UINT32_UINT32_UINT32_UINT32 - .NET (C#) Syntax Parameters delegate void Delegate_II_EREC_DT_SRICC_UINT32_UINT32_UINT32_UINT32( IInstance in_Sender, ERuntimeErrorCode in_ErrorCode, DateTime in_DateTime, EInstanceConfigChanged in_InstanceConfigChanged, UInt32 in_Param1, UInt32 in_Param2, UInt32 in_Param3, UInt32 in_Param4 ); • IInstance in_Sender: An interface of the instance that receives this event. • ERuntimeErrorCode in_ErrorCode: A possible error code. • DateTime in_DateTime: The virtual system time of the virtual controller at the time when this event was triggered. EInstanceConfigChanged in_Instance ConfigChanged HardwareSoftwareChanged IPChanged Return values UInt32 in_Param1 UInt32 in_Param2 UInt32 in_Param3 UInt32 in_Param4 - - - - The ID of the interface The new IP The new subnet mask The new standard gateway None S7-PLCSIM Advanced 270 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types 7.8.4 Definitions and constants The following identifiers are used in the API: Table 7- 320 Definitions and constants - Native C++ Identifier DINSTANCE_NAME_MAX_LENGTH Value Description 64 The unique name of an instance must be less than this value. DSTORAGE_PATH_MAX_LENGTH 130 The maximum path length to the virtual memory card. Including ZERO termination. DTAG_NAME_MAX_LENGTH 300 The maximum length of the name of a PLC tag. Including ZERO termination. DTAG_ARRAY_DIMENSION 6 The maximum number of dimension for a multidimensional field. 128 The maximum length of the controller name. Including ZERO termination. 32 The maximum length of the abbreviation of the controller (CPU type). Including ZERO termination. DCONTROLLER_NAME_MAX_LENGTH DCONTROLLER_SHORT_DESIGNATION_MA X_LENGTH Table 7- 321 Definitions and constants - .NET (C#) Identifier RuntimeConstants.InstanceNameLength Value Description 64 The unique name of an instance must be less than this value. RuntimeConstants.StoragePathMaxLength 130 The maximum path length to the virtual memory card. Including ZERO termination. RuntimeConstants.TagNameMaxLength 300 The maximum length of the name of a PLC tag. Including ZERO termination. RuntimeConstants.TagArrayDimension 6 The maximum number of dimension for a multidimensional field. 128 The maximum length of the controller name. Including ZERO termination. 32 The maximum length of the abbreviation of the controller (CPU type). Including ZERO termination. RuntimeConstants.ControllerNameMaxLength RuntimeConstants.ControllerShortDesignatio nMaxLength S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 271 User interfaces (API) 7.8 Data types 7.8.5 Unions (Native C++) 7.8.5.1 UIP Description Contains an IPv4 address. Table 7- 322 UIP - Native C++ Syntax Member union UIP { DWORD IP; BYTE IPs[4]; }; • DWORD IP: The IP address in a single DWORD • BYTE IPs[4]: The four elements of IP in descending order Example Example for an IP address: 192.168.0.1 UIP.IP = 0xC0A80001 UIP.IPs[3] = 192, UIP.IPs[2] = 168, UIP.IPs[1] = 0, UIP.IPs[0] = 1 7.8.5.2 UDataValue Description Contains the value of a PLC tag. Table 7- 323 UDataValue - Native C++ Syntax union UDataValue { bool Bool; INT8 Int8; INT16 Int16; INT32 Int32; INT64 Int64; UINT8 UInt8; UINT16 UInt16; UINT32 UInt32; UINT64 UInt64; float Float; double Double; CHAR Char; WCHAR WChar; }; S7-PLCSIM Advanced 272 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types Member • bool Bool: 1 byte boolean value • INT8 Int8: 1 byte integer with sign • INT16 Int16: • INT32 Int32: 2 byte integer with sign 4 byte integer with sign • INT64 Int64: 8 byte integer with sign • UINT8 UInt8: 1 byte integer without sign • UINT16 UInt16: 2 byte integer without sign • UINT32 UInt32: 4 byte integer without sign • UINT64 UInt64: 8 byte integer without sign • float Float: 4 byte floating-point value • double Double: 8 byte floating-point value • CHAR Char: 1 byte value character • WCHAR WChar: 2 byte value character S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 273 User interfaces (API) 7.8 Data types 7.8.6 Structures 7.8.6.1 SDataValue Description The structure contains the value and type of a PLC tag. Table 7- 324 SDataValue - Native C++ Syntax Member struct SDataValue { UDataValue Value; EDataType Type; }; • UDataValue Value: The value of the PLC tags • EPrimitiveDataType Type: Type of PLC tag Table 7- 325 SDataValue - .NET (C#) Syntax struct SDataValue { bool Bool { get; set; } Int8 Int8 { get; set; } Int16 Int16 { get; set; } Int32 Int32 { get; set; } Int64 Int64 { get; set; } UInt8 UInt8 { get; set; } UInt16 UInt16 { get; set; UInt32 UInt32 { get; set; UInt64 UInt64 { get; set; float Float { get; set; } double Double { get; set; sbyte Char { get; set; } char WChar { get; set; } } } } } EPrimitiveDataType Type { get; set; } } S7-PLCSIM Advanced 274 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types Member • bool Bool: • Int8 Int8: • Int16 Int16: • Int32 Int32: • Int64 Int64: • UntT8 UInt8: • UInt16 UInt16: 1 byte boolean value 1 byte integer with sign 2 byte integer with sign 4 byte integer with sign 8 byte integer with sign 1 byte integer without sign 2 byte integer without sign • UInt32 UInt32: 4 byte integer without sign • UInt64 UInt64: 8 byte integer without sign • float Float: • double Double: 4 byte floating-point value 8 byte floating-point value • sbyte Char: 1 byte value character • char WChar: 2 byte value character • EPrimitiveDataType Type: Type of PLC tag S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 275 User interfaces (API) 7.8 Data types 7.8.6.2 SDataValueByAddress Description This structure represents a PLC tag that can be accessed via its address. Table 7- 326 SDataValueByAddress - Native C++ Syntax struct SDataValueByAddress { UINT32 Offset; UINT8 Bit; SDataValue DataValue; }; Table 7- 327 SDataValueByAddress - .NET (C#) Syntax 7.8.6.3 struct SDataValueByAddress { UInt32 Offset; UInt8 Bit; SDataValue DataValue; } SDataValueByName Description This structure represents a PLC tag that can be called by name. Table 7- 328 SDataValueByName - Native C++ Syntax struct SDataValueByName { WCHAR Name[DTAG_NAME_MAX_LENGTH]; SDataValue DataValue; }; Table 7- 329 SDataValueByName - .NET (C#) Syntax struct SDataValueByName { String Name; SDataValue DataValue; } S7-PLCSIM Advanced 276 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types 7.8.6.4 SConnectionInfo Description This structure contains the IP address and port of a TCP/IP connection. Table 7- 330 SConnectionInfo - Native C++ Syntax struct SConnectionInfo { UIP IP; WORD Port; }; Table 7- 331 SConnectionInfo - .NET (C#) Syntax struct SConnectionInfo { SIP IP; UInt16 Port; } S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 277 User interfaces (API) 7.8 Data types 7.8.6.5 SInstanceInfo Description This structure contains an IPv4 address. Table 7- 332 SInstanceInfo - Native C++ Syntax Member struct SInstanceInfo { INT32 ID; WCHAR Name[DINSTANCE_NAME_MAX_LENGTH]; }; • INT32 ID: The ID of the instance • WCHAR Name[DINSTANCE_NAME_MAX_LENGTH]: The name of the instance Table 7- 333 SInstanceInfo - .NET (C#) Syntax Member struct SInstanceInfo { Int32 ID; String Name; } • Int32 ID: The ID of the instance • String name: The name of the instance S7-PLCSIM Advanced 278 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types 7.8.6.6 SDimension Description This structure contains information about the dimension of a field. Table 7- 334 SDimension - Native C++ Syntax struct SDimension { INT32 StartIndex; UINT32 Count; }; Table 7- 335 SDimension - .NET (C#) Syntax struct SDimension { Int32 StartIndex; UInt32 Count; } S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 279 User interfaces (API) 7.8 Data types 7.8.6.7 STagInfo Description This structure contains information about a PLC tag. Table 7- 336 STagInfo - Native C++ Syntax Member struct STagInfo { WCHAR Name[DTAG_NAME_MAX_LENGTH]; EArea Area; EDataType DataType; PrimitiveDataType PrimitiveDataType; UINT16 Size; UINT32 Offset; UINT8 Bit; UINT8 DimensionCount; UINT32 Index; UINT32 ParentIndex; SDimension Dimension[DTAG_ARRAY_DIMENSION]; }; • WCHAR Name[DTAG_NAME_MAX_LENGTH]: The name of the tag • EArea area: The CPU area where the tag is located. • EDataType DataType: The CPU data type of the tag • EPrimitiveDataType PrimitiveDataType: The primitive data type of the tag • UINT16 size: The size of the tag in bytes • UINT32 offset: The byte offset of the tag if it is not located in a data block. • UINT8 bit: The bit offset of the tag if it is not located in a data block. • UINT8 DimensionCount: The number of dimensions of the array. 0 if it is not a field for the tag. • UINT32 index: • UINT32 ParentIndex: The index of the tag If this tag is embedded in another tag (for example, an element of a structure), this value then displays the index of the parent tag. The value is 0 if the tag has no parent tag. • SDimension Dimension[DTAG_ARRAY_DIMENSION]: Information about each dimension of the field S7-PLCSIM Advanced 280 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types Table 7- 337 STagInfo - .NET (C#) Syntax Member public struct STagInfo { String Name; EArea Area; EDataType DataType; EPrimitiveDataType PrimitiveDataType; UInt16 Size; UInt32 Offset; UInt8 Bit; UInt32 Index; UInt32 ParentIndex; SDimension[] Dimension; } • String name: • EArea area: The name of the tag The CPU area where the tag is located. • EDataType DataType: The CPU data type of the tag • EPrimitiveDataType PrimitiveDataType: The primitive data type of the tag • UInt16 size: • UInt32 offset: The size of the tag in bytes. The byte offset of the tag if it is not located in a data block. • UInt8 bit: The bit offset of the tag if it is not located in a data block. • UInt32 index: The index of the tag • UInt32 ParentIndex: If this tag is embedded in another tag (for example, an element of a structure), this value then displays the index of the parent tag. The value is 0 if the tag has no parent tag. • SDimension[] Dimension: Information about each dimension of the field. Empty, if the tag is not an array. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 281 User interfaces (API) 7.8 Data types 7.8.6.8 SIP Description This structure contains an IPv4 address. Table 7- 338 SIP - .NET (C#) Syntax Member struct SIP { byte[] IPArray { get; set; } UInt32 IPDWord { get; set; } string IPString { get; set; } } • UInt32 IPDWord: The IP address in a single DWORD • byte[] IPArray: The four elements of IP in descending order • string IPString: The IPv4 address as a string Example Example for an IP address: 192.168.0.1 SIP.IPDWord = 0xC0A80001 SIP.IPArray[3] = 192, SIP.IPArray[2] = 168, SIP.IPArray[1] = 0, SIP.IPArray[0] = 1 SIP.IPString = "192.168.0.1" S7-PLCSIM Advanced 282 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types 7.8.6.9 SIPSuite4 Description This structure contains an IPv4 suite. Table 7- 339 SIPSuite4 - Native C++ Syntax Member struct SIPSuite4 { UIP IPAddress; UIP SubnetMask; UIP DefaultGateway; }; • UIP IPAddress: The IP address • UIP SubnetMask: The subnet mask • UIP DefaultGateway: The standard gateway Table 7- 340 SIPSuite4 - .NET (C#) Syntax Member struct SIPSuite4 { SIP IPAddress; SIP SubnetMask; SIP DefaultGateway; } • SIP IPAddress: The IP address • SIP SubnetMask: The subnet mask • SIP DefaultGateway: The standard gateway S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 283 User interfaces (API) 7.8 Data types 7.8.7 Enumerations 7.8.7.1 ERuntimeErrorCode Description This enumeration contains all error codes that are used by the Simulation Runtime API. Most API functions return one of these error codes. If the function is successful, the return value is always SREC_OK. Errors are returned with negative values, and alarms with positive values. Table 7- 341 ERuntimeErrorCode - Native C++ Syntax enum ERuntimeErrorCode { SREC_OK = 0, SREC_INVALID_ERROR_CODE = -1, SREC_NOT_IMPLEMENTED = -2, SREC_INDEX_OUT_OF_RANGE = -3, SREC_DOES_NOT_EXIST = -4, SREC_ALREADY_EXISTS = -5, SREC_UNKNOWN_MESSAGE_TYPE = -6, SREC_INVALID_MESSAGE_ID = -7, SREC_WRONG_ARGUMENT = -8, SREC_WRONG_PIPE = -9, SREC_CONNECTION_ERROR = -10, SREC_TIMEOUT = -11, SREC_MESSAGE_CORRUPT = -12, SREC_WRONG_VERSION = -13, SREC_INSTANCE_NOT_RUNNING = -14, SREC_INTERFACE_REMOVED = -15, SREC_SHARED_MEMORY_NOT_INITIALIZED = -16, SREC_API_NOT_INITIALIZED = -17, SREC_WARNING_ALREADY_EXISTS = 18, SREC_NOT_SUPPORTED = -19, SREC_WARNING_INVALID_CALL = 20, SREC_ERROR_LOADING_DLL = -21, SREC_SIGNAL_NAME_DOES_NOT_EXIST = -22, SREC_SIGNAL_TYPE_MISMATCH = -23, SREC_SIGNAL_CONFIGURATION_ERROR = -24, SREC_NO_SIGNAL_CONFIGURATION_LOADED = -25, SREC_CONFIGURED_CONNECTION_NOT_FOUND = -26, SREC_CONFIGURED_DEVICE_NOT_FOUND = -27, SREC_INVALID_CONFIGURATION = -28, SREC_TYPE_MISMATCH = -29, SREC_LICENSE_NOT_FOUND = -30, SREC_NO_LICENSE_AVAILABLE = -31, SREC_WRONG_COMMUNICATION_INTERFACE = -32, SREC_LIMIT_REACHED = -33, SREC_NO_STORAGE_PATH_SET = -34, SREC_STORAGE_PATH_ALREADY_IN_USE = -35, SREC_MESSAGE_INCOMPLETE = -36, SREC_ARCHIVE_STORAGE_NOT_CREATED = -37, SREC_RETRIEVE_STORAGE_FAILURE = -38 SREC_INVALID_OPERATING_STATE = -39, SREC_INVALID_ARCHIVE_PATH = -40, SREC_DELETE_EXISTING_STORAGE_FAILED = -41, SREC_CREATE_DIRECTORIES_FAILED = -42, SREC_NOT_ENOUGH_MEMORY = -43, SREC_WARNING_TRIAL_MODE_ACTIVE = 44, SREC_NOT_RUNNING = -45, SREC_NOT_EMPTY = -46, SREC_NOT_UP_TO_DATE = -47, SREC_COMMUNICATION_INTERFACE_NOT_AVAILABLE = -48, SREC_WARNING_NOT_COMPLETE = 49, SREC_VIRTUAL_SWITCH_MISCONFIGURED = -50 }; S7-PLCSIM Advanced 284 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types Table 7- 342 ERuntimeErrorCode - .NET (C#) Syntax enum ERuntimeErrorCode { OK = 0, InvalidErrorCode = -1, NotImplemented = -2, IndexOutOfRange = -3, DoesNotExist = -4, AlreadyExists = -5, UnknownMessageType = -6, InvalidMessageId = -7, WrongArgument = -8, WrongPipe = -9, ConnectionError = -10, Timeout = -11, MessageCorrupt = -12, WrongVersion = -13, InstanceNotRunning = -14, InterfaceRemoved = -15, SharedMemoryNotInitialized = -16, ApiNotInitialized = -17, WarningAlreadyExists = 18, NotSupported = -19, WarningInvalidCall = 20, ErrorLoadingDll = -21, SignalNameDoesNotExist = -22, SignalTypeMismatch = -23, SignalConfigurationError = -24, NoSignalConfigurationLoaded = -25, ConfiguredConnectionNotFound = -26, ConfiguredDeviceNotFound = -27, InvalidConfiguration = -28, TypeMismatch = -29, LicenseNotFound = -30, NoLicenseAvailable = -31, WrongCommunicationInterface = -32, LimitReached = -33, NoStartupPathSet = -34, start StartupPathAlreadyInUse = -35, MesssageIncomplete = -36, archive ArchiveStorageNotCreated = -37, RetrieveStorageFailure = -38, InvalidOperatingState = -39, InvalidArchivePath = -40, DeleteExistingStorageFailed = -41, CreateDirectoriesFailed = -42, NotEnoughMemory = -43, WarningTrialModeActive = 44, NotRunning = -45, NotEmpty = -46, NotUpToData = -47, CommunicationInterfaceNotAvailable = -48, WarningNotComplete = 49, VirtualSwitchMisconfigured = -50 } S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 285 User interfaces (API) 7.8 Data types 7.8.7.2 EArea Description This list contains all PLC areas that contain the available PLC tags. Table 7- 343 EArea - Native C++ Syntax enum EArea { SRA_INVALID_AREA = 0, SRA_INPUT = 1, SRA_MARKER = 2, SRA_OUTPUT = 3, SRA_COUNTER = 4, SRA_TIMER = 5, SRA_DATABLOCK = 6, SRA_ENUMERATION_SIZE = 7 }; Table 7- 344 EArea - .NET (C#) Syntax public enum EArea { InvalidArea = 0, Input = 1, Marker = 2, Output = 3, Counter = 4, Timer = 5, DataBlock = 6, } S7-PLCSIM Advanced 286 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types 7.8.7.3 EOperatingState Description This list contains all the operating states of a virtual controller. Table 7- 345 EOperatingState - Native C++ Syntax enum EOperatingState { SROS_INVALID_OPERATING_STATE = 0, SROS_OFF = 1, SROS_BOOTING = 2, SROS_STOP = 3, SROS_STARTUP = 4, SROS_RUN = 5, SROS_FREEZE = 6, SROS_SHUTTING_DOWN = 7, SROS_ENUMERATION_SIZE = 8 }; Table 7- 346 EOperatingState - .NET (C#) Syntax enum EOperatingState { InvalidOperatingState = 0, Off = 1, Booting = 2, Stop = 3, Startup = 4, Run = 5, Freeze = 6, ShuttingDown = 7 } S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 287 User interfaces (API) 7.8 Data types 7.8.7.4 EOperatingMode Description This list contains all the operating modes of a virtual controller. Table 7- 347 EOperatingMode - Native C++ Syntax enum EOperatingMode { SROM_DEFAULT = 0, SROM_SINGLE_STEP = 1, SROM_EXTENDED_SINGLE_STEP = 2, SROM_TIMESPAN_SYNCHNRONIZED = 3 }; Table 7- 348 EOperatingMode - .NET (C#) Syntax enum EOperatingMode { Default = 0, SingleStep = 1, ExtendedSingleStep = 2, TimespanSynchronized = 3 } S7-PLCSIM Advanced 288 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types 7.8.7.5 ECPUType Description This list contains all CPU types that can be loaded in a virtual controller. Table 7- 349 ECPUType - Native C++ Syntax enum ECPUType { SRCT_1500_Unspecified = 0x000005DC, SRCT_1511 = 0x000005E7, SRCT_1511v2 = 0x010005E7, SRCT_1513 = 0x000005E9, SRCT_1513v2 = 0x010005E9, SRCT_1515 = 0x000005EB, SRCT_1515v2 = 0x010005EB, SRCT_1516 = 0x000005EC, SRCT_1516v2 = 0x010005EC, SRCT_1517 = 0x000005ED, SRCT_1518 = 0x000005EE, SRCT_1511C = 0x000405E7, SRCT_1512C = 0x000405E8, SRCT_1511F = 0x000105E7, SRCT_1511Fv2 = 0x010105E7, SRCT_1513F = 0x000105E9, SRCT_1513Fv2 = 0x010105E9, SRCT_1515F = 0x000105EB, SRCT_1515Fv2 = 0x010105EB, SRCT_1516F = 0x000105EC, SRCT_1516Fv2 = 0x010105EC, SRCT_1517F = 0x000105ED, SRCT_1518F = 0x000105EE, SRCT_1511T = 0x000805E7, SRCT_1515T = 0x000805EB, SRCT_1517T = 0x000805ED, SRCT_1517TF = 0x000905ED, SRCT_1518ODK = 0x001005EE, SRCT_1518FODK = 0x001105EE, SRCT_ET200SP_Unspecified = 0x000205DC, SRCT_1510SP = 0x000205E6, SRCT_1510SPv2 = 0x010205E6, SRCT_1512SP = 0x000205E8, SRCT_1512SPv2 = 0x010205E8, SRCT_1510SPF = 0x000305E6, SRCT_1510SPFv2 = 0x010305E6, SRCT_1512SPF = 0x000305E8, SRCT_1512SPFv2 = 0x010305E8 }; S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 289 User interfaces (API) 7.8 Data types Table 7- 350 ECPUType - .NET (C#) Syntax enum ECPUType { CPU1500_Unspecified = 0x000005DC, CPU1511 = 0x000005E7, CPU1511v2 = 0x010005E7, CPU1513 = 0x000005E9, CPU1513v2 = 0x010005E9, CPU1515 = 0x000005EB, CPU1515v2 = 0x010005EB, CPU1516 = 0x000005EC, CPU1516v2 = 0x010005EC, CPU1517 = 0x000005ED, CPU1518 = 0x000005EE, CPU1511C = 0x000405E7, CPU1512C = 0x000405E8, CPU1511F = 0x000105E7, CPU1511Fv2 = 0x010105E7, CPU1513F = 0x000105E9, CPU1513Fv2 = 0x010105E9, CPU1515F = 0x000105EB, CPU1515Fv2 = 0x010105EB, CPU1516F = 0x000105EC, CPU1516Fv2 = 0x010105EC, CPU1517F = 0x000105ED, CPU1518F = 0x000105EE, CPU1511T = 0x000805E7, CPU1515T = 0x000805EB, CPU1517T = 0x000805ED, CPU1517TF = 0x000905ED, CPU1518ODK = 0x001005EE, CPU1518FODK = 0x001105EE, CPUET200SP_Unspecified = 0x000205DC, CPU1510SP = 0x000205E6, CPU1510SPv2 = 0x010205E6, CPU1512SP = 0x000205E8, CPU1512SPv2 = 0x010205E8, CPU1510SPF = 0x000305E6, CPU1510SPFv2 = 0x010305E6, CPU1512SPF = 0x000305E8, CPU1512SPFv2 = 0x010305E8 } S7-PLCSIM Advanced 290 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types 7.8.7.6 ECommunicationInterface Description This list shows the available communication interfaces of a virtual controller. Table 7- 351 ECommunicationInterface - Native C++ Syntax enum ECommunicationInterface { SRCI_NONE = 0, SRCI_SOFTBUS = 1, SRCI_TCPIP = 2, SRCI_ENUMERATION_SIZE = 3 }; Table 7- 352 ECommunicationInterface - .NET (C#) Syntax enum ECommunicationInterface { None = 0, Softbus = 1, TCPIP = 2, } S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 291 User interfaces (API) 7.8 Data types 7.8.7.7 ELEDType Description This list includes all types of LEDs of a virtual controller. Table 7- 353 ELEDType - Native C++ Syntax enum ELEDType { SRLT_STOP = 0, SRLT_RUN = 1, SRLT_ERROR = 2, SRLT_MAINT = 3, SRLT_REDUND = 4, SRLT_FORCE = 5, SRLT_BUSF1 = 6, SRLT_BUSF2 = 7, SRLT_BUSF3 = 8, SRLT_BUSF4 = 9, SRLT_ENUMERATION_SIZE = 10 }; Table 7- 354 ELEDType - .NET (C#) Syntax enum ELEDType { Stop = 0, Run = 1, Error = 2 Maint = 3, Redund = 4, Force = 5, Busf1 = 6, Busf2 = 7, Busf3 = 8, Busf4 = 9 } S7-PLCSIM Advanced 292 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types 7.8.7.8 ELEDMode Description This list contains all the LED states of a virtual controller. Table 7- 355 ELEDMode - Native C++ Syntax enum ELEDMode { SRLM_OFF = 0, SRLM_ON = 1, SRLM_FLASH_FAST = 2, SRLM_FLASH_SLOW = 3, SRLM_INVALID = 4 }; Table 7- 356 ELEDMode - .NET (C#) Syntax enum ELEDMode { Off = 0, On = 1, FlashFast = 2, FlashSlow = 3, Invalid = 4 } S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 293 User interfaces (API) 7.8 Data types 7.8.7.9 EPrimitiveDataType Description This list contains all the primitive data types that are used by the I/O access functions. Table 7- 357 EPrimitiveDataType - Native C++ Syntax enum EPrimitiveDataType { SRPDT_UNSPECIFIC = 0, SRPDT_STRUCT = 1, SRPDT_BOOL = 2, SRPDT_INT8 = 3, SRPDT_INT16 = 4, SRPDT_INT32 = 5, SRPDT_INT64 = 6, SRPDT_UINT8 = 7, SRPDT_UINT16 = 8, SRPDT_UINT32 = 9, SRPDT_UINT64 = 10, SRPDT_FLOAT = 11, SRPDT_DOUBLE = 12, SRPDT_CHAR = 13, SRPDT_WCHAR = 14 }; Table 7- 358 EPrimitiveDataType - .NET (C#) Syntax enum EPrimitiveDataType { Unspecific = 0, Struct = 1, Bool = 2, Int8 = 3, Int16 = 4, Int32 = 5, Int64 = 6, UInt8 = 7, UInt16 = 8, UInt32 = 9, UInt64 = 10, Float = 11, Double = 12, Char = 13, WChar = 14 } S7-PLCSIM Advanced 294 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types Compatible primitive data types The following tables shows the primitive data types of the user interface (API) and the data types of the PLCSIM Advanced instance that are configured in the stored tag list. The data types that can be used as compatible are marked with "X". Table 7- 359 Compatible primitive data types - Reading API PLCSIM Advanced instance Bool Bool INT8 INT16 INT32 INT64 UINT8 UINT16 UINT32 UINT6 4 Float Double Char WChar X INT8 X INT16 X X INT32 X X X INT64 X X X X X X X X X X UINT8 X UINT16 X X UINT32 X X X UINT64 X X X X Float X Double X Char X WChar X Table 7- 360 Compatible primitive data types - Write API PLCSIM Advanced instance Bool Bool INT8 INT16 INT32 INT64 X X X X X X X X X UINT8 UINT16 UINT32 UINT6 4 X X X X X X X X X Float Double Char WChar X INT8 INT16 INT32 INT64 UINT8 X X X UINT16 UINT32 UINT64 Float Double Char WChar X X X X X X S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 295 User interfaces (API) 7.8 Data types 7.8.7.10 EDataType Description This list contains all the CPU data types (STEP 7). S7-PLCSIM Advanced 296 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types Table 7- 361 EDataType - Native C++ Syntax enum EDataType { SRDT_UNKNOWN = 0, SRDT_BOOL = 1, SRDT_BYTE = 2, SRDT_CHAR = 3, SRDT_WORD = 4, SRDT_INT = 5, SRDT_DWORD = 6, SRDT_DINT = 7, SRDT_REAL = 8, SRDT_DATE = 9, SRDT_TIME_OF_DAY = 10, SRDT_TIME = 11, SRDT_S5TIME = 12, SRDT_DATE_AND_TIME = 14, SRDT_STRUCT = 17, SRDT_STRING = 19, SRDT_COUNTER = 28, SRDT_TIMER = 29, SRDT_IEC_Counter = 30, SRDT_IEC_Timer = 31, SRDT_LREAL = 48, SRDT_ULINT = 49, SRDT_LINT = 50, SRDT_LWORD = 51, SRDT_USINT = 52, SRDT_UINT = 53, SRDT_UDINT = 54, SRDT_SINT = 55, SRDT_WCHAR = 61, SRDT_WSTRING = 62, SRDT_LTIME = 64, SRDT_LTIME_OF_DAY = 65, SRDT_LDT = 66, SRDT_DTL = 67, SRDT_IEC_LTimer = 68, SRDT_IEC_SCounter = 69, SRDT_IEC_DCounter = 70, SRDT_IEC_LCounter = 71, SRDT_IEC_UCounter = 72, SRDT_IEC_USCounter = 73, SRDT_IEC_UDCounter = 74, SRDT_IEC_ULCounter = 75, SRDT_ERROR_STRUCT = 97, SRDT_NREF = 98, SRDT_CREF = 101, SRDT_AOM_IDENT = 128, SRDT_EVENT_ANY = 129, SRDT_EVENT_ATT = 130, SRDT_EVENT_HWINT = 131, SRDT_HW_ANY = 144, SRDT_HW_IOSYSTEM = 145, SRDT_HW_DPMASTER = 146, SRDT_HW_DEVICE = 147, SRDT_HW_DPSLAVE = 148, SRDT_HW_IO = 149, SRDT_HW_MODULE = 150, SRDT_HW_SUBMODULE = 151, SRDT_HW_HSC = 152, SRDT_HW_PWM = 153, SRDT_HW_PTO = 154, SRDT_HW_INTERFACE = 155, SRDT_HW_IEPORT = 156, SRDT_OB_ANY = 160, SRDT_OB_DELAY = 161, SRDT_OB_TOD = 162, SRDT_OB_CYCLIC = 163, SRDT_OB_ATT = 164, SRDT_CONN_ANY = 168, SRDT_CONN_PRG = 169, SRDT_CONN_OUC = 170, SRDT_CONN_R_ID = 171, SRDT_PORT = 173, SRDT_RTM = 174, SRDT_PIP = 175, SRDT_OB_PCYCLE = 192, SRDT_OB_HWINT = 193, SRDT_OB_DIAG = 195, SRDT_OB_TIMEERROR = 196, SRDT_OB_STARTUP = 197, SRDT_DB_ANY = 208, SRDT_DB_WWW = 209, SRDT_DB_DYN = 210, SRDT_DB = 257 }; S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 297 User interfaces (API) 7.8 Data types Table 7- 362 EDataType - .NET (C#) Syntax public enum EDataType { Unknown = 0, Bool = 1, Byte = 2, Char = 3, Word = 4, Int = 5, DWord = 6, DInt = 7, Real = 8, Date = 9, TimeOfDay = 10, Time = 11, S5Time = 12, DateAndTime = 14, Struct = 17, String = 19, Counter = 28, Timer = 29, IEC_Counter = 30, IEC_Timer = 31, LReal = 48, ULInt = 49, LInt = 50, LWord = 51, USInt = 52, UInt = 53, UDInt = 54, SInt = 55, WChar = 61, WString = 62, LTime = 64, LTimeOfDay = 65, LDT = 66, DTL = 67, IEC_LTimer = 68, IEC_SCounter = 69, IEC_DCounter = 70, IEC_LCounter = 71, IEC_UCounter = 72, IEC_USCounter = 73, IEC_UDCounte = 74, IEC_ULCounter = 75, ErrorStruct = 97, NREF = 98, CREF = 101, Aom_Ident = 128, Event_Any = 129, Event_Att = 130, Event_HwInt = 131, Hw_Any = 144, Hw_IoSystem = 145, Hw_DpMaster = 146, Hw_Device = 147, Hw_DpSlave = 148, Hw_Io = 149, Hw_Module = 150, Hw_SubModule = 151, Hw_Hsc = 152, Hw_Pwm = 153, Hw_Pto = 154, Hw_Interface = 155, Hw_IEPort = 156, OB_Any = 160, OB_Delay = 161, OB_Tod = 162, OB_Cyclic = 163, OB_Att = 164, Conn_Any = 168, Conn_Prg = 169, Conn_Ouc = 170, Conn_R_ID = 171, Port = 173, Rtm = 174, Pip = 175, OB_PCycle = 192, OB_HwInt = 193, OB_Diag = 195, OB_TimeError = 196, OB_Startup = 197, DB_Any = 208, DB_WWW = 209, DB_Dyn = 210, DB = 257 } S7-PLCSIM Advanced 298 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types 7.8.7.11 ETagListDetails Description This list contains all PLC areas that can be used as a filter to update the tag table. Table 7- 363 ETagListDetails - Native C++ Syntax enum ETagListDetails { SRTLD_NONE = 0, SRTLD_IO = 1, SRTLD_M = 2, SRTLD_IOM = 3, SRTLD_CT = 4, SRTLD_IOCT = 5, SRTLD_MCT = 6, SRTLD_IOMCT = 7, SRTLD_DB = 8, SRTLD_IODB = 9, SRTLD_MDB = 10, SRTLD_IOMDB = 11, SRTLD_CTDB = 12, SRTLD_IOCTDB = 13, SRTLD_MCTDB = 14, SRTLD_IOMCTDB = 15 }; Table 7- 364 ETagListDetails - .NET (C#) Syntax enum ETagListDetails { None = 0, IO = 1, M = 2, IOM = 3, CT = 4, IOCT = 5, MCT = 6, IOMCT = 7, DB = 8, IODB = 9, MDB = 10, IOMDB = 11, CTDB = 12, IOCTDB = 13, MCTDB = 14, IOMCTDB = 15 } S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 299 User interfaces (API) 7.8 Data types 7.8.7.12 ERuntimeConfigChanged Description This list contains all possible causes of a OnConfigurationChanged event that the Runtime Manager sends. Table 7- 365 ERuntimeConfigChanged - Native C++ Syntax enum ERuntimeConfigChanged { SRCC_INSTANCE_REGISTERED = 0, SRCC_INSTANCE_UNREGISTERED = 1 SRCC_CONNECTION_OPENED = 2, SRCC_CONNECTION_CLOSED = 3, SRCC_PORT_OPENED = 4, SRCC_PORT_CLOSED = 5 }; Table 7- 366 ERuntimeConfigChanged - .NET (C#) Syntax enum ERuntimeConfigChanged { InstanceRegistered = 0, InstanceUnregistered = 1, ConnectionOpened = 2, ConnectionClosed = 3, PortOpened = 4, PortClosed = 5 } 7.8.7.13 EInstanceConfigChanged Description This list contains all possible causes for a OnConfigurationChanged event that the virtual controller sends. Table 7- 367 EInstanceConfigChanged - Native C++ Syntax enum EInstanceConfigChanged { SRICC_HARDWARE_SOFTWARE_CHANGED = 0, SRICC_IP_CHANGED = 1 }; Table 7- 368 EInstanceConfigChanged - .NET (C#) Syntax enum EInstanceConfigChanged { HardwareSoftwareChanged = 0, IPChanged = 1 } S7-PLCSIM Advanced 300 Function Manual, 09/2016, A5E37039512-AA User interfaces (API) 7.8 Data types S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 301 8 Restrictions 8.1 Overview Certain actions or events may lead to behavior in S7-PLCSIM Advanced or in STEP 7 which deviates from that of a hardware CPU. Restrictions and possible remedies can be found in the following sections: ● OPC UA server (Page 302) ● Web server (Page 304) ● Restrictions for communications services (Page 305) ● Restrictions for instructions (Page 306) ● Restrictions with Motion Control (Page 307) ● Restrictions to local communication via Softbus (Page 308) ● Error with overflow cyclical events (Page 309) ● Deviating I/O values in the STEP 7 user program (Page 310) ● Multiple simulations and possible collision of IP addresses (Page 310) ● Simulation in standby mode (Page 310) ● Error installing the antivirus software from Kaspersky (Page 311) 8.2 OPC UA server With OPC UA, data exchange is performed through an open, standardized and manufacturer-independent communication protocol. The CPU acting as the OPC UA server can communicate with OPC UA clients, for example, with HMI panels V14 and SCADA systems. For technical reasons, the security settings in PLCSIM Advanced differ from a hardware CPU. Some features are disabled for simulations or are available to a limited extent. Configuring OPC UA server Start the instances via the communication interface "PLCSIM Virtual Ethernet Adapter" (TCP/IP) to use the OPC UA server. The OPC UA server functionality is not available if communication takes place via the Softbus. S7-PLCSIM Advanced 302 Function Manual, 09/2016, A5E37039512-AA Restrictions 8.2 OPC UA server OPC UA security settings Based on the OPC UA security settings, the same settings can be made in STEP 7 for the hardware CPU. The data is not further processed by PLCSIM Advanced. This ensures that the user does not have his project change to perform a simulation. Certificate ● Server certificate PLCSIM Advanced uses its own certificate in the firmware and not that of STEP 7. The certificate need not be changed for simulations. However, it does not have the same security level as a downloaded server certificate and cannot be used for secure connections! ● Server Security Endpoints PLCSIM Advanced only supports Security Endpoint "none". ● Client certificate PLCSIM Advanced does not evaluate certificates the imported and configured in STEP 7 . PLCSIM Advanced accepts all client certificates automatically. This setting cannot be changed. ● User authentication PLCSIM Advanced does not use the user name configured in STEP 7. Only one logon is possible as "guest" or "anonymous". S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 303 Restrictions 8.3 Web server 8.3 Web server The Web server integrated in a CPU enables monitoring and administering of the CPU by authorized users over a network. This permits evaluation and diagnostics over long distances. The simulation of the Web server is restricted under S7-PLCSIM V1.0 Advanced. Each PLCSIM Advanced instance can simulate its own Web server. The freeze state of a virtual controller is not shown as an internal operating state. Configuring the Web server S7 PLCSIM Advanced Start the instances via the communication interface "PLCSIM Virtual Ethernet Adapter" (TCP/IP) to use the Web server. The Web server functionality is not available if the communication is performed via the Softbus. STEP 7 Configure the Web server in STEP 7 in the CPU properties. Restricted Web server functionality ● Logon "PLCSIM" is preset as the user. There is no logon for users. A user configured in STEP 7 and his rights have no effect on the "PLCSIM" user. ● There is no access via the secure transmission protocol "HTTPS". ● The information may not be fully displayed on some websites due to different data handling. ● There is no topology information. ● "Online Backup&Restore" is not available. ● FW updates are not supported. S7-PLCSIM Advanced 304 Function Manual, 09/2016, A5E37039512-AA Restrictions 8.4 Restrictions for communications services 8.4 Restrictions for communications services TUSEND / TURCV When you run the UDP blocks TUSEND and TURCV via the "PLCSIM" communication interface (Softbus), you get error code 0x80C4 at the transmission end and receiving end: Temporary communications error. The specified connection is temporarily down. Remedy Set "PLCSIM Virtual Ethernet Adapter" (TCP/IP) as the communication interface in PLCSIM Advanced. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 305 Restrictions 8.5 Restrictions for instructions 8.5 Restrictions for instructions S7-PLCSIM Advanced simulates instructions for CPUs S7-1500 and ET 200SP with a few exceptions, such as interrupts. Some instructions are partially supported. For these, S7-PLCSIM Advanced checks the input parameters for validity and returns outputs that are valid but do not necessarily correspond to those that a real CPU with physical inputs/outputs would return. Instructions not supported Unsupported instructions are handled as not ready by S7-PLCSIM Advanced, their value is always "OK". S7PLCSIM Advanced does not support the following instructions: Table 8- 1 Instructions not supported Instruction Description DIS_AIRT Delay interrupts with higher priority and asynchronous errors EN_AIRT Activate interrupts with higher priority and asynchronous errors DIS_IRT Call new interrupts and disable asynchronous error RE_TRIGR Start time monitoring WR_DPARM Transfer data record GETIO Read process image SETIO Transfer process image GETIO_PART Read a part of the outputs of a DP standard slave / PROFINET IO device SETIO_PART Write a part of the outputs of a DP standard slave / PROFINET IO device DPRD_DAT Read consistent data of a standard DP slave DPWR_DAT Write consistent data to a standard DP slave RD_OBINF Read OB start information DP_TOPOL DP bus topology PORT_CFG Safety function ATTACH Assigning a hardware interrupt to an OB DETACH Removing the mapping between hardware interrupt and OB S7-PLCSIM Advanced 306 Function Manual, 09/2016, A5E37039512-AA Restrictions 8.6 Restrictions with Motion Control 8.6 Restrictions with Motion Control 8.6.1 Motion Control resources There are motion control resources on each CPU that can be distributed to the technology objects. Note Maximum 5120 Motion Control resources PLCSIM Advanced supports a maximum of 5120 motion control resources. The simulation of motion control is therefore restricted for the following CPUs: Table 8- 2 CPUs with limited Motion Control resources Type Standard CPUs Fail-safe CPUs Article number CPU 1517-3 PN/DP 6ES7517-3AP00-0AB0 CPU 1518-4 PN/DP 6ES7518-4AP00-0AB0 CPU 1518-4 PN/DP ODK1 6ES7518-4AP00-3AB0 CPU 1517F-3 PN/DP 6ES7517-3FP00-0AB0 CPU 1518F-4 PN/DP CPU 1518F-4 PN/DP Technology CPUs CPU 1517T-3 6ES7518-4FP00-0AB0 ODK1 PN/DP2 CPU 1517TF-3 PN/DP2 1 The ODK functionality of this CPU is not simulated. 2 The simulation of this CPU supports only 64 cams. 6ES7518-4FP00-3AB0 6ES7517-3TP00-0AB0 6ES7517-3UP00-0AB0 Exceeding the quantity structure STEP 7 checks whether the quantity structure for a configured CPU is complied with, and alerts you when it is exceeded. When you load a project into a CPU, another message appears. Note A project that uses more than 5120 motion control resources can be downloaded to a virtual controller. However, there is no message indicating that the quantity structure has been exceeded. Only when the user program accesses the technology objects do you recognize by the error message at the block and the value 0 of the object that motion control objects cannot be used due to an overrun of the quantity structure. S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 307 Restrictions 8.7 Restrictions to local communication via Softbus 8.6.2 Technology modules PLCSIM Advanced simulates the real CPU, but not configured, connected technology modules or other I/O devices. It is possible to download a project with technology modules for operation of motion control. However, the built-in logic of the technology modules is not part of the simulation, which is why the associated Motion Control instructions are not supported. Additional information For more information on Motion Control, refer to the following manuals: ● Device manuals to support SIMATIC controllers (http://w3.siemens.com/mcms/industrialautomation-systems-simatic/en/manual-overview/Pages/Default.aspx) ● Function manual S7-1500 Motion Control (https://support.industry.siemens.com/cs/ww/en/view/109739589) ● Function manual S7-1500T Motion Control (https://support.industry.siemens.com/cs/ww/en/view/109481326) 8.7 Restrictions to local communication via Softbus Identical IP addresses for instances If the "PLCSIM" communication interface (Softbus) is set, then identical IP addresses are created automatically for all instances when creating the instances through the Control Panel. In STEP 7, only one instance is therefore displayed in the lifelist. Remedy Use the API function SetIPSuite() to assign a unique address for each instance, then all instances are displayed in STEP 7 with their IP addresses. API function ● SetIPSuite() (Page 122) Online and diagnostics If the "PLCSIM" (Softbus) communication interface is set, no details are displayed for the "Online and Diagnostics" function under the PROFINET interface (IP address, MAC address, etc.). See also Controller - Information and settings (Page 119) S7-PLCSIM Advanced 308 Function Manual, 09/2016, A5E37039512-AA Restrictions 8.8 Restrictions of security with VMware vSphere Hypervisor (ESXi) 8.8 Restrictions of security with VMware vSphere Hypervisor (ESXi) When you use the virtualization platform VMware vSphere Hypervisor (ESXi), you must change the policy exception to communicate over TCP/IP. Remedy Accept the "Promiscuous mode and "Forged transmit" options for the Virtual Switch of the ESXi. NOTICE Restrictions of security For security reasons, Promiscuous mode is disabled by default. If you accept the Promiscuousmode, the real Ethernet adapter even receives telegrams that are not addressed to it. Figure 8-1 8.9 Policy exceptions for VMware vSphere Hypervisor (ESXi) Error with overflow cyclical events If your simulation contains cyclic interrupts, the queue of PLCSIM Advanced may overflow for cyclic events. Due to the execution speed of PLCSIM Advanced compared to real hardware, the time required to create the diagnostics buffer entry may be longer than the time until the next cyclic interrupt. In this case, an additional entry is placed in the queue, causing another overflow. In the event of an overflow, PLCSIM Advanced provides visual information in the form of diagnostics buffer messages and a red error icon in the project tree. See also Speed up and slow down simulation (Page 60) S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 309 Restrictions 8.10 Deviating I/O values in the STEP 7 user program 8.10 Deviating I/O values in the STEP 7 user program Updated values Each value change made by a STEP 7 user program in the I/O address areas is overwritten in the cycle control point with the updated value that was written via the API functions Write...(). The API functions Read...() only return this updated value and not the value from STEP 7 for the input range. Non-updated values If the value was not updated via the API functions Write...(), the API functions Read...() return the value from STEP 7 for the output range. See also Simulate peripheral I/O (Page 53) 8.11 Multiple simulations and possible collision of IP addresses You can simultaneously simulate multiple CPUs, but each simulated CPU interface requires a unique IP address. Make sure your CPUs have different IP addresses before starting the simulation. 8.12 Lacking access to an IP address Special feature of distributed communication If you use multiple network nodes on the same subnet through different virtual or real adapters, the operating system may search for the node on the wrong adapter. Remedy Repeat your requests or enter "arp -d " in the command line editor of Windows. 8.13 Simulation in standby mode If your computer or programming device goes into standby or hibernation mode, the simulation may be stopped. In this case, the communication between STEP 7 and S7-PLCSIM Advanced is stopped. When your computer or programming device starts up again, the communication may need to be reestablished. In some cases, it may also be necessary to open the simulation project again. To prevent this situation, disable the standby mode on your computer or programming device. S7-PLCSIM Advanced 310 Function Manual, 09/2016, A5E37039512-AA Restrictions 8.14 Error installing the antivirus software from Kaspersky 8.14 Error installing the antivirus software from Kaspersky When using the Anti-Virus virus scanner from Kaspersky, network settings may not be correctly during installation of PLCSIM Advanced. The result is that communication via TCP/IP cannot be used (error code -50 in the Control Panel). Remedy Check your network settings as described in the sectionEnable distributed communication (Page 43). S7-PLCSIM Advanced Function Manual, 09/2016, A5E37039512-AA 311 A List of abbreviations Abbreviation Term ALM Automation License Manager Tool for managing license keys in STEP 7 API Application Programming Interface user interface arp Address resolution protocol BCD Binary Coded Decimal CPU Central Processing Unit (Synonym for PLC) ES Engineering System HMI Human Machine Interface user interface IE Industrial Ethernet GUI Graphical User Interface LAN Local Area Network Computer network that is limited to a local area. OB Organization Block ODK Open Development Kit OPC UA Open Platform Communications Unified Architecture PG Programming device PLC Programmable Logic Controller PN PROFINET RAM Random Access Memory RT Runtime TIA Totally Integrated Automation UTC Coordinated Universal Time VM Virtual Machine VPLC Virtual Programmable Logic Controller WinCC Windows Control Center S7-PLCSIM Advanced 312 Function Manual, 09/2016, A5E37039512-AA
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.6 Linearized : Yes Author : DF FA AS E&C-PRM Comments : Company : Siemens AG Create Date : 2016:08:11 13:34:03+02:00 Keywords : A5E37039512-AA;, 09/2016 Modify Date : 2016:08:12 11:07:46+02:00 Source Modified : D:20160811113223 Subject : Function Manual Company-long : Siemens AG Company-short : Siemens Document-class : Function Manual Document-class-mrl : Edition : 09/2016 Ident-nr : Order-nr : A5E37039512-AA Print-year : 2016 Product-group : S7-1500 System : SIMATIC XMP Toolkit : Adobe XMP Core 5.4-c005 78.147326, 2012/08/23-13:03:03 Metadata Date : 2016:08:12 11:07:46+02:00 Creator Tool : Acrobat PDFMaker 11 für Word Document ID : uuid:1372316c-9ef4-4701-a198-fe26d62c3bb7 Instance ID : uuid:146ca74e-a1ce-4c07-882c-9c7f403fb72e Format : application/pdf Title : S7-PLCSIM Advanced Description : Function Manual Creator : DF FA AS E&C-PRM Producer : Adobe PDF Library 11.0 Headline : Function Manual Page Mode : UseOutlines Page Count : 312EXIF Metadata provided by EXIF.tools