Voraussetzung
-
Die TIA Portal Openness-Anwendung ist mit dem TIA Portal verbunden.
Siehe Verbindung zum TIA Portal aufbauen -
Sie haben mit Ihrer TIA Portal Openness-Anwendung ein Projekt geöffnet.
Siehe Projekt öffnen
Einleitung
Sie können mit TIA Portal Openness die PC-Station Plus und die SW-CPU unabhängig voneinander laden. Um die Konfiguration der PC-Station Plus zu laden, müssen Sie das Geräteelement stationmanager des Baugruppenträgers des Geräts abrufen und den download provider als Dienst abrufen. Die SW-CPU selbst muss für den gleichen Vorgang als Geräteelement abgerufen werden.
Das Laden der SW-CPU ähnelt dem Laden eines regulären PC. Weitere Informationen zum Laden einer SW-CPU finden Sie unter Herunterladen zu den PLCs.
Einschränkung
Das Laden von F-aktivierten PLCs wird derzeit bei einer SW-CPU genau wie bei einer HW-CPU nicht unterstützt.
Programmcode: Software- und Hardware-Komponenten laden
Sie können Software- und Hardware-Komponenten über den Dienst DownloadProvider, der über ein angegebenes DeviceItem angefordert werden kann, auf ein Gerät laden. Wenn ein DeviceItem ein ladbares Ziel darstellt, wird bei Aufruf von GetService call eine Instanz von DownloadProvider zurückgegeben. Andernfalls wird null zurückgegeben.
|
DeviceItem stationManager = dev.DeviceItems.First(p => p.PositionNumber == 0).DeviceItems.First(a => a.PositionNumber == 125); DownloadProvider downloadProviderStationManager = stationManager.GetService<DownloadProvider>(); if (downloadProviderStationManager == null) { //no download is possible for PC-Station } DeviceItem swCpu = dev.DeviceItems.First(p => p.Name == "Software PLC_1"); DownloadProvider downloadProviderSwCpu = swCpu.GetService<DownloadProvider>(); |
Ändern Sie folgenden Programmcode, um Netzwerkparameter zu konfigurieren:
|
ConnectionConfiguration connConfig = downloadProviderStationManager.Configuration; ConfigurationMode configurationMode = connConfig.Modes.Find("PN/IE"); ConfigurationPcInterface pcInterface = configurationMode.PcInterfaces.Find("ASIX AX88179 USB 3.0 to Gigabit Ethernet Adapter", 1); ConfigurationTargetInterface targetInterface = pcInterface.TargetInterfaces.Find("2 X2"); IConfiguration targetConfiguration = pcInterface.TargetInterfaces[0]; bool isConfigured = connConfig.ApplyConfiguration(targetInterface); if (isConfigured) ... |
Es ist zu beachten, dass bei einem Neustart des Zielsystems nach dem Laden der Konfiguration von PC-Station Plus das Standardverhalten von Openness Warten ist. Das bedeutet, dass der Openness-Codefluss gestoppt wird, bis das Laden der ersten Stufe erfolgreich ist (und das Zielsystem neu gestartet ist) oder die Zeit überschritten oder ein Fehler aufgetreten ist.
Falls Sie nicht auf den Neustart warten wollen, können Sie eine Post-Ladeoption wählen, die sich WaitOnReboot nennt.
|
//Post Download Configuration Delegate DownloadConfigurationDelegate postDownloadForPcStation = downloadConfiguration => { WaitOnReboot waitOnReboot = downloadConfiguration as WaitOnReboot; if (waitOnReboot != null) { //In case user does not want to wait... waitOnReboot.CurrentSelection = WaitOnRebootSelections.NoAction; //In case user wants to wait... This is the default option anyway... //waitOnReboot.CurrentSelection = WaitOnRebootSelections.Wait; return; } }; |
Sie müssen die SW-CPU weiterhin separat laden, aber es muss sichergestellt werden, dass zuvor die PC-Station geladen wurde.
|
DownloadResult downloadResult = null; try { //WE FIRST DOWNLOAD PC-STATION downloadResult = downloadProviderStationManager.Download(targetConfiguration, preDownloadForPcStation, postDownloadForPcStation, DownloadOptions.Hardware); if (DownloadResultState.Error != downloadResult.State) { Console.WriteLine("The download is successful for pc-station"); } } catch (EngineeringTargetInvocationException e) { Console.WriteLine("Exception Thrown, Message: " + e.Message.ToString()); } downloadResult = null; try { downloadResult = downloadProviderSwCpu.Download(targetConfiguration, preDownloadForSwCpu, postDownloadForWinac, DownloadOptions.Hardware | DownloadOptions.Software); if (DownloadResultState.Error != downloadResult.State) { Console.WriteLine("The download is successful for SW-CPU"); } } catch (EngineeringTargetInvocationException e) { Console.WriteLine("Exception Thrown, Message: " + e.Message.ToString()); } |
Das Laden der SW-CPU ähnelt dem Laden eines regulären PC. Weitere Informationen zum Laden einer SW-CPU finden Sie unter Herunterladen zu den PLCs.
|
Hinweis Das Laden von F-aktivierten PLCs wird derzeit bei einer SW-CPU genau wie bei einer HW-CPU nicht unterstützt. |
Eine Lademethode stößt auch die Übersetzung an. Es ist auch möglich, ein Geräteelement unabhängig zu übersetzen, und zwar mit dem folgenden Code-Snippet:
|
ICompilable compileServiceSwCpu = swCpu.GetService<ICompilable>(); ICompilable compileServiceStationManager = stationManager.GetService<ICompilable>(); CompilerResult compileResultStationManager = compileServiceStationManager.Compile(); CompilerResult compileResultSwCpu = compileServiceStationManager.Compile(); bool compileCheck = !compileResultStationManager.State.Equals(CompilerResultState.Error); if (compileCheck != true) { ... } |