Fehler: Mehrfachverwendung von FBs

vietha11

Level-2
Beiträge
15
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallochen,
Mein Projekt geht um einem Profibus-Steuerungssystem mit S7-300, S7-400 und ein ET-200L-SC. Es gibt 2 Analogeingabemodule 2 AI, 12/13 Bit, 0(4)-20mA (die ich als I_E1 und I_E2 genannt habe) und 2 Analogausgabemodule 1 AO, 12Bit, 0(4)-20mA ( als I_A1 und I_A2 oder I_A3 und I_A4 jenach Position von einer Schalter auf 1 oder auf 0)
Die Funktionsbausteine dafür habe ich gemacht. Aber meine Problem liegt auch hier (glaube ich) dass die Ergebnisswerte (die Ausgänge) stimmt nicht wie die seinen sollen. Manche FBs hier werden mehrmal bei verschiedene Funktionen verwendet. Und ich glaube dass die Ergebniss bleibt bei jede Schritt bis zur nächste Schritt. (also gespeichert). Deswegen kommt die falsche Ergebnisse. auf VAT5 (Variabletabelle 5) könnt ihr die online nachkontrollieren.
Die Achivierungsdatein sowie ein PDF datei für Funktionsdefinitionen lage ich bei.
Bitte um eine Kontrolle,
sehr dankbar ,
 

Anhänge

  • Et_200l_.zip
    335,7 KB · Aufrufe: 6
  • funktionen.pdf
    1.013,3 KB · Aufrufe: 34
Zuletzt bearbeitet:
MD in FB ???

Hallo vietha11.

Ich würde in FB´s keine absoluten Adressen verwenden. :confused:
(keine Wiederverwendbarkeit )

Dein Wert beim Aufruf (z.B. FB110 ) wird immer der Wert des MD28 sein.

Du müsstest dann schon die Variable "Zahl_1" nehmen. (siehe Anhang)
 

Anhänge

  • FB110.bmp
    202,6 KB · Aufrufe: 19
Zuviel Werbung?
-> Hier kostenlos registrieren
danke Verpolt, es funktioniert.

Aber noch ein Problem, das ist die Umschalter und die Unskalierung. Also die Ausgänge I_A1 und I_A2 stimmen schon, aber bei Umschaltung mit Umschalter E8.0 kommt die Werte von I_A3 und I_A4 nicht richtig.
Bitte um Hilfe !
 
du hast Überschneidungen in deinen Variablen

z.B. MD 2 ( MW2+MW4 (MB2+MB3+MB4+MB5))

dann gehts bei dir weiter

MD 4 ( MW4+MW6 (MB4+MB5+MB6+MB7))

Überschneidung MW4 (MB4+MB5)

Das zieht sich durch dein ganzes Projekt. mit ungefähr 12 Doppelwörtern.

Warum vervendest du so viele FB´s ,die auch noch absolut adressiert sind, und springst dann aus diesen wieder in FB´s (teilweise absolut). ?

aber egal. Adressbereiche neu definieren

Grüße
 
hallo,
ich verstehe nicht was du meinst. Ist das gemeint dass je MD 2 MW hat, und je MW 2 MB hat?
Wenn ich umadressieren muss wie soll ich machen? die MD 4 und MD6 weiter nach hinten verschieben oder?
danke sehr,
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist das gemeint dass je MD 2 MW hat, und je MW 2 MB hat? *ACK*

genau!

M 0.0-0.7 8 bit
MB 0 1 byte (=8 bit)
mw0 1 wort (2 byte =2*8bit = 16bit)
md0 2 worte (4 byte =4*8bit = 32bit) =Doppelwort


Du kannst mit der Funktion im Simaticmanager-->Extras--> umverdrahten dein ganzes Projekt bearbeiten.
ODER
von Hand alles richten (Symboltabelle..alle Verwendungstellen...)
sozusagen nach hinten schieben.

Mfg
 
Wenn ich umadressieren muss wie soll ich machen? die MD 4 und MD6 weiter nach hinten verschieben oder?
danke sehr,
Genau, und dabei den richtigen Abstand einhalten wie Verpolt geschrieben hat.
Du kannst Dir auch den Belegungsplan anzeigen lassen. Dort erkennst Du auch ganz schnell eine Doppelbelegung.

Extras > Referenz > Belegungsplan (stimmt der Pfad so? Geht bei mir ganz automatisch ;))

Außerdem kannst Du dort auch nach Operanden ohne Symbolik oder nicht verwendete Operanden mit Symbolik suchen.
Sehr Hilfreich. :D
 
hier ist meine Belegung. Sind die blaue Balken mit schwarze Spitzen überlappend oder?
Von MB 0 bis MB 3 ist MD 0 ? und MB 4 bis MB 7 ist MD 2 ? oder
und was für ein M ist MB1 bis MB2 ? kannst du bitte detaillierte erklären? Da ich ganz neu mit S7 eingestiegen bin. :)
grüß,
 

Anhänge

  • belegung.JPG
    belegung.JPG
    141,3 KB · Aufrufe: 22
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo vietha11

Du belegst einmal MD0 --Doppelwort MB0-1-2-3
MW1--wort MB1,MB2

Das sind Überschneidungen


mach dochMD 0
MD 4
MD 8
...
 
Zuletzt bearbeitet:
Wie soll ich hier umadressieren?
icon6.gif
icon5.gif
 

Anhänge

  • belegung1.JPG
    belegung1.JPG
    41,6 KB · Aufrufe: 17
Zuviel Werbung?
-> Hier kostenlos registrieren
selbst danken habe ich doch schon. aber bitte nicht so kritisch mit Einsteiger :)

Hier habe ich noch mal die korrigierte Achivierungsdatein und das bild von FB170. Also die interne Variable "max" gibt nicht richtige Ergebnis ab.

Bitte nochmal angucken! ihr sei sehr nett, mir schnell zu antworten.
danke sehr,
 

Anhänge

  • Et_200_1.zip
    341 KB · Aufrufe: 3
  • FB170.JPG
    FB170.JPG
    40,1 KB · Aufrufe: 18
Weil das eine Temp-Variable ist und diese sich nichts "merkt" /speichert, wenn
du aus diesem Baustein springst.

Probiere es mal mit #max als "stat" lokalvariable
 
Zuviel Werbung?
-> Hier kostenlos registrieren
FB160 ist doch der einzige, der #max beschreibt. Das Ergebnis hat er im nächsten Zyklus an seinem Vergleicher ein netzwerk davor. (hat er nicht, da temp variable).

Wenn er das netzwerk mit vergleicher nach der zuweisung von FB160 setzt, könnt es für einen zyklus klappen.

oder liege ich falsch??
 
ich habe schon die "max" bei Symboltabelle als ein MD60 definiert, und naturlich auch im FB170, wo "max" ist, auch als MD60 umgenannt. also wird gespeichert --> funktioniert
Aber die Umschalter funktioniert igendwie nicht ???
 
Zuletzt bearbeitet:
FB160 ist doch der einzige, der #max beschreibt. Das Ergebnis hat er im nächsten Zyklus an seinem Vergleicher ein netzwerk davor. (hat er nicht, da temp variable).

Wenn er das netzwerk mit vergleicher nach der zuweisung von FB160 setzt, könnt es für einen zyklus klappen.

oder liege ich falsch??

hab mir nur den screenshot angeguckt, mehr nicht...
 
ich habe versuch, #max bei Stat als lokalvariable umzutauschen. geht aber nicht. und bei meine Lösung, habe ich "max" als ein Merke (Doppelwort - REAL) bei Symboltabelle definiert. FUNKTIONIERT es gut.
 
Zurück
Oben