SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4...

64
SIEMENS PROFIsafe-Treiber für F-Slaves Seite 1-1 Ausgabe 05/2010 Inhaltsverzeichnis, Vorwort 1 Produktübersicht 2 Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8 Anhang 9 Begriffe und Abkürzungen 10 SIMATIC PROFIsafe-Treiber V2.1 für F-Slaves Handbuch Ausgabe 05 / 2010

Transcript of SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4...

Page 1: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 1-1 Ausgabe 05/2010

Inhaltsverzeichnis, Vorwort 1

Produktübersicht 2

Funktionsweise des PSD 3

Dateien des PSD 4

Schnittstellenbeschreibung 5

Konfiguration des PSD 6

Requirements 7

Testspezifikation 8

Anhang 9

Begriffe und Abkürzungen 10

SIMATIC

PROFIsafe-Treiber V2.1 für F-Slaves Handbuch Ausgabe 05 / 2010

Page 2: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 1-2 Ausgabe 05/2010

Sicherheitstechnische Hinweise

Dieses Handbuch enthält Hinweise, die Sie zur Vermeidung von Personen- und Sachschäden beachten müssen. Die Hinweise sind durch ein Warndreieck hervorgehoben und je nach Gefährdungsgrad folgendermaßen dargestellt:

Warnung

ist eine wichtige Information, die für die Abnahme und den sicherheitsgerichteten Einsatz des Produktes bedeutsam sind.

Hinweis ist eine wichtige Information über das Produkt, die Handhabung des Produktes oder den jeweiligen Teil der Dokumentation, auf den besonders aufmerksam gemacht werden soll.

Marken

SIMATIC®, SIMATIC HMI® und SIMATIC NET® sind Marken der Siemens AG.

Die übrigen Bezeichnungen in dieser Schrift können Marken sein, deren Benutzung durch Dritte für deren Zwecke die Rechte der Inhaber verletzen können.

Copyright © Siemens AG 2010 All rights reserved Weitergabe sowie Vervielfältigung dieser Unterlage, Verwertung und Mitteilung ihres Inhalts ist nicht gestattet, soweit nicht ausdrücklich zugestanden. Zuwiderhandlungen verpflichten zu Schadenersatz. Alle Rechte vorbehalten, insbesondere für den Fall der Patenterteilung oder GM-Eintragung.

Geschützt durch: US 6725419 B1; EP 1064590 B1; DE 10102435 C2

Siemens AG

Industry Sector

Devision Industry-Automation

Postfach 4848, D- 90327 Nürnberg

Haftungsausschluss Wir haben den Inhalt der Druckschrift auf Übereinstimmung mit der beschriebenen Hard-und Software geprüft. Dennoch können Abweichungen nicht ausgeschlossen werden, so dass wir für die vollständige Übereinstimmung keine Gewähr übernehmen. Die Angaben in dieser Druckschrift werden regelmäßig überprüft, und notwendige Korrekturen sind in den nachfolgenden Auflagen enthalten. Für Verbesserungsvorschläge sind wir dankbar.

© Siemens AG 2010

Technische Änderungen bleiben vorbehalten

Page 3: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 1-3 Ausgabe 05/2010

Inhalt 1 Vorwort 1-5

1.1 Zweck des Handbuchs ..................................................................................... 1-5 1.2 Anwendungsbereich ......................................................................................... 1-5 1.3 Änderungen gegenüber der Vorgängerversion ................................................ 1-5 1.4 Kundennutzen................................................................................................... 1-5 1.5 Leserkreis ......................................................................................................... 1-5 1.6 Literaturverzeichnis........................................................................................... 1-6 1.7 Weitere Unterstützung ...................................................................................... 1-6

2 Produktübersicht 2-1

2.1 Beschreibung des PROFIsafe-Treibers (PSD)................................................. 2-1 2.2 Sichere Kommunikation zwischen F-Host und F-Slave ................................... 2-1 2.3 Fehleraufdeckungsmechanismen im PSD ....................................................... 2-2 2.4 Normen und Richtlinien .................................................................................... 2-2

3 Funktionsweise des PSD 3-3

3.1 Einbettung des PSD in F-Slaves ...................................................................... 3-3 3.1.1 Aufgaben des Slave-Stack .............................................................................. 3-4 3.1.2 Aufgaben des Stack-Interface .......................................................................... 3-4 3.1.3 Aufgaben der F-Applikation .............................................................................. 3-4 3.1.4 Das Synchronisations-Interface........................................................................ 3-4 3.2 Aufbau einer F-Applikation ............................................................................... 3-6 3.2.1 Beschreibung der Zustände ............................................................................. 3-6 3.2.2 Beschreibung der Zustandsübergänge ............................................................ 3-7 3.2.3 Aktivitäten des PSD im Zustand PSD_DATAEX .............................................. 3-8

4 Dateien des PSD 4-1

4.1 Nichtveränderbare Dateien............................................................................... 4-1 4.2 Veränderbare Dateien ...................................................................................... 4-3 4.3 Vorgehensweise der Inbetriebnahme............................................................... 4-3

5 Schnittstellenbeschreibung 5-1

5.1 Notwendige PSD-Schnittstellenfunktionen....................................................... 5-1 5.1.1 psd_InitInstance(…).......................................................................................... 5-2 5.1.2 psd_FParBuild(…) ............................................................................................ 5-2 5.1.3 psd_Config(…).................................................................................................. 5-4 5.1.4 psd_Run(…) ..................................................................................................... 5-5 5.1.5 psd_Stop(…)..................................................................................................... 5-5 5.1.6 psd_RecvFOutTele(…)..................................................................................... 5-6 5.1.7 psd_RecvFOutTele_Invers(…)......................................................................... 5-6 5.1.8 psd_GetFOutData(…)....................................................................................... 5-7 5.1.9 psd_GetFOutData_invers(…)......................................................................... 5-10 5.1.10 psd_SetFInData(…)........................................................................................ 5-12 5.1.11 psd_SetFInData_invers(…) ............................................................................ 5-13 5.1.12 psd_SendFInTele(…) ..................................................................................... 5-14 5.1.13 psd_SendFInTele_invers(…).......................................................................... 5-14 5.2 Notwendige PSD-Schnittstellenvariable ......................................................... 5-15 5.2.1 pSafetyVar ...................................................................................................... 5-15 5.3 Notwendige zu implementierende Funktionen ............................................... 5-15 5.3.1 hard_err(…) .................................................................................................... 5-15 5.3.2 psd_GetFParPtr(…)........................................................................................ 5-16 5.3.3 psd_GetConfigPtr(...)...................................................................................... 5-16 5.3.4 psd_GetOutputTelegram(...)........................................................................... 5-17 5.3.5 psd_GetInputBuffer(...) ................................................................................... 5-17 5.3.6 psd_InputSendAck(...) .................................................................................... 5-18 5.3.7 enable_int(...) .................................................................................................. 5-18 5.3.8 disable_int (..) ................................................................................................. 5-19 5.4 Notwendige zu implementierende Funktionen bei der 2-kanaligen Generiervariante

........................................................................................................................ 5-19

Page 4: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 1-4 Ausgabe 05/2010

5.4.1 psd_OutTransfer(…)....................................................................................... 5-19 5.4.2 psd_OutSync(…) ............................................................................................ 5-20 5.4.3 psd_InTransfer(…).......................................................................................... 5-21 5.4.4 psd_InSync(…) ............................................................................................... 5-21 5.5 Optionale PSD-Schnittstellenfunktionen......................................................... 5-22 5.5.1 Hilfsfunktionen für die CRC Berechnung........................................................ 5-22 5.5.2 psd_GetState(…)............................................................................................ 5-23 5.5.3 psd_GetFPar(…) ............................................................................................ 5-24 5.5.4 Inverse PSD Funktionen................................................................................. 5-24

6 Konfiguration des PSD 6-28

6.1 Generiervariante ............................................................................................. 6-28 6.2 Speicherplatzoptimierung für CRC-Tabellen und Funktionen........................ 6-28 6.3 Instanzangabe ................................................................................................ 6-29 6.4 F-Ausgangsnutzdatenbereich......................................................................... 6-29 6.5 F-Eingangsnutzdatenbereich.......................................................................... 6-29 6.6 Speicher-Attribute ........................................................................................... 6-30 6.7 Speicher-Modell für die CRC-Tabellen........................................................... 6-30

7 Requirements 7-32

7.1 Requirements unabhänging von der Generiervariante .................................. 7-32 7.2 Requirements für die 1-kanalige Generiervariante......................................... 7-34 7.3 Requirements für die 2-kanalige Generiervariante......................................... 7-34

8 Testspezifikation 8-35

8.1 Fault-Insertion Test......................................................................................... 8-35 8.1.1 1-kanalige und 2-kanalige Generiervariante .................................................. 8-36 8.1.2 1-kanalige Generiervariante ........................................................................... 8-37 8.1.3 2-kanalige Generiervariante ........................................................................... 8-37 8.2 Qualifizierung der Entwicklungstools.............................................................. 8-37 8.3 Code-Generierung .......................................................................................... 8-38 8.4 Compiler Verifikations-Code für 1-kanalige Generiervariante ........................ 8-38 8.5 PROFIsafe-Conformancetest ......................................................................... 8-38

9 Anhang 9-39

9.1 Speicherbedarf ............................................................................................... 9-39 9.1.1 1-kanalige Generierung .................................................................................. 9-39 9.1.2 2-kanalige Generierung .................................................................................. 9-39 9.2 Statische Codeanalyse ................................................................................... 9-39 9.3 Entwicklungsdokumente................................................................................. 9-41

10 Begriffe und Abkürzungen 10-42

Abbildungsverzeichnis Bild 2-1: Aufbau der F-Telegramme................................................................................................ 2-1

Bild 3-1: Einbettung des PSD (2-kanalig)........................................................................................ 3-3

Bild 3-2: Einbettung des PSD (1-kanalig)........................................................................................ 3-3

Bild 3-3: Funktionsweise der asynchronen Synchronisation........................................................... 3-5

Bild 3-4: Gesamtablauf der PROFIsafe-Slave_FW......................................................................... 3-6

Bild 3-5: Bearbeiten des zyklischen Ausgangtelegramms .............................................................. 3-8

Bild 3-6: Bearbeitung der zyklischen Eingangstelegramme.......................................................... 3-11

Bild 4-1: CRC-Werte der zertifizierten PSD-Sourcen...................................................................... 4-3

Page 5: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 1-5 Ausgabe 05/2010

1 Vorwort

1.1 Zweck des Handbuchs

Das Handbuch beschreibt die Vorgehensweise für die Integration des „PROFIsafe-Treiber für F-Slaves“ (im Folgenden mit PSD abgekürzt) in verschiedene Ablauf-umgebungen.

1.2 Anwendungsbereich

Der PSD für F-Slaves kommt in PROFIBUS- und PROFINET-Anwendungen mit sicherheitsgerichteten Feldgeräten zum Einsatz. Diese können z. B. sein: Remote-I/O, Laser-Scanner, Lichtgitter, Antriebe, Ventile, Roboter, Bediengeräte, Drucktransmitter, Überfüllsicherungen, Gateways zu anderen sicherheitsgerichteten Bussen und vieles andere mehr. Nachfolgend erhalten die Bezeichnungen für sicherheitsgerichtete Einrichtungen ein voreingestelltes "F", z. B. F-Slave und F-Host.

1.3 Änderungen gegenüber der Vorgängerversion

Gegenüber der Vorgängerversion enthält das vorliegende Handbuch, welches sich auf den PSD V2.1 bezieht, folgende wesentliche Änderungen bzw. Ergänzungen: • Verweise auf Textmarken korrigiert. • Beschreibung zum Statusbyte.Bit_1 "DeviceFault" geändert. • Einschränkung bezüglich des Verbots von Codeoptimierung (PSD_08) geändert.

1.4 Kundennutzen

Der zertifizierte PSD für Slaves reduziert Entwicklungs- und Zertifizierungsaufwände bei F-Geräte-Herstellern. Die Entwicklung des PSD durch ein PNO-Mitglied bietet folgende Vorteile:

• die F-Kommunikation funktioniert in allen F-Slaves gleichartig, die den PSD benutzen (stellt PROFIsafe-Profil /1/ sicher).

• der Aufwand zur Implementierung, Test und Zertifizierung entsteht nur einmal.

1.5 Leserkreis

Entwicklungsabteilungen von F-Geräten bei Siemens und Partnerfirmen.

Page 6: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 1-6 Ausgabe 05/2010

1.6 Literaturverzeichnis

/1/

PROFIsafe – Profile for Safety Technology on PROFIBUS and PROFINET IO Order No. 3.192b, Version 2.4, März 2007 Publisher: PROFIBUS Nutzerorganisation e.V. Haid-und-Neu-Str. 7, D-76131 Karlsruhe Phone: ++ 721 / 96 58 590, Fax:++ 721 / 96 58 589 [email protected], http://www.profibus.com/

/2/

IEC 61508 Functional Safety of electrical/electronic/programmable electronic safety-related systems Part 1: General requirements (Ausgabe 1999) Part 2: Requirements for electrical/electronic/programmable electronic safety-related systems (Ausgabe: 2000) Part 3: Software requirements (Ausgabe: 1999) Part 4: Definitions and abbreviations (Ausgabe: 1999) Part 5: Examples of methods for the determination of safety integrity levels (Ausgabe: 1999) Part 6: Guidline on the application of IEC61508-2 and IEC61508-3 (Ausgabe: 2000) Part 7: Overview of techniques and measures (Ausgabe: 2000)

/3/

PRQA QA C for C/C++ Ver. 7.0 http://www.programmingresearch.com/QAMISRA.html?pnl=1_3#1_3

/4/ PROFIsafe Starterkit

Weitere, nicht referenzierte Literatur:

• Programmierregeln für die Erstellung von Software für Steuerungen mit Sicherheitsaufgaben Wirtschaftsverlag NW, 1998 Herausgeber: Bundesanstalt für Arbeitsschutz und Arbeitsmedizin Author: Dr.Schaefer. ISBN 3-89701-212-X

• PROFIBUS – DP/DPV1 Grundlagen, Tipps und Tricks für Anwender Author: Manfred Popp, Hüthig, 2000, ISBN 3-7785-2781-9

• Der Schnelleinstieg in PROFIBUS- DP Author: Manfred Popp, PROFIBUS Nutzerorganisation, Best Nr. 4.071

• Industrielle Kommunikation mit PROFINET, Author: Manfred Popp, PROFIBUS Nutzerorganisation, Best Nr. 4.181

• PROFIsafe-Requirements for Installation, Immunity and el. Safety V1.0, Order No. 2.242

1.7 Weitere Unterstützung

Über die Email-Adresse von ComDEC können Sie schnell und bequem Antworten auf ihre Fragen finden: [email protected]

Weitere Informationen zum Thema PROFIBUS finden Sie auf der Homepage http://www.profibus.com/

Page 7: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 2-1 Ausgabe 05/2010

2 Produktübersicht

2.1 Beschreibung des PROFIsafe-Treibers (PSD) Der PSD ist ein Firmware-Modul für F-Slaves. Hier sind die Überwachungs-mechanismen zur sicheren Kommunikation nach Vorgabe des „PROFIsafe - Profile for Safety Technology on PROFIBUS DP and PROFINET IO“ realisiert. Seine Verwendung erlaubt Herstellern von F-Slaves eine einfache Anbindung ihres F-Slaves an den Standard-PROFIBUS sowie Standard-PROFINET und damit die sicherheitsgerichtete Kommunikation mit einem F-Kommunikationspartner (F-Host).

Mit dem PSD können Gerätehersteller ein F-Gerät mit fehlersicherer Punkt-zu-Punkt-Kommunikation über PROFIBUS oder PROFINET entwickeln. Der PSD lässt sich durch "Generierung" in unterschiedliche Ablaufumgebungen (HW-/ FW-Umgebungen) einbinden.

2.2 Sichere Kommunikation zwischen F-Host und F-Sla ve

Die wesentliche Aufgabe des PSD besteht im fehlersicheren Nutzdatenaustausch mit einem F-Host und der dafür erforderlichen F-Parametrierung. Der Aufbau eines vollständigen Ein- / Ausgangstelegramms entspricht der Festlegung im PROFIsafe-Profil (Fig. "Safety PDU for CPF3") /1/. Im Weiteren werden die Begriffe im Sinne der folgenden Abbildung verwendet.

Bild 2-1: Aufbau der F-Telegramme

Für den Anwender des PSD sind folgende Daten relevant:

Ausgangstelegramm:

- F-Ausgangsnutzdaten (Aufbau ist Applikations-spezifisch)

- Steuerbyte.Bit_0: iPar_EN (F-Host stellt Param.-Anforderung für iParameter)

- Steuerbyte.Bit_1: OA_Req (F-Slave kann Operator-Acknowledge-Anforderung anzeigen)

- Steuerbyte.Bit_4: activate_FV (wird vom F-Host gesetzt, um den F-Slave zu veranlassen an seinen Ausgängen Failsafe-Werte auszugeben)

Page 8: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 2-2 Ausgabe 05/2010

Eingangstelegramm:

- F-Eingangsnutzdaten (Aufbau ist Applikations-spezifisch)

- Statusbyte.Bit_0: iPar_OK (F-Slave hat die iParameter übernommen)

- Statusbyte.Bit_1: Device_Fault (F-Applikation hat eine sicherheitsrelevante Fehlfunktion erkannt)

- Statusbyte.Bit_4: FV_activated (F-Slave verwendet an seinen Ausgängen Failsafe-Werte)

Die Bedeutung der Bits im Status- /Steuerbyte sind im PROFIsafe-Profil (Fig. "Status Byte“ bzw. „Control Byte") /1/ beschrieben.

Warnung

Requirement: PSD_16

Die F-Applikation muss das Statusbyte.Bit_1 (Device_Fault) für mindestens 2 Wechsel der ConsecutiveNumber setzen (2 x Returnwert "F_OUTPUT_OK" der PSD-Funktion psd_GetFOutData() ), wenn sie nicht in der Lage ist, die sicherheitstechnische Integrität der zu übertragenden Prozessdaten zu garantieren.

2.3 Fehleraufdeckungsmechanismen im PSD

Im PSD sind verschiedene Massnahmen zur Fehleraufdeckung implementiert. Diese wirken sofort bei Abarbeitung des PSD-Codes, womit eine zusätzliche, zyklisch aufzurufende PSD-Selbsttestfunktion nicht erforderlich ist.

- Im 1-kanaligen PSD ist in allen Schnittstellen-Funktionen eine hochwertige Programmlaufkontrolle eingebaut, die Verfälschungen im Programmfluss erkennt. Die Funktionen werden logisch zweikanalig verarbeitet, wobei im zweiten Kanal die Daten invertiert hinterlegt sind, was im weiteren Verlauf auch an den Funktionsaufrufen des PSD zu erkennen ist.

- Im 2-kanaligen PSD wird mit Hilfe von Synchronisations-Funktionen im zyklischen Betrieb eine Ablaufkontrolle realisiert.

2.4 Normen und Richtlinien Der PSD wurde gemäss den SIL3 Anforderungen der IEC 61508-1 und -3 entwickelt. Bei der 1-kanaligen Variante wurden zusätzlich die SIL2 Anforderungen an RAM, ROM und Programmlaufkontrolle aus der IEC 61508-2 berücksichtigt und implementiert. Er entspricht den Anforderungen der Normen und Richtlinien bezüglich funktionaler Sicherheit wie sie dem Bericht zum Sicherheitszertifikat (TÜV-Zertifikat) zu entnehmen sind. Die aktuellen TÜV-Dokumente finden Sie im Internet (http://support.automation.siemens.com/WW/view/de/11669702/134200).

Warnung

Requirement: PSD_21

Zur Verifikation des verwendeten Compilers ist die Analyse mit dem Verifikations-Code in Datei p_verify.c durchzuführen /4/.

Page 9: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 3-3 Ausgabe 05/2010

3 Funktionsweise des PSD

3.1 Einbettung des PSD in F-Slaves

Nachfolgende Abbildungen zeigen die an der F-Kommunikation beteiligten FW-Blöcke, und die Einbettung des PSD.

Slave-Stack

F-Application F-Application

Sync.-Interface

PST

BUS-Driver

PROFIBUS / PROFINET

= F-Technology= Standard-Technology

Stack-Interface

A B

Sync.-Interface

PST

Stack-Interface(Dummy)

Bild 3-1: Einbettung des PSD (2-kanalig)

Slave-Stack

F-Application

PSTStack-Interface

BUS-DriverPROFIBUS / PROFINET

= F-Technology

= Standard-Technology

Bild 3-2: Einbettung des PSD (1-kanalig)

Slave-Stack: steuert die Kommunikation über PROFIBUS bzw. PROFINET.

Stack-Interface: dient der Anpassung des PSD an unterschiedliche Slave-Stacks.

F-Applikation: spezifische Geräteanwendung, die den PSD zur Kommunikation über PROFIBUS bzw. PROFINET mit zyklischen F-Telegrammen nutzt.

Synchronisations-Interface: zum Datenaustausch.

Page 10: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 3-4 Ausgabe 05/2010

Die nachfolgend formulierten Aufgaben der FW-Blöcke dienen der Orientierung zum Design eines F-Slave.

3.1.1 Aufgaben des Slave-Stack

Folgende Aufgaben liegen beim Slave-Stack:

• Der Slave-Stack empfängt F-Parameter und optional iParameter.

• Der Slave-Stack empfängt die Ausgangstelegramme.

• Der Slave-Stack sendet die Eingangstelegramme.

• Der Slave-Stack erkennt die BUS-Ereignisse wie z.B. „Start / Stopp des zyklischen Datenaustausch“.

3.1.2 Aufgaben des Stack-Interface

Folgende Aufgaben liegen beim Stack-Interface:

• Das Stack-Interface extrahiert aus dem Parameter-Telegramm des Slave-Stack die F-Parameter und übergibt sie dem PSD.

• Das Stack-Interface übernimmt die Ausgangstelegramme vom Slave-Stack und übergibt diese dem PSD.

• Das Stack-Interface übergibt dem PSD jeweils auf Anforderung einen Puffer zur Übernahme des Eingangstelegramms.

• Das Stack-Interface nimmt den Puffer mit dem Eingangstelegramm entgegen.

• Das Stack-Interface regelt mit dem Slave-Stack das Versenden des Eingangs-telegramm an den F-Host.

3.1.3 Aufgaben der F-Applikation

Die Implementierung der F-Applikation liegt außerhalb des PSD und hat folgende Aufgaben zu erfüllen:

• Die F-Applikation steuert den Gesamtablauf.

• Die F-Applikation übernimmt die Initialisierung des Slave-Stacks.

• Die F-Applikation verteilt (bei Zweikanaligkeit) die F-Datenpakete auf beide Kanäle mit Hilfe des Synchronisations-Interface.

• Die F-Applikation übernimmt vom PSD die Ausgangsdaten und das Controlbyte und verarbeitet sie.

• Die F-Applikation generiert die Eingangsdaten sowie bestimmte Bits für das Statusbyte und übergibt sie dem PSD.

3.1.4 Das Synchronisations-Interface

Der Synchronisationsablauf, wie er im zyklischen Betrieb stattfindet, zeigt nachfolgende Abbildung:

Page 11: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 3-5 Ausgabe 05/2010

Bild 3-3: Funktionsweise der asynchronen Synchronisation

1) = Die Aufrufreihenfolge der Schnittstellen-Funktionen (siehe Kapitel 5) von der F-Applikation wird vom PSD überwacht.

2) = Aufruf der Schnittstellen-Funktion psd_OutTransfer(Instance, State),

3) = Aufruf der Schnittstellen-Funktion psd_OutSync(Instance, State),

4) = Aufruf der Schnittstellen-Funktion psd_InTransfer(Instance, CRC2),

5) = Aufruf der Schnittstellen-Funktion psd_InSync(Instance, CRC2)

Der PSD sendet in einem ersten Schritt mit Hilfe der Transfer-Funktionen die Synchronisations-Daten zum jeweils anderen Kanal.

Im zweiten Schritt holt der PSD mit Hilfe der Sync-Funktionen die zwischenzeitlich empfangenen Synchronisations-Daten ab und vergleicht sie mit den Daten des eigenen Kanals. Unterschiedliche Synchronisations-Daten haben den Übergang nach PSD_HARD_FAIL zur Folge.

Nach Übergabe der Sync.-Daten an den PSD sind die Sync.-Daten zu löschen.

Es ist sicherzustellen, daß die gepufferten Daten jeweils nur einmal ausgelesen werden (z.B. durch Löschen aus dem Puffer nach der Ausgabe).

Page 12: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 3-6 Ausgabe 05/2010

3.2 Aufbau einer F-Applikation Der prinzipielle Aufbau einer F-Applikation umfasst die folgenden Zustände:

F_CYCLE

PSD_INIT

PSD_PARAM

PSD_DATAEX

API-Call "Configuration" (F-

Configuration is available)

Configuration for PROFIsafe

F-Parameter are invalid

Start / Reset

API-Call "Initialization"

PSD data are initialized

API-Call "PPOFIsafe Communi-

cation Stop"

Stop the PROFIsafe State machine

API-Call "Parametrization" (F-

Parameter are available)

Parametrization for PROFIsafe

API-Call "Parametrization" (F-

Parameter are available)

Parametrization for PROFIsafe

API-Call "PPOFIsafe Communication

Start"

Initialize the PROFIsafe State machine

PSD_HARD_FAIL

Bild 3-4: Gesamtablauf der PROFIsafe-Slave_FW

3.2.1 Beschreibung der Zustände

F_CYCLE Zyklus der F-Applikation.

PSD_INIT Die PSD-Instanz ist fehlerfrei initialisiert.

PSD_PARAM Gültige F-Parameter liegen vor. Die Konfiguration der Nutzdatenlängen kann in diesem Zustand erfolgen, wenn sie bei der Initialisierung vereinbart wurde. Die PSD-Instanz ist bereit für den zyklischen Datenaustausch.

Page 13: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 3-7 Ausgabe 05/2010

PSD_DATAEX Der zyklische Datenaustausch mit dem F-Host wurde gestartet. Es wurde die PSD-Instanz-Funktion psd_Run(…) aufgerufen. Die zyklische Verarbeitung der Ein-/ Aus-gangstelegramme hat begonnen.

PSD_HARD_FAIL Die PSD-Instanz hat eine Inkonsistenz festgestellt, vermutlich in Folge eines Hard-warefehlers. Im 1-kanaligen Betrieb stellt sie die Schnittstellenvariable "pSafetyVar" auf den Wert "P_SAFETY_CONST_FALSE". Die PSD-Instanz ruft die Funktion "hard_err(…)" von der F-Applikation auf. Mit dieser Funktion stellt die F- Applikation den sicheren Zustand ein.

3.2.2 Beschreibung der Zustandsübergänge

START�PSD_INIT Nach PowerOn initialisiert die F-Applikation alle Instanzen des PSD mit dem Aufruf von psd_InitInstance(…). Nach fehlerfreiem Durchlauf befindet sich die jeweilige PSD-Instanz im Zustand PSD_INIT.

F-CYCLE�PSD_HARD-FAIL Jede Inkonsistenz bzw. jeder Hardware-Fehler, der von einer PSD-Instanz erkannt wird, führt in den Zustand PSD_HARD_FAIL.

PSD_INIT�PSD_PARAM Den Empfang von F-Parametern zeigt der Slave-Stack der F-Applikation an mit [SLAVE_STACK_F_PAR_AVAILABLE] . Die F-Applikation parametriert darauf die PSD-Instanz mit dem Aufruf der Funktion psd_FParBuild(…). Der Zustand PSD_PARAM wird erreicht, wenn gültige F-Parameter vorliegen.

PSD_PARAM�PSD_INIT Die Funktion psd_FParBuild(…) ist hat ungültige F-Parameter erkannt.

PSD_PARAM�PSD_PARAM Nach Empfang von neuen, gültigen F-Parametern vom Slave-Stack parametriert die F-Applikation die PSD-Instanz erneut.

PSD_PARAM�PSD_PARAM Nach Empfang der Nutzdatenlängen-Konfiguration stellt die PSD-Instanz die Längen für die Eingangs- und Ausgangsnutdaten ein.

PSD_PARAM�PSD_DATAEX Der Slave-Stack hat der F-Applikation den Übergang in den zyklischen Datenaustausch mit [RUN] angezeigt. Die F-Applikation ruft daraufhin die Funktion psd_Run(…) auf.

PSD_DATAEX�PSD_PARAM Der Slave-Stack hat der F-Applikation den Austritt aus dem zyklischen Daten-austausch mit [STOP] angezeigt. Die F-Applikation ruft darauf die Funktion psd_Stop(…) auf.

Page 14: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 3-8 Ausgabe 05/2010

3.2.3 Aktivitäten des PSD im Zustand PSD_DATAEX

3.2.3.1 Verarbeitung der Ausgangstelegramme

F-Application

(1)

PSD Stack-Interface

Pointer to F-Output-Telegram

(2)

psd_RecvFOutTele()

disable_int()

enable_int()

Acknowledge

psd_GetFOutData()

psd_GetOutputTelegramm()

Acknowledge

(3)

(5)

(7)

(4)

(6)

(8)

(9)

(11)

(10)

Transfer PSD-State

Acknowledge

(13)

(12)

Sync PSD-State

Acknowledge

(14)

(15)

psd_RecvFOutTele_invers()

Acknowledge

psd_GetFOutData_invers()

Acknowledge

(17)

(19)

(16)

(18)

Bild 3-5: Bearbeiten des zyklischen Ausgangtelegramms

(1) Die F-Applikation ruft die PSD-Funktion psd_RecvFOutTele(…) auf, um ein Ausgangs-telegramm vom Stackinterface entgegenzunehmen und zu prüfen. Sie übergibt dem PSD dabei auch ihre aktuellen Zeitwerte.

Page 15: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 3-9 Ausgabe 05/2010

(2) Der PSD berechnet aus den übergebenen Zeitwerten die Timeout-Situation. Er fordert darauf für die konsistente Übernahme des Ausgangstelegramms eine Interruptsperre an.

(3) Interruptsperre einstellen.

(4) Der PSD fordert vom Slave-Stackinterface einen Zeiger auf den Puffer mit dem Ausgangstelegramm.

(5) Das Slave-Stackinterface befüllt den Puffer mit dem Ausgangstelegramm und übergibt dem PSD einen Zeiger darauf.

(6) Der PSD übernimmt das Ausgangstelegramm in seine interne Datenstruktur. Im 1-kanaligen Fall befüllt der PSD auch die Invers-Datenstruktur mit dem Ausgangs-telegramm. Er fordert danach von der F-Applikation die Aufhebung der Interruptsperre an.

(7) Interruptsperre aufheben.

(8) Der PSD prüft das Ausgangstelegramm entsprechend dem PROFIsafe Profil. Im 2-kanaligen Fall stellt der PSD seinen aktuellen Zustand dem anderen Kanal zur Verfügung.

(9) Die F-Applikation transferiert im 2-kanaligen Fall den PSD-Zustand an den anderen Kanal.

(10) Der PSD beendet die Funktion psd_RecvFOutTele().

(11) Die F-Applikation prüft den Rückgabewert von psd_RecvFOutTele(...). Zum Erhalt der Ausgangsdaten ruft sie die Funktion psd_GetFOutData(...) auf.

(12) Der PSD fordert im 2-kanaligen Fall von der F-Applikation den Zustand des anderen Kanals an.

(13) Die F-Applikation übergibt im 2-kanaligen Fall dem PSD den Zustand des anderen Kanals.

(14) Der PSD vergleicht im 2-kanaligen Fall seinen aktuellen Zustand mit dem Zustand des anderen Kanals. Danach befüllt er den Puffer der F-Applikation mit den Ausgangsdaten und dem Controlbyte.

(15) Die F-Applikation prüft den Rückgabewert von psd_GetFOutData (...) und verarbeitet das Ausgangstelegramm. In der 1-kanaligen Generiervariante ruft der "Inversteil" der F-Applikation die Funktion psd_RecvFOutTele_invers(…) auf.

(16) Im 1-kanaligen Fall erfolgt die Invers-Bearbeitung mit psd_RecvFOutTele().

(17) Im 1-kanaligen Fall prüft der "Inversteil" der F-Applikation den Rückgabewert von psd_RecvFOutTele_invers(). Zum Erhalt der inversen Ausgangdaten ruft er die Funktion psd_GetFOutData_invers() auf.

(18) Im 1-kanaligen Fall erfolgt die Invers-Bearbeitung mit psd_GetFOutData_invers().

(19) Im 1-kanaligen Fall prüft der "Inversteil" der F-Applikation den Rückgabewert von psd_GetFOutData_invers() und verarbeitet das inverse Ausgangstelegramm.

Warnung

Requirement: PSD_09

Nicht zulässige Returnwerte müssen in den Zustand HARD_FAIL der F-Applikation führen.

Page 16: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 3-10 Ausgabe 05/2010

Warnung

1-kanalige Generiervariante

Requirement: PSD_18

Die F-Applikation muss die Konsistenz der F-Ausgangsnutzdaten sowie Steuerbytekennungen der beiden logischen Kanäle prüfen. Die Konsistenzprüfung hat vor Ausgabe an den Prozess zu erfolgen. Meldet der PSD einen Kommunikationsfehler, ist das empfangene Steuerbyte ungültig und die Steuerbytekennungen sind nicht auszuwerten.

Warnung

1-kanalige Generiervariante

Requirement: PSD_22

Beim Einsatz des 1-kanaligen PSD im Sensor oder Aktor müssen alle sicherheitskritischen Zweitfehler durch das Umfeld des PSD aufgedeckt werden.

Warnung

1-kanalige Generiervariante

Requirement: PSD_23

Beim Einsatz des 1-kanaligen PSD im Aktor müssen zufällige HW-Fehler innerhalb der Prozessfehlertoleranzzeit durch das Umfeld des PSD aufgedeckt werden.

Warnung

2-kanalige Generiervariante

Requirement: PSD_24

Die F-Applikation muss die Konsistenz der F-Ausgangsnutzdaten und Steuerbytekennungen der beiden Hardware Kanäle prüfen. Die Konsistenzprüfung hat vor Ausgabe an den Prozess zu erfolgen. Meldet der PSD einen Kommunikationsfehler, ist das empfangene Steuerbyte ungültig und die Steuerbytekennungen sind nicht auszuwerten.

Page 17: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 3-11 Ausgabe 05/2010

3.2.3.2 Verarbeitung der Eingangstelegramme

F-Application

(1)

PSD Stack-Interface

Pointer to F-Input-Telegram

(2)

psd_SetFInData()

Acknowledge

psd_GetInputBuffer()

Acknowledge

(3)

(5)

(7)

(4)

(6)

(8)

(9)

(11)

(10)

Transfer InData-CRC

Acknowledge

(13)

(12)

Sync InData-CRC

Acknowledge

(14)

(15)

Acknowledge

Acknowledge

(17)

(16)

psd_SendFInTele()

disable_int()

Acknowledge

psd_InputSendAck()

psd_SetFInData_invers()

Acknowledge

enable_int()

(18)

(19)

psd_SendFInTele_invers()

Acknowledge

(20)

(21)

Bild 3-6: Bearbeitung der zyklischen Eingangstelegramme

(1) Zur Übergabe der Eingangsdaten ruft die F-Applikation die Funktion psd_SetFInData() auf.

(2) Der PSD ließt die Eingangsdaten und bestimmte Bits für den Aufbau des Statusbyte ein und baut das Eingangstelegramm auf.

(3) Im 2-kanaligen Fall stellt der PSD den CRC des Eingangstelegramms dem anderen Kanal zur Verfügung.

Page 18: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 3-12 Ausgabe 05/2010

(4) Der PSD beendet die Funktion psd_SetFInData().

(5) Die F-Applikation wertet den Returnwert von psd_SetFInData() aus. Im 1-kanaligen Fall ruft der "Inversteil" der F-Applikation die Funktion psd_SetFInData_invers() auf.

(6) In der 1-kanaligen Generiervariante bearbeitet der PSD die Inversfunktion von psd_SetFInData().

(7) Im 1-kanaligen Fall wertet die F-Applikation den Returnwert von psd_SetFInData_invers() aus. Zum Absenden des Eingangstelegramms ruft die F-Applikation die Funktion psd_SendFInTele() auf.

(8) Der PSD bildet das Eingangstelegramm entsprechend dem PROFIsafe-Profil. Er fordert im 2-kanaligen Fall den CRC des anderen Kanals an und vervollständigt damit das Eingangstelegramm. Im 1-kanaligen Fall verwendet der PSD den CRC aus seiner Invers-Bearbeitung.

(9) Im 2-kanaligen Fall stellt die F-Applikation dem PSD den CRC des anderen Kanals zur Verfügung.

(10) Der PSD fordert mit der Funktion psd_GetInputBuffer() vom Stack-Interface einen Puffer für das Eingangstelegramm an.

(11) Das Stack-Interface gibt dem PSD einen Zeiger auf den Puffer für das Eingangstelegramm.

(12) Der PSD fordert zum konsistenten Befüllen des Sendepuffers von der F-Applikation eine Interrupt-Sperre an.

(13) Die F-Applikation setzt eine Interrupt-Sperre.

(14) Der PSD befüllt den Sendepuffer und fordert danach von der F-Applikation die Freigabe der Interrupt-Sperre an.

(15) Die F-Applikation hebt die Interrupt-Sperre auf.

(16) Der PSD fordert mit der Funktion psd_InputSendAck() das Stack-Interface auf das Eingangstelegramm an den F-Host abzusenden.

(17) Das Stack-Interface versendet das Eingangstelegramm.

(18) Der PSD prüft den Rückgabewert von psd_InputSendAck() und beendet die Funktion psd_SendFInTele().

(19) Im 1-kanaligen Fall ruft der "Inversteil" der F-Applikation die Inversbearbeitung von psd_SendFInTele() auf.

(20) Im 1-kanaligen Fall bearbeitet der PSD die Funktion psd_SendFInTele_invers().

(21) Im 1-kanaligen Fall prüft der "Inversteil" der F-Applikation den Rückgabewert von psd_SendFInTele_invers ().

Warnung

Requirement: PSD_09

Nicht zulässige Returnwerte müssen in den Zustand HARD_FAIL der F-Applikation führen.

Page 19: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 4-1 Ausgabe 05/2010

4 Dateien des PSD In den folgenden Tabellen sind alle Dateien aufgeführt, die auf der CD-ROM zum PSD zu finden sind. Die Dateien enthalten u.a. die Schnittstellenfunktionen, welche in Folge kurz erläutert sind. Eine detaillierte Schnittstellenbeschreibung finden Sie in den nachfolgenden Kapiteln.

4.1 Nichtveränderbare Dateien

Datei Schnittstellenfunktion Aufgabe

psd_CRC16(…) Einen 16-Bit-CRC über einen Speicherbereich berechnen

p_crc.c

psd_CRC32(…) Einen 32-Bit-CRC über einen Speicherbereich berechnen

p_init.c psd_InitInstance(…) Eine PSD-Instanz instialisieren

psd_GetState(…) PSD-Zustand liefern

psd_Stop(…) Den zyklischen Datenaustausch des PSD beenden

p_state.c

psd_Run(…) PSD befindet sich im zyklischen Datenaustausch

psd_SendFInTele(…) F-Input-Telegramm an das Stack-Interface übergeben

p_input.c

psd_SetFInData(…) F-Input-Daten an den PSD übergeben

psd_GetFOutData(…) F-Output –Daten an die F-Applikation übergeben p_output.c

psd_RecvFOutTele(…) F-Output Telegramm prüfen

psd_GetFPar(…) F_SIL und F_iPar_CRC lesen

psd_FParBuild(…) F-Parameter prüfen

p_param.c

psd_Config(…) Nutzdatenlänge einstellen

p_time.c - Interne Timerverwaltung

p_types.h - Deklaration übergeordneter Datentypen

p_api.h - Schnittstellendeklaration

p_crc.h - lokale Typdeklaration für p_crc.c

p_global.h - globale Typdeklaration für die F-Applikaition

p_init.h - lokale Typdeklaration für p_init.c

p_input.h - lokale Typdeklaration für p_input.c

p_invers.h - inverse Typdeklarationen für die 1-kanalige Generiervariante des PSD

p_local.h - PSD-lokale Typdeklarationen

p_output.h - lokale Typdeklaration für p_output.c

p_param.h - lokale Typdeklaration für p_param.c

p_state.h - lokale Typdeklaration für p_state.c

p_time.h - lokale Typdeklaration für p_time.c

Page 20: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 4-2 Ausgabe 05/2010

Zusätzlich für 1-kanalige Generiervariante

Datei Schnittstellenfunktion Aufgabe

psd_GetFOutData_Invers(…) Rückgabewert des inversen Berechnungspfad der Funktion psd_GetFOutData (...)

psd_RecvFOutTele_Invers (…) Rückgabewert des inversen Berechnungspfad der Funktion psd_RecvFOutTele (...)

psd_SendFInTele_Invers (…) Rückgabewert des inversen Berechnungspfad der Funktion psd_SendFInTele (...)

psd_SetFInData_Invers (…) Rückgabewert des inversen Berechnungspfad der Funktion psd_SetFInData (...)

psd_InitInstance_Invers (…) Rückgabewert des inversen Berechnungspfad der Funktion psd_InitInstance (...)

psd_FParBuild_Invers (…) Rückgabewert des inversen Berechnungspfad der Funktion psd_FParBuild (...)

psd_Config_Invers (…) Rückgabewert des inversen Berechnungspfad der Funktion psd_Config (...)

psd_GetState_Invers (…) Rückgabewert des inversen Berechnungspfad der Funktion psd_GetState (...)

psd_Stop_Invers (…) Rückgabewert des inversen Berechnungspfad der Funktion psd_Stop (...)

psd_Run_Invers (…) Rückgabewert des inversen Berechnungspfad der Funktion psd_Run (...)

p_invers.c

psd_GetFPar_Invers (…) Rückgabewert des inversen Berechnungspfad der Funktion psd_GetFPar (...)

Für die Verifikation, dass die verwendeten PSD-Sourcen nicht verändert wurde, steht das Tool CRC-Check zur Verfügung. Das Tool bildet über jede PSD Datei die nicht verändert werden darf eine Signatur sowie eine Gesamtsingnatur über alle PSD-Sourcen.

Für die Installation und Benutzung des Tools CRC-Check ist die mitgelieferte ReadMe-Datei in dem Verzeichnis <CD>:\CRC_Check\ zu beachten.

Das nachfolgende Bild zeigt die entsprechenden CRC-Werte für die Source-Dateien. Diese CRC-Werte müssen mit den aktuell berechneten CRC-Werten verglichen werden.

Warnung

Requirement: PSD_02

Die PSD - Dateien dürfen nicht verändert werden.

Page 21: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 4-3 Ausgabe 05/2010

Bild 4-1: CRC-Werte der zertifizierten PSD-Sourcen

4.2 Veränderbare Dateien

Datei Aufgabe

p_c_config.h Definition der Generierparameter

p_c_crc_m.h Memory-Allocation der CRC-Tabelle

p_c_crc_b.h Wiederherstellung des Default-Memorymodels

p_c_fapplication.h Anpassungsschicht für die F-.Applikation

p_c_si.c Funktionen des Stack-Inferface

p_c_si.h Funktions-Prototypen des Stack-Inferface

4.3 Vorgehensweise der Inbetriebnahme Folgende Schritte sind vorzunehmen, um den PSD einzusetzen:

• Umgebende FW-Module (Stack-Interface, Synchronisations-Interface, F-Applikation) implementieren

• Die vom PSD benötigten Funktionen (Ausgangs-Makros) bereitstellen und Prototypen anpassen, welche in p_c_fapplication.h bekannt gegeben sind

Warnung

Requirement: PSD_03

Die CRC-Werte der PSD Dateien (Einzel- und Gesamt-CRC) müssen mit den Werten des CRC-Check-Tools übereinstimmen.

Page 22: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 4-4 Ausgabe 05/2010

• Generier-Parameter anpassen in p_c_Config.h

• In den umgebenden FW-Modulen p_api.h includieren

• Das gewünschte Memory-Modell, die Namen der Speicherklassen in p_c_config.h bzw. die Speichersegmentierung in p_c_crc_m.h, p_c_crc_b.h, anpassen. Die Aktivierung der jeweiligen Einstellungen erfolgt ebenfalls in p_c_config.h über Defines.

Hinweis

Zur Veranschaulichung der PSD-Integration ist ein Pseudocode /4/ beigelegt(Dateien: p_c_pseudo_1c.c bzw. p_c_pseudo_2c.c).

Page 23: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-1 Ausgabe 05/2010

5 Schnittstellenbeschreibung Funktions-Schnittstelle

Der PSD kann in unterschiedlichen Systemumgebungen eingesetzt werden. Hierfür stehen die in Kapitel 4 beschriebenen Dateien zur Verfügung.

Daten-Schnittstelle

Der PSD verwendet für die Ablage der Ein- und Ausgangstelegramme Puffer, die in einem eigenen, vom PSD statisch angelegten und verwalteten Speicherbereich liegen.

Mit Hilfe von Speicherattributen und optionalen Compiler-Anweisungen zur Speicher-segment-Steuerung lässt sich der Ablageort entsprechend der Toolkette steuern.

Warnung

Requirement: PSD_04

Es dürfen nur die PSD-Schnittstellenfunktionen verwendet werden, die in der Datei p_api.h deklariert sind.

Warnung

Requirement: PSD_05

Es dürfen nur die PSD-Schnittstellenstrukturen verwendet werden, die in der Datei p_global.h deklariert sind.

Warnung

Requirement: PSD_06

Für die Auswertung der PSD-Returns müssen die Defines aus p_global.h verwenden werden.

Warnung

Requirement: PSD_09

Nicht zulässige Returnwerte müssen in den Zustand HARD_FAIL der F-Applikation führen.

5.1 Notwendige PSD-Schnittstellenfunktionen Die nachfolgend beschriebenen Funktionen sind entsprechen Kapitel 3.2 beschrieben in die F-Applikation einzubinden.

Die Berechnung der Instanz-Nr. aus den Bus-Telegrammen ist Bus-spezifisch. So wird z.B. bei PROFINET die Instanz.-Nr. aus der übertragenen Sub-Modulnr. gebildet.

Zur Adressierung der Instanz können die Defines "INST_xx" aus p_global.h verwendet werden. Der Aufbau der jeweils an den PSD übergebenen Instanz-Nr. "pInstance" ist: 16Bit-Wert; Bit 0- 7: (1er-Komplement der Instanz-Nr.) - 1 Bit 8-15: Instanz-Nr. - 1

Page 24: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-2 Ausgabe 05/2010

Beispiel für Instanz 1: 0x00FF Beispiel für Instanz 2: 0x01FE. (siehe auch Implementierung in p_global.h)

5.1.1 psd_InitInstance(…)

Dem PSD wird beim Aufruf dieser Funktion zu der angegebenen Instanz die Information übergeben, ob deren Datenlänge dynamisch konfiguriert werden soll oder nicht.

Funktion: psd_InitInstance(…)

Prototyp: P_Byte psd_InitInstance (P_Word pInstance, P_Byte pDynamicTeleLenConf);

Bedeutung: • Initialisierung einer PSD-Instanz

• Prüfen der Übergabe-Parameter

Übergabe-Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

pDynamicTeleLenConf DYNAMIC_TELE_LEN_CONF_ON

DYNAMIC_TELE_LEN_CONF_OFF

Die Maximalwerte stehen in der Datei p_c_config.h. Aktuelle Datenlängen der Instanz werden über die Funktion psd_GetConfigPtr(…) eingelesen.

Datenlängen der Instanz werden in p_c_config.h festgelegt

Rückgabe-Parameter: P_Byte

Wertebereich Bedeutung

INIT_INSTANCE_OK Initialisierung erfolgreich

5.1.2 psd_FParBuild(…)

Dem PSD wird beim Aufruf dieser Funktion der angegebenen Instanz, die F-Adresse (von den F-Parametern unabhängig ermitteltet), der maximale SIL der F-Applikation (in der F-Applikation fest hinterlegt) und der iPar-CRC (CRC3) dazu übergeben. Der Wertebereich der übergebenen Parameter wird vom PSD geprüft. Innerhalb der Funktion holt sich der PSD über die Funktion psd_GetFParPtr (…) die F-Parameter, prüft den CRC über den Parameterblock und führt eine Plausibilisierung durch. Die Übernahme der F-Parameter ist eingeklammert mit den Funktionen disable_int(..) und enable_int(..), um die Konsistenz bei der Parameter-Übernahme zu gewährleisten.

Funktion: psd_FParBuild(…)

Warnung

Aus der Sicht der F-Applikation ist nur INIT_INSTANCE_OK zulässig.

Requirement: PSD_09

Nicht zulässige Returnwerte müssen in den Zustand HARD_FAIL der F-Applikation führen.

Page 25: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-3 Ausgabe 05/2010

Prototyp: P_Byte psd_FParBuild (P_Word pInstance, Fw_FPar pFwPar, P_Word psd_CRC3);

Bedeutung: • PSD für die Instanz parametrieren

• Überprüfen der Übergabe-Parameter

• Einlesen und Prüfen der F-Parameter

Übergabe-Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

pFwPar Fw_FPar Geräteparameter

psd_CRC3 0 - 0xFFFF Übergabe der i-Par-CRC (CRC3)

Wenn „F_Check_iPar“=1 wird die iPar-CRC in die Berechung der FPar-CRC (CRC1) mit einbezogen. In diesem Fall darf psd_CRC3 nicht „0“ sein.

Wenn „F_Check_iPar“ = 0 oder „F_Block_ID“ = „001“ wird psd_CRC3 nicht ausgewertet.

(siehe PROFIsafe-Profil /1/, Kap. 8.1.4.3 und Kap. 8.1.5.2)

Rückgabe-Parameter: P_Byte

Wertebereich Bedeutung

FPAR_BUILD_OK Parametrierung erfolgreich

FPAR_F_DEST_ADD_MISMATCH Falsche Zieladresse

FPAR_F_DEST_ADD_NOT_VALID Ungültige Zieladresse (0 oder 0xFFFF)

FPAR_F_SOURCE_ADD_NOT_VALID Ungültige Quelladresse (0 oder 0xFFFF)

FPAR_F_WD_TIME_NULL Watchdogzeit ist ungültig (==0)

FPAR_F_SIL_ERR Übergebene SIL-Klasse zu hoch

FPAR_CRC1_ERR F-Par-CRC – Fehler

FPAR_BUILD_NOT_OK Parametrierung inkonsistent

Aufbau der Geräteparameter-Struktur:

bei 2-kanalige Generiervariante typedef struct Fw_FPar_t {

P_Word FDestAdd

P_Byte FSil

} Fw_FPar;

bei 1-kanalige Generiervariante typedef struct Fw_FPar_t {

P_Word FDestAdd

P_Word FDestAdd_inv

P_Byte FSil

P_Byte FSil_inv

} Fw_FPar;

Page 26: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-4 Ausgabe 05/2010

Warnung Aus der Sicht der F-Applikation ist nur

- FPAR_BUILD_RETURN_OK

- FPAR_F_DEST_ADD_MISMATCH

- FPAR_F_DEST_ADD_NOT_VALID

- FPAR_F_SOURCE_ADD_NOT_VALID

- FPAR_F_WD_TIME_NULL

- FPAR_F_SIL_ERR

- FPAR_CRC1_ERR

- FPAR_BUILD_NOT_OK

zulässig.

Requirement: PSD_09

Nicht zulässige Returnwerte müssen in den Zustand HARD_FAIL der F-Applikation führen.

5.1.3 psd_Config(…)

Der PSD stellt in dieser Funktion die Datenlängen der Instanz ein, die er entweder (abhängig von der Einstellung dieser Instanz) über die Funktion psd_GetConfigPtr(..) einliest oder die Längen direkt aus den Einstellungen in der Datei p_c_config.h nimmt. Die Übernahme der Datenlängen ist mit den Funktionen disable_int(..) und enable_int(..) eingeklammert, um die Konsistenz zu gewährleisten.

Funktion: psd_Config(…)

Prototyp: P_Byte psd_Config (P_Word pInstance);

Bedeutung: • Einstellung der Datenlängen einer PSD-Instanz

Übergabe-Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: P_Byte

Wertebereich Bedeutung

FPAR_CONFIG_OK Konfiguration erfolgreich

FPAR_CRC_LENGTH Ungültige Längenangabe

Warnung

Requirement: PSD_11

Der SIL muss dem SIL des F-Slaves entsprechen und muss unabhängig von den F-Parametern ermittelt werden.

Warnung

Requirement: PSD_12

Die F-Adresse muss in der F-Applikation hinterlegt sein. Ein Extrahieren der F-Adresse bzw. andere Werte aus den F-Parametern ist unzulässig

Page 27: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-5 Ausgabe 05/2010

5.1.4 psd_Run(…)

Die Funktion schaltet den PSD der angegebenen Instanz in den zyklischen Datenaustausch und liefert den internen Zustand des PSD zurück.

Funktion: psd_Run(…)

Prototyp: P_Byte psd_Run (P_Word pInstance);

Bedeutung: PSD-Instanz in den zyklischen Datenaustausch versetzen

Übergabe-Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: P_Byte

Wertebereich Bedeutung

PSD_DATAEX Fehlerfreier zyklischer Datenverkehr

Warnung

Aus der Sicht der F-Applikation ist nur PSD_DATAEX zulässig.

Requirement: PSD_09

Nicht zulässige Returnwerte müssen in den Zustand HARD_FAIL der F-Applikation führen.

5.1.5 psd_Stop(…)

Die Funktion ist dazu vorgesehen, um den zyklischen Datenaustausch des PSD der angegebenen Instanz zu beenden und eine erneute Parametrierung zuzulassen.

Funktion: psd_Stop(…)

Prototyp: P_Byte psd_Stop (P_Word pInstance);

Bedeutung: Zyklischen Datenaustausch einer Instanz beenden

Übergabe-Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: P_Byte

Wertebereich Bedeutung

PSD_PARAM Parametriert

Warnung Aus der Sicht der F-Applikation ist nur

- FPAR_CONFIG_OK

- FPAR_CRC_LENGTH

zulässig.

Requirement: PSD_09

Nicht zulässige Returnwerte müssen in den Zustand HARD_FAIL der F-Applikation führen.

Page 28: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-6 Ausgabe 05/2010

Warnung

Aus der Sicht der F-Applikation ist nur PSD_PARAM zulässig.

Requirement: PSD_09

Nicht zulässige Returnwerte müssen in den Zustand HARD_FAIL der F-Applikation führen.

5.1.6 psd_RecvFOutTele(…)

Die Funktion dient zur Übergabe der Zeitwerte im 1ms-Raster und zur Übernahme des Ausgangstelegrammes vom F-Master in den PSD für die angegebene Instanz. Der PSD liest die Ausgangsdaten über die Funktion psd_GetOutputTelegram(..) ein. Die Übernahme der Ausgangsdaten ist mit den Funktionen disable_int(..) und enable_int(..) eingeklammert, um die Konsistenz zu gewährleisten.

Funktion: psd_RecvFOutTele(…)

Prototyp: P_Byte psd_RecvFOutTele (P_Word pInstance, P_Word ClockValue,

P_Word ClockValueC2);

Bedeutung: Übernahme der 1ms-Zeitwerte und des zyklischen Ausgangs-telegramms in den PSD-OutData-Puffer. In der 1-kanaligen Generiervariante sind zum Erreichen der "2-Kanaligkeit" zwei unabhängige Hardware-Timer erforderlich. In der 2-kanaligen Generiervariante kommt der ClockValue vom Timer auf CPU1 und ClockValueC2 vom Timer auf CPU2.

Übergabe-Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

ClockValue 1msec-Zählerwert

ClockValue2 1msec-Zählerwert

Rückgabe-Parameter: P_Byte

Wertebereich Bedeutung

RECV_FOUT_TELE_OK Ausgangstelegramm übernommen

Warnung

Aus der Sicht der F-Applikation ist nur RECV_FOUT_TELE_OK zulässig.

Requirement: PSD_09

Nicht zulässige Returnwerte müssen in den Zustand HARD_FAIL der F-Applikation führen.

5.1.7 psd_RecvFOutTele_Invers(…)

Diese Funktion ist in der 1-kanaligen Variante zu verwenden. Die Funktion dient zur Übergabe der inversen Zeitwerte im 1ms-Raster und zur Erzeugung der inversen Daten in dem internen Speicher des PSD für die angegebene Instanz.

Page 29: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-7 Ausgabe 05/2010

Funktion: Psd_RecvFOutTele_Invers(…)

Prototyp: P_Byte psd_RecvFOutTele_invers (P_Word pInstance, P_Word ClockValue_inv,

P_Word ClockValueC2_inv);

Bedeutung: Übernahme der inversen 1ms-Zeitwerte und Aufbau der inversen Daten in den PSD-Puffer.

Übergabe-Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

ClockValue_inv Inverser 1msec-Zählerwert

ClockValue2_inv Inverser 1msec-Zählerwert

Rückgabe-Parameter: P_Byte

Wertebereich Bedeutung

RECV_FOUT_TELE_OK_INV Inversdaten erzeugt

Warnung

Aus der Sicht der F-Applikation ist nur RECV_FOUT_TELE_OK_INV zulässig.

Requirement: PSD_09

Nicht zulässige Returnwerte müssen in den Zustand HARD_FAIL der F-Applikation führen.

Warnung

Requirement: PSD_19 Die Rückgabewerte der verwendeten „inversen“ Funktionen sind entsprechend auszuwerten.

5.1.8 psd_GetFOutData(…)

Mit der Funktion werden die Ausgangstelegramme vom Master der angegebenen Instanz entsprechend dem PROFIsafe-Profil /1/ überprüft. Der F-Applikation werden die F-Ausgangsnutzdaten, die Steuerbytekennungen und der Fehlerstatus der Funktion zur Verfügung gestellt.

Page 30: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-8 Ausgabe 05/2010

Funktion: psd_GetFOutData(…)

Prototyp: P_Byte psd_GetFOutData (P_Word pInstance, Fw_OutputDataCB P_GLOBDAT_ATTR_POINTER* FFwOutputDataCB,

P_Byte P_GLOBDAT_ATTR_POINTER* pOutDataArray,

P_Byte pOutDataLen);

Bedeutung: Prüfen des Ausgangstelegramm, bilden der F-Ausgangsnutzdaten sowie Steuerbyte

Übergabe- Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

FFwOutputDataCB Zeiger auf eine Struktur zur Ablage von Steuerbytekennungen

pOutDataArray Zeiger auf einen Datenbereich zur Ablage der Nutzdaten

pOutDataLen Länge des Nutzdatenbereichs

Rückgabe-Parameter: P_Byte

Page 31: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-9 Ausgabe 05/2010

Warnung Aus der Sicht der F-Applikation sind bei den Rückgabewerten: F_OUTPUT_COMM_ERR, F_OUTPUT_WD_TIMEOUT, F_OUTPUT_PASSIVATED die F-Ausgangsnutzdaten entsprechend der Applikation in den sicheren Zustand zu versetzen.

Requirement: PSD_13 Bei: F_OUTPUT_COMM_ERR, F_OUTPUT_WD_TIMEOUT, F_OUTPUT_PASSIVATED muss die F-Applikation den sicheren Zustand für den Prozess sicherstellen.

Warnung Aus der Sicht der F-Applikation sind nur

- F_OUTPUT_OK

- F_OUTPUT_OLD_CONSNR

- F_OUTPUT_CLEAR

- F_OUTPUT_COMM_ERR

- F_OUTPUT_WD_TIMEOUT

- F_OUTPUT_PASSIVATED

zulässig.

Requirement: PSD_09 Nicht zulässige Returnwerte müssen in den Zustand HARD_FAIL der F-Applikation führen.

Wertebereich Bedeutung

F_OUTPUT_OK

F_OUTPUT_OLD_CONSNR

F-Telegramm vom Master ist gültig und die F-Ausgangsnutzdaten können von der F-Applikation übernommen werden.

F_OUTPUT_CLEAR Der PSD hat ein Null-Telegramm vom F-Host empfangen. Dieses Telegramm wird verworfen, die Zeitüberwachung läuft weiter. Die F-Ausgangsnutzdaten sind belassen. Die F-Applikation kann ihre letzten gültigen Ausgangsnutzdaten beibehalten.

F_OUTPUT_COMM_ERR Es wurde ein Fehler in der PROFIsafe-Kommunikation festgestellt. Die F-Ausgangsnutzdaten sind passiviert.

F_OUTPUT_WD_TIMEOUT Es wurde ein Timeout in der Kommuni-kation festgestellt. Die F-Ausgangsnutz-daten sind passiviert.

F_OUTPUT_PASSIVATED Es wurde ein Fehler in der Kommuni-kation festgestellt oder der F-Host hat im Steuerbyte das Bit_4 (FV-to-be-activated) auf 1 gesetzt.Die F-Ausgangs-nutzdaten sind passiviert.

Page 32: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-10 Ausgabe 05/2010

Steuerbytekennung

typedef struct Fw_OutputDataCB_t {

P_Byte CB_B0_iParEN

P_Byte CB_B1_OAReq

P_Byte CB_B4_activate_FV

} Fw_OutputDataCB;

5.1.9 psd_GetFOutData_invers(…)

Diese Funktion ist in der 1-kanaligen Variante zu verwenden. Mit dieser Funktion werden der F-Applikation die inversen F-Ausgangsnutzdaten, das inverse Steuerbyte und der inverse Fehlerstatus der angegebenen Instanz zur Verfügung gestellt.

Warnung

2-kanalige Generiervariante

Requirement: PSD_24

Die F-Applikation muss die Konsistenz der F-Ausgangsnutzdaten und Steuerbytekennungen der beiden Hardware Kanäle prüfen. Die Konsistenzprüfung hat vor Ausgabe an den Prozess zu erfolgen. Meldet der PSD einen Kommunikationsfehler, ist das empfangene Steuerbyte ungültig und die Steuerbytekennungen sind nicht auszuwerten.

Funktion: psd_GetFOutData_invers(…)

Prototyp: P_Byte psd_GetFOutData_invers (P_Word pInstance, Fw_OutputDataCB P_GLOBDAT_ATTR_POINTER* FFwOutputDataCB_inv,

P_Byte P_GLOBDAT_ATTR_POINTER* pOutDataArray_inv,

P_Byte pOutDataLen);

Bedeutung: Prüfen des Ausgangstelegramm, bilden der F-Ausgangsnutzdaten sowie Steuerbyte

Übergabe- Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

FFwOutputDataCB_inv Zeiger auf eine Struktur zur Ablage von inversen Steuerbytekennungen

pOutDataArray_inv Zeiger auf einen Datenbereich zur Ablage der inversen Nutzdaten

pOutDataLen Länge des Nutzdatenbereichs

Rückgabe-Parameter: P_Byte

Page 33: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-11 Ausgabe 05/2010

Warnung Aus der Sicht der F-Applikation sind bei den Rückgabewerten: F_OUTPUT_COMM_ERR_INV, F_OUTPUT_WD_TIMEOUT_INV, F_OUTPUT_PASSIVATED_INV die F-Ausgangsnutzdaten entsprechend der Applikation in den sicheren Zustand zu versetzen.

Requirement: PSD_13 Bei: F_OUTPUT_COMM_ERR, F_OUTPUT_WD_TIMEOUT, F_OUTPUT_PASSIVATED muss die F-Applikation den sicheren Zustand für den Prozess sicherstellen.

Warnung Aus der Sicht der F-Applikation sind nur

- F_OUTPUT_OK_INV

- F_OUTPUT_OLD_CONSNR_INV

- F_OUTPUT_CLEAR_INV

- F_OUTPUT_COMM_ERR_INV

- F_OUTPUT_WD_TIMEOUT_INV

- F_OUTPUT_PASSIVATED_INV

Zulässig.

Requirement: PSD_09 Nicht zulässige Returnwerte müssen in den Zustand HARD_FAIL der F-Applikation führen.

Wertebereich Bedeutung

F_OUTPUT_OK_INV

F_OUTPUT_OLD_CONSNR_INV

F-Telegramm vom Master ist gültig und die inversen F-Ausgangsnutzdaten können von der F-Applikation über-nommen werden.

F_OUTPUT_CLEAR_INV Der PSD hat ein Null-Telegramm vom F-Host empfangen. Dieses Telegramm wird verworfen, die Zeitüberwachung läuft weiter. Die F-Ausgangsnutzdaten sind belassen. Die F-Applikation kann ihre letzten gültigen Ausgangsnutzdaten beibehalten.

F_OUTPUT_COMM_ERR_INV Es wurde ein Fehler in der PROFIsafe-Kommunikation festgestellt. Die inversen F-Ausgangsnutzdaten sind passiviert.

F_OUTPUT_WD_TIMEOUT_INV Es wurde ein Timeout in der Kommuni-kation festgestellt. Die inversen F-Aus-gangsnutzdaten sind passiviert.

F_OUTPUT_PASSIVATED_INV Es wurde ein Fehler in der Kommuni-kation festgestellt oder der F-Host hat im Steuerbyte das Bit_4 (FV-to-be-activated) auf 1 gesetzt. Die inversen F-Ausgangsnutzdaten sind passiviert.

Page 34: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-12 Ausgabe 05/2010

Steuerbytekennung

typedef struct Fw_OutputDataCB_t {

P_Byte CB_B0_iParEN

P_Byte CB_B1_OAReq

P_Byte CB_B4_activate_FV

} Fw_OutputDataCB_inv;

Warnung

Requirement: PSD_19 Die Rückgabewerte der verwendeten „inversen“ Funktionen sind entsprechend auszuwerten.

5.1.10 psd_SetFInData(…)

Die Funktion übernimmt von der F-Applikation die Statuskennungen und die F-Eingangsnutzdaten der angegebenen Instanz in einen PSD-internen Puffer.

Funktion psd_SetFInData()

Prototyp: P_Byte psd_SetFInData (P_Word pInstance, const Fw_InputtDataSB P_GLOBDAT_ATTR_POINTER* FFwInputDataSB,

const P_Byte P_GLOBDAT_ATTR_POINTER* pInDataArray,

P_Byte pInDataLen);

Bedeutung: Übergabe der F-Eingangsnutzdaten sowie der Statusbyte-kennungen in einen internen PSD –Puffer

Übergabe- Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

FFwInDataSB Zeiger auf eine Struktur zur Übernahme von Statusbyte-kennungen

pInDataArray Zeiger auf einen Datenbereich zur Übernahme der Eingangsnutzdaten

pInDataLen Länge des Eingangsnutzdaten

Rückgabe-Parameter: P_Byte

Wertebereich Bedeutung SEND_FIN_DATA_OK

Daten wurden übernommen

Warnung

1-kanalige Generiervariante

Requirement: PSD_18

Die F-Applikation muss die Konsistenz der F-Ausgangsnutzdaten sowie Steuerbytekennungen der beiden logischen Kanäle prüfen. Die Konsistenzprüfung hat vor Ausgabe an den Prozess zu erfolgen. Meldet der PSD einen Kommunikationsfehler, ist das empfangene Steuerbyte ungültig und die Steuerbytekennungen sind nicht auszuwerten.

Page 35: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-13 Ausgabe 05/2010

Warnung

Aus der Sicht der F-Applikation ist nur SEND_FIN_DATA_OK zulässig.

Requirement: PSD_09

Nicht zulässige Returnwerte müssen in den Zustand HARD_FAIL der F-Applikation führen.

Statusbytekennung

typedef struct Fw_InputDataSB_t {

P_Byte SB_B0_iParOk

P_Byte SB_B1_DeviceFault

P_Byte CB_B4_FVactivated

} Fw_InputDataSB;

5.1.11 psd_SetFInData_invers(…)

Diese Funktion ist in der 1-kanaligen Variante zu verwenden. Die Funktion übernimmt von der F-Applikation die inversen F-Eingangsnutzdaten sowie Statusbytekennungen der angegebenen Instanz in den internen Puffer des PSD.

Funktion psd_SetFInData_invers()

Prototyp: P_Byte psd_SetFInData_invers (P_Word pInstance, const Fw_InputtDataSB P_GLOBDAT_ATTR_POINTER* FFwInputDataSB_inv,

const P_Byte P_GLOBDAT_ATTR_POINTER* pInDataArray_inv,

P_Byte pInDataLen);

Bedeutung: Übergabe der F-Eingangsnutzdaten sowie der Statusbyte-kennungen in einen internen PSD -Puffer

Übergabe- Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

FFwInDataCB_inv Zeiger auf eine Struktur zur Übernahme der inversen Statusbyte-kennungen

pInDataArray_inv Zeiger auf einen Datenbereich zur Übernahme der inversen Eingangs-nutzdaten

pInDataLen Länge des Eingangsnutzdaten

Rückgabe-Parameter: P_Byte

Wertebereich Bedeutung SEND_FIN_DATA_OK_INV

Daten wurden übernommen

Warnung

Aus der Sicht der F-Applikation ist nur SEND_FIN_DATA_OK_INV zulässig.

Requirement: PSD_09

Nicht zulässige Returnwerte müssen in den Zustand HARD_FAIL der F-Applikation

Page 36: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-14 Ausgabe 05/2010

führen.

Warnung

Requirement: PSD_19

Die Rückgabewerte der verwendeten „inversen“ Funktionen sind entsprechend auszuwerten.

5.1.12 psd_SendFInTele(…)

Die Funktion bildet aus den von der F-Applikation übergebenen F-Eingangsnutzdaten und Statusbyte-Kennungen das Eingangstelegramm der angegebenen Instanz und übergibt dieses dem Stack-Interface.

Funktion: psd_SendFInTele()

Prototyp: P_Byte psd_SendFInTele(P_Word pinstance);

Bedeutung: Bilden und versenden des Eingangstelegramm

Übergabe-Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: P_Byte

Wertebereich Bedeutung

SEND_FIN _TELE_OK Eingangstelegramm versendet

Warnung

Aus der Sicht der F-Applikation ist nur SEND_FIN_TELE_OK zulässig.

Requirement: PSD_09

Nicht zulässige Returnwerte müssen in den Zustand HARD_FAIL der F-Applikation führen.

5.1.13 psd_SendFInTele_invers(…)

Diese Funktion ist in der 1-kanaligen Variante zu verwenden. Die Funktion bildet aus den von der F-Applikation übergebenen F-Eingangsnutzdaten und Statusbyte-Kennungen das inverse Eingangstelegramm der angegebenen Instanz.

Page 37: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-15 Ausgabe 05/2010

Funktion: psd_SendFInTele_invers()

Prototyp: P_Byte psd_SendFInTele_invers(P_Word pinstance);

Bedeutung: Bilden und versenden des Eingangstelegramm

Übergabe-Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: P_Byte

Wertebereich Bedeutung

SEND_FIN _TELE_OK_INV Eingangstelegramm versendet

Warnung

Aus der Sicht der F-Applikation ist nur SEND_FIN_TELE_OK_INV zulässig.

Requirement: PSD_09

Nicht zulässige Returnwerte müssen in den Zustand HARD_FAIL der F-Applikation führen.

Warnung

Requirement: PSD_19 Die Rückgabewerte der verwendeten „inversen“ Funktionen sind entsprechend auszuwerten.

5.2 Notwendige PSD-Schnittstellenvariable

5.2.1 pSafetyVar

Die Schnittstellenvariable pSafetyVar ermöglicht der F-Applikation im 1-kanaligen Fall dem PSD ein HARD_FAIL mitzuteilen. Ein Beschreiben von pSafetyVar mit einem Wert ungleich P_SAFETY_CONST_OK führt im PSD zu einer CRC-Verfälschung des Eingangstelegramms.

Warnung

Requirement: PSD_20

Geht die F-Applikation in den Zustand HARD_FAIL, dann muss die Verfälschungsvariable PSD_safety_var auf den Wert P_SAFETY_CONST_FALSE gesetzt werden.

5.3 Notwendige zu implementierende Funktionen

5.3.1 hard_err(…)

Der PSD setzt im Fehlerfall den PSD-Zustand PSD_HARD_FAIL. Danach ruft der PSD die Funktion hard_err(…) in p_c_fapplication.c auf, damit die F-Applikation auf den Fehlerfall reagieren kann.

Page 38: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-16 Ausgabe 05/2010

Funktion: hard_err(…)

Prototyp: void hard_err (P_Word pInstance);

Bedeutung: spezifische Reaktion der F-Applikation auf schwere Fehler.

Übergabe-Parameter: Wertebereich Bedeutung

pInstance INST_01 … INST_X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: Wertebereich Bedeutung

keine

Warnung

Requirement: PSD_10

Die Funktion hard_err(…) ist von der F-Applikation zu implementieren. Es muss für alle verwendeten Instanzen in einen HALT-Zustand führen.

Warnung

Requirement: PSD_17

Alle Interfacefunktionen außer hard_err(...) müssen zum PSD zurückkehren.

5.3.2 psd_GetFParPtr(…)

Der Prototyp der Funktion steht in der Datei p_c_si.h und muß von der F-Applikation implementiert werden. Sie stellt dem PSD einen Zeiger auf die F-Parameter der angegebenen Instanz zur Verfügung. Der Puffer muss vom Stack-Interface bereitgestellt werden.

Funktion psd_GetFParPtr(..)

Prototyp: P_Byte* psd_GetFParPtr (P_Word pInstance);

Bedeutung: Der PSD fordert vom Stack-Interface einen Zeiger auf die F-Parameter der Instanz an.

Übergabe- Parameter: Wertebereich Bedeutung

pInstance INST_01 … INST_X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: Wertebereich Bedeutung

P_Byte* NIL

!= NIL

Kein Zeiger auf Puffer für die F-Parameter der Instanz vorhanden.

Zeiger auf Puffer für die F-Parameter der Instanz vorhanden.

5.3.3 psd_GetConfigPtr(...)

Der Prototyp der Funktion steht in der Datei p_c_si.h und muß von der F-Applikation implementiert werden. Sie stellt dem PSD einen Zeiger auf die Struktur mit den Datenlängen der angegebenen Instanz zur Verfügung. Die Struktur muss vom Stack-Interface bereitgestellt werden.

Page 39: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-17 Ausgabe 05/2010

Funktion psd_GetConfigPtr(..)

Prototyp: P_Byte* psd_GetConfigPtr (P_Word pInstance);

Bedeutung: Der PSD fordert vom Stack-Interface einen Zeiger auf die Datenlängen der Instanz an.

Übergabe- Parameter: Wertebereich Bedeutung

pInstance INST_01 … INST_0X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: Wertebereich Bedeutung

P_Byte* NIL

!= NIL

Kein Zeiger auf Puffer für die Datenlängen der Instanz vorhanden.

Zeiger auf Puffer für die Datenlängen der Instanz vorhanden.

Der Puffer besteht aus einem Array mit 2 Bytes. Das 1. Byte enthält die Länge des Input-Telegramms. Das 2. Byte enthält die Länge des Output-Telegramms. Der PSD ermittelt entsprechend seiner Parametrierung die Nutzdatenlängen.

5.3.4 psd_GetOutputTelegram(...)

Der Prototyp der Funktion steht in der Datei p_c_si.h und muß von der F-Applikation implementiert werden. Sie stellt dem PSD einen Zeiger auf die Ausgangsdaten der angegebenen Instanz zur Verfügung. Der Puffer muss vom Stack-Interface bereitgestellt werden.

Funktion psd_GetOutput_Telegram(..)

Prototyp: P_Byte* psd_GetOutput_Telegram (P_Word pInstance);

Bedeutung: Der PSD fordert vom Stack-Interface einen Zeiger auf Ausgangsdaten der Instanz an.

Übergabe- Parameter: Wertebereich Bedeutung

pInstance INST_01 … INST_X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: Wertebereich Bedeutung

P_Byte* NIL

!= NIL

Kein Zeiger auf Puffer für die Ausgangsdaten der Instanz vorhanden.

Zeiger auf Puffer für die Ausgangsdaten der Instanz vorhanden.

5.3.5 psd_GetInputBuffer(...)

Der Prototyp der Funktion steht in der Datei p_c_si.h und muß von der F-Applikation implementiert werden. Sie stellt dem PSD einen Zeiger auf die Eingangsdatenbereich der angegebenen Instanz zur Verfügung. Der Puffer muss vom Stack-Interface bereitgestellt werden.

Page 40: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-18 Ausgabe 05/2010

Funktion psd_GetInputBuffer(..)

Prototyp: P_Byte* psd_GetInputBuffer

(P_Word pInstance

P_Byte InTeleLen*);

Bedeutung: Der PSD fordert vom Stack-Interface einen Zeiger auf den Eingangsdatenbereich der Instanz an.

Übergabe- Parameter: Wertebereich Bedeutung

pInstance INST_01 … INST_X

X < = NOF_INSTANCES

Instanz-ID

InTeleLen Länge des Eingangsdatenbereichs

Rückgabe-Parameter: Wertebereich Bedeutung

P_Byte* NIL

!= NIL

Kein Zeiger auf Puffer für den Eingangsdatenbereich der Instanz vorhanden.

Zeiger auf Puffer für den Eingangsdatenbereich der Instanz vorhanden.

5.3.6 psd_InputSendAck(...)

Der Prototyp der Funktion steht in der Datei p_c_si.h und muß von der F-Applikation implementiert werden. Sie teilt dem Stack-Interface mit, dass die Eingangs- und F-daten durch den PSD in den Eingangsdatenbereich der angegebenen Instanz (durch Stack-Interface über die Funktion psd_Get-InputBuffer() vorgegeben) kopiert worden sind.

Funktion psd_InputSendAck(..)

Prototyp: P_Byte psd_InputSendAck (P_Word pInstance);

Bedeutung: Der PSD teilt dem Stack-Interface mit, dass die Eingangsdaten in den Eingangsdatenbereich der Instanz eingetragen wurden.

Übergabe- Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: Wertebereich Bedeutung

P_Byte FIN_TELE_UPDATE_OK

FIN_TELE_UPDATE_ERR

Das Eingangstelegramm wurde vom Stack-Interface übernommen.

Fehler bei der Übernahme des Eingangstelegramms

5.3.7 enable_int(...)

Der Prototyp der Funktion steht in der Datei p_c_application.h und muß von der F-Applikation implementiert werden. Der PSD zeigt an, dass die Interruptsperre für diese Instanz wieder freigeben werden soll.

Page 41: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-19 Ausgabe 05/2010

Funktion Enable_int(..)

Prototyp: void enable_int (P_Word pInstance);

Bedeutung: Der PSD teilt dem Stack- Interface mit, dass die Interruptsperre zur Instanz wieder aufgehoben werden kann.

Übergabe- Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: Wertebereich Bedeutung

keine

5.3.8 disable_int (..)

Der Prototyp der Funktion steht in der Datei p_c_application.h und muß von der F-Applikation implementiert werden. Der PSD fordert eine Interruptsperre der angegebenen Instanz an, da er auf "fremde" Daten zugreifen muß.

Funktion Enable_int(..)

Prototyp: void disable_int (P_Word pInstance);

Bedeutung: Der PSD forder vom Stack- Interface eine Interruptsperre zur Instanz an, da er auf Daten zugreifen möchte.

Übergabe- Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: Wertebereich Bedeutung

keine

5.4 Notwendige zu implementierende Funktionen bei der 2-kanaligen Generiervariante

In der 2-kanaligen Generiervariante benötigt der PSD für den Abgleich der Daten einen Synchronisationsschnittstelle.

Die Prototypen der Funktionen sind in der Datei p_c_fapplication.h definiert und ermöglicht dem PSD den Zugriff auf die von der F-Applikation zur Verfügung gestellte Synchronisationsschnittstelle. Für die Anpassung steht die Datei p_c_fapplication.c zur Verfügung.

5.4.1 psd_OutTransfer(…)

Diese Funktion wird vom PSD in der Funktion psd_RecvFOutTele() aufgerufen. Sie initiiert die Übertragung des PSD-Zustands an den anderen Kanal Instanz-spezifisch.

Page 42: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-20 Ausgabe 05/2010

Funktion psd_OutTransfer

Prototyp: P_Byte psd_OutTransfer

(P_Word pInstance,

P_Byte State);

Bedeutung: Der PSD übergibt dem Sync.-Interface den PSD-Zustand einer Instanz. Die Funktion initiiert die Übertragung zum zweiten Kanal, damit dieser zu einem späteren Zeitpunkt mit der Funktion psd_OutSync() auf den PSD-Zustand zugreifen kann.

Übergabe- Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

State Status, der zu übertragen ist

Rückgabe-Parameter: Wertebereich Bedeutung

P_Byte TRANSFER_OK

TRANSER_NOT_OK

Sync.-Interface meldet alles ok

Sync-Interface meldet Fehler

5.4.2 psd_OutSync(…)

Diese Funktion wird vom PSD in der Funktion psd_GetFOutData() aufgerufen. Er übergibt dabei Instanz-spezifisch einen Zeiger auf ein Byte. Hier trägt die Funktion den PSD-Zustand ein, welcher in der Zwischenzeit über das Sync.-Interface vom zweiten Kanal empfangen wurde.

Funktion psd_OutSync

Prototyp: P_Byte psd_OutSync

(P_Word pInstance,

P_Byte* State);

Bedeutung: Der PSD übergibt einen Zeiger auf Byte. Die Funktion trägt Instanz-spezifisch den PSD-Zustand ein, den sie über das Sync.-Interface vom zweiten Kanal empfangen hat.

Übergabe- Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

*State Zeiger auf ein Statusbyte

Rückgabe-Parameter: Wertebereich Bedeutung

P_Byte SYNC_OK

SYNC_NOT_OK

Sync.-Interface meldet alles ok

Sync.-Interface meldet Fehler

Warnung

Requirement: PSD_25

Die F-Applikation muss bei 2-kanaliger PSD-Generierung ein Synchronisationsinterface zur Verfügung stellen. Die Spiegelung der zu tauschenden Daten ist auszuschließen.

Page 43: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-21 Ausgabe 05/2010

5.4.3 psd_InTransfer(…)

Diese Funktion wird vom PSD in der Funktion psd_SetFInData() aufgerufen. Sie initiiert die Übertragung des Eingangstelegramm-CRCs an den anderen Kanal Instanz-spezifisch.

Funktion psd_InTransfer

Prototyp: P_Byte psd_InTransfer

(P_Word pInstance,

P_DWord CRCValue);

Bedeutung: Der PSD übergibt dem Sync.-Interface den CRC2 des Eingangstelegramms einer Instanz. Die Funktion initiiert die Übertragung zum zweiten Kanal, damit dieser zu einem späteren Zeitpunkt mit der Funktion psd_InSync() auf den CRC2 zugreifen kann.

Übergabe- Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

CRCValue CRC-Wert, der zu übertragen ist

Rückgabe-Parameter: Wertebereich Bedeutung

P_Byte TRANSFER_OK

TRANSER_NOT_OK

Stack-Interface meldet alles ok

Stack-Interface meldet Fehler

5.4.4 psd_InSync(…)

Diese Funktion wird vom PSD in der Funktion psd_SendFInTele() aufgerufen. Er übergibt dabei Instanz-spezifisch einen Zeiger auf ein DWord. Hier trägt die Funktion den CRC-Wert ein, welcher in der Zwischenzeit über das Sync.-Interface vom zweiten Kanal empfangen wurde.

Funktion psd_InSync

Prototyp: P_Byte psd_InSync

(P_Word pInstance,

P_DWord* CRCValue);

Bedeutung: Der PSD übergibt einen Zeiger auf DWord. Die Funktion trägt Instanz-spezifisch den CRC2 des Eingangstelegramms ein, den sie über das Sync.-Interface vom zweiten Kanal empfangen hat.

Übergabe- Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

*CRCValue Zeiger auf einen CRC-Wert

Rückgabe-Parameter: Wertebereich Bedeutung

P_Byte SYNC_OK

SYNC_NOT_OK

Sync.-Interface meldet alles ok

Sync.-Interface meldet Fehler

Page 44: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-22 Ausgabe 05/2010

Warnung

Requirement: PSD_25

Die F-Applikation muss bei 2-kanaliger PSD-Generierung ein Synchronisationsinterface zur Verfügung stellen. Die Spiegelung der zu tauschenden Daten ist auszuschließen.

5.5 Optionale PSD-Schnittstellenfunktionen

Warnung

Requirement: PSD_17

Alle Interfacefunktionen außer hard_err(...) müssen zum PSD zurückkehren.

5.5.1 Hilfsfunktionen für die CRC Berechnung

5.5.1.1 psd_CRC16(…)

Die Funktionen berechnet eine 16-Bit CRC über einen Datenbereich. Dabei wird das Generator-Polynom 0x14EAB verwendet.

Funktion: psd_CRC16(…)

Prototyp: P_Word psd_CRC16

(P_DWord pLength,

P_Word PStartValue,

const P_Byte pData[],

P_Byte pCalcDirection);

Bedeutung: CRC16 Berechnung über einen beliebigen Speicherbereich.

Übergabe-Parameter: Wertebereich Bedeutung

pLength Länge der Daten für Berechnung

PStartValue Start-CRC16-Wert für Berechnung

pData Zeiger auf die Daten zur Berechnung

pCalcDirection FORWARD

BACKWARD

Es wird ab der Anfangsadresse der Daten der CRC16-Wert über die Werte entsprechend der Längenangabe in aufsteigender Reihenfolge berechnet.

Es wird von der Endadresse der Daten der CRC16-Wert über die Werte entsprechend der Längenangabe in absteigender Reihenfolge berechnet.

Rückgabe-Parameter: P_Word

Wertebereich Bedeutung

0 – 0xFFFF 16Bit-CRC-Wert

Page 45: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-23 Ausgabe 05/2010

5.5.1.2 psd_CRC32(…)

Die Funktionen berechnet eine 32-Bit CRC über einen Datenbereich. Dabei wird das Generator-Polynom 0x1F4ACFB13 verwendet.

Funktion: psd_CRC32(…)

Prototyp: P_DWord psd_CRC32

(P_DWord pLength,

P_DWord PStartValue,

const P_Byte pData[],

P_Byte pCalcDirection);

Bedeutung: CRC32 Berechnung über einen beliebigen Speicherbereich.

Übergabe-Parameter: Wertebereich Bedeutung

pLength Länge der Daten für Berechnung

PStartValue Start-CRC32-Wert für Berechnung

pData Zeiger auf die Daten zur Berechnung

pCalcDirection FORWARD

BACKWARD

Es wird ab der Anfangsadresse der Daten der CRC32-Wert über die Werte entsprechend der Längenangabe in aufsteigender Reihenfolge berechnet.

Es wird von der Endadresse der Daten der CRC32-Wert über die Werte entsprechend der Längenangabe in absteigender Reihenfolge berechnet.

Rückgabe-Parameter: P_DWord

Wertebereich Bedeutung

0 – 0xFFFF FFFF 32Bit-CRC-Wert

5.5.2 psd_GetState(…)

Mit der Funktion kann der aktuelle PSD-Zustand abgefragt werden.

Funktion: psd_GetState(…)

Prototyp: P_Byte psd_GetState(P_Word pinstance);

Bedeutung: PSD-Zustand der Instanz ausgeben

Übergabe-Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: P_Byte

Wertebereich Bedeutung

PSD_INIT Initialisiert

PSD_PARAM Parametriert

PSD_DATAEX Fehlerfreier zyklischer Datenverkehr

PSD_HARD_FAIL Schwerer interner Fehler �

Aufruf der Funktion hard_err(...)

Page 46: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-24 Ausgabe 05/2010

5.5.3 psd_GetFPar(…)

Mit dieser Funktion kann der eingestellte SIL-Wert und der F_iPar_CRC ausgelesen werden.

Funktion: psd_GetFPar(…)

Prototyp: P_Byte psd_GetFPar(P_Word pInstance

Fw_PsdFPar* pFwFParam);

Bedeutung: Auslesen des SIL-Wertes und des F_iPar_CRC -Wertes

Übergabe-Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

pFwFParam Zeiger auf Geräteparameter-struktur

Rückgabe-Parameter: Wertebereich Bedeutung

P_Byte GET_FPAR_OK Aufruf korrekt

Aufbau der Geräteparameter-Struktur:

bei 2-kanalige Generiervariante: typedef struct Fw_PsdFPar_t {

P_DWord FiParCRC

P_Byte FSil

} Fw_PsdFPar;

bei 1-kanalige Generiervariante: typedef struct Fw_PsdFPar_t {

P_DWord FiParCRC

P_DWord FiParCRC_inv

P_Byte FSil

P_Byte FSil_inv

} Fw_PsdFPar;

5.5.4 Inverse PSD Funktionen

In der 1-kanaligen Generiervariante stellt der PSD zu jeder Hauptfunktion eine entsprechende inverse Funktion zur Verfügung. Die nachfolgend beschriebenen Funktionen unterstützen eine 1-kanalige Softwarearchitektur der F-Applikation. Die Funktionen liefern die Ergebnisse des inversen Berechnungspfad des PSD. Die Bedeutung der Rückgabewerte ist den Hauptfunktionen zu entnehmen.

Warnung

Requirement: PSD_19

Die Rückgabewerte der verwendeten „inversen“ Funktionen sind entsprechend auszuwerten.

Page 47: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-25 Ausgabe 05/2010

5.5.4.1 psd_InitInstance_Invers(…)

Funktion: psd_InitInstance_Invers(…)

Prototyp: P_Byte psd_InitInstance_Invers (P_Word pInstance);

Bedeutung: Rückgabe des inversen Initialisierungs-Status der PSD-Instanz.

Übergabe-Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: P_Byte

Wertebereich Bedeutung

INIT_INSTANCE_OK_INV Initialisierung erfolgreich

5.5.4.2 psd_FParBuild_Invers(…)

Funktion: psd_FParBuild_Invers(…)

Prototyp: P_Byte psd_FParBuild_Invers (P_Word pInstance);

Bedeutung: Rückgabe des inversen Parameter-Status der PSD-Instanz.

Übergabe-Parameter: Wertebereich Bedeutung

pInstance INST_01, …, INST_0X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: P_Byte

Wertebereich Bedeutung

FPAR_BUILD_OK_INV Parametrierung erfolgreich

FPAR_F_DEST_ADD_MISMATCH_INV Falsche Zieladresse

FPAR_F_DEST_ADD_NOT_VALID_INV Ungültige Zieladresse

FPAR_F_SOURCE_ADD_NOT_VALID_INV Ungültige Quelladresse

FPAR_F_WD_TIME_NULL_INV Watchdogzeit ist ungültig (==0)

FPAR_F_SIL_ERR _INV Übergebene SIL-Klasse zu hoch

FPAR_CRC1_ERR _INV Die CRC der F-Parameter ist falsch

FPAR_BUILD_NOT_OK_INV Parametrierung inkonsistent

5.5.4.3 psd_Config_Invers(…)

Funktion: psd_Config_Invers(…)

Prototyp: P_Byte psd_Config_Invers (P_Word pInstance);

Bedeutung: Rückgabe des inversen Konfigurations-Status der PSD-Instanz.

Übergabe-Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: P_Byte

Wertebereich Bedeutung

FPAR_CONFIG_OK_INV Konfiguration erfolgreich

FPAR_CRC_LENGTH_INV Ungültige Längenangabe

Page 48: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-26 Ausgabe 05/2010

5.5.4.4 psd_Run_Invers(…)

Funktion: psd_Run_Invers(…)

Prototyp: P_Byte psd_Run_Invers (P_Word pInstance);

Bedeutung: Rückgabe des inversen PSD-Status der PSD-Instanz.

Übergabe-Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: P_Byte

Wertebereich Bedeutung

PSD_DATAEX_INV Fehlerfreier zyklischer Datenverkehr

5.5.4.5 psd_Stop_Invers(…)

Funktion: psd_Stop_Invers(…)

Prototyp: P_Byte psd_Stop (P_Word pInstance);

Bedeutung: Rückgabe des inversen PSD-Status der PSD-Instanz.

Übergabe-Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: P_Byte

Wertebereich Bedeutung

PSD_PARAM_INV Parametriert

5.5.4.6 psd_GetFPar_Invers(…)

Funktion: psd_GetFPar_Invers(…)

Prototyp: P_Byte psd_GetFPar_Invers(P_Word pInstance);

Bedeutung: Rückgabe der inversen Quittung von psd_GetFPar() der PSD-Instanz.

Übergabe-Parameter: Wertebereich Bedeutung

pInstance INST_01…INST_X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: Wertebereich Bedeutung

P_Byte GET_FPAR_OK_INV Aufruf korrekt

5.5.4.7 psd_GetState_Invers(…)

Funktion: psd_GetState_Invers(…)

Prototyp: P_Byte psd_GetState_Invers (P_Word pinstance);

Bedeutung: Rückgabe des inversen PSD-Zustandes der PSD-Instanz.

Übergabe-Parameter: Wertebereich Bedeutung

pInstance INST_01, …, INST_0X

X < = NOF_INSTANCES

Instanz-ID

Rückgabe-Parameter: P_Byte

Page 49: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 5-27 Ausgabe 05/2010

Wertebereich Bedeutung

PSD_INIT_INV Initialisiert

PSD_PARAM_INV Parametriert

PSD_DATAEX_INV Fehlerfreier zyklischer Datenverkehr

PSD_HARD_FAIL_INV Schwerer interner Fehler �

Aufruf der Funktion hard_err(...)

Page 50: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 6-28 Ausgabe 05/2010

6 Konfiguration des PSD

Die nachfolgend beschriebenen Generierparameter (Compilerschalter) befinden sich in den PSD-Dateien p_c_config.h.

6.1 Generiervariante

#undef REDUNDANT

1-kanalige Generiervariante Einsatz des PSD auf einer 1-kanaligen Hardwarearchitektur. Der PSD legt sämtliche interne Daten normal und invers ab. Die PSD-Funktionen rechnen auf den normalen und den inversen Daten mit unterschiedlichen Algorithmen.

#define REDUNDANT

2-kanalige Generiervariante Einsatz des PSD auf einer 2-kanaligen Hardwarearchitektur. Die Verarbeitung erfolgt 2-kanalig. Der Datenabgleich erfolgt über das Synchronisations-Interface.

6.2 Speicherplatzoptimierung für CRC-Tabellen und Funktionen

#undef CRC32

Tabellen und Funktionen, die ausschliesslich für die 4-Byte CRC benötigt werden, werden nicht generiert. Der PSD unterstützt nicht den für die zyklischen Ein- bzw. Ausgangstelegramme verwendeten 32Bit-CRC, entsprechend dem PROFIsafe-Profil im V1-Mode und V2-Mode.

#define CRC32

Tabellen und Funktionen, die ausschliesslich für die 4-Byte CRC benötigt werden, werden generiert. Der PSD unterstützt den 32Bit-CRC für die zyklischen Ein- bzw. Ausgangstelegramme, entsprechend dem PROFIsafe-Profil im V1-Mode und V2-Mode.

Page 51: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 6-29 Ausgabe 05/2010

6.3 Instanzangabe #define NOF_INSTANCES 1

Anzahl von Instanzen.

Es ist für jede benutzte Instanz die Längenangabe von F-Ausgangs- und F-Eingangsnutzdaten in p_c_config.h erforderlich.

Wertebereich: 1 – 32

6.4 F-Ausgangsnutzdatenbereich

#define OUTDATA_MAX_LEN_INST_01 2 : #define OUTDATA_MAX_LEN_INST_32 X

Mit den Defines werden die maximale Anzahl der zyklischen F-Ausgangsnutzdaten für jede benutzte Instanz eingestellt. Eine 0 bedeutet, das keine Augangsnutzdaten verwendet werden.

Wertebereich: 0 – 12 Bytes für 2-Byte-CRC im V1-Mode

0 – 12 Bytes für 3-Byte-CRC im V2-Mode

0 – 122 Bytes für 4-Byte-CRC im V1-Mode

0 – 123 Bytes für 4-Byte-CRC. im V2-Mode

6.5 F-Eingangsnutzdatenbereich

#define INDATA_MAX_LEN_INST_01 2 : #define INDATA_MAX_LEN_INST_32 X

Mit den Defines werden die maximale Anzahl der zyklischen F-Eingangsnutzdaten für jede benutzte Instanz eingestellt. Eine 0 bedeutet, das keine Eingangsnutzdaten verwendet werden.

Wertebereich: 0 – 12 Bytes für 2-Byte-CRC im V1-Mode

0 – 12 Bytes für 3-Byte-CRC im V2-Mode

0 – 122 Bytes für 4-Byte-CRC im V1-Mode

0 – 123 Bytes für 4-Byte-CRC. im V2-Mode

Page 52: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 6-30 Ausgabe 05/2010

#undef INST_ACCESS_POINTER

Bei Instanzen >1 erfolgt die Adressierung auf die PSD-Instanzdaten über Array-Zugriffe. Je nach Compilertyp kann dies eine schnellere Zugriffsmethode bedeuten. Bei nur einer Instanz erfolgt die Adressierung immer über Array-Zugriffe, wobei der Array-Index "0" als Konstante verwendet wird.

#define INST_ACCESS_POINTER

Bei Instanzen >1 erfolgt die Adressierung auf die PSD-Instanzdaten über Pointer-Zugriffe erfolgen. Je nach Compilertyp kann dies eine schnellere Zugriffsmethode bedeuten.

6.6 Speicher-Attribute

Die Speicher-Attribute sind abhängig von der verwendeten Toolkette. Die Schlüsselworte sind entsprechend zu verwenden.

#define P_GLOBDAT_ATTR_POINTER

Speicher-Attribut für Pointer, mit denen auf PSD-globale Variable zugegriffen wird.

#define P_GLOBDAT_ATTR

Speicher-Attribut für die Ablage der PSD-globalen Variablen.

#define P_GLOBDAT_I_ATTR

Speicher-Attribut für die Ablage der PSD-globalen Variablen, die (im 2-kanaligen Fall) auf beiden Kanälen unterschiedlich sein können.

#define CRC_DAT_ATTR

Speicher-Attribut für die Ablage der CRC-Tabellen.

#define P_CODE_ATTR const

Speicher-Attribut für den Code-Bereich.

6.7 Speicher-Modell für die CRC-Tabellen

Dieser Schalter bewirkt das Ein-/Ausschalten eines Speicher-Modells für die CRC-Tabellen.

Die Speicher-Attribute sind abhängig von der verwendeten Toolkette. Die Schlüsselworte sind entsprechend zu verwenden.

Page 53: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 6-31 Ausgabe 05/2010

#define p_crctab_memory Die Dateien "p_c_crc_m.h" und "p_c_crc_b.h" werden includiert. In p_c_crc_m.h läßt sich das Toolketten-spezifische Speicher-Modell für die CRC-Tabellen einstellen. In p_c_crc_b.h läßt sich zum Speicher-Modell für den PSD-Code wieder zurückschalten.

#undef p_crctab_memory Die Dateien "p_c_crc_m.h" und "p_c_crc_b.h" werden nicht includiert.

Page 54: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 7-32 Ausgabe 05/2010

7 Requirements

Um dem Anspruch der entsprechenden Sicherheitsstufe des PSD gerecht zu werden, müssen von der F-Applikation nachfolgend zusammengefassten Requirements erfüllt werden.

7.1 Requirements unabhänging von der Generiervarian te

PSD_01 Es müssen die normativen Anforderungen entsprechend der zugrundeliegenden Standards bzgl. der F-Applikation eingehalten werden.

PSD_02 Die PSD - Dateien dürfen nicht verändert werden.

PSD_03 Die CRC-Werte der PSD Dateien (Einzel- und Gesamt-CRC) müssen mit den Werten des CRC-Check-Tools übereinstimmen.

PSD_04 Es dürfen nur die PSD-Schnittstellenfunktionen verwendet werden, die in der Datei p_api.h deklariert sind.

PSD_05 Es dürfen nur die PSD-Schnittstellenstrukturen verwendet werden, die in der Datei p_global.h deklariert sind.

PSD_06 Für die Auswertung der PSD-Returns müssen die Defines aus p_global.h verwenden werden.

PSD_07 Die Qualifizierung der Entwicklungstools ist vom Hersteller des F-Slaves durchzuführen.

PSD_08 Bei Nutzung von Codeoptimierung sind die in Kapitel 8.3 beschriebenen Einschränkungen zu berücksichtigen.

PSD_09 Nicht zulässige Returnwerte müssen in den Zustand HARD_FAIL der F-Applikation führen.

Folgende Returnwerte sind zulässig:

Funktion zulässige Returnwerte

psd_InitInstance(…) INIT_INSTANCE_OK

psd_FParBuild(…) FPAR_BUILD_OK FPAR_F_DEST_ADD_MISMATCH FPAR_F_DEST_ADD_NOT_VALID FPAR_F_SOURCE_ADD_NOT_VALID FPAR_F_WD_TIME_NULL FPAR_F_SIL_ERR FPAR_CRC1_ERR FPAR_BUILD_NOT_OK

psd_Config(…) FPAR_CONFIG_OK

Page 55: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 7-33 Ausgabe 05/2010

Funktion zulässige Returnwerte

psd_Run(…) PSD_DATAEX

psd_Stop(…) PSD_PARAM

psd_RecvFOutTele(…) RECV_FOUT_TELE_OK

psd_GetFOutData(…) F_OUTPUT_OK F_OUTPUT_OLD_CONSNR F_OUTPUT_CLEAR F_OUTPUT_COMM_ERR F_OUTPUT_WD_TIMEOUT F_OUTPUT_PASSIVATED

psd_SetFInData(…) SEND_FIN_DATA_OK

psd_SendFInTele(…) SEND_FIN _TELE_OK

psd_GetState(…) PSD_INIT PSD_PARAM PSD_DATAEX PSD_HARD_FAIL

psd_GetFPar(…) GET_FPAR_OK

Der zulässige inversen Rückgabewerte-Bereich der „inversen“ Funktionen (nur bei der 1-kanaligen Generierungsvariante) entsprechen denen der Hauptfunktionen.

PSD_10 Die Funktion hard_err(…) ist von der F-Applikation zu implementieren. Es muss für alle verwendeten Instanzen in einen HALT-Zustand führen.

PSD_11 Der SIL muss dem SIL des F-Slaves entsprechen und muss unabhängig von den F-Parametern ermittelt werden.

PSD_12 Die F-Adresse muss in der F-Applikation hinterlegt sein. Ein Extrahieren der F-Adresse bzw. andere Werte aus den F-Parametern ist unzulässig.

PSD_13 Bei: F_OUTPUT_COMM_ERR, F_OUTPUT_WD_TIMEOUT, F_OUTPUT_PASSIVATED muss die F-Applikation den sicheren Zustand für den Prozess sicherstellen.

PSD_14 Es ist ein PROFIsafe-Conformancetest von einem akkreditierten Prüflabor (siehe PNO) durchzuführen.

PSD_15 Es sind die in Kapitel 8 spezifizierten Testfälle durchzuführen.

Page 56: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 7-34 Ausgabe 05/2010

PSD_16 Die F-Applikation muss das Statusbyte.Bit_1 (Device_Fault) für mindestens 2 Wechsel der ConsecutiveNumber setzen (2 x Returnwert "F_OUTPUT_OK" der PSD-Funktion psd_GetFOutData() ), wenn sie nicht in der Lage ist, die sicherheitstechnische Integrität der zu übertragenden Prozessdaten zu garantieren.

PSD_17 Alle Interfacefunktionen außer hard_err(...) müssen zum PSD zurückkehren.

7.2 Requirements für die 1-kanalige Generiervariant e

PSD_18 Die F-Applikation muss die Konsistenz der F-Ausgangsnutzdaten sowie Steuerbytekennungen der beiden logischen Kanäle prüfen. Die Konsistenzprüfung hat vor Ausgabe an den Prozess zu erfolgen. Meldet der PSD einen Kommunikationsfehler, ist das empfangene Steuerbyte ungültig und die Steuerbytekennungen sind nicht auszuwerten.

PSD_19 Die Rückgabewerte der verwendeten „inversen“ Funktionen sind entsprechend auszuwerten.

PSD_20 Geht die F-Applikation in den Zustand HARD_FAIL, dann muss die Verfälschungsvariable PSD_safety_var auf den Wert P_SAFETY_CONST_FALSE gesetzt werden.

PSD_21 Zur Verifikation des verwendeten Compilers ist die Analyse mit dem Verifikations-Code in Datei p_verify.c durchzuführen /4/.

PSD_22 Beim Einsatz des 1-kanaligen PSD im Sensor oder Aktor müssen alle sicherheitskritischen Zweitfehler durch das Umfeld des PSD aufgedeckt werden.

PSD_23 Beim Einsatz des 1-kanaligen PSD im Aktor müssen zufällige HW-Fehler innerhalb der Prozessfehlertoleranzzeit durch das Umfeld des PSD aufgedeckt werden.

7.3 Requirements für die 2-kanalige Generiervariant e

PSD_24 Die F-Applikation muss die Konsistenz der F-Ausgangsnutzdaten und Steuerbytekennungen der beiden Hardware Kanäle prüfen. Die Konsistenzprüfung hat vor Ausgabe an den Prozess zu erfolgen. Meldet der PSD einen Kommunikationsfehler, ist das empfangene Steuerbyte ungültig und die Steuerbytekennungen sind nicht auszuwerten.

PSD_25 Die F-Applikation muss bei 2-kanaliger PSD-Generierung ein Synchronisationsinterface zur Verfügung stellen. Die Spiegelung der zu tauschenden Daten ist auszuschließen.

Page 57: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 8-35 Ausgabe 05/2010

8 Testspezifikation

8.1 Fault-Insertion Test

Mit den Fault-Insertion-Tests wird die spezifische Umsetzung der PSD-Fehleraufdeckungsmechanismen (Programmlaufkontrolle (1-kanalig), Sync-Interface (2-kanalig), Konsistenz-Vergleich von PSD internen Doppelt+Invers-Daten, usw.) nachgewiesen.

Der für den Test erforderliche Test-Code wird entweder mit Hilfe eines Makros in den C-Code des PSD oder direkt in den C-Code der F-Applikation eingefügt. Der Test-Code für den PSD ist in der Datei p_c_fault_insert.h beispielhaft enthalten und muss an den spezifischen F-Slave angepasst werden. Im File p_global.h muss das Define „FAULT_INSERTION“ gesetzt werden.

Jeder einzelne Fehlerversuch ist im File einzublenden, der gesamte Code ist zu kompilieren und auszuführen. Im Zuge einer PROFIsafe-Kommuikation muss bei jedem Test der Zustand HARD_FAIL erreicht werden.

Warnung

Requirement: PSD_15

Es sind die in Kapitel 8 spezifizierten Testfälle durchzuführen.

Page 58: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 8-36 Ausgabe 05/2010

8.1.1 1-kanalige und 2-kanalige Generiervariante

Folgende Tests sind durchzuführen:

Nr. Beschreibung erwartetes Ergebnis

1 Der Parameter F_ iPar_CRC wird verfälscht.

Fehlerinjektion durch Macro FI_PSD_025

Reaktion des PSD: Der PSD erkennt den Parametrierfehler.

Reaktion der F-Applikation: Der sicherer Zustand der Prozesswerte, abhängig von der Applikation, wird sichergestellt.

2 Der PSD bekommt über die Funktion psd_Config(..) eine zu große Länge übergeben.

Fehlerinjektion durch Macro FI_PSD_024

Der PSD erkennt einen Fehler und ruft die Funktion hard_err(...) auf.

3 Der PSD wird nicht in den zyklischen Datenaustausch versetzt (psd_Run wird nicht aufgerufen).

Fehlerinjektion durch F-Applikation

Reaktion des F-Host: Der F-Host erkennt Timeout.

4 Der PSD- Funktion psd_SetFInData (..) wird eine zu große Instanz übergeben.

Fehlerinjektion durch Macro FI_PSD_001

Der PSD erkennt einen Fehler und ruft die Funktion hard_err(...) auf.

5 In der PSD- Funktion psd_SetFInData (..) wird eine falsche Datenlänge eingetragen.

Fehlerinjektion durch Macro FI_PSD_002

Der PSD erkennt einen Fehler und ruft die Funktion hard_err(...) auf.

6 Die PSD-Funktion psd_SetFInData (..) wird vorzeitig beendet.

Fehlerinjektion durch Macro FI_PSD_003

Der PSD erkennt einen Fehler und ruft die Funktion hard_err(...) auf.

7 Der PSD bekommt über die Funktion psd_GetInputBuffer (..) eine zu große Datenlänge übergeben.

Fehlerinjektion durch Macro FI_PSD_005

Der PSD erkennt einen Fehler und ruft die Funktion hard_err(...) auf.

8 In der PSD-Funktion psd_SendFInTele (..) wird ein falscher CRC-Wert eingetragen.

Fehlerinjektion durch Macro FI_PSD_006

Der PSD erkennt einen Fehler und ruft die Funktion hard_err(...) auf.

9 Die PSD-Funktion psd_SetFInTele(..) wird vorzeitig beendet.

Fehlerinjektion durch Macro FI_PSD_011

Der PSD erkennt einen Fehler und ruft die Funktion hard_err(...) auf.

10 In der PSD-Funktion psd_RecvFOutTele(..) wird ein falscher CRC-Wert eingetragen.

Fehlerinjektion durch Macro FI_PSD_013

Der PSD erkennt einen Fehler und ruft die Funktion hard_err(...) auf.

11 Die PSD-Funktion psd_RecvFOutTele(..) wird vorzeitig beendet.

Fehlerinjektion durch Macro FI_PSD_017

Der PSD erkennt einen Fehler und ruft die Funktion hard_err(...) auf.

Page 59: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 8-37 Ausgabe 05/2010

8.1.2 1-kanalige Generiervariante

Folgende Tests sind durchzuführen:

Nr. Beschreibung erwartetes Ergebnis

12 Erkennen einer Verfälschung der Ablaufkontrolle auf einem logischen Kanal über FlowControl- Wert

Fehlerinjektion durch Macro FI_PSD_151

Reaktion des PSD: Die Ablaufkontrolle des PSD erkennt einen Fehler und ruft die Funktion hard_err(...) auf.

13 Erkennen einer Verfälschung der Ablaufkontrolle auf einem logischen Kanal über FlowControl_inv- Wert

Fehlerinjektion durch Macro FI_PSD_152

Reaktion des PSD: Die Ablaufkontrolle des PSD erkennt einen Fehler und ruft die Funktion hard_err(...) auf.

8.1.3 2-kanalige Generiervariante

Folgende Tests sind durchzuführen :

Nr. Beschreibung erwartetes Ergebnis

14 Erkennen einer falschen Sync.-Quit auf einem Kanal beim Senden vom PSD, Übergang in den Zustand PSD_HARD_FAIL: In der Funktion psd_SetFInData() wird die Sync_Quit auf TRANSFER_NOT_OK nach dem Aufruf von psd_InTransfer () auf einem Kanal verfälscht.

Fehlerinjektion durch Macro FI_PSD_102

Reaktion des PSD: Der PSD erkennt auf einen Kanal einen Sync.-Fehler und ruft die Funktion hard_err(...) auf.

Auf dem anderen Kanal entsteht ein Sync.-Timeout und es wird ebenfalls die Funktion hard_err(...) aufgerufen.

15 Erkennen einer falschen Sync.-Quit auf einem Kanal beim Empfangen vom PSD, Übergang in den Zustand PSD_HARD_FAIL: In der Funktion psd_SetFInTele() wird die Sync_Quit auf SYNC_NOT_OK nach dem Aufruf von psd_InSync () auf einem Kanal verfälscht.

Fehlerinjektion durch Macro FI_PSD_104

Reaktion des PSD: Der PSD erkennt auf einen Kanal einen Sync.-Fehler und ruft die Funktion hard_err(...) auf.

Auf dem anderen Kanal entsteht ein Sync.-Timeout und es wird ebenfalls die Funktion hard_err(...) aufgerufen.

8.2 Qualifizierung der Entwicklungstools

Warnung

Requirement: PSD_07

Die Qualifizierung der Entwicklungstools ist vom Hersteller des F-Slaves durchzuführen.

Page 60: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 8-38 Ausgabe 05/2010

8.3 Code-Generierung

Bei der Code-Generierung unter Verwendung von Codeoptimierung ist bei der 1-kanaligen Generiervariante darauf zu achten, dass die logische 2-Kanaligkeit im Code erhalten bleibt.

Warnung

Requirement: PSD_21

Zur Verifikation des verwendeten Compilers ist die Analyse mit dem Verifikations-Code in Datei p_verify.c durchzuführen /4/.

8.4 Compiler Verifikations-Code für 1-kanalige Generiervariante

Der Verifikations-Code in der Datei p_verify.c dient dazu aufzuzeigen, wie der verwendete Compiler die im PSD verwendeten Code-Sequenzen umsetzt. Für den Nachweis der 2-Kanaligkeit im Code müssen alle mit "M:" gekennzeichneten Stellen erfüllt werden. Alle mit "S:" gekennzeichneten Stellen, zeigen die Umsetzung von C-Anweisungen in Assembler und sind rein informativ. In den Kommentaren wird für Zuweisungen der Begriff "move" und für Vergleiche der Begriff "compare" verwendet. Diese Begriffe sind entsprechend dem verwendeten Controller zu interpretieren.

Warnung

Requirement: PSD_21

Zur Verifikation des verwendeten Compilers ist die Analyse mit dem Verifikations-Code in Datei p_verify.c durchzuführen /4/.

8.5 PROFIsafe-Conformancetest

Warnung

Requirement: PSD_14

Es ist ein PROFIsafe-Conformancetest von einem akkreditierten Prüflabor (siehe PNO) durchzuführen.

Page 61: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 9-39 Ausgabe 05/2010

9 Anhang

9.1 Speicherbedarf

Der Speicher-Bedarf wurde mit Hilfe der List-Files ermittelt mit einer Generierung für das DPC31-EKit. Verwendet wurde ein Keil-C-Compiler V7.01.

9.1.1 1-kanalige Generierung

Compilerschalter Daten [Bytes]

CRC Tabellen [Bytes]

Code [Bytes]

#define NOF_INSTANCES 1 #undef REDUNDANT #undef CRC32 #undef INST_ACCESS_POINTER

ca. 438 ca. 1536 ca. 15534

9.1.2 2-kanalige Generierung

Compilerschalter Daten [Bytes]

CRC Tabellen [Bytes]

Code [Bytes]

#define NOF_INSTANCES 1 #define REDUNDANT #undef CRC32 #undef INST_ACCESS_POINTER

ca. 147 ca. 1536 ca. 6995

9.2 Statische Codeanalyse Für die statische Codeanaylse wurde das Tool “QA C” benutzt. Es wurden die Standardeinstellungen mit einem MISRA-Zusatzmodul verwendet. Folgende Tabelle fasst die Meldungen aus allen Konfigurationen zusammen. (Die Liste der Meldungen kann in den einzelnen Konfigurationen unterschiedlich sein.)

QA C Meldung Kategorie

QA C Meldung Nummer und Text Kommentar

(2) Switch statements

3352: This 'switch' statement contains only two execution paths.

Bei Verwendung unterschiedlicher Konfigurationen können „case“ Zweige (durch Compiler Schalter) entfallen.

(3) Redundancy

3199: The value of <variable_name> is never used following this assignment.

Im Single-Instanz Betrieb ist "pID" immer 0, und aus Performancegründen wird "pID" in der Single-Instanz Konfiguration bei den Datenzugriffen immer mit 0 ersetzt. (Die konfigurationsabhängige Gestaltung der Funktionsheader ist aber nicht nötig.) Um die Compiler Warnung zu unterdrücken, wird eine redundante Zuweisung eingesetzt.

Page 62: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 9-40 Ausgabe 05/2010

QA C Meldung Kategorie

QA C Meldung Nummer und Text Kommentar

(4) M2CM Rule 8.7

1514: The object <object_name> is only referenced by function <function_name>, in the translation unit where it is defined.

Gewisse globale Daten werden nur vom Anwender oder PSD-Intern durch Pointer referenziert. Diese externe oder indirekte Referenzierung wird von QA C als nicht Referenzierung erkannt.

(4) M2CM Rule 8.10

1504: The object <object_name> is only referenced in the translation unit where it is defined.

Die CRC Tabellen müssen den PSD Anwendern zugänglich sein. Die Tabellen sind Teil der PSD Schnittstelle, aber werden intern auch verwendet.

(4) M2CM Rule 8.10

1505: The function <function_name> is only referenced in the translation unit where it is defined.

Gewisse Funktionen müssen den PSD Anwendern zugänglich sein, die auch intern referenziert/benutzt werden. Die Funktionen sind Teil der PSD Schnittstelle. Außerdem der invers Pfad folgt die physikalische Struktur des normalen Pfades nicht, sondern die automatisch generierte Funktionen sind alle in derselben Übersetzungseinheit (Source-Datei) unterbracht. D.h. Funktionen, die im normalen Pfad von anderen Sourcen referenziert werden, werden im inversen Pfad nur vom selben Source referenziert.

(4) M2CM Rule 11.4 310: Casting to different object pointer type.

Absichtliche Typkonversion mit Verlust, um die Ablage-Format (Intel oder Motorola) rauszufinden; oder absichtliche Konversion, wo ein Integer Datum als Byte-Array in der CRC-Berechnung verwendet wird.

(4) M2CM Rule 13.7 3556: The result of this logical operation is always 'false'.

Gewisse Kontrollstrukturen für Multi-Instanz Betrieb werden im Single-Instanz Betrieb nicht vollständig ausgeführt /ausgenutzt.

(4) M2CM Rule 13.7

3559: The value of this control expression is always 'false'.

Gewisse Kontrollstrukturen für Multi-Instanz Betrieb werden im Single-Instanz Betrieb nicht vollständig ausgeführt /ausgenutzt.

(4) M2CM Rule 14.1

1503: The function <function_name> is defined but is not used within this project.

Schnittellen-Funktionen werden nur von PSD Anwendern (extern) referenziert.

(4) M2CM Rule 14.1 3201: This statement is unreachable.

Gewisse Kontrollstrukturen für Multi-Instanz Betrieb werden im Single-Instanz Betrieb nicht vollständig ausgeführt /ausgenutzt.

(4) M2CM Rule 14.10 2004: No concluding 'else' exists in this 'if'-'else'-'if' statement.

In diesen „if-else if“ Strukturen kein „else" Zweig ist notwendig.

(4) M2CM Rule 19.4 3412: Macro defines an unrecognised code-fragment.

Diese Makrodefinition ist aus Performancegründen notwendig, um Pointer-Zugriff zu ermöglichen. (Es gibt Plattformen, wo Pointer-Zugriff wesentlich schneller ist, als Array-Zugriff)

(4) M2CM Rule 19.7

3453: A function could probably be used instead of this function-like macro.

Hier wird aus Konfigurationsgründen eine Funktion hinter einen Macro versteckt. So kann der Aufruf konfigurationsabhängig ein- und ausgeschaltet werden.

Page 63: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 9-41 Ausgabe 05/2010

QA C Meldung Kategorie

QA C Meldung Nummer und Text Kommentar

(6) Implementation defined

288: [I] Source file <file_name> has comments containing characters which are not members of the basic source character set.

Das $ Zeichen im Kommentar ist notwendig für automatisierte Generierung der inversen Zweig.

9.3 Entwicklungsdokumente Nachfolgend aufgelisteten Dokumente sind während der Entwicklung entstanden und sind Basis für die Zertifizierung.

• PROFIsafe Profil /1/

• Safety Requirement Spezifikation

• Safety Plan

• Pflichtenheft

• FMEA

• Software Design

• Safety Criticality Analyse

• Modultestspezifikation

• Modultestberichte

• Integrationstestspezifikation

• Integrationstestbericht

• Fehlerversuchsspezifikation

• Fehlerversuchsbericht

• Konformitätstest

• Konformitätstestbericht

• Handbuch

Page 64: SIEMENS PROFIsafe-Treiber für F-Slaves€¦ · Funktionsweise des PSD 3 Dateien des PSD 4 Schnittstellenbeschreibung 5 Konfiguration des PSD 6 Requirements 7 Testspezifikation 8

SIEMENS PROFIsafe-Treiber für F-Slaves

Seite 10-42 Ausgabe 05/2010

10 Begriffe und Abkürzungen CRC Cyclic Redundancy Check

DP Dezentrale Peripherie

EPROM Erasable programmable read-only memory

F Fail-safe

FW Firmware

HW Hardware

ISR Interrupt Service Routine

PNO PROFIBUS-Nutzer-Organisation

URL: http://www.profibus.com/

Prm Parameter

PSD PROFIsafe-Treiber für Slaves

SI DP-Stack-Interface

SIL Safety Integrity Level

SW Software

WD Watchdog, zur Laufzeitüberwachung

Null-Telegramm Alle Bytes eines Telegramms beinhalten "0"