Siemens LOGO 0BA7 an IPS

Hallo Joachim,
ein paar Screenshots vom Floorplan würden mich auch mal interessieren. Hab auch schon mal in diese Richtung überlegt.
Stelle mir das ganze aber ziemlich aufwendig vor, bis der ganze Grundriss mal gezeichnet ist.

mfg
cäsar

…so, hier nun meine Umsetzung zum Auslesen der Schaltzeiten des LOGO-Wochenschaltprogramms und der Umrechnung und Darstellung im Webfront.

Setzen habe ich bisher noch nicht probiert, werde ich mich aber auch mal drum bemühen…

Joachim

LOGO-Wochenschaltprogramm im IPS.pdf (193 KB)

…und hier nun ein Bild meines Floorplans. Mein Sohn hat diesen mit „MagicPlan“ erstellt. Im Forum gibt es aber noch viele andere Beispiele - die durchaus einen sehr viel künstlerisch wertvolleren Anspruch haben.

Einige der Elemente sind mit Aktionen verbunden, andere geben nur eine Information.

Joachim

…und es geht weiter! :wink:

Ich habe mir zunächst eine Funktion erstellt, die eine Uhrzeit wie „5:45“ in einen LOGO-verständlichen Wert umstellt:

//*************************************************************************************************************
// Rechnet eine Zeitangabe der LOGO um (IPS -> LOGO)
function LOGO_Uhrzeit($Uhrzeit)
	{
	Return (hexdec(str_replace(":", "", $Uhrzeit)));
   }

(noch ohne Eingabewert-Validierung!!)

Nun folgendes Testskript erstellt:

S7_WriteWord(21086, LOGO_Uhrzeit("5:45"));

Und was soll ich sagen? Der Wert wird sofort geändert, meine Abfrage zeigt sofort die geänderte Einstellung!

Jetzt setze ich mich mal an die Wochentage. Was noch fehlt wäre eine passende Eingabe- bzw. Änderungsmaske im Webfront. In der Dokumentationgibt es zwar eine große Auswahl, aber mir erscheint nichts davon richtig „passend“. Es müsste ja etwas sein, was zum einen die Auswahl der Wochentage (Mo-So) ermöglicht und zum anderen eine Ein- und Ausschaltzeit einstellt hilft…

Joachim

Nachtrag: Interessant wäre es sicherlich noch die aktuelle Uhrzeit und Datum aus der LOGO zur Kontrolle auszulesen. Hast Du eine Idee wie ich die Daten dazu in die Parameter-VM-Tabelle bekomme??

Tolle Arbeit, sieht ja alles sehr vielversprechend aus. Da werd ich mich mal ranmachen, das ganzen zu implementieren.

P.S
Super wäre noch, wenn man die interne Logo-Uhr auslesen und setzen könnte.
Somit könnten alle Logo’s im Netz über eine Atomuhr gesetzt werden und hätten somit auf die Sekunde genau die gleiche Uhrzeit.

mfg
cäsar

Hallo Cäsar,

dazu gibt es vielleicht die zwei Möglichkeiten:

  1. man „kennt“ die LOGO-Speicherzellen in denen Datum und Uhrzeit abgelegt ist…
    oder
  2. es gelingt einem irgendwie Datum und Uhrzeit der LOGO in die Parameter-VM-Tabelle zu bekommen…

Joachim

Hallo Joachim,
hab gerade meinen 1.Versuch mit dem Dashboard gestartet. Funktioniert auch schon ein bisschen etwas.

Frage:
Kann man das Dashboard nur über die Verwaltungskonsole starten? Ich dachte eigentlich, das ich das ganze irgendwie über das Webfront anzeigen kann?
Sprich: irgendwo ein KLICK und schon öffnet sich das Dashboard.

mfg
cäsar

…vom Dashboard habe ich nun überhaupt keine Ahnung…

Joachim

Logo Werte müssen nicht immer via Intervall Parameter ausgelesen werden. Im Anhang eine kurze Beschreibung, wie das auch in einem Script über den Befehl S7_RequestRead erfolgen kann.

Zur Info: Dieser Befehl ist in der Doku nicht aufgeführt. Was das für Folgen haben kann, weiss ich nicht.

Erwin

Aktualisierung eines Wertes aus der Siemens LOGO via Script.pdf (218 KB)

Hallo Erwin,
kannst du mal erklären, was jetzt der Vorteil ist, wenn ich die Intervallabfrage in der Logo programmiere?
In IPS setzt ich eine einfache Zyklusabfrage und gut ist, oder man macht das ganze Ereignisgetriggert.

Verstehe nicht ganz den Sinn, das ganze relativ aufwendig in der Logo zu programmieren.

mfg
cäsar

Hallo Cäsar

In der Logo habe ich Variablen, die sich laufend ändern (z. B. Zählervariablen, die im Sekundentakt hochzählen). Aktualisiert man solche Variablen auf Seite IPS mit einem Intervall, erzeugt das im Meldungsfenster und im LOG bei jeder Aktualisierung einen Eintrag.

Mit S7_RequestRead greife ich nur auf die Logo zu, wenn ich die Werte brauche (und erzeuge auch nur dann Einträge im LOG).

Ich meine auch, dass ich die gesamte Belastung (Logo, Netzwerk, Server) kleiner halten kann, wenn ich möglichst wenige Abfragen durchführe.

Gruss
Erwin

Hallo Erwin,
hört sich logisch an. Eine Abfrage „Ereignisgetriggert“ wäre doch das Gleiche, oder?
Nach welchen Kriterien wird der RequestRead-Befehl von dir ausgeführt?

mfg

Hallo Cäsar

Ja, das ist ereignisgetriggert.

Ein Beispiel:
Meine Tiere werden automatisch via Futterautomaten gefüttert. Die Schaltuhr ist mit einer Logo realisiert. Normalerweise muss ich nicht in diese regelmässigen Schaltvorgänge eingreifen. Dieser Schaltvorgang setzt einen Zähler auf Null. Dieser Zähler beginnt dann wieder im Sekundentakt hochzuzählen.

Zusätzlich habe die Möglichkeit, eine Fütterung remote via IPS-Android-App auszulösen. Damit ich sicher bin, dass die Auslösung funktioniert hat, frage ich nach der Remote Auslösung den oben erwähnten Zähler ab. Ist er Null, hat die Auslösung funktioniert.

Gruss
Erwin

OK, danke Erwin.
Jetzt hab ich es verstanden.

mfg
cäsar

Hab jetzt das Problem gelöst.
Man kann also 2(oder auch mehrere) Logo’s als Master konfiguriert miteinander kommunizieren lassen und zusätzlich beide Logos in’s IPS bringen.
Man muss in jeder Logo jeweils eine Server- und eine Clientverbindung einrichten. Somit kann man die Daten zwischen den Logos hin- und herschaufeln.

Das eigentliche Problem bei der Etherneteinrichtung war nur, dass man die Logos durch Trennen der Versorgungsspannung neu starten muss. Erst dann werden wohl alle Ethernetverbindungen übernommen.

mfg

Hallo, ich versuch gerade zwischen einzelnen Logo’s Daten hin und her zuschieben.
Dies ist mir auch schon gelungen. Nur hab ich dann Probleme mit der Verbindung zu IPS.
Entweder funktioniert der Datenaustausch zwischen den Logo’s, dann aber mit der Client-Logo keine Verbindung zu IPS,
oder es funktioniert eben mit beiden Logo’s die Verbindung zu IPS, aber der Datenaustausch zwischen den beiden Logo’s dann nicht mehr.

In der Anleitung im Anhang seht ihr meine Einstellungen, vielleicht hat ja der eine oder andere noch einen Tipp, damit alles funktioniert.

mfg
cäsar

Datenaustausch zwischen 2 Logo’s und IPS.pdf (222 KB)

Hallo caesar,

ich benutze diese Funktion nicht, habe aber ein wenig „herumgespielt“.
Das erste was ich versucht habe, ist die Nutzung der Netzwerk-Ein- und -ausgänge in der LOGO!Soft, dieses scheint mir aber wegen der von Dir beschriebenen Konfigurationszwänge nicht zielführend…

Warum benutzt Du nicht IPS als Datendrehscheibe?

Joachim

Hallo Joachim,
meine Logos sollen alle im Masterbetrieb laufen. Die einfache Möglichkeit die Netzwerkein- und Ausgänge zu nutzen, wäre der Master-Slavebetrieb. Der Nachteil hier ist, dass nur im Master das Hauptprogramm läuft und der Slave eigentlich nur als Porterweiterung dient.
Ich nutze im Moment IPS als „Datendrehscheibe“ für „weniger wichtige“ Steuerungen.
Bei der neuen Steuerung sollen die Jalousien in der ganzen Fa. gesteuert werden, und da macht sich zB. ein Ausfall des Server’s(IPS) nicht so gut.

mfg
caesar

Hallo caesar,

in der Tat kann das zum Problem werden. Mein IPS läuft aber eigentlich sehr stabil. Meine Vorgehensweise ist trotzdem so, dass die LOGOs das Basisprogramm beinhalten um die gewünschte Funktionalität aufrecht zu erhalten - IPS bringt den „Komfort“, d.h. fällt IPS dann doch mal aus sind die Grundfunktionalitäten immer noch nutzbar. Vielleicht in der Konstellation ein Ansatz für Deine LOGO <-> IPS Verbindung bzw. die Programmierung?

Joachim

Hallo Joachim,
steh gerade ein bisschen auf dem Schlauch.
Ich lese die Uhrzeit(Sonnenaufgang) aus meiner SPS aus. Zeigt als Integer 1600 an.
Hab nun dein Umwandlungsscript verwendet, nur wie bring ich jetzt die Uhrzeit ins Webfront?
Die Umwandlung muss doch irgendwo in eine Variable(zB.Sonnenaufgang) übertragen werden, um diese im WF anzuzeigen, oder?

mfg
cäsar

Wenn ich das richtig sehe, sind das Funktionen, die man dann selbst verwenden kann, wie auch immer das ist/wie man sie benötigt. Du musst sie aufrufen, ihr einen Wert übergeben und bekommst einen Rückgabewert.


$DeinAlterWert = 12345; //Wo der herkommt, weiss ich nicht, hab keine LOGO
$DeinNeuerWert = function Uhrzeit ($DeinAlterWert);
$SetValue (12345 /* Variablen ID, wo der neue Wert rein soll*/ ,$DeinNeuerWert);

//Oder als einzeiler:
$SetValue (12345 /* Variablen ID, wo der neue Wert rein soll*/ ,function Uhrzeit (12345 /*Hier z.B. ein GetValueInteger*/));

//Irgendwo in deinem Script muss noch die Funktion sein oder included werde.
// Rechnet eine Zeitangabe der LOGO um
function Uhrzeit($LOGO_Wert)
    {
    Return (str_replace(".", ":",number_format((int)dechex($LOGO_Wert)/100, 2)));
   }