Kayser
Level-1
- Beiträge
- 19
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Komme hier einfach nicht mehr weiter!!
Hardware: Siemens CPU 414-2DP; CP 443-1 IT
Software: Simatic Step 7 V5.2 +SP1 (AWL, FUP)
Folgendes:
Im DB104 werden die Fehlerbits (Bereich zwischen DB104.DBX 128.0
bis DB104.DBX 255.7 ) dynamisch von der Anlage gesetzt. Diese könne manuell vom
Bediener wieder zurückgesetzt werden.
Als Fehlermaskierung habe ich den DB200 einen Bereich zwischen DB200.DBX 0.0 und DB200.DBX 127.7 zugeordnet. Hier wird statisch festgelegt, welcher Fehler eine Relevanz für die darauf folgende Auswertung hat.
Beispiel:
DB200.DBX 1.0 hat den bool’schen Wert ’1’ und
im DB104.DBX 129.0 ist durch einen Fehler ebenfalls auf ’true’ gesetzt,
so ist dieser Fehler relevant.
Mein jetziges Konzept:
Wird ein Fehlerbit im DB104 gesetzt, soll nach dem Vergleich des DB104 mit dem DB200 die Bitadresse ermittelt werden. Im Anschluss daran soll automatisch eine Email generiert werden (hier verwende ich die Funktion FC50 (AG Long Send), die im DB10 als Anlage die Fehlernummer (= Fehlerbit) und eine Beschreibung des Fehlers im Klartext dynamisch eingefügt werden soll.
OB1
FB10
FB 30
Hat jemand mit der mathematische Operation LN Erkenntnisse im
Bezug auf die Berechnung der Bit-Position?
Formel: bitposition = LN bitwert / LN 2
Mein Problem ist der Vergleich der Datenbausteine als auch die Fehlerbit-Berechnung und zu guter Letzt die Implementierung der Fehlernummer/Klartext im Anhang der Email.
Im Voraus sag ich schon mal DANKE!
Mfg
Kayser
P.S. Rückfragen und Anregungen erwünscht!
Hardware: Siemens CPU 414-2DP; CP 443-1 IT
Software: Simatic Step 7 V5.2 +SP1 (AWL, FUP)
Folgendes:
Im DB104 werden die Fehlerbits (Bereich zwischen DB104.DBX 128.0
bis DB104.DBX 255.7 ) dynamisch von der Anlage gesetzt. Diese könne manuell vom
Bediener wieder zurückgesetzt werden.
Als Fehlermaskierung habe ich den DB200 einen Bereich zwischen DB200.DBX 0.0 und DB200.DBX 127.7 zugeordnet. Hier wird statisch festgelegt, welcher Fehler eine Relevanz für die darauf folgende Auswertung hat.
Beispiel:
DB200.DBX 1.0 hat den bool’schen Wert ’1’ und
im DB104.DBX 129.0 ist durch einen Fehler ebenfalls auf ’true’ gesetzt,
so ist dieser Fehler relevant.
Mein jetziges Konzept:
Wird ein Fehlerbit im DB104 gesetzt, soll nach dem Vergleich des DB104 mit dem DB200 die Bitadresse ermittelt werden. Im Anschluss daran soll automatisch eine Email generiert werden (hier verwende ich die Funktion FC50 (AG Long Send), die im DB10 als Anlage die Fehlernummer (= Fehlerbit) und eine Beschreibung des Fehlers im Klartext dynamisch eingefügt werden soll.
OB1
Code:
[COLOR=black]Netzwerk 1:[/COLOR]
[COLOR=black]Call FB 10, DB11[/COLOR]
[COLOR=black]Netzwek 2:[/COLOR]
[COLOR=black]Call FB 30 , DB30[/COLOR]
FB10
Code:
[COLOR=black]Netzwerk 1: Flankensteuerung, da beim Aufteten eines Fehlerfalls der Anlage nur eine Email versendet werden soll (Vermeidung von Dauerfeuer)[/COLOR]
[COLOR=black]U M11.0 // Aktivierung[/COLOR]
[COLOR=black]FP M11.1 // Flanke[/COLOR]
[COLOR=black]= M10.0 // Sendeimpuls[/COLOR]
[COLOR=black]Netzwerk 2: Kommunikationsbaustein[/COLOR]
[COLOR=black]CALL FC50[/COLOR]
[COLOR=black]ACT:= M10.0[/COLOR]
[COLOR=black]ID:= 1[/COLOR]
[COLOR=black]LADDR:= W#16#1FF8[/COLOR]
[COLOR=black]SEND:= P#DB10.DBX0.0 BYTE 558[/COLOR]
[COLOR=black]LEN:= 558[/COLOR]
[COLOR=black]DONE:= M10.1 // Ausführung der Versandbestätigung[/COLOR]
[COLOR=black]ERROR:= M10.2[/COLOR]
[COLOR=black]STATUS:= MW100[/COLOR]
[COLOR=black]Netzwerk 3: Speichern der Versandbestätigung[/COLOR]
[COLOR=black]U M10.1[/COLOR]
[COLOR=black]S M10.5 // Versandbestätigung[/COLOR]
[COLOR=black]U M10.4 // Rücksetzen der Versandbestätigung[/COLOR]
[COLOR=black]R M10.5 [/COLOR]
Netzwerk 3:
BE
FB 30
Code:
[COLOR=black]Netzwerk 1:[/COLOR]
[COLOR=black]TAR1 #Adr_1[/COLOR]
[COLOR=black]TAR2 #Adr_2[/COLOR]
[COLOR=black]Netzwerk 2:[/COLOR]
[COLOR=black]L 104[/COLOR]
[COLOR=black]T #Quell_DB[/COLOR]
[COLOR=black]L 200[/COLOR]
[COLOR=black]T #Maske_DB[/COLOR]
[COLOR=black]Netzwerk 3:[/COLOR]
[COLOR=black]LAR1 P#128.0[/COLOR]
[COLOR=black]LAR2 P#0.0[/COLOR]
[COLOR=black]Netzwerk 4:[/COLOR]
[COLOR=black]// Bit-Schleife[/COLOR]
[COLOR=black]L 127[/COLOR]
[COLOR=black]M002: T #zaehler_1[/COLOR]
[COLOR=black]L 7[/COLOR]
[COLOR=black]M001: T #zaehler[/COLOR]
[COLOR=black]AUF DB [#Quell_DB][/COLOR]
[COLOR=black]U DBX [AR1,P#0.0][/COLOR]
[COLOR=black]AUF DB [#Maske_DB][/COLOR]
[COLOR=black]U DBX [AR2,P#0.0] [/COLOR]
[COLOR=black]= M30.0 // setzen der pos. Flanke[/COLOR]
[COLOR=black]+AR! P#0.1[/COLOR]
[COLOR=black]+AR2 P#0.1[/COLOR]
[COLOR=black]L #zaehler[/COLOR]
[COLOR=black]LOOP M001[/COLOR]
[COLOR=black]// Byte-Schleife[/COLOR]
[COLOR=black]LAR1 P#128.0[/COLOR]
[COLOR=black]LAR2 P#0.0[/COLOR]
[COLOR=black]+AR1 P#1.0[/COLOR]
[COLOR=black]+AR2 P#1.0[/COLOR]
[COLOR=black]L #zaehler_1[/COLOR]
[COLOR=black]LOOP M002[/COLOR]
[COLOR=black]Netzwerk 5:[/COLOR]
[COLOR=black]LAR1 #Adr_1[/COLOR]
[COLOR=black]LAR2 #ADR_2[/COLOR]
[COLOR=black]Netzwerk 6:[/COLOR]
[COLOR=black]BE[/COLOR]
Hat jemand mit der mathematische Operation LN Erkenntnisse im
Bezug auf die Berechnung der Bit-Position?
Formel: bitposition = LN bitwert / LN 2
Mein Problem ist der Vergleich der Datenbausteine als auch die Fehlerbit-Berechnung und zu guter Letzt die Implementierung der Fehlernummer/Klartext im Anhang der Email.
Im Voraus sag ich schon mal DANKE!
Mfg
Kayser
P.S. Rückfragen und Anregungen erwünscht!