SIMATIC ODK 1500S
Transcription
SIMATIC ODK 1500S
Technische Information SIMATIC ODK 1500S Industrie Workshop PC-based Automation Nov. 2015 siemens.com/answers SIMATIC ODK 1500S Industrie Workshop PC-based Automation Nov. 2015 Seite 2 siemens.de/pc-based SIMATIC ODK 1500S Highlights Engineering Unterstützung Windows Apps: Visual Studio Realtime Apps: Eclipse (im Lieferumfang) Robustheit & Echtzeit Entkopplung von Windows Anwendungen über asynchrone Ausführung ODK Security KOP, FUP, AWL Unterbrechbarkeit von EchtzeitAnwendungen durch höherpriore OBs PLCProgramm Usability Intuitive Verwendung von S7 FB für den Aufruf von C-Funktionen „Sandbox“ Ausführung für ODK RT Anwendungen Schutz von Know How und Kopierschutz in der CPU Graph7 OB 1 SCL Funktionen Ausführung von Echtzeitalgorithmen C++ Industrie Workshop PC-based Automation Nov. 2015 Seite 3 Ausführen von Code in Windows-DLLs siemens.de/pc-based SIMATIC ODK 1500S – C/C++ in einem S7-1500 Software Controller S7-1500 Software Controller – Unterstützung dynamisch ladbarer Bibliotheken PC Windows Software Controller ODKAnwendung SPSProgramm FB Fct1 Fct2 • Mehrere Funktionen in einer ODK Anwendung ODKAnwendung • Mehrere ODK Anwendungen gleichzeitig • Sowohl Windows- als auch Echtzeittreiber Fct1 FB Fct2 dll so Siemens-Hypervisor PC-Hardware • Entwicklung in C/C++ • Windows: DLL (Dynamic Link Library) • Entwicklung mit Visual Studio C++ (Express möglich) • Asynchroner Funktionsaufruf zur Vermeidung von Echtzeiteinflüssen • Volle Windows-Funktionalität nutzbar • Real-time: SO (Shared Object) • Entwicklung mit Eclipse • Synchroner Funktionsaufruf (Algorithmen, Regler) Das ODK 1500S ermöglicht die Entwicklung solcher Anwendungen Industrie Workshop PC-based Automation Nov. 2015 Seite 4 siemens.de/pc-based SIMATIC ODK 1500S Einfacher Aufruf von C Funktionen durch PLC Programm Automatische Generierung der Funktionsbausteine für die Verwendung von ODK-Anwendungen: § Real-time ODK-Anwendungen haben ein synchrones Interface § Windows ODK-Anwendungen haben ein asynchrones Interface § Import der Funktionsbausteine über „Externe Quellen“ Industrie Workshop PC-based Automation Nov. 2015 Seite 5 siemens.de/pc-based SIMATIC ODK 1500S Ausführung von Funktionen Asynchrone Ausführung von Windows Funktionen: Synchrone Ausführung von Real-time Funktionen: § Keine Echtzeiteinflüsse durch die Ausführung von Windows Funktionen :§ Synchroner Aufruf von real-time Funktionen § First call – first service, unabhängig von der Priorität des Aufrufers: § Jede Funktion wird in einem eigenen Thread ausgeführt; § Ausführung der Funktion auf der gleichen Prioritätsebene wie der aufrufende OB § C Funktionen können durch höherpriorisierte FB unterbrochen werden § Alle Threads haben die gleiche Priorität § Windows übernimmt das Scheduling zwischen diesen Threads, eine parallele oder geschachtelte Ausführung ist möglich; keine Einflussnahme durch die Steuerung möglich; priority level C OB priority level C ODK OB priority level B OB priority level B ODK OB priority level A OB priority level A ODK OB Windows ODK Windows Industrie Workshop PC-based Automation Nov. 2015 Seite 6 siemens.de/pc-based SIMATIC ODK 1500S – Windows Development Industrie Workshop PC-based Automation Nov. 2015 Seite 8 siemens.de/pc-based SIMATIC ODK 1500S Windows ODK-Anwendung – Asynchroner Ablauf 1500S SIMATIC S7-1500 Software Controller Windows C++ OB, FB, FC CALL FB Nnn_Load() Load and initialize DLL initialize CALL FB Nnn_MyFunc() Par1 Execute MyFunc( &Par1, &Par2, &Par3) { Par2 execute ... Par3 polling Busy Error Done Status Industrie Workshop PC-based Automation Nov. 2015 Seite 9 Return ODK_SUCCESS; } siemens.de/pc-based SIMATIC ODK 1500S Windows ODK-Anwendung – Laden der ODK-DLL § S7-150xS läuft in eigener Umgebung ohne direkten Zugriff auf Windows Windows § Auf der Windows-Seite ist „ODK Host“ installiert ODK Host ODK DLL § ODK Host unterstützt: ODK DLL § 32/64 Bit Treiber § User / Service Anwendungen § Managed / Unmanaged Code CPU 150xS Siemens Hypervisor PC Industrie Workshop PC-based Automation Nov. 2015 Seite 10 siemens.de/pc-based SIMATIC ODK 1500S Workflow – Windows ODK-Entwicklung Workflow Engineering 1. Erstellen der Anwendung in MS Visual Studio: odk “Interface.odk” cpp ““<ProjektName>.cpp Build DLL Interface.odk: Definition der Funktionen § <ProjektName>.cpp: Implementierung der Funktionen 2. Übertragen der DLL auf Zielsystem (USB-Stick, Netzwerklaufwerk, etc.) scl 3. SCL-Sourcen für ODK Funktionen in TIA Portal Projekt importieren Target PC Runtime § 4. Erstellen des PLC Programms mit ODK Funktionsaufrufen CPU 150xS Industrie Workshop PC-based Automation Nov. 2015 Seite 11 5. Download und Ausführen des PLC Programms siemens.de/pc-based SIMATIC ODK 1500S Windows ODK-Anwendung – PC-Anlauf Die Einstellung „User“ / „Service“ beeinflusst den Zeitpunkt des möglichen Ladens der ODK DLL. ACHTUNG! Man muss eine ODK-DLL „verzögert“ laden (siehe nächste Folie) Industrie Workshop PC-based Automation Nov. 2015 Seite 12 Source: S7-1500S ODK Operator Manual siemens.de/pc-based SIMATIC ODK 1500S Windows ODK-Anwendung – PC-Anlauf Wenn Laden der ODK-DLL fehlschlägt (Windows noch nicht bereit), dann erneut versuchen, bis es klappt. SCL Code, TIA Portal Industrie Workshop PC-based Automation Nov. 2015 Seite 13 siemens.de/pc-based SIMATIC ODK 1500S Windows ODK-Anwendung – .NET Support • ODK Host der S7-150xS kann direkt Managed Code laden è Aufruf von .NET Klassen und Methoden aus Managed C++ Code ODK DLL möglich! Siehe Beispiele auf SIOS: https://support.industry.siemens.com/cs/ww/en/view/106192387 S7-150xS FB ODK_nnn Industrie Workshop PC-based Automation Nov. 2015 Seite 14 ODK DLL .NET DLL (Managed C/C++) (C#, VB.NET, managed C++) siemens.de/pc-based SIMATIC ODK 1500S Windows ODK-Anwendung – Remote Debugging Remote Debugging Tools von MS Visual Studio können verwendet werden. MS Visual Studio – Attach to Running Process Menu >> Debug >> Attach to Process: • ODK_Host_x86.exe à 32 bit DLL ODK_Host_x64.exe à 64 bit DLL Industrie Workshop PC-based Automation Nov. 2015 Seite 15 siemens.de/pc-based Live Demo S7-1500S Open Development Kit - Windows Erstellen und Aufrufen einer C/C++ Funktion in der Software Controller Applikation als Windows-Treiber • Erstellen des Visual Studio Projektes • Laden der DLL auf das Runtime System • Asynchroner Aufruf einer langsamen Funktion (z.B. MessageBox) ACHTUNG! Für Message-Box aus ODK-DLL muss man den Context=user belassen. (Context=sytem läuft in session 0 à keine grafischen Elemente!) Industrie Workshop PC-based Automation Nov. 2015 Seite 16 siemens.de/pc-based SIMATIC ODK 1500S – Real-time Development Industrie Workshop PC-based Automation Nov. 2015 Seite 17 siemens.de/pc-based SIMATIC ODK 1500S Realtime ODK-Anwendung – Synchroner Ablauf 1500S SIMATIC S7-1500 Software Controller OB, FB, FC Realtime Side C++ CALL FB Nnn_Load() Load and initialize SO Initialize CALL FB Nnn_MyFunc() Par1 Execute Execute MyFunc( &Par1, &Par2, &Par3) { Par2 ... Par3 Return ODK_SUCCESS; Status Industrie Workshop PC-based Automation Nov. 2015 Seite 18 } siemens.de/pc-based SIMATIC ODK 1500S Realtime ODK-Anwendung – Ausführung in „Sandbox“ Real-time Anwendungen laufen in einer „Sandbox“ PC Software Controller OB ODK Host (Sandbox) FB Load copy in ODK application § Kapselung des ODK Codes § Kein Zugriff aus SPS Speicher (Security!) § Im Moment kein Zugriff auf Hardware Fct1 FB Fct1 copy out FB Fct2 § Verfügbare Bibliothek: Fct2 § NewLib (außer Abhängigkeiten von Betriebssystem API) FB Unload Kein Ausspähen des Software Controller und Anwendungs-Know-How möglich! Industrie Workshop PC-based Automation Nov. 2015 Seite 19 siemens.de/pc-based SIMATIC ODK 1500S Workflow – Real-time ODK – Entwicklung Workflow Engineering 1. Erstellen der Anwendung in Eclipse: odk “Interface.odk” cpp ““<ProjektName>.cpp Build SO Interface.ODK: Definition der Funktionen § <ProjektName>.cpp: Implementierung der Funktionen 2. Übertragen der ausführbaren Datei in den Ladespeicher der CPU per Webserver scl 3. Übertragen der SCL-Sourcen für die ODK Funktionen in das TIA Portal Projekt Target PC Runtime § 4. Erstellen des PLC Programms mit ODK Funktionsaufrufen CPU 150xS Industrie Workshop PC-based Automation Nov. 2015 Seite 20 5. Download und Ausführen des PLC Programms siemens.de/pc-based SIMATIC ODK 1500S Real-time ODK-Anwendung – PC-Anlauf Im Vergleich zu Windows ODK Treibern, sind Real-time Funktionen sehr früh verfügbar. ACHTUNG! Das Laden von Real-time SOs braucht einige Zeit. Bitte in Startup OB100 ausführen! Industrie Workshop PC-based Automation Nov. 2015 Seite 21 Source: S7-1500S ODK Operator Manual siemens.de/pc-based SIMATIC ODK 1500S Testen von Real-time Applikationen Debugging (breakpoints, single steps) mit Windows Test-App. odk Enthlät #ifdef Debug: Main single step breakpoint On Build exe MyProject.exe Industrie Workshop PC-based Automation Nov. 2015 Seite 22 § Target Einstellung “debug” § Implementierung der Testumgebung in „Main“ § Der nächste Build erzeugt eine ausführbare Windows Date (exe) mit einer DLL anstelle eines SO. § Die Exe kann unter Windows ausgeführt und vollständig debugged werden. „TRACE“ auf dem Zielsystem #include ODK_Functions.h // #define TRACE_OFF ODK_RESULT SampleFunction(ODK_INT32 , ODK_BOOL myBool , ODK_DOUBLE myReal) { ODK_RESULT MyResult; /* here comes the user code MyResult = ODK_SUCCESS; ODK_TRACE (“return value: %d”, (int) MyResult); return MyResult }; myInt § Jede ODK RT Applikation hat einen Trace Puffer § Traces Einträge können mit dem “ODK_TRACE Macro eingetragen werden § Trace Puffer kann mit der Funktion „GetTrace ()” ausgelesen werden § Und z.B. in einer Variablen Tabelle dargestellt werden. siemens.de/pc-based SIMATIC ODK 1500S – Allgemeine Tipps & Tricks Industrie Workshop PC-based Automation Nov. 2015 Seite 24 siemens.de/pc-based Schnittstelle von ODK Funktionen – Einzel-Parameter vs. Klassik-DB Einzel-Parameter Klassik-DB Verständlichkeit Jeder einzelne Parameter ist als einzelnes Argument sichtbar. Nur ein Argument für einen ganzen Block Komplexität Viele Parameter führen zu großen Blöcken Auch große Datenmengen mit nur einem Argument Handling auf C Seite Einfach Funktionsparameter nutzen Zugriff auf alle einzelnen Werte über AdressOffsets (CODK_CpuReadData::ReadS7REAL() etc.) Optimierte DBs Voll unterstützt Nur Klassik-DBs Param1 Param2 Param3 Param4 ParamStruct Output1 Output2 Output3 Output4 Industrie Workshop PC-based Automation Nov. 2015 Seite 25 OutputStruct siemens.de/pc-based Datenkonsistenz? Sowohl Windows-ODK-DLLs als auch Real-time Shared Objects: • Aufruf ODK FB à Kopieren der INPUT und INOUT Parameters in den ODK-Speicher • ODK Funktion arbeitet mit Kopie der SPS Daten • Beenden der ODK Funktion à Kopieren von OUTPUT und INOUT zurück in SPS-Speicher Industrie Workshop PC-based Automation Nov. 2015 Seite 26 siemens.de/pc-based Verarbeiten von S7-STRINGs Unterschied S7 String und C/C++ String: Zwei Byte Header (max./akt. Länge) S7 String 254 5 'H' 'e' 'l' 'l' 'o' C/C++ String 'H' 'e' 'l' 'l' 'o' '\0' Null-Terminiert Funktionsparameter Typ „String“ • ODK_StringHelper für Konvertierung Zeichenketten Klassik-DB • Hilfs-Klassen: ODK_CpuReadData / ODK_CpuReadWriteData CODK_CpuReadData::ReadS7STRING() liefern Null-terminierte Zeichenkette Industrie Workshop PC-based Automation Nov. 2015 Seite 27 siemens.de/pc-based Migration von WinAC ODK Anwendungen Industrie Workshop PC-based Automation Nov. 2015 Seite 28 siemens.de/pc-based WinAC RTX (F) 2010 vs. S7-1500 SW-Controller Architekturen ODK Schnittstellen WinAC RTX CPU 150xS SIMATIC WinAC ODK V4.2 SIMATIC ODK 1500S V1 Ø Windows (VS 2010) oder Echtzeit (IntervalZero’s SDK + VS 2010) Applikationen möglich: Ø Windows (VS 2010 SP1, VS2012 oder VS 2013) oder Echtzeit (Eclipse) Applikationen möglich: Ø C/C++ (Windows & Echtzeit Ø C# (Windows) Ø VisualBasic (Windows) ) Ø C/C++ DLLs (Windows) Ø .NET (Windows) Ø C/C++ SOs (Realtime) PC Windows Controller Management Interface (CMI) PC with Windows CMI App. STOP RUN Custom Code Extension Interface (CCX) Shared Memory Extension Interface (SMX) LAB, FBD, OB 1 CFC WinAC program Graph7, Higraph SMX SCL WinAC CCX CMI Industrie Workshop PC-based Automation Nov. 2015 Seite 29 C++ OB dll ODKapplication FB Load PC with Windows C/C++ App. STL Software Controller (Realtime) so ODKapplicatio n Fct 1 FB Fct1 Fct1 Fct 2 FB Fct2 Fct2 FB Unload X X OB FB FC Siemens Hypervisor WinAC PC Hardware siemens.de/pc-based Übersicht der verfügbaren APIs WinAC ODK V4.2 Custom Code Extension (CCX) Shared Memory Extension (SMX) Controller Management Interface (CMI) ODK 1500S V1.0 RT Win RT Win ü ü û ü ü ü ü*1) û û ü*1) û*2) û*3) *1) Reduzierte Funktionalität (siehe nächste Seite) *2) Auf Anfrage *3) Teilweise durch spezielle Tools ersetzt (siehe nächste Seite) Industrie Workshop PC-based Automation Nov. 2015 Seite 30 siemens.de/pc-based Details zum CCX Interface WinAC ODK V4.2 ODK 1500S V1.0 RT Win RT Win Direkter Zugriff auf FB-Parameter im C Code û û ü ü Synchrone Aufrufe ü ü ü û Unterbrechbarkeit von synchronen Aufrufen û û ü û Asynchrone Aufrufe ü ü û ü SFB zum Entladen der ODK Funktion û û ü ü Betriebssystem API (IPC, Threads, etc.) ü ü û ü Debugging ü ü û ü OB-Aufruf aus C Code ü ü û û Kommunikation zwischen RT und Windows in CAnwendungen ü ü û û Größe der FB Schnittstelle Beliebiger Zugriff auf jegliche SPS-Daten Industrie Workshop PC-based Automation Nov. 2015 Seite 31 INPUT max. 64 Kbyte, OUTPUT max 64 Kbyte ü ü IN, OUT und INOUT Summe max. 64 Kbyte max. 32 KByte û û siemens.de/pc-based Ersatz CMI Interface für S7-1500 Software Controller WinAC RTX Funktion von CMI Alternative S7-1500 Software Controller Start / Stopp PLC CPU_Control.exe / PowerOnCPU CPU_Control.exe / PowerOffCPU Diagnosepuffer lesen – (alternativ: Web Server) SPS Betriebszustand ermitteln – (alternativ: Web Server) Laden SPS Programm ohne SIMATIC Engineering – (geplant) SIMATIC Automation Tool – Unterstützt S7-150xS noch nicht URL: https://support.industry.siemens.com/cs/ww/en/view/98161300 Industrie Workshop PC-based Automation Nov. 2015 Seite 33 siemens.de/pc-based Zusammenfassung • ODK für SIMATIC S7-1500 Software Controller mit Windowsund Echtzeiterweiterungen • Kein separates SDK für Echtzeiterweiterungen mehr nötig • Sehr einfacher Einstieg in Entwicklung durch verbesserte Integration in Visual Studio (Windows) und Eclipse (Echtzeit) • Durch „Sandbox Konzept“ für Echtzeiterweiterungen höhere Robustheit, aber auch funktionelle Einschränkungen (kein Hardwarezugriff, kein Threading, etc.) Industrie Workshop PC-based Automation Nov. 2015 Seite 34 siemens.de/pc-based