SCL Binär Wert in INT ausgeben / Problem

Hallo Bollek.

das Programm sollte prinzipiell so arbeiten, jedoch 3 Dinge fallen mir auf:
> in der Hardcopy ist der Eingang Einlagern und Auslagern nicht beschaltet und kann wegen dem Gedächtnis (InstanzDB) jeweil 1 (oder sonstwie sein) sein
> in der 2. If Abfrage ist in der Zuweisung := True (sollte aber false sein da Auslagern)
> Die Zuweisung Fachbesetzt sollte m.E. als letzte Anweisung durchgeführt werden und somit das Bit wirklich nach der eventuellen Manipulation deines Programms (wie das auch immer in wirklichkeit aussah) darstellen und dann auch mit dem Status des DBs übereinstimmen.

Ansonsten: wenn Du SCL nimmst könntest Du auch ohne Pointer arbeiten und direkt symbolisch auf die Fächer (als 2-dim. Array (Reihe/Fach) definiert) zugreifen ...

Grüsse SHU
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
von der Anmerkung von SHU mal abgesehen (da hat er natürlich Recht) sollte aus meiner Sicht (vor Allem mit der Online-Ansicht dazu) das Ganze wie gewünscht funktionieren.
In der IF-Abfrage würde ich Fach_besetzt und Einlagern und Auslagern auf TRUE und FALSE (je nach Bedarf - bzw. wenn TRUE erwartet wird gar nicht mehr als Vergleich aufführen und bei False mit NOT und ohne Vergleich arbeiten) vergleichen - das ist aber nur eine Schönheitsheitsgeschichte.

Bist du dir sicher, dass dein DB mit seinen Bits nicht noch von woanders im Programm beschrieben wird ?

Wo wird dieser Baustein aufgerufen ? Direkt im OB1 ? Kannst du mal nur den Baustein und nichts weiter im Programm laufen lassen - auch keine Visu ?

Gruß
Larry

Nachsatz:
Deine DB-Ansicht zeigt mir nicht die Online-Ansicht des DB sondern deine Zuordnung beim Erstellen - das kann ja u.U. abweichen - schalte das bitte mal auf Online ...
 
Zuletzt bearbeitet:
> in der Hardcopy ist der Eingang Einlagern und Auslagern nicht beschaltet und kann wegen dem Gedächtnis (InstanzDB) jeweil 1 (oder sonstwie sein) sein
> in der 2. If Abfrage ist in der Zuweisung := True (sollte aber false sein da Auslagern)
> Die Zuweisung Fachbesetzt sollte m.E. als letzte Anweisung durchgeführt werden und somit das Bit wirklich nach der eventuellen Manipulation deines Programms (wie das auch immer in wirklichkeit aussah) darstellen und dann auch mit dem Status des DBs übereinstimmen.

Ansonsten: wenn Du SCL nimmst könntest Du auch ohne Pointer arbeiten und direkt symbolisch auf die Fächer (als 2-dim. Array (Reihe/Fach) definiert) zugreifen ...

Grüsse SHU

Hallo ihr da,

>Ja, das stimmt. Hab es absichtlich erstmal nicht beschaltet, da die IF-Schleifen erstmal herauskommentiert sind bis sich dieses "Fachbesetzt" problem gelöst hat.
>bereits verbessert. War ein flüchtigkeitsfehler *blush^^
>Ja, da hast du recht, als richtiger Programmierer sollte man dies so tun. Momentan steht im Programm wirklich nur "fachbesetzt := DB10.DX[k,p];" + die berechnung von k und p

>Ja wäre wahr. einfacher gewesen. Hab mich da ehrlich gesagt durchgequält und keine Ahnung wie symbolische Zugriffe auf DBs funktionieren. Die Pointer geschichten kamen mir so vertraut vor aus C mit seinen pointern und adressen :)

Bist du dir sicher, dass dein DB mit seinen Bits nicht noch von woanders im Programm beschrieben wird ?

Wo wird dieser Baustein aufgerufen ? Direkt im OB1 ? Kannst du mal nur den Baustein und nichts weiter im Programm laufen lassen - auch keine Visu ?

Gruß
Larry

Nachsatz:
Deine DB-Ansicht zeigt mir nicht die Online-Ansicht des DB sondern deine Zuordnung beim Erstellen - das kann ja u.U. abweichen - schalte das bitte mal auf Online ...

Ja bin mir sicher, hab diesen Baustein extra nur für diesen SCL Baustein erstellt.
Der Baustein wird nicht direkt im OB1 aufgerufen. Im OB1 sind nur zwei FBs drin. Der eine für Manuellen Betrieb der Anlage, der zweite für den Automatischen. Im FB7 (Auto) befinden sich im Prinzip das ganze geschehen (Schrittketten + der SCL Baustein (Organisatorisches Herzstück^^).

Werde morgen früh mal nur den Baustein laufen lassen. Was meinst du mit Online-Ansicht des DBs ? Sorry, hantiere das erste mal mit DBs und bin noch nicht sehr erfahren im Umgang mit S7.

Danke für die Hilfen!

Mfg Bollek
 
Hallo,
von einem DB kannst du genauso eine Online-Ansicht bekommen wie von deinem Programmcode.
Ich nehme an, dass du zwar irgendwann einmal den DB wie in dem Bild erstellt hast, er aber den Zustand nicht mehr hat.
Du kannst natürlich auch vor deinem Bausteinaufruf einfach mal hinschreiben :
Code:
SET
= DB10.DBX1.7
Dann sollte es mit Fachbesetzt vielleicht auch klappen (wenn meine Vermutung hier stimmt) .

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey,

Larry du hattest Recht. Im Online Modus kam ne neue spalte dazu: "Aktualwert" und dort waren die Bits anders gesetzt... grml.. der ganze ärger wegen so einer trivialen geschichte...
Jedenfalls funktioniert alles. Sowohl das setzten als auch das löschen durch die IF-Schleifen.

Bedanke mich bei allen die sich meinem Problem angenommen haben. Ihr macht ne gute Arbeit hier im Forum.
Thumbs up und weiter so.

Mfg Bollek
 
Zurück
Oben