TIA Mehrere Frequenzmessungen / Fehlerhafte Adressierung

B_Kalle

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Mehrere Frequenzmessungen / Fehlerhafte Adressierung / Ansprechen d. schnellen Zähler

Hallo zusammen,

nachdem ich in der Suche und bei Siemens nicht fündig geworden bin, hier ein neuer Thread zum Thema "Adressierung der Frequenzmessung

Meine Hard- und Software habe ich in folgendem Thread schon einmal gepostet und möchte mir das mit dem fogenden Link sparen:

Bestehenden SBF48 (Frequenc) zum laufen brignen


Aufgabenstellung:

Nachdem ich ich es geschafft habe den Frequenzbaustein im oberen Thread zum laufen zu bringen, möchte ich noch eine weitere Frequenzmessung mit der CPU 314C-2 PN/DP druchführen.

Kanal 0 ist hier bei die Drehzahl (60Imp. /Umdr.) einer Messwelle.

Kanal 1 soll das Drehmoment (10 kHz +-5 kHz) werden.

Der E-Adressenbereich ist 816-831.
Für den Kanal 1 habe ich die E-Adresse EW819 gewählt.
Hierbei habe ich aber immer das Problem, dass ich nur die Werte von Kanal 0 bekomme. Welche Eingangsadresse müsste ich denn einstellen?

Hierzu mal zwei Bilder...

Hier die Belegungsvorschrift. Demnach müsste, wenn jeder Kanal 3 Adressen braucht, Kanal 1 bei 819 starten oder lese ich das falsch?
EAdressenZaehler.jpg

Hier noch meine Adressbelegung:

Geräteansicht.PNG

Gruß und vielen Dank im Voraus

Kalle
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

es gibt für die technologischen Funktionen auch extra Bausteine. bei der 300er waren das z.b. sfb47 (COUNT), 48 (FREQUENC), SFB49 (PULSE).
ob es die in tia gibt und wie die dort heißen weiss ich nicht.

https://support.industry.siemens.co...Use,Faq,Manual,ProductNote,Slk,Forum&lc=de-WW

Das mit den SFB hab ich raus. Für meine Zwecke ist der SFB 48 der richtige. Die Drehzahl im Kanal 0 läuft ja auch schon.

Mein Problem ist eher, dass ich nicht weiß welchen Eingang ich anprechen soll. Eigentlich sollte ich ja über EW819 mein zweites Frequenzsignal erfassen können. Stattdessen erfasse ich das erste Frequenzsignal (siehe Bild). Ich habe auch schon EW820 ausprobiert, leider vergeblich.

Unbenannt.PNG


@ volker So wie es deine Grafik zeigt müsste ich ja mit EW819 richtig liegen. Leider funktioniert es so nicht
 
Ich bin zwar schon gaaanz weit weg von Siemens, aber irgendwie versteh ich Deine EW-Zuordnung nicht.
Laut Deiner Grafik zählst Du für jeden Digitaleingang das EW um eins hoch.
Dabei handelt es sich aber um Byteadressen. Wenn Du 4 Zahler hast und jeder Zähler 32 Bit (4 Byte, 2 Worte) wäre Z0 bei 816...819, Z1 bei 820...823, Z2 bei 824...827 und Z3 bei 828..831.
Genaues sollte aber die Hardwarereferenz sagen. Den SFB48 musst Du auch mit einem neuen Instanz-DB aufrufen.
 
Zuletzt bearbeitet:
( :confused: Wie kann man für einen Kanal die E-Adresse "wählen"??? Und wieso EW... (Words)? )

Lies mal die von volker gepostete Tabelle richtig - da steht Datentyp "DINT" (ist 32 Bit) und es sind auch eindeutig die Adress-Offsets im 4-er Raster angegeben ---> die Peripherieeingänge müssen PED... sein.

Man kann nur die Anfangsadresse des kompletten Zählen-Moduls festlegen (Standard: E 816 bis 831)
Dann ergibt sich für die Kanal-Zählwerte/Frequenzwerte:
CH0 PED[E-Adresse + 0] (Standard: PED816 )
CH1 PED[E-Adresse + 4] (Standard: PED820 )
CH2 PED[E-Adresse + 8] (Standard: PED824 )
CH3 PED[E-Adresse + 12] (Standard: PED828 )

die Tabelle und noch viel mehr Erklärungen findest Du im Handbuch S7-300 CPU 31xC Technologische Funktionen
Kapitel 5.4 unter Peripheriezugriffe

PS: wozu brauchst Du eigentlich die Peripherieadressen? Du musst sowieso für den Kanal den SFB48 aufrufen und der SFB liefert Dir am Ausgang COUNTVAL den Frequenzwert des Kanals.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Harald: Hab diesen Beitrag hier getippt, während Du deinen geschrieben hast...


@ weißnix_: Der SFB48 verlangt ein EW als Eingang.
Ob meine Grafik von der Adressierung her so passt, weiß ich ja leider nicht. Sonst würde ich wohl auch den Fehler finden;) (also vielleicht:p)

Meiner Ansicht nach widersprechen sich aber auch die beiden Grafiken von mir (Post #3) und die von volker (Post #2) da ja einmal 3 und einmal 4 Adressen für einen Zählereingang reserviert sind. Oder hab ich hier nen Denkfehler. Ein Wort benutze ich hier doch nur weil dies einen genügend großen Speicherbereich für das Eingangssignal bietet oder?

Datenbausteine sind vorhanden (Bild)

Aufruf_FB_DB.PNG
 
Zuletzt bearbeitet:
Der SFB48 darf anscheinend nur einmal aufgerufen werden. Über den Channel-Eingang steuerst Du dann, was am Ausgang (die Daten von welchem Kanal) rauskommt. LADDR ist m.e. die kleinste Adresse, in Deinem Fall also 816.
Im Zweifel ist das jetzt also der Punkt, eein wenig Code rauszurücken, damit die hier zahlreich vertretenen S7-Profi's Dir die Problemstellen benennen können.
 
( :confused: Wie kann man für einen Kanal die E-Adresse "wählen"??? Und wieso EW... (Words)? )

Lies mal die von volker gepostete Tabelle richtig - da steht Datentyp "DINT" (ist 32 Bit) und es sind auch eindeutig die Adress-Offsets im 4-er Raster angegeben ---> die Peripherieeingänge müssen PED... sein.

....


PS: wozu brauchst Du eigentlich die Peripherieadressen? Du musst sowieso für den Kanal den SFB48 aufrufen und der SFB liefert Dir am Ausgang COUNTVAL den Frequenzwert des Kanals.

Weil der SFB 48 in TIA doch ein WORD als Eingangssignal verlangt
Freq_LADDR.PNG

....

Na iwas eine Perepherieadresse bzw. eine Variable die diesen Eingang ausliest muss ich dem Baustein doch mitgeben oder versteh ich was falsch?
Hier mal der Baustein im Main der aus Kanal 0 liest und funktioniert
(Hier wurde der Perepherizugriff mit "Variablenname":p gemacht... Ist das identisch zu PED?)

Freq_Funktionierender_Baustein.PNG

Nicht ganz... Der Parameter MEAS_VAL gibt den aktuellen Frequenzwert aus
Freq_MEAS.PNG


Das Handbuch der technologischen Funktionen kenne ich, nur werde ich nicht richtig schlau daraus, bzw weiß nicht was ich genau ändern muss damit es funktioniert:confused::confused:
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
@ weißnix_: Der SFB48 verlangt ein EW als Eingang.
Das ist falsch. Die Erklärung der SFB-Eingangsparameter findest Du in dem verlinkten Handbuch und auch in der TIA-Hilfe.

Egal für welchen Kanal man SFB48 aufruft, an LADDR ist immer die in der Gerätekonfig für das Zählen-Submodul vergebene E/A-Anfangsadresse anzugeben, Standard: 816 bzw. W#16#0330
An CHANNEL gibt man an welchen Kanal man ansprechen will (0 bis 3)

Beispiel: Für Frequenzmessen mit Kanal 1 musst Du SFB48 mit LADDR:=W#16#0330 und CHANNEL:=1 aufrufen.

Ob meine Grafik von der Adressierung her so passt, weiß ich ja leider nicht. Sonst würde ich wohl auch den Fehler finden;) (also vielleicht:p)

Meiner Ansicht nach widersprechen sich aber auch die beiden Grafiken von mir (Post #3) und die von volker (Post #2) da ja einmal 3 und einmal 4 Adressen für einen Zählereingang reserviert sind.
Deine Grafik gibt an, an welchem Hardware-Eingang die Kanal-Signale angeschlossen werden müssen. Aus dieser Grafik kann man nicht die E-Adressen der Kanal-Zähler ableiten (dafür gibt es die Grafik von volker). Man kann höchstens ableiten, auf welchem Eingangsbit die A-Spur, die B-Spur und das HW-Tor liegen, z.B. Kanal 1 Standard-Adressen
E136.3 A-Signal
E136.4 B-Signal
E136.5 Tor-Signal

Die HW-Adressen der Anschlüsse sind Bit-Adressen (keine Words!)

Harald
 
Zuletzt bearbeitet:
Der SFB48 darf anscheinend nur einmal aufgerufen werden. Über den Channel-Eingang steuerst Du dann, was am Ausgang (die Daten von welchem Kanal) rauskommt. LADDR ist m.e. die kleinste Adresse, in Deinem Fall also 816.

Ahh, stimmt da war was. Ich teste das gleich mal und geb dann Rückmeldung. Falls ich sonst noch "einen";) (Denk-) Fehler drin hab, bitte mit Hilfesteinen werfen ;)

Wenn's nicht funktioniert, gibt's Code...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hehe, an hohem Blutdruck will ich nicht schuld sein, aber ich kann schon recht dumm fragen wenn ich mich wo nicht auskenne...:ROFLMAO:


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Also zum Baustein... Es läuft jetzt...

Erstmal vielen Dank an PN/DP, weißnix und volker

Also wie beschrieben, habe ich den Frequenzbaustein nur einmal verwendet und daher in einen FB gepackt und rufe ihn aus dem Hauptprogramm
auf wenn ich ihn brauche. Ob man ihn auch zweimal seperat ins Hautprogramm packen kann weiß ich nicht!?

Hierzu gibt es einen Hinweise im Beitrag #2 geposteten Link:
Hinweis:
Wenn Sie in Ihrem Programm einen SFB programmiert haben, dürfen Sie in einem Programmteil mit einer anderen Prioritätsklasse nicht denselben SFB nochmals aufrufen, da
der SFB sich nicht selbst unterbrechen darf. Beispiel: Es ist nicht zulässig einen SFB im OB 1 und denselben SFB im Alarm-OB aufzurufen.


Den Rest erklären wohl Bidler am besten. Wenn jemand was schreckliches sieht möge er sich die Augen zuhalten oder mich sanft informieren :ROFLMAO:


1.jpg

2.jpg

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Wie setzt man denn ein Thema auf "gelöst"?



Gruß und eine schöne Zeit

B_Kalle
 

Anhänge

  • 2.jpg
    2.jpg
    74,2 KB · Aufrufe: 7
Zuletzt bearbeitet:
Zurück
Oben