Datenbereiche vergleichen Panasonic FP-X

choke

Level-1
Beiträge
52
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Halli Hallo...

Ich bin gerade im Praktikum und soll bei einem IEC-Standard Programm die Datenbereiche auslesen um sie mit dem Automatisierungsprogramm zu vergleichen um überschneidungen fest zu stelllen...
Ich kenn mich damit so gut wie garnicht aus aber hab da schon so eine Idee...
Ich guck mir die FP-Adresse an z.B. DT0 , dann den Typ ARRAY[0...249] OF WORD...
meine frage: ist das jetzt der Datenbereich? Im DT die ersten 250 Bits? oder wie kann man sich das vorstellen?

ich hoffe es ist einigermaßen verständlich was ich meine...LG
 
Ein DT hat 16 Bits, wie jedes andere Wort auch ...

DT0 = Startadresse
mit dem von dir genannten Array wäre dann also DT0 - DT249 belegt.
Wichtig: Panasonic erlaubt nur Arrays die der Größe der Startadresse entsprechen.
Ein Real/DINT etc. braucht dann also ein DDT, ein Bool entspreichend einen Merker "R".

Und man kann dann also das Array über DT0 bis DT249 manipulieren,
oder halt struckturiert über myvar[0] bis myvar[249] und in ST zusätzlich noch über myvar[index].

Mfg
Manuel
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
okeeee :) das heißt also wenn ich im automatisierungsprogramm DT0 mit dem array belegt habe, ist DT0- DT249 belegt. d.h. wenn im IEC Programm auch DT0 verwendet wurde, muss ich das abändern auf z.b. DT250, sofern er halt noch nicht bnutzt ist. Richtig? oO
 
ich hätte da noch eine kleine frage..was für ein variablentyp ist dutoperationData? bzw wie viel speicher verbraucht so eine variable..? :) int und bool werden ja bitweise gespeichert ..string doppelwort?
 
ich hätte da noch eine kleine frage..was für ein variablentyp ist dutoperationData?

Das ist ein zusammengesetzter Datentyp, du findest in in der Abteilung "SDT" von Bibliotheken oder in den projektspezifischen SDTs.
Hier steht dann auch aus wievielen Worten oder BOOLs der SDT besteht, bzw. belegt.

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
guten morgen...

danke erstmal für die antworten :D

um meine arbeit ab zu schließen muss ich aber noch herausfinden wo ich den datenbereich für Integer Variablen heraus lesen kann..
leider steht im querverweis keine FP-Adresse...giebt es für die INT, BOOL u.a. Variablen festgelegte Datenbereiche?
irgendwo muss ja für die variable ein platz reserviert sein, oder sehe ich das falsch?

LG
 
Jetzt werden wir noch ein wenig "interner" ...
Unter "Extras" - "Optionen" gibt es die Abteilung "Compiler-Optionen" - "Adressbereiche".

Hier ist dann der gesamte Speicherbereich aufgeteil in Anwender / System jeweils nicht remanent bzw. remanent.

Wenn du jetzt also ein INT ohne Adresse deklarierst, landet das in einem DT des Systembereichs.
Wenn du jetzt also ein BOOL ohne Adresse deklarierst, landet das in einem BOOL eines WR (Merkerwort).
WR10 z.B. wäre dann Merker R100 - R10F.

Die konkrete und exakte Adresse wird dann also vom Compiler dynamisch aus dem Systembereich festgelegt, und ist auch nur dem Compiler bekannt.

Mfg
Manuel
 
ok..also kann ich nicht wirklich herausfinden welcher datenbereich belegt ist, aber eingrenzen könnte ich ihn, oder?
z.b. ist der nicht selbsthaltende bereich 1000 Worte groß ..501 worte werden von der globalen variablenliste belegt und zwar 0-500. Damit wäre 501-999 noch frei für z.b. das iec programm..kann man das so sagen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Stimmt nicht so ganz, es kommt rein auf die Einstellung in den Compiler-Optionen an.

Hier ist explizit festgelegt bis zu welcher Adresse der Anwenderbereich geht, und verwendet werden KANN.
Ebenso ist explizit festgelegt welche bzw. wieviele Adressen der Compiler verwenden DARF.

Eigentlich frage ich mich das schon von Beginn des Threads an:
Was hast du eigentlich vor?
 
Mir wurde aufgetragen zu gucken wie weit die datenbereiche sich überschneiden da das automatisierungsprogramm mit iec-programm zusammen gepackt werden soll. das automatisierungsprogramm soll in das iec programm integriert werden..
 
Zuletzt bearbeitet:
Das wiederum würde heißen, das du Sachen an die nicht explzit eine Adresse geschrieben ist ignorieren kannst.

Der Systembereich könnte im Worst Case maximal zu klein sein, aber Überschneidungen KANN es nicht geben.

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wunderbar...also vergleiche ich nur die DT´s und R´s und das was sich überschneidet muss verlagert werden...kann man denn irgendwie einsehen ob der systembereich zu klein wäre?
 
Wunderbar...also vergleiche ich nur die DT´s und R´s und das was sich überschneidet muss verlagert werden...kann man denn irgendwie einsehen ob der systembereich zu klein wäre?

Das sagt dir dann der Compiler, bei der Globalen Variablenliste wäre das vielleicht noch möglich (das händisch zu errechnen),
aber der Systembereich wird auch kreuz und quer in den Bausteinen verwendet.

Mfg
Manuel
 
ok...gut , also muss ich das programm erst einmal integrieren um zu sehen ob genügend speicher vorhanden ist..
werd ich machen...

danke für die hilfe..jetzt ist alles klarer geworden!
 
Zurück
Oben