SPS Programm über Merker steuern

Hallo zusammen,

da ja ab dem nächsten Major Release die MBT_* Befehle weg fallen wird es für mich höchste Zeit mein SPS Programm zu überarbeiten.
Jetzt habe ich mal ein Programm mit Merkern in CoDeSys für die WAGO 750-841 geschrieben, welches auch soweit funktioniert. Leider bin ich damit nicht ganz glücklich und wollte fragen wie Ihr es gelöst habt.
Am meisten interessiert mich wie Ihr über Merker und physikalische Taster Euer Programm steuert, damit alles immer syncron ist.
Vielen Dank für Eure Mühe.

Gruss
Michael

Die MBT Befehle fallen weg? hmmm … weil? :confused:

Ersatzlos?? :eek:

Beschreib doch mal genauer warum du mit deiner Lösung nicht so zufrieden bist!

Gruß
Jens

ja fallen weg -> siehe hier:

http://www.ip-symcon.de/forum/f18/ip-symcon-2-3-changelog-4850/#post94664
-Neu: Alte 1.x Funktionen MBT_* werfen eine „Deprecated“ Meldung (Bitte gegen eigene Instanzen austauschen)

ich bin damit nicht zufrieden, weil wenn ich den Stromstoss-Baustein gegen eine Timer ersetze der Merker sich jedes mal selbst neu setzt.

Daher mein Interesse wie Ihr das gelöst habt.

Gruss
Michael

Ich würde direkt einen Merker auf den Ausgang mappen und diesen in IP-Symcon als Lese/Schreibadresse einstellen. Dann die Taster diesen Merker umschalten lassen.

paresy

Hallo Paresy,

gute Idee, hab ich gleich versucht. Leider klappt das nicht.
Die Bedienung mit einem Taster funktioniert, aber mit IPS nicht.
Wenn ich mit IPS Schalte wird der Merker nur für einen Programmzyklus
gesetzt, danach automatisch wieder vom Fb_Stromstoss auf 0.

Hast Du vielleicht noch eine Idee?

Gruss
Michael

Ähm … wie wird denn dann der Merker aus IPS heraus angesprochen? Wie ändere ich den Merker in der Wago mit IPS ?? :confused:

edit
Ah ja … guter Einwand @Sanman … irgendwie habe ich zu lange für meine Antwort benötigt :wink:

Hallo Michael,

ich unterscheide bei mir ganz klar zwischen Variablen die eine Schaltung auslösen und Variablen die einen Zustand annehmen. Also wie im Leben gibt es einen Sensor (Auslöser) und einen Aktor (Ausgelöster).
Dadurch komme ich nicht in die Verlegenheit wie bei Deiner Lösung, das die SPS die Variable durch den Stromstoßbaustein im nächsten SPS-Zyklus wieder überschreibt.
Mir hat sich der Zusammenhang Deines Programmes noch nicht ganz erschlossen, aber evtl. hilft Dir bei Deiner Aktion in Zusammenarbeit mit den R_Trig und F_Trig Geschehen ein Move Befehl weiter. Wie gesagt ich habe den Zusammenhang noch nicht ganz verstanden.

Alternativ finde ich die Lösung von Jan Krakora recht nett, da bei geschickter Anordnung der Merkervariablen in einem Aufwasch 125 Merkerwörter geschrieben und gelesen werden können.
phpmodbus - Modbus for PHP - Google Project Hosting
Zur Zeit arbeite ich daher bei meiner Integration meist mit Dieser php/modbus Lösung.

Hallo Joachim,

leider ist PHP keine Lösung für mich.
Ich würde das gerne mit einem Merker und Instanze lösen was mir IPS anbietet.
Kannst Du mir mit dem Move Befehl weiterhelfen. Ist das ein Baustein?
Danke für Deinen Input.

Gruss
Michael

Moment mal :rolleyes: … es geht doch um die Befehle aus der IPS 1.x oder? Das waren dann die MBT_ Befehle (z.B. MBT_WriteCoil) … die Neuen Befehle in der 2.x lauten aber : ModBus_ (z.B. ModBus_WriteCoil) … und die funktionieren doch weiterhin, richtig!? :confused:

Gruß
Jens

@jens
ja, geht auch so :confused:, wie geschrieben, ich verstehe die Frage auch nicht ganz.
@Michael
aber das macht die PHP/Modbus Lösung doch. Sie greift auf Deine Merker zu, es benötigt allerdings nur ein einziges Skript um einen Riesenberg von Merkerdaten in Deine IP-Symcon Welt zu heben.
Zum Move Befehl, schau mal unter
Codesys> Hilfe(F1) > Move
ist ein Funktionsbaustein den Codesys mitbringt.
Zitat aus Handbuch
Zuweisung einer Variablen auf eine andere Variable eines entsprechenden Typs. Dadurch, daß MOVE in den FUP, CFC- und KOP-Editoren als Baustein verfügbar ist, kann dort die EN/EN0-Funktionalität auch auf eine Variablenzuweisung angewendet werden.

@Michael

Die PHP/Modbuslösung … das ist hier im Forum ja schon öfter mal angesprochen worden, ich habe das aber nie ganz verstanden.
Meinst du das du dazu mal ein kleines HowTo verfassen kannst? Also was alles benötigt wird und wie das dann in IPS funktioniert? Evtl. ein kleines Beispiel dazu?

Jens

Mit diesem Thema beschäftige ich mich ebenfalls seit Wochen.

@Joachim
Du beschreibst Move und zitierst die Online-Hilfe.
Zitat meiner Online-Hilfe in Codesys: „Dadurch, dass MOVE in den CFC- und KOP-Editoren als Baustein verfügbar ist, kann dort die EN/ENO-Funktionalität auch auf eine Variabelnzuweisung angewendet werden. Im FUP-Editor ist dies leider nicht möglich.“

Codesys Version 2.3.9.19. Kann es sein, dass ich da eventuell eine veraltete Version von Codesys habe:confused:

Gruss Pit

@Tetrapack
Wenn dann müsste Joachim da was schreiben, er setzt das ein.

Leider komm ich nicht mit dem MOVE Befehl klar bzw. weiss ich nicht wie ich diesen einbauen muss. Kannst Du (Joachim) mir da weiter helfen?

Gruss
Michael

Ja … ich meinte natürlich auch Joachim, irgendwie war ich schon gedanklich im Bett :smiley:

Da ich wieder im Büro sitze und nicht auch meine Konfig gucken kann, hier noch mal so ausm Kopf wie das bei mir ist:

In IPS habe ich zur Darstellung der Zustände nicht die Merker genommen, sondern die Adressen der Ausgänge (DO). Als Adresse (nur lesen) konfigurieren und fertig.

Zum Schalten dann einen Merker parallel zu einem Tasteingang legen und diese Merkeradresse auch in IPS einbinden. Zum Schalten aus IPS dann per ModBus_WriteCoil den Merker „tasten“ (einschalten für 0,5 Sek. und wieder ausschalten).
Somit läuft die Schaltung ganz normal über die Wago, die Zustände werden in IPS angezeigt und schalten aus IPS heraus geht über die Merker. Die Lösung ist dann allerdings nur bei TASTERN empfohlen. Wenn du Schalter benutzen willst, dann gehts natürlich nicht …

Wozu jetzt genau der MOVE Befehl sein soll erschließt sich mir nicht ganz, aber ich glaube mit meiner Variante kann ich darauf auch verzichten.

Gruß
Jens

Genau dieses PHP Script möchte ich mir sparen und alles mit einer Merker-Adresse lösen. Irgendwie kann das doch nicht so schwer sein…

Gruss
Michael

Du möchtest dir das „Schaltscript“ in IPS sparen? Wie willst du dann den Merker ansprechen??
Wie teilst du dem Merker mit, dass er den Zustand in der Wago ändern soll???

Dafür habe ich die Variablenprofile, welche fürs Webfront genutzt werden.
Weiter kann ich das Test Center in der Modbus Instanz nutzen.
In PHP spreche ich wie Du auch die Instanz über ModBus_*** an.

Gruss
Michael

Also im Webfront willst du über ein Variablenprofil den Zustand vom Merker in der Wago ändern??
Zeig mir doch mal bitte wie das deiner Meinung nach gehen soll … Step by Step

Testcenter ist Testcenter … und eben nur zum Testen da. Ich gehe davon aus, das dort auch nur der Modbus_ Befehl abgesetzt wird.

Gruß
Jens

Dafür braucht man doch keine Step by Step Anleitung.
Neue Instanze (ModBus Adresse) anlegen, Schreib und Leseadresse eintragen.
Das wars. IPS weist bei einem BOOL Wert automatisch das Profil ~Switch zu und im Webfront wird es angezeigt.
Schon kann man im Webfront schalten ohne eine Zeile PHP zu programmieren.

Ich bin aber immer noch auf der Suche nach einem Beispiel SPS Programm wie in meinem ersten Beitrag.

Gruss
Michael

Also wenn ich da mal spekulieren soll, dann geht das so nicht … ist ja schön wenn das automatisch zugewiesen wird, aber wie soll die Wago den Befehl bekommen den Merker IN der Wago zu ändern, wenn das nur über das Modbusprotokoll geht?

Bei mir sieht das so aus und wird wie weiter oben beschrieben geschaltet und von den Zuständen her visualisiert: