S7 per MPI an IPS V2

… vorab:

Befehle, Anlegen einer Instanz und Beispiel DB70.10 - siehe Bild.

MST

Super, vielen Dank, jetzt klappt es. Eine letzte Frage hätte ich aber noch, mit welchen Befehl ließt man aus der SPS aus?

MfG
computerpap

  • es gibt keinen Behehl dafür …

Wird es mal einen geben? Ich möchte IPS als Visu einsetzen, dazu muß ich aber logischer Weise die SPS auslesen.

MfG
computerpap

… nö - wozu :confused:

Im Objektbaum steht bei mir folgendes:
-IPSymcon
-Siemens SPS
-Value

Heißer Tipp: Value

MST

Seh ich gerade den Wald vor lauter Bäumen nicht, oder was meinst du genau?

… mal eine Gegenfrage: gibt es einen Befehl um z.B. eine Temperatur aus dem HMS zu lesen?

MST

keine Ahnung, hab ich bisher nicht gebraucht

… ja - nee, dann nimm doch den Wert von Value

Jetzt hab ich’s geschnallt, da war wieder dieses Ding mit dem Wald und den Bäumen.
Das Problem ist halt nur, dass sich der Wert von Value nicht ändert.
Ich hab in den DB den ich beschreibe, die ersten 8 Bit gesetzt. Da sollte bei Value keine 0 drin stehen, tut es aber.

Evtl. sind High- und Low-Byte vertauscht.
Schreib mal ins DBB1.

Gruß
Dieter

Hab jetzt 16Bit auf 1 gesetzt, Value ist aber trotzdem 0.

MfG
computerpap

Die Statusvariable ändert sich bei keiner Instanz, ich habe z.B. die beiden Ausgangsbyte 12 und 13 gesetzt aber die Statusvariable zeigt einen Wert von 0.
Die richtige Statusvariable ist auch ausgewählt.
Hat jemand das gleiche Problem?

MfG
computerpap

Hab den Fehler gefunden, der Poller war nicht eingeschalten.

MfG
computerpap

Hallo computerpap,

wie ich sehe, hast Du ja die Kommunikation hinbekommen.
Ich habe hier einen großen Denkfehler und komme einfach nicht weiter.
Vielleicht bist Du ja hier schon einen Schritt weiter.
Ich habe bereits aus der SPS Merker ausgelesen; also z.B. MB300 und mir dieses mit dem Script von Steiner wieder schön in die einzelnen Bits zerlegt.
Nun habe ich aber das Problem, das ich nicht vernüntig schreiben kann. (seit der Sperre auf die Value-IDs mit dem vorletzten Update). wenn ich nun mit S7_WriteByte direkt auf die Instanz schreibe ist das Ergebnis immer 0, d.h. ich kann mit einem Script alles ausschalten, aber einen anderen Wert bekomme ich nicht in die S7 zurückgeschrieben. Einen Wert von z.B. 7 kommt bei der SPS auch nur als 0 an.

Wie hast Du das gelöst? Ich habe als Adresse 300 eingegeben, es auf Flags gestellt und Area Adress freigelassen. Bei der angehängten Grafik von Steiner sah das anders aus, aber eine andere Einstellung gibt auf der S7 gar keine Reaktion.

Gruß
bastelfrosch

Hallo bastelfrosch

Mein Datenaustausch zwischen S7 und IPS ist so angelegt, dass es ausschließlich über DB’s geht. Ich arbeite gerade an einer Visu für eine Schaltuhr. Wenn ich fertig bin, werd ich es hier im Forum vorstellen.
Ich nutze die IPS-Version 2.00 Build#0 (PLC), da hatte ich bisher keine Probleme beim schreiben in die S7.
Hab mal ein Script und ein Bild von einer Konfiguration angehängt, da siehst du wie ich in DB4.DBB2 schreibe.


$id = 55555; //S7-Instanz, hier im Bsp. DB4, Byte2
$db = 5; //Wert der nach DB4.DBB2 geschrieben werden soll
s7_WriteByte($id, $db); //und ab in die S7

ips.jpg

Hallo computerpap,

ich bin der Verzweiflung doch recht nahe. Ich habe nun testweise das Schreiben in den DB19 versucht, seltsamer Weise kommt in der SPS nur immer 0 an. Soll heißen, der Value-Wert wird korrekt gelesen, schreibe ich in den DB19.DBB1 eine 2 kommt an der S7 nur eine 0 an. Das gleiche Problem hatte ich bereits mit den Merkern.

zum Schreiben habe ich Dein Script genommen und nur die ID geändert

$id = 35422;
$db = 2;
s7_WriteByte($id, $db);

Auch das Test-Center bei der Instanz macht seltsamer Weise das Gleiche. Ich setze den Wert 5 und es kommt bei der S7 nur eine 0 an.
Eine Steuerung nur für AUS ist schon ziemlich nervig.

Gruß

bastelfrosch

Hallo

Das ist seltsam, mir fällt dazu im Moment auch nichts mehr ein. Kann es sein, das du die DB’s bzw. die Merker vom S7-Programm überschreibst? Das hast du aber sicherlich schon kontrolliert!

Ich hab da aber auch noch ein Problem, folgendes Script habe ich geschrieben:


$id = 55555;
$db = GetValueBoolean("aut_Summertime");
if ($db = true){
s7_writebyte($id, 1);
}
else{
s7_writebyte($id, 0);
}

Wenn die Variable „aut_Summertime“ true ist soll in die S7-Instanz eine 1 geschrieben werden, sonst eine 0.
Führe ich das Script aus, wird obwohl die Variable 0 ist eine 1 in die S7-Instanz geschrieben. Was ist den da falsch am Script?

MfG
computerpap

Bin jetzt nicht der PHP-Papst, aber meines Wissens erfolgt ein Vergleich mit „==“. Probier´s mal… :slight_smile:

Hier gab es einen Fehler im Zusammenhang mit dem S7 Modul:

Vielleicht löst sich euer Problem auch?

Habe auch hinzugefügt, dass man direkt auf Bits zugreifen kann. (Ohne Gewähr. Hab hier vor-Ort gerade keine S7 angeschlossen)

paresy