TIA Schneller Zähler s7 1500

sps31

Level-1
Beiträge
109
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute ich habe folgendes Problem.
Ich möchte eine bestimmte Menge Wasser durch einen Massmol laufen lassen und diese dann zählen.
Der Massmol gibt Impulse raus .
1Impuls/10ml.
Der maximale Durchfluss liegt bei 300 L / Min = 5L/s = 500Hz

Die SPS ist eine 1515-2PN
der Digitaleingang ein DI32x24V HF laut Handbuch geht damit wohl 1khZ.

Nun hatte ich eigentlich vor in einem Baustein einen Zähler einzurichten der Die Impulse zählt und diese dann per CV weiterzuverarbeiten.

Das Problem ist. Der Eingang erkennt die Impulse nicht. HSC habe ich nirgends gefunden und nun weiß ich nicht weiter wie ich zB kanal0 richtig Konfiguriere oÄ.

Hoffe mein Problem ist klar geworden und schonmal vielen Dank im Vorraus.
LG
sps31
 
Wie kurz ist der Impuls?
Wie fragst Du den Eingang ab? Ein Zähler im OB1 kann natürlich nicht schneller zählen als der OB1 aufgerufen wird, dabei muß jeder Puls und jede Pulspause mindestens so lang sein wie die Zykluszeit des OB1 damit die Pulse erkannt werden. Wenn Puls und/oder Pause kürzer als die Zykluszeit des OB1 sind, dann musst Du den Eingang schneller abfragen (z.B. in einem zyklischen OB und da direkt den Peripherieeingang abfragen) oder der Eingang muß bei einer Signalflanke einen Prozessalarm generieren. Kann die Baugruppe einen Prozessalarm auslösen?

Zählfrequenzen 500Hz zählt man aber nicht über diese Softwaretricks sondern nutzt Hardware-Zähler-Baugruppen, um unabhängig von der Programmabarbeitungsgeschwindigkeit keine Impulse zu verlieren.

Harald
 
Erstmal danke für eure schnellen Antworten.
@pn/dp der Impuls ist 50/50 High Low nehme ich mal an.
Ja ich hätte die Möglichkeit einen Prozessalarm auszulösen.
Die Genauigkeit könnte ich noch runterschrauben das wäre nicht das Problem also auf 50Hz oder vllt sogar 5Hz. Ab welcher Frequenz kann man den eingang denn einfach "normal Benutzen".
Welche Möglichkeiten hätte ich bei einer kleineren Frequenz.
Das kaufen einer zusätzlichen Einheit wäre wirklich meine allerletzte Lösung und würde ich nach Möglichkeit gerne vermeiden.

@hucki Ich habe mich glaube ich falsch ausgedrückt. Also den HSC finde ich aber ich kann diese Baugruppe dafür nicht wählen.
LG sps31
 
@pn/dp der Impuls ist 50/50 High Low nehme ich mal an.
In #1 hast Du geschrieben, daß der Impuls (gar) nicht erkannt wird. Wenn das Puls/Pause-Verhältnis 50/50 wäre, dann hättest Du langsame 50% breite Impulse erfassen können müssen. Ist der Impulsausgang elektrisch richtig angeschlossen?

Ab welcher Frequenz kann man den eingang denn einfach "normal Benutzen".
Wenn die Zykluszeit des OB1 knapp unter 10ms liegt, dann kann man bestenfalls max 50Hz "normal" zählen, wenn das Puls/Pause-Verhältnis 50/50 ist (10ms Puls + 10ms Pause = 20ms Periodendauer entspricht 50Hz). Die meisten Durchflußmesser die ich kenne haben kein Puls/Pause-Verhältnis 50/50, sondern eher 12/88 oder noch ungünstiger, das entspricht ein Puls ca. 2ms alle 20ms (50Hz) - da müsste die max. OB1-Zykluszeit unter 2ms sein um sicher jeden Impuls im OB1 zu erfassen.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo SPS31,

in deinen Eingangsmodul kannst du für Kanal 0 und 1 einen einfachen Zähler freischalten. (Kanal-Vorlage -> DI-Konfiguration)

Die Zählerwerte werden über die normale EA - Schnittstelle mit übertragen.

Der "High_Speed_Counter" geht nur mit der Baugruppe "TM Count"

Harald
 
Danke schonmal für eure Hilfe.
Firmware und Tia Version passen bei mir, habe den Haken nun gemacht.

Da muss ich aber leider ganz blöd weiter nachfragen.
Wie verarbeite ich die Kollegen nun weiter, habe jetzt auf Kanal 1 und Kanal 0 die beiden Pulseingänge liegen und würde diese gerne über einen zähler CTU weiterverarbeiten.
Funktioniert das in der Form ?
Wenn nicht, wie kann ich die Pulse Zählen?

LG sps31
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Man könnte ja evtl. mal mit RTFM starten ...
https://support.industry.siemens.com/cs/de/de/view/86140384

Es wäre jetzt dann der Zählwerte für Kanal 0 in ED x+8, bzw. Kanal 1 in ED x+16, wobei x für die Start-E-Adresse steht.
Weiter gibt es über den Ausgangsbereich der Karte dann noch die Möglichkeit, die Zähler mit einem Preset vorzubelegen.

Mfg
Manuel
 
Da muss ich aber leider ganz blöd weiter nachfragen.
Wie verarbeite ich die Kollegen nun weiter, habe jetzt auf Kanal 1 und Kanal 0 die beiden Pulseingänge liegen und würde diese gerne über einen zähler CTU weiterverarbeiten.
Funktioniert das in der Form ?

Ein CTU macht in der Konfig keinen Sinn. Dafür hast du ja den internen Zähler.
Du kannst den Zählerstand also aus der Karte auslesen.
Ich hab mir als die FW rauskam dafür zwei UDTS gemacht die man auf die Peripherie überlagern kann.
Code:
TYPE "DI32Z"
TITLE = Eingangsbelegung für 32DI HF  Karte im Zählmodus
VERSION : 0.1
//6ES7 521-1BL00-0AB0
//Z0s[0].%X0 STS_DQ
//Z0s[0].%X1 STS_GATE
//Z0s[0].%X4 STS_SW_GATE
//Z0s[0].%X6 STS_SW_LD_STS_SLOT
//Z0s[0].%X7 LD_ERROR 
//
   STRUCT
      DI : Array[0..31] of Bool;   // Eingänge
      DIs : Array[0..31] of Bool;   // Eingangsstati 0 = fail
      Z0 : UDInt;   // Zählerstand Z0
      Z0s : Array[0..3] of Byte;   // b0 ist das Statusbyte Z0
      Z1 : UDInt;   // Zählerstand Z1
      Z1s : Array[0..3] of Byte;   // b0 ist das Statusbyte Z1
   END_STRUCT;


END_TYPE


TYPE "DI32Zq"
TITLE = Ausgangsbelegung 32DI HF Karte im Zählmodus
VERSION : 0.1
//6ES7 521-1BL00-0AB0
//Z0s[0].%X0 Zähler mit ladewert laden
//Z0s[0].%X1 Zähler mit startwert laden
//Z0s[0].%X3 SW_GATE Start = TRUE
   STRUCT
      Z0 : UDInt;   // Ladewert für Z0
      Z0s : Array[0..3] of Byte;   // Kontrollbyte auf b0
      Z1 : UDInt;   // Ladewert für Z1
      Z1s : Array[0..3] of Byte;   // Kontrollbyte auf b0
   END_STRUCT;


END_TYPE

Damit kannst du relativ einfach deinen persönlichen Zählbaustein bauen. Ich empfehle dir z.B. den Zählerstand je nach Anwendung wegzusichern damit du ihn im Notfall rückladen kannst.

mfG René
 
Seid mir nicht böse, auf die Manual bin ich selber schon vorher gekommen. Bin aber leider nicht so mega in dem Thema und beschäftige mich nur nebenbei mit SPS Schaltungen deswegen hatten mir die Infos aus der Manual nur wenig geholfen.

@vollmi
Das ist wirklich super freundlich von dir mir das zur Verfügung zu stellen.
Es gibt da leider nur ein Problem, ich bin wie eingangs erwähnt nicht so mega tief in der Materie dass ich jetzt mega viel damit anfangen Kann.
Wie hast du den UDTS erstellt sprich wo kann ich den Code reinschreiben.?:ROFLMAO:

Habe nachdem ich den Haken gemacht habe folgendes Szenario
1sps.JPG



2sps.JPG

Sprich der Wert wird ja direkt in einem Int ?!?! abgelegt wie oben schonmal jemand erwähnt hat bei 8 und bei 16.

Kann ich diesen Wert nicht irgendwie direkt abfangen, sprich eine Variable erstellen die diesen Bereich abdeckt und diese dann auslesen?
Wenn es gar nicht geht kannst du mir erklären wie ich den UDTS erstelle und diesen dann auslese, Theoretisch reicht mir 1 Zähler.


Danke das ihr euch solche Mühe gebt
LG sps31
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kleines Zwischenfazit.

UDT erstellen habe ich glaube ich soweit hinbekommen, werde es gleich mal ausprobieren

//Edit: hat doch nicht so klappen wollen wie ich mir das vorgestellt habe.....
 
Zuletzt bearbeitet:
Die Zählerwerte sind DINT (32 Bit Ganzzahl) und Du kannst sie direkt als %ED32 und %ED40 lesen (bei projektierter Eingangs-Anfangsadresse 24). UDTs auf die E/A-Adressen sind schick, man muß die aber nicht verwenden.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da ich mich anscheinend außerordentlich dumm anstellen muss, fasse ich Hier nochmal kurz zusammen was ich gemacht habe damit man alle Infos nochmal gesammelt hat.

SPS : s7-1515-2PN FW: v2.1
DI : DI 32x24VDC HF FW: v2.1

Haken bei "Zählerkonfiguration auf Kanal 0 und Kanal 1" ist aktiviert.

Anfangsadresse ist wie Oben gezeigt bei 24.0

Habe nun anschließen 2 Variablen erstellt und diese auf ID32 und ID40 als DInt konfiguriert.

Nun habe ich auf meinem HMI 2 Felder erstellt die den Wert von "Zahl1" %ID32 und "Zahl2" ID40 anzeigen sollen.

gezählt wird aber leider weiterhin gar nix.
Noch irgendwelche vorschläge ?

Danke für eure Geduld
LG sps31
 
Die Hardware/Gerätekonfiguration ist in die 1515 CPU geladen?

Dann weiter zu dieser noch unbeantworteten Frage:
Ist der Impulsausgang elektrisch richtig angeschlossen?

Gibt es von Deinem "Massmol"-Gerät ein Dokument wo der elektrische Anschluß des Impulsausgangs gezeigt wird? (das zeige uns mal)
Und/oder wie heißt das Gerät genau?
Und wie hast Du es an die Eingänge der Digitaleingangs-Baugruppe angeschlossen?

Harald
 
Hardewarekonfiguration ist geladen.

Aktuell mache ich es zum Testen so, dass ich von Hand 24V auf den Eingang lege um zu sehen ob er zählt. damit ich die Anlage nicht immer starten muss.

LG sps31
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
PS: Hast Du die Software-Tore SW_GATE der Zähler geöffnet?

- für Kanal 0: %Q12.3 = 1 (oder alternativ das ganze Steuerbyte %QB12 = 8 setzen)
- für Kanal 1: %Q20.3 = 1 (oder alternativ das ganze Steuerbyte %QB20 = 8 setzen)

z.B. in dem von mir in #7 verlinkten Gerätehandbuch der DI 32x24VDC Kapitel "4.2.2 Adressraum Betriebsart Zählen" ist die Steuerschnittstelle der Zählfunktionen beschrieben.

Harald
 
Ok Super, danke dir vielmals für deine Hilfe. Habe jetzt alles hinbekommen und er zählt.

Leider ist es jetzt so, dass dadurch das sich die Pulsbreite nicht ändern lässt, auch bei einer sehr kleinen Frequenz leider der Puls zu schmal ist damit die DI Gruppe diesen erfassen kann.

Also werde ich jetzt ein TM Count Modul
6ES7550-1AA00-0AB0
Bestellen und damit dann hoffentlich ein leichteres Leben haben. Aber mein Ursprungsproblem wurde definitiv gelöst.

PS: Das ist doch das richtige Modul oder ?

LG sps31
 
Hallo sps31,

für kurze Impulse kannst du die Eingangsverzögerung bis auf 0,05 ms einstellen.

Dann sollte der Zähler zählen.

Harald
 
Zurück
Oben