Upload
ledan
View
227
Download
0
Embed Size (px)
Citation preview
Industrie Workshop PC-based Automation Nov. 2015 siemens.com/answers
SIMATIC ODK 1500STechnische Information
Industrie Workshop PC-based Automation Nov. 2015Seite 2
siemens.de/pc-based
SIMATIC ODK 1500S
Industrie Workshop PC-based Automation Nov. 2015Seite 3
siemens.de/pc-based
SIMATIC ODK 1500S Highlights
„Sandbox“ Ausführung für ODK RTAnwendungen
Schutz von Know How undKopierschutz in der CPU
Ausführung von Echtzeitalgorithmen
Ausführen von Code in Windows-DLLs
Windows Apps: Visual Studio
Realtime Apps: Eclipse (im Lieferumfang)
Entkopplung von Windows Anwendungenüber asynchrone Ausführung
Unterbrechbarkeit von Echtzeit-Anwendungen durch höherpriore OBs
Engineering Unterstützung
Robustheit & Echtzeit
Security
FunktionenIntuitive Verwendung von S7 FB für denAufruf von C-Funktionen
UsabilitySCL
OB 1
KOP, FUP,AWL
Graph7
C++
PLC-Programm
ODK
Industrie Workshop PC-based Automation Nov. 2015Seite 4
siemens.de/pc-based
SIMATIC ODK 1500S – C/C++ in einem S7-1500 Software Controller
S7-1500 Software Controller – Unterstützung dynamischladbarer Bibliotheken• Mehrere Funktionen in einer ODK Anwendung• Mehrere ODK Anwendungen gleichzeitig• Sowohl Windows- als auch Echtzeittreiber• 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
PC
PC-Hardware
Windows Software Controller
Siemens-Hypervisor
SPS-Programm ODK-
AnwendungODK-
Anwendung
Fct1FB Fct1
FB Fct2Fct2
sodll
Industrie Workshop PC-based Automation Nov. 2015Seite 5
siemens.de/pc-based
SIMATIC ODK 1500SEinfacher Aufruf von C Funktionen durch PLC Programm
Automatische Generierung derFunktionsbausteine für die Verwendung vonODK-Anwendungen:
§ Real-time ODK-Anwendungen haben einsynchrones Interface
§ Windows ODK-Anwendungen haben einasynchrones Interface
§ Import der Funktionsbausteine über „ExterneQuellen“
Industrie Workshop PC-based Automation Nov. 2015Seite 6
siemens.de/pc-based
SIMATIC ODK 1500SAusführung von Funktionen
§ Keine Echtzeiteinflüsse durch die Ausführung von WindowsFunktionen
§ First call – first service, unabhängig von der Priorität desAufrufers:§ Jede Funktion wird in einem eigenen Thread ausgeführt;§ Alle Threads haben die gleiche Priorität§ Windows übernimmt das Scheduling zwischen diesen
Threads, eine parallele oder geschachtelte Ausführung istmöglich; keine Einflussnahme durch die Steuerung möglich;
§ Synchroner Aufruf von real-time Funktionen§ Ausführung der Funktion auf der gleichen Prioritätsebene wie
der aufrufende OB§ C Funktionen können durch höherpriorisierte FB unterbrochen
werden
Windows
OB
OB
OBprioritylevel C
prioritylevel B
prioritylevel A
ODK
OBODK
OBODK
OBODKpriority
level C
prioritylevel B
prioritylevel A
Windows
Asynchrone Ausführung von Windows Funktionen: Synchrone Ausführung von Real-time Funktionen:
:
Industrie Workshop PC-based Automation Nov. 2015Seite 8
siemens.de/pc-based
SIMATIC ODK 1500S –Windows Development
Industrie Workshop PC-based Automation Nov. 2015Seite 9
siemens.de/pc-based
SIMATIC ODK 1500SWindows ODK-Anwendung – Asynchroner Ablauf
CALL FB
Nnn_Load()CALL FBOB,FB,FC
execute
Load and initialize
Nnn_MyFunc()
polling
C++
1500S
SIMATIC S7-1500 Software Controller Windows
initialize
DLL
MyFunc(&Par1, &Par2, &Par3)
{
...
Return ODK_SUCCESS;
}
Par1
Error
Par2
Par3
DoneStatus
Busy
Execute
Industrie Workshop PC-based Automation Nov. 2015Seite 10
siemens.de/pc-based
SIMATIC ODK 1500SWindows ODK-Anwendung – Laden der ODK-DLL
§ S7-150xS läuft in eigener Umgebung ohnedirekten Zugriff auf Windows§ Auf der Windows-Seite ist „ODK Host“ installiert§ ODK Host unterstützt:§ 32/64 Bit Treiber§ User / Service Anwendungen§ Managed / Unmanaged Code
PC
Windows
ODK Host
ODKDLL
CPU 150xS
Siemens Hypervisor
ODKDLL
Industrie Workshop PC-based Automation Nov. 2015Seite 11
siemens.de/pc-based
Target PC
SIMATIC ODK 1500SWorkflow – Windows ODK-Entwicklung
CPU 150xS
sclDLL
BuildEngi
neer
ing
Run
time
odk
cpp
“Interface.odk”
““<ProjektName>.cpp
Workflow
1. Erstellen der Anwendung in MSVisual Studio:§ Interface.odk:
Definition der Funktionen§ <ProjektName>.cpp:
Implementierung derFunktionen
2. Übertragen der DLL aufZielsystem (USB-Stick,Netzwerklaufwerk, etc.)
3. SCL-Sourcen für ODKFunktionen in TIA Portal Projektimportieren
4. Erstellen des PLC Programmsmit ODK Funktionsaufrufen
5. Download und Ausführen desPLC Programms
Industrie Workshop PC-based Automation Nov. 2015Seite 12
siemens.de/pc-based
SIMATIC ODK 1500SWindows ODK-Anwendung – PC-Anlauf
Die Einstellung „User“ / „Service“ beeinflusst denZeitpunkt des möglichen Ladens der ODK DLL.
ACHTUNG!Man muss eine ODK-DLL „verzögert“laden (siehe nächste Folie) Source: S7-1500S ODK Operator Manual
Industrie Workshop PC-based Automation Nov. 2015Seite 13
siemens.de/pc-based
SIMATIC ODK 1500SWindows 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. 2015Seite 14
siemens.de/pc-based
SIMATIC ODK 1500SWindows 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
ODK DLL
(ManagedC/C++)
.NET DLL
(C#, VB.NET,managed C++)
Industrie Workshop PC-based Automation Nov. 2015Seite 15
siemens.de/pc-based
SIMATIC ODK 1500SWindows ODK-Anwendung – Remote Debugging
Remote Debugging Tools vonMS Visual Studio können verwendetwerden.
Menu >> Debug >> Attach to Process:
• ODK_Host_x86.exeà 32 bit DLLODK_Host_x64.exeà 64 bit DLL
MS Visual Studio – Attach to Running Process
Industrie Workshop PC-based Automation Nov. 2015Seite 16
siemens.de/pc-based
Live Demo
S7-1500S Open Development Kit - WindowsErstellen und Aufrufen einer C/C++ Funktion in der Software ControllerApplikation 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. 2015Seite 17
siemens.de/pc-based
SIMATIC ODK 1500S –Real-time Development
Industrie Workshop PC-based Automation Nov. 2015Seite 18
siemens.de/pc-based
SIMATIC ODK 1500SRealtime ODK-Anwendung – Synchroner Ablauf
SIMATIC S7-1500 Software Controller Realtime Side
CALL FB
Nnn_Load()CALL FBOB,FB,FC
Execute
SOLoad and initialize
MyFunc(&Par1, &Par2, &Par3)
{
...
Return ODK_SUCCESS;
}
Nnn_MyFunc()
Par1
Status
Par2
Par3
C++
1500S
Initialize
Execute
Industrie Workshop PC-based Automation Nov. 2015Seite 19
siemens.de/pc-based
PCSoftware Controller
ODK Host (Sandbox)
SIMATIC ODK 1500SRealtime ODK-Anwendung – Ausführung in „Sandbox“
OB
ODKapplication
Fct1
Fct2
FB Load
FB Fct1
FB Fct2
FB Unload
Kein Ausspähen des Software Controller und Anwendungs-Know-How möglich!
Real-time Anwendungen laufen in einer„Sandbox“
§ Kapselung des ODK Codes§ Kein Zugriff aus SPS Speicher (Security!)§ Im Moment kein Zugriff auf Hardware
§ Verfügbare Bibliothek:§ NewLib
(außer Abhängigkeiten von Betriebssystem API)
copy in
copy out
Industrie Workshop PC-based Automation Nov. 2015Seite 20
siemens.de/pc-based
Target PC
SIMATIC ODK 1500SWorkflow – Real-time ODK – Entwicklung
CPU 150xS
scl
BuildEngi
neer
ing
Run
time
odk
cpp
“Interface.odk”
““<ProjektName>.cpp
SO
Workflow
1. Erstellen der Anwendung inEclipse:§ Interface.ODK:
Definition der Funktionen§ <ProjektName>.cpp:
Implementierung derFunktionen
2. Übertragen der ausführbarenDatei in den Ladespeicher derCPU per Webserver
3. Übertragen der SCL-Sourcenfür die ODK Funktionen in dasTIA Portal Projekt
4. Erstellen des PLC Programmsmit ODK Funktionsaufrufen
5. Download und Ausführen desPLC Programms
Industrie Workshop PC-based Automation Nov. 2015Seite 21
siemens.de/pc-based
SIMATIC ODK 1500SReal-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! Source: S7-1500S ODK Operator Manual
Industrie Workshop PC-based Automation Nov. 2015Seite 22
siemens.de/pc-based
SIMATIC ODK 1500STesten von Real-time Applikationen
Debugging (breakpoints, single steps) mit Windows Test-App.
OnBuild exe MyProject.exe
§ Target Einstellung“debug”
§ Implementierung derTestumgebung in„Main“
§ Der nächste Builderzeugt eineausführbare WindowsDate (exe) mit einerDLL anstelle eines SO.
§ Die Exe kann unterWindows ausgeführtund vollständigdebugged werden.
single stepbreakpoint
„TRACE“ auf dem Zielsystem
#include ODK_Functions.h
// #define TRACE_OFF
ODK_RESULT SampleFunction(ODK_INT32 myInt
, 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
};
§ Jede ODK RT Applikationhat einen Trace Puffer
§ Traces Einträge können mitdem “ODK_TRACE Macroeingetragen werden
§ Trace Puffer kann mit derFunktion „GetTrace ()”ausgelesen werden
§ Und z.B. in einer VariablenTabelle dargestellt werden.
odk Enthlät #ifdef Debug:Main
Industrie Workshop PC-based Automation Nov. 2015Seite 24
siemens.de/pc-based
SIMATIC ODK 1500S –Allgemeine Tipps & Tricks
Industrie Workshop PC-based Automation Nov. 2015Seite 25
siemens.de/pc-based
Schnittstelle von ODK Funktionen – Einzel-Parameter vs. Klassik-DB
Einzel-Parameter Klassik-DBVerständlich-keit
Jeder einzelne Parameter ist alseinzelnes Argument sichtbar.
Nur ein Argument für einen ganzen Block
Komplexität Viele Parameter führen zu großenBlöcken
Auch große Datenmengen mit nur einemArgument
Handling aufC Seite
Einfach Funktionsparameter nutzen Zugriff auf alle einzelnen Werte über Adress-Offsets(CODK_CpuReadData::ReadS7REAL() etc.)
OptimierteDBs
Voll unterstützt Nur Klassik-DBs
Param1Param2
Param3
Param4
Output1
Output2Output3
Output4
ParamStruct
OutputStruct
Industrie Workshop PC-based Automation Nov. 2015Seite 26
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. 2015Seite 27
siemens.de/pc-based
Verarbeiten von S7-STRINGs
Unterschied S7 String und C/C++ String:
Funktionsparameter Typ „String“• ODK_StringHelper für Konvertierung Zeichenketten
Klassik-DB• Hilfs-Klassen: ODK_CpuReadData / ODK_CpuReadWriteData
CODK_CpuReadData::ReadS7STRING()liefern Null-terminierte Zeichenkette
S7 String C/C++ String2545
'H''e''l''l''o'
'H''e''l''l''o''\0'
Null-Terminiert
Zwei Byte Header(max./akt. Länge)
Industrie Workshop PC-based Automation Nov. 2015Seite 28
siemens.de/pc-based
Migration von WinAC ODK Anwendungen
Industrie Workshop PC-based Automation Nov. 2015Seite 29
siemens.de/pc-based
WinAC RTX CPU 150xSSIMATIC WinAC ODK V4.2Ø Windows (VS 2010) oder Echtzeit (IntervalZero’s
SDK + VS 2010) Applikationen möglich:Ø C/C++ (Windows & Echtzeit )Ø C# (Windows)Ø VisualBasic (Windows)
SIMATIC ODK 1500S V1Ø Windows (VS 2010 SP1, VS2012 oder VS 2013)
oder Echtzeit (Eclipse) Applikationen möglich:Ø C/C++ DLLs (Windows)Ø .NET (Windows)Ø C/C++ SOs (Realtime)
WinAC RTX (F) 2010 vs. S7-1500 SW-Controller ArchitekturenODK Schnittstellen
PC with Windows
CMI App.
CMI
RUNRUNSTOPSTOP
WinAC
PCWindows Software Controller (Realtime)
OB
ODK-applicatio
n
ODK-application
Fct1
Fct2
FB Load
FB Fct1
FB Fct2
FBUnload
XX
Fct1
Fct2
sodll
PC Hardware
Siemens HypervisorC++
SCL
OB 1 LAB, FBD,
STL
CFC
Graph7,
Higraph
WinACprogram
CC
X
PC with Windows
C/C++ App.
SMX
WinAC
OB FB FC
Shared MemoryExtension
Interface (SMX)
Custom CodeExtension
Interface (CCX)
ControllerManagement
Interface (CMI)
Industrie Workshop PC-based Automation Nov. 2015Seite 30
siemens.de/pc-based
Übersicht der verfügbaren APIs
WinAC ODK V4.2 ODK 1500S V1.0RT Win RT Win
Custom Code Extension (CCX) ü ü ü*1) ü*1)
Shared Memory Extension (SMX) ü ü û û*2)
Controller Management Interface (CMI) û ü û û*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. 2015Seite 31
siemens.de/pc-based
Details zum CCX Interface
WinAC ODK V4.2 ODK 1500S V1.0RT 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 C-Anwendungen
ü ü û û
Größe der FB Schnittstelle INPUT max. 64 Kbyte,OUTPUT max 64 Kbyte
IN, OUT und INOUT Summemax. 64 Kbyte max. 32 KByte
Beliebiger Zugriff auf jegliche SPS-Daten ü ü û û
Industrie Workshop PC-based Automation Nov. 2015Seite 33
siemens.de/pc-based
Ersatz CMI Interface für S7-1500 Software Controller
WinAC RTX Funktion von CMI Alternative S7-1500 Software ControllerStart / Stopp PLC CPU_Control.exe / PowerOnCPU
CPU_Control.exe / PowerOffCPUDiagnosepuffer lesen –
(alternativ: Web Server)SPS Betriebszustand ermitteln –
(alternativ: Web Server)Laden SPS Programmohne SIMATIC Engineering
–(geplant)
SIMATIC Automation Tool – Unterstützt S7-150xS noch nichtURL: https://support.industry.siemens.com/cs/ww/en/view/98161300
Industrie Workshop PC-based Automation Nov. 2015Seite 34
siemens.de/pc-based
Zusammenfassung
• ODK für SIMATIC S7-1500 Software Controller mit Windows-und Echtzeiterweiterungen
• Kein separates SDK für Echtzeiterweiterungen mehr nötig
• Sehr einfacher Einstieg in Entwicklung durch verbesserteIntegration in Visual Studio (Windows) und Eclipse (Echtzeit)
• Durch „Sandbox Konzept“ für Echtzeiterweiterungen höhereRobustheit, aber auch funktionelle Einschränkungen(kein Hardwarezugriff, kein Threading, etc.)