Neue Siemens Logo 0BA7 über Ethernet an IPS ???

Hallo Leute,

mein Fehler! Ich hatte versäumt, die DM16-Erweiterung mit Spannung zu versorgen!:smiley:

Jetzt läuft es!:slight_smile:

Ich haben im Übrigen nun aller Merker gegen Netzwerkeingänge getauscht! (wie im Post #40 beschrieben…)

Joachim

Kannst du mir das nochmal erklären, was du genau gemacht?

Bei mir sieht’s so aus:

Script für EinAus im WF toggeln:

<?
if($IPS_SENDER == „WebFront“)
{
switch($IPS_VALUE)
{
case 1:
IPS_SetVariableProfileAssociation(„EinAus“, 0, „Ein“, „“, 0xE53300);
IPS_SetVariableProfileAssociation(„EinAus“, 1, „“, „“, -1);
S7_WriteBit(42900 /[Logos\Logo Bit setzen]/,1);

    break;
    case 0:
    IPS_SetVariableProfileAssociation("EinAus", 1, "Aus", "", 0xE53300);
    IPS_SetVariableProfileAssociation("EinAus", 0, "", "", -1);
    S7_WriteBit(42900 /*[Logos\Logo Bit setzen]*/,0);
    break;
}

}
?>

Logo.JPG

Hallo caesar,

anbei zwei Screenshots…

Den Timer brauchst Du nicht, wenn nur IPS auf den Netzwerkeingang wirkt (spart vielleicht Netzwerkresourcen)

So setze ich den Netzwerkeingang (hier als „Taster“):

S7_WriteBit(19146 /*[Garage\LOGO NE 0/1 Technikraum]*/,true);
IPS_Sleep(20);
S7_WriteBit(19146 /*[Garage\LOGO NE 0/1 Technikraum]*/,false);

Joachim

Ergänzung: „VB-Adresse“ in der LOGO entspricht der „Adresse“ im IPS und „Bit“ in der LOGO dem Feld „Bit“ im IPS

Achtung! Ich habe gerade gesehen - falscher Screenshot! Bitte die Ergänzung beachten!

Netzwerkeingang LOGO-seitig.jpg

Danke für die Hilfe. Funktioniert bei mir jetzt auch.

mfg
caesar

Hallo, bin gerade dabei, einen Temperaturwert, den ich mit einem All4000 einlese,
an die Logo weiterzugeben.
Die Temperatur wird im IPS als Float(zb. 22,3°) angezeigt.
Wenn ich die Temperatur in die Logo einlese, wird sie nur als Ganzzahl(z.B 22°) dargestellt.

Script:
$Wert = Getvalue(12345 Temperaturwert);
S7_WriteWord(23456 S7-Instanz,$Wert);

GetValueFloat auch schon probiert, funktioniert auch nicht.

Bei Erzeugung der Siemens-Instanz wird automatisch Value als Variable Integer angelegt.

Vielleicht JPaeper ne Idee?

mfg

Hallo caesar,

was möchtest Du mit dem Wert in der LOGO bewirken?
Als Beispiel: Wenn ein Ausgang der LOGO bei einer Temperaturüberschreitung gesetzt werden soll, würde ich diesen Zustand im IPS „bearbeiten“ und dann gleich den richtigen Netzwerkeingang setzen…

Erkläre doch mal was Du machen möchtest…

Joachim

Versuch dies: S7_WriteReal

Toni

In Abhängigkeit von der eingelesenen Temperatur soll in der Logo der 0-10V-Analogausgang gesteuert werden, der wiederum die Drehzahl meiner Vorlaufpumpe regelt.

mfg
caesar

Hi,

die LOGO arbeitet intern nur mit Integerzahlen. Wenn Du bei Deinem Temperaturwert eine Nachkommastelle hast, dann multipliziere den Wert mit 10 und sende ihn dann an die Logo. 22,3 -> 223

Hallo caesar,

wenn Du einen Analogen Netzwerkeingang benutzt, dann kannst Du den von 0-1000 setzen. Nach der LOGO-Hilfe wird dieser Wert dann in 0-10V umgerechnet.
Du müsstest also definieren, bei welcher Temperatur die Pumpe die volle Leistung bringen soll und berechnen, wie der Wert gesetzt werden soll.
Da Du den Messwert im IPS aus der All4000 ermittelst, kann diese LOGO sowieso nicht autark arbeiten.
Ich würde daher folgendes definieren:

  • Bei welcher Temperatur soll die Pumpe nicht laufen (Beispiel: Temperatur < 15°C-> Analog-Netzwerkeingang wird auf 0 gesetzt)
  • Bei welcher Temperatur soll die Pumpe die volle Leistung haben (Beispiel: Temperatur > 25°C -> Analog-Netzwerkeingang wird auf 1000 gesetzt)
  • Dazwischen (hier im Beispiel 15°C bis 25°C) musst Du den Wert berechnen. Hier entsprechen 1°C = 100 und 0,1°C = 10, d.h. bei 16,3°C müsste der Analog-Netzwerkeingang auf 130 gesetzt werden usw…

(Ist nicht getestet, da ich keinen Analog-Erweiterung an der LOGO haben…!)

Im PHP eine If-Abfrage:
If All4000 Temperatur < 15 then
LOGO Analog-Netzwerkeingang = 0
elseif All4000 Temperatur > 25 then
LOGO Analog-Netzwerkeingang = 1000
else
LOGO Analog-Netzwerkeingang == (All4000 Temperatur - 15) * 100

Wäre ein Ansatz…:wink:

Joachim

Hallo, erstmal Danke für eure Hilfe. Kann erst morgen wieder testen.
Hab mir die ganze Zeit auch schon Gedanken gemacht, was wäre wenn der Allnet4000 mal ausfällt?
Mal sehen, ob ich irgendwie eine Ping-Abfrage zum All4000 hinbekomme und wenn dieser nicht mehr antwortet, eventuell Defaultwerte für die Temperatur in der Logo zu setzen?!?!(Dein Lösungsvorschlag(joachim) hat mich auf diese Idee gebracht).
Somit würde dann die Logo doch autark laufen(was mein Ziel ist) und es wäre zumindest gewährleistet, dass die Pumpe nicht ganz ausfällt.

mfg
caesar

Hallo caesar,

um die „Verfügbarkeit“ zu prüfen, schau Dir mal in der IPS-Dokumentation den Befehl „Sys_Ping“ an.

Zur Frage des Defaultwertes: Was für ein Wert sollte das sein? Ist es zu kalt wäre es ja offensichtlich ganz gut, wenn die Pumpe weiterlaufen würde, wenn es zu warm wird wäre es ja ganz gut wenn sie wohl stoppen würde…schwierig… Wie verifizierst Du das der Allnet-Wert im Bereich des möglichen ist?

Vielleicht ist es in einem solchen Fall vielleicht das Beste, wenn sie so weiterlaufen würde wie der letzte Stand war…:wink:

Du hast im IPS viele Möglichketen - das ist ja gerade das tolle an dieser Software! Suche im Forum mal nach „Prowl“ oder „SMS“, da gibt es diverse Ansätze, das Dich IPS über solche Dinge zeitnah informiert…

Joachim

Hallo Joachim, ich würde die Pumpe auf 50% setzen, wenn der Allnet nicht mehr antwortet. Der Ausfall soll ja möglichst zeitnah(relativ) behoben werden. Da würde sich natürlich eine SMS oder email anbieten, vorausgesetzt, dass der Server, auf dem IPS läuft, nicht ausgefallen ist.

P.S Vielleicht nochmal ein bisschen Info zum Projekt
Das ganze soll bei uns in der Fa. laufen und sollte natürlich relativ Ausfallsicher(Logo autark) laufen. Die Fehlerbeseitigung ist zeitlich abhängig von der Aussentemperatur und sollte relativ zeitnah behoben werden, weil sonst das Ganze zu sehr auskühlt.
Und ca. 50 Mitarbeiter können schon ganz schön nervig sein, wenn die Temperatur nicht passt.
Der Hauptgrund, das Ganze u.a. mit IPS laufen zu lassen, sind die Überwachungsfunktionen(email, SMS, Alarm usw.) und natürlich auch die Einstell- und Visualisierungsmöglichkeiten zentral von meinem Rechner aus.
Desweitern lassen sich auch gewisse Einsparungen durch Langzeitauswertungen realiseren.

mfg
Caesar

Hallo, die Temperatur-Auswertung von IPS an die Logo funktioniert nun. Danke an Joachim und Heimgeist.
Und somit zum nächsten Problem:
Ich möchte von 3 unterschiedlichen Temperatursensoren den Mittelwert bilden.
Ich könnte dies natürlich auch in der Logo machen, aber in IPS wäre mir eigentlich lieber, da ich dann nur einen gemittelten Wert an die Logo übergeben muss.
Hat jemand einen Lösungsvorschlag für mich?

mfg
caesar

Hallo caesar,

Du könntest ein Skript schreiben, was immer dann ausgelöst wird, wenn sich einer der drei Temperaturen ändert, dann den Mittelwert berechnen und den Analogen-Netzwerkeingang der LOGO neu setzen…

Joachim

Hallo Leute,

mal etwas anderes in diesem Zusammenhang:
Wenn man z.B. ein neues LOGO-Programm aufgespielt hat, muss man die LOGO in den I/O-Instanzen kurz trennen

Haken aus „Verbinden“ raus-> „Übernehmen“-> Haken bei „Verbinden“ wieder rein->"Übernehmen

Kann man das mit

„IPS_DisconnectInstance“->„IPS_ApplyChanges“->„IPS_ConnectInstance“

auch machen?

Joachim

Haken raus und rein kannst du dir sparen. Einfach übernehmen geht auch.
Aber läßtig ist das ganze schon. Wenn man das irgendwie automatisieren könnte, wäre natürlich schon schön.

mfg
caesar

Haken raus und rein kannst du dir sparen. Einfach übernehmen geht auch.
Aber läßtig ist das ganze schon. Wenn man das irgendwie automatisieren könnte, wäre natürlich schon schön.

P.S
Frage zur neuen Logo:
Gibt es die neue Logo auch zur Erweiterung mit 4 analogen Ausgängen?

mfg
caesar

Hallo caesar,

die LOGO-Analog-Erweiterungen gibt es wohl nur mit jeweils 2 Ausgängen…

Joachim

Hallo Leute,

ich habe mit nachfolgendem Skript versucht die Verbindung neu zu „Bestätigen“:

IPS_DisconnectInstance(40477 /*[Siemens S7]*/);
IPS_ApplyChanges(40477 /*[Siemens S7]*/);
IPS_Sleep(1000);

Leider führt das nicht zum Ziel, da alle untergeordneten Module getrennt werden…

Eine erneute Anbindung der untergeordneten Module (nicht abgebildet) ist nicht die „Bestätigung“ der Verbindung von IPS zur LOGO…

Jemand eine Idee?

Joachim

Nachtrag:
Habe jetzt aufgrund eines anderen Forumthreads folgende Möglichkeit gefunden:

S7_SetOpen(40477, false);
IPS_ApplyChanges(40477 /*[Siemens S7]*/);
IPS_Sleep(500);
S7_SetOpen(40477, True);
IPS_ApplyChanges(40477 /*[Siemens S7]*/);

@caesar: Kannst Du das bei Dir auch mal prüfen?