wie kann ich Datenbausteine erstellen, lesen, abfragen und diese in die vorhandene Steuerung einbinden?
wie hier beschrieben:
Allerdings stehe ich da nun mehr SPS-seitig vollkommen auf dem schlauch, wie ich mein S7-Programm so zurecht gerückt bekomme, das ich mit den Eingängen und mit einer Datenübertragung von IPS schalten kann und die Zustände auch wieder ausgelesen bekomme. Ich denke das ist ein strukturelles Problem. Ich habe noch keine blassen Schimmer, wie der neue Ablauf aussehen soll.
Momentan ist es einfach Eingang Tastet–> schaltet Ausgang in Selbsthaltung bis nächster Tasteingang kommt.
Hier müsste dann vermutlich ein DB o.ä. dazwischen, der von dem Eingang oder einer Variable in IPS gesteuert wird. Oder würde dieser auch wieder direkt von der SPS überschrieben werden ?
Na dann plauder ich mal aus dem Nähkästchen. Ich bin nämlich einer solchen externen die SPS’n programmieren.
Wenn du ne Selbsthaltung hast, wirst du ein SR oder RS Flipflop eingesetzt haben.
Dieses Flipflop bedient normalerweise einen Merker. Diesen könntest du jetzt mit IPS auslesen und neu schreiben.
Idealerweise macht man das mit einem Bit in einem Austausch DB. Für deine Anwendung reicht aber direkt das Fliflop-Bit (hier M100.2) zu bearbeiten.
Ich hab mal ein kleines Bild angehangen.
Wichtig ist, dass man aber nur auf Anforderung sendet und nicht ständig das mit aus IPS überschreibt.
Eine Alternative wäre ein extra „Togglebit“ zu machen, das aber auch von IPS wieder zurückgesetzt werden muss. Hier hat man dann auch den seperaten Visu-DB (hier DB10)
Siehe Bild 2.
Man kann das beliebig verkomplizieren. Vielleicht möchtest du einen AUTO-Hand Schalter bauen, der zwischen IPS und Taste umschaltet.
P.S.: Die Beispiele sind aus der hohlen Hand und sind nur als grobes Beispiel zu verstehen. Kann man nämlich auch schöner machen.
ich habe das anders gemacht. Habe einen FB geschrieben und diesen in allen FCs entsprechend aufgerufen und nur noch die Ein- und Ausgänge drangemacht.
Habe mal in der Anlage die Grundfunktion des FBs gedruckt.
Kann ich hier auch ansetzen? ICh muss gestehen, Deine FCs kann ich nicht so ganz nachvollziehen. Ich werde mir die gleich mal in den Simulator laden und schauen, was dann passiert. Sieht für mcih aber auf den ersten und zweiten Blick so aus, als ob ich nicht mit dem gleichen Taster auch wieder ausschalten kann.
wenn ich die SPS richtig verbunden habe, bei der Instanz den Test machen kann und auch ein byte in einen Datenbaustein bekomme, müsste dann dies nicht auch mit verändern der Variable funktionieren?
Bei mir klappt aber noch nicht mal die Abfrage der Variable! Was mache ich denn nur falsch?
Hm, mal abgesehen davon, das ich nie 4 gleiche Ein- und Ausgänge auf eine SPS legen würde. Könnte ich mir sowas vorstellen (siehe Anhang).
Wobei du den EINAUS-gang „Zustand“ in einen DB oder Merker legen könntest.
Dann hast du direkt eine Variable für den Zustand und könntest sie auch Eventgesteuert beschreiben wie steiner geschrieben hat.
Das Du ein XOR für ein Flipflop benutzt ist interresant, in meinen Augen aber etwas unübersichtlich. Bei einem richtigen Flipflop sieht man direkt beide Pfade (für EIN und für AUS).
P.S.: Bei der Variant gewinnt bei gleichzeitiger Betätigung der „alles aus“ Merker. Soll der „Panik“ Merker gewinnen müsste man ein RS-Flipflop einsetzen.
Achso, solltest du den FB z.b. 8mal aufrufen, könntest du alle „Zustände“ in ein Byte legen und von IPS in einem Schlag beschreiben. Wenn du denn alle Zustaände zusammen schalten willst.
[QUOTE=McFly;46595]Hm, mal abgesehen davon, das ich nie 4 gleiche Ein- und Ausgänge auf eine SPS legen würde.
was spricht Deiner Meinung nach dagegen? Ich hatte dies gedacht, wenn ich z.B. Die Wohnzimmerlampen (3Stück) von 2 oder 3 Stellen schalten möchte
Das Du ein XOR für ein Flipflop benutzt ist interresant, in meinen Augen aber etwas unübersichtlich. Bei einem richtigen Flipflop sieht man direkt beide Pfade (für EIN und für AUS).
Das mit dem XOR, war so fast das Einzige, was ich aus meinem SPS-Kurs behalten habe, fand ich schön kurz :-))
P.S.: Bei der Variant gewinnt bei gleichzeitiger Betätigung der „alles aus“ Merker. Soll der „Panik“ Merker gewinnen müsste man ein RS-Flipflop einsetzen.
mit dem script geht es !!! Ich kann also damit in die Datenbank schreiben.
Jetzt habe ich auch verstanden, das die Werte-Änderung bei Value nur zu Testzwecken in IPS selbst gedacht ist und alles andere per script gemacht werden muss.
Das ist dann das mit dem Wald und den Bäumen
Nun hätte ich wahrscheinlich noch eine Dumme Frage:
Da die Kommunikation nur auf Byte-Ebene läuft, ich aber ja eigentlich nur bits schreiben möchte, muss ich dann für jeden zu schaltenden Befehl einen eigenen DB mit 8bits nehmen, obwohl ich ja nur 0 und 1 schalten möchte?
Ansonsten habe ich ja das Problem, wenn ich in DB1 eine 2 schreibe, weil ich gerne DB1.DBX1.1 auf Status 1 setzen möchte, automatisch DB1.DBX1.0 auf 0 stehen, oder?
Erst einmal an dieser Stellen VIELEN DANK für die Hilfe!!
nachdem ich das Schreiben auf die SPS hinbekommen habe, stehe ich wieder vor einem Rätsel:
Ich versuche mit folgendem Script die Variabel valueID1 auszulesen und dann auf die SPS einen entsprechenden Wert (0 oder 1) zu schreiben.
Obwohl direkt die richtigen Kommentare angehängt werden, zeigt mir das Script als Inhalt des ValueID1 nur 17944 und nicht 0 oder 1
Wo liegt denn hier mein Denkfehler ?
<?
$valueID1=17944/[Siemens S7-2\Siemens SPS Halter\Ausgabe Stati\S7-DB1\VALUE-DB1]/;
$DB1=56871 /[Siemens S7-2\Siemens SPS Halter\Ausgabe Stati\S7-DB1]/;
if ($valueID1 == 0)
( S7_WriteByte($DB1,1)
);
else
( S7_WriteByte($DB1,0)
);
echo $valueID1
// Hier erhalte ich nur 17944 statt den Inhalt der Variable
dank Eurer tatkräftigen Unstützung, habe ich das Schreiben und Lesen von Merkern in der SPS nun hinbekommen. (siehe angehängtes PDF bzgl. des erstellten FBs). Allerding geht das nicht, wenn ich statt der Merker ein Datenbit nehmen möchte. Statt z.B. M15.6, DBB15.DBX0.6. Ich denke aber, es liegt mehr SPS-Seitig, das ich die DB gar nicht richtig schreiben kann, wenn ich die DB in Step7 öffne, kann ich diese nicht editieren und es sind auch keine Platzhalter für das entsprechende Bit vorhanden. @edison, Du hast doch ein wenig Erfahrung mit Step 7. kannst Du mir da einen Tip geben?
ICh habe für die Bit-Byte-Umsetzung beim Lesen und Schreiben die Scripte von steiner verwendet. Klappt soweit auch ganz gut. Leider sind das ja nun einige Scripte, die in IPS dann rumliegen. Wird es eine Möglichkeit geben, Kommentare bzgl. Feldbeschreibungen in einer weiteren Zeile einzugeben, damit man außer der automatisch erstellten Bezeichnung die Scripte und Variablen besser zuordnen kann?
seit dem heutigen Update klappt das Rückschreiben der Bits auf ein Byte nicht mehr (Fehlermeldung Varible wurde als nur Lesen markiert)
Ich weiss aber nicht, wo ich diesen Schreibschutz herausnehmen kann. War in der Version von letzer Woche nicht drin