VIPA 314_6CF23 mit SPEED7 Peripheriegerät (AI) 331-7AF70 - Impulsabhängige DataLog Funktion Entwickeln

Dome_Step7

Level-1
Beiträge
16
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo @PN/DP ,

ich starte heute morgen einmal mit einer guten Tat, indem ich uns ein eigenes Thema erstelle.
Ich neige leider dazu Sachverhalte oft "schlecht" zu beschreiben, quasi wie ich Sie in meinem Kopf manchmal schon durchdacht habe.
Hier gelobe ich jetzt Besserung!

Aufbau HW (erwartetes Nutzsignal):
314-6CF23 "CPU auf Siemens 318 Basis (Impulseingang des Zählers 0 mit 0-40Hz)"
331-7AF70 "AI-Karte Speed7 (Strom Signal 4-20mA)"
PC mit LabView Anwendung (Ethernet TCP)

Zählerkarte Parametrierung:
Impuls/Richtung
Torfunktion: Abbrechen
Zählerfunktion: Endlos Zählen
Proz. Alarm: bei Erreichen des Vergleichswertes
Vergleichswert (VG): 4

Situationsbeschreibung:
Das Ziel dieser Aufgabe soll es sein einen Code in Abhängigkeit eines Vergleichswertes auszuführen. Der Vergleichswert basiert auf einem Impulsverhältnis.
Der Code ist in AWL geschrieben.
Dieser setzt über eine indirekte Adressierung jeden Vergleichswert, den aktual Wert des PEW4 in eine Zeile im Datenbaustein als TYP INT.
Der Datenbaustein wurde zuvor in seiner benötigten Größe erstellt.

Beispiel Speicherbedarf:
200 Liter
2imp/L
VG4
200/2 = 100
[L] / [imp/L] = imp
Datentyp INT = 2Byte oder halt ein Word
Benötigt werden 200 Byte oder 100 Messwerte im DB.

Beispiel Ergebnis:
Liter / Strom [mA] / Anzahl
0 / 16000 / 0
2 / 15950 / 1
4 / 15930 / 2

Das ist eine Geometrie Nachbildung des Volumenkörpers in Abhängigkeit vom Volumen.
Das kann ich dann auswerten mit einer Excel z.B. um ein Diagramm zur Veranschaulichung zu haben.

Problemstellung:
Ich habe den Code im OB40 (HW interrupt) eingepflegt.
Der VG4 wird einmalig erreicht und speichert mir wenn Bedingungen aus OB1 erfüllt sind den Stromwert im DB.
Danach ist der Zählwert größer >4 und der OB40 wird nicht mehr aufgerufen.

Kommentar:
Mein erster Gedanke war es das im OB40 zu realisieren was mir bei der Zykluszeit des OB1 <10ms laut Diagnose aber eigentlich unnötig erscheint.
Da ich nicht besonders hochfrequent unterwegs bin mit <1kHz.
Also wäre eine Lösung mithilfe eines FCs doch anstrebenswert.
Weil ich sowieso auf Variablen des OB1 angewiesen bin (Startbedingungen) und damit Multitasking Probleme ausweiche, richtig dazugelernt?

Jetzt kommt der Knackpunkt wie kriege ich den im OB1 mit ob der Zählwert um 4 angestiegen ist zum letzten Aufruf der Funktion.
Und wo sehe ich ob das wirklich Zeit unkritisch ist?
(Also nicht das ich während der Bearbeitung plötzlich einen Zyklus des OB1 länger geöffnet habe als meine Pulsdauer mit 4 Impulsen ist.)
 
Zuletzt bearbeitet:
Das hat mit einer Micro M13-CCF0000 und dem SFB47 "Common counter Module" alles funktioniert.
Weil ich dort einen Reset Eingang am SFB hatte und einfach VG4 = Reset ausgeführt habe.

Das ist ein neues "Altes" Problem.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Sensor:
Pulsrate: 100% des Messbereichs
Pulsbreite: 0,05....2000ms (abhängig von der Pulsrate)
Pulsbreite bei 100%: 40Hz
Pulsform: 50% / 50% "Symmetrisch"

Zeit Pro Event: 10 Hz (1/s) (Event/s)
Zeit für OB1 Zyklus: 1s /10Hz = 0,1s oder 100ms
 
Zuletzt bearbeitet:
Habe es jetzt wie du schon geschrieben hast in https://www.sps-forum.de/threads/wasseruhr-mit-cpu-314c-2-dp.30150/#post-217032
gelöst mit dem Addieren des Eingangs E0.3 (Zähler 0).
Jetzt Vergleiche ich auf 4 mit der Funktion MOD und werte Rest aus.
Wenn Rest = 0 führe den Code aus.
Ich schaue mal wie es sich in der Praxis verhält ob ich Probleme mit meiner Volumenabbildung bekomme oder die Geometrien passen.
Habe ja noch Referenzmodelle vom Vorgänger :)

Wäre trotzdem Dankbar, wenn du mir sagen könntest ob es nicht eine Variante gibt, die man mehr berechnen könnte.
Gruß Dominik
 
Zuletzt bearbeitet:
NW1

U E 0.3
FP M 336.0
SPBNB _00f
L "Zähler Z0_Test"
L L#1
+D
T "Zähler Z0_Test"
_00f: NOP 0

NW2
----------------------------------
L "Zähler Z0_Test"
L L#4
MOD
T "Rest"
NOP 0

NW3
--------------------------------------
L "Rest"
L L#0
==I
= M 336.1
 
Zurück
Oben