Erstellte Forenantworten
-
AutorBeiträge
-
adminAdministrator
Also die FHEM-Anbindung die ich hier beschreibe, ist eher so gedacht, dass die Logo das führende System bleibt und FHEM-Geräte nur über LogoControl in die Logo mit eingebunden werden können. Die Visualisierung erfolgt dabei über LogoControl bzw. daran angebundene Apps (wie NetIO Controller). In FHEM werden keine Logo-Zustände angezeigt. Es würde zwar auch irgendwie gehen, dass du alle Logo Ein-/Ausgänge über Trigger an FHEM überträgst, das ist jedoch recht umständlich und aufwändig. Wenn du daher den umgekehrten Weg gehen möchtest, also FHEM als führendes System für Steuerung und Visualisierung, würde ich dir eher das FHEM-Modul für die S7 empfehlen.
adminAdministratorHab gerade festgestellt, dass ich in meiner Anleitung zur Konfiguration noch einen Fehler hatte. Früher konnten die ValueText-Konverter direkt bei jedem Attribut eines Geräts definiert werden. In der aktuellen Version 0.5.x ist diese Funktion nun in den Kopf (den Settings-Block) gewandert. Von daher erübrigt sich deine Frage, wo du deine valueText-Konverter besser definierst: immer oben! Unten wird dann nur noch auf den oben definierten ValueText-Konverter verwiesen. Hab die Doku entsprechend angepasst.
Um sicher zu gehen, dass die Verbindung zwischen LogoControl und deiner Logo wirklich funktioniert, solltest du vielleicht erst mal mit einem Minimal-Beispiel starten welches einfach nur einen Digital-Ausgang der Logo in LogoControl visualisiert.
<?xml version="1.0" encoding="utf-8"?> <configuration> <settings> <plc id="myLogo" type="Logo7" ip="0.0.0.0" /> <httpWebservice port="8088" /> <valueTextConverter> <textMapping id="an_aus"> <!-- Text-Mapping für aus (0) und an (1) --> <valueText value="0" text="aus" /> <valueText value="1" text="an" /> </textMapping> </valueTextConverter> </settings> <infrastructure> <group name="Gewächshaus"> <device id="outx" name="Ausgang x"> <attribute id="stat" name="Status" plc="myLogo" address="Q1" valueTextConverter="an_aus" /> </device> </group> </infrastructure> </configuration>
Oben im plc Element deine IP-Adresse der Logo eintragen und unten beim attribute den richtigen Ausgang (Q1,Q2,…) wählen. Wenn du nun deinen Ausgang irgendwie schaltest (Taster an der Logo, oder wie auch immer dein Programm aussieht?!) sollte sich die Weboberfläche aktualisieren und grün für „an“ und rot für „aus“ anzeigen. Wenn das erst mal funktioniert kannst du dich den Detailfragen widmen. Tipp: wenn du die config.xml löschst (oder umbenennst) erstellt LogoControl beim Neustart wieder eine Muster-config.xml.
- Diese Antwort wurde vor vor 8 Jahren, 6 Monaten von admin bearbeitet.
adminAdministratorDer Port 10001 wird nur von der LogoSoft verwendet (für Programm-Upload, Online-Simulation etc.) Die Logos untereinander und auch die Kommunikation zu S7 oder HMI laufen alle über Port 102. LogoControl verwendet auch diesen Port, da es sich quasi als HMI gegenüber der Logo ausgibt. Von daher müsste zumindest dieser Port in netstat auftauchen. Vielleicht kannst du doch mal deine config.xml hier posten, auch wenn diese noch weitestgehend dem Default entspricht, nur um hier ein Fehler auszuschließen. Die Serververbindung in deinem Logo-Schaltprogramm hast du aber eingerichtet, oder?
adminAdministratorAlso bei dem Fehler mit Port 8088 müsste eher die Weboberfläche Probleme machen. Da diese aber wohl einwandfrei läuft ist das evtl. ein anderes Problem (der Fehler kommt z.B. wenn man LogoControl mehrmals startet, da auf einem Port nur ein Prozess gleichzeitig lauschen darf). Bei deinem eigentlichen Problem (kein Datenaustausch zwischen LogoControl und Logo) hab ich noch die Windows-Firewall in Verdacht. Schalte diese testweise mal ab. LogoControl verbindet sich über TCP-Port 102 zur Logo.
adminAdministratorWas heißt keine Daten aus der Steuerung übertragen? Ist die Weboberfläche von LogoControl erreichbar? Dass der Rechner nicht LogoControl heißt, ist kein Problem. Der Name (bzw. die ID) der LOGO in der XML ist auch nicht relevant, er wird nur innerhalb der XML verwendet um Attribute/Methoden usw. der entsprechenden LOGO zuzuordnen. Hast du in deiner LOGO die Serververbindung wie in der Anleitung beschrieben eingerichtet? Ansonsten schau mal ins Logfile unter %temp%\LogoControl.log
adminAdministratorHi,
das mit dem Analogwert in ein LogoControl Attribut zu schreiben ist auf jeden Fall schon mal eine gute Idee. Zum Setzen eines Attributs in LogoControl muss folgender REST-Aufruf getätigt werden:
http://localhost:8088/rest/devices/47/attributes/1/value?set=100
In deiner URL fehlt dazu hinten auf jeden Fall noch ein Slash (/) nach dem $2 da die url später direkt mit dem
value?set...
zusammengesetzt wird. Außerdem dürfte das mit dem$url."value?set=Value($obj)"
nicht funktionieren , da du die FunktionValue()
innerhalb des Strings benutzt und somit nicht als Funktion ausgewertet wird. Bin absolut kein Perl-Experte (und auch kein Perl-Fan :-)) aber versuch mal folgendes:GetFileFromURL($url."value?set=".Value($obj) );
adminAdministratorHi,
also erst mal: die Tabelle für die I/Os der Logo ist nur noch zu Dokumentationszwecken online. In der aktuellen Version kannst du die Eingänge/Ausgänge/Merker ganz einfach über I2, Q6, M9 usw. direkt in deiner config.xml angeben, ohne die dahinter liegende physikalische Speicheradresse kennen zu müssen.Zur Schaltuhr und Betriebsstundenzähler:
Diese Werte sind natürlich nicht automatisch im VM-Speicher abgelegt, da es ja abhängig von deinem Programm ist, ob und wie viele dieser Blöcke in der Schaltung vorhanden sind. Daher gibt es hier keine festen Adressen. Dafür steht dir der User-Bereich des VMs zur Verfügung (Byte 0 bis 850). Du musst über Extras -> Parameter-VM-Zuordnung in deiner LogoSoft zuerst die gewünschten Parameter in den VM-Speicher schreiben.Schau mal in diesem Beitrag, dort habe ich ein Beispiel für die Wochenschaltuhr gepostet. Für deinen Betriebsstundenzähler müsste das dann ähnlich funktionieren.
adminAdministratorEventuell liegt das Problem auch an meiner Anleitung, die noch auf der alten LogoSoft V7 (als es noch keine Netzwerksicht gab) basiert. Hab die Screenshots und den Text mal auf LogoSoft V8 aktualisiert. Also Raschner: folge nochmal dem Link den ixo65 oben schon gepostet hat. Wenn das nicht weiterhilft müsstest du dein Problem mal etwas genauer beschreiben.
adminAdministratorNein, böse bin ich dir auf keinen Fall. Freut mich, dass du den Fehler finden konntest und es hier auch berichtest. Viele User melden sich, nachdem ich auf ihren Beitrag geantwortet habe, oft gar nicht mehr und dann weiß ich nicht so recht, ob das Problem noch immer besteht, meine Antwort zum Erfolg geführt hat oder der User das Problem irgendwie anders gelöst hat. Von daher: jegliche Rückmeldung ist besser als gar nichts und wenn die Fehlerursache hinzu dann nicht auf meiner Seite gelegen hat umso besser 🙂
adminAdministratorHi,
also irgendwie komm ich nicht so recht dahinter. Dein JSON sieht soweit korrekt aus, auch das Beispiel-Snippet des vom /attributes Service passt zur NetIO Config. Hab auch mal deine Config bei mir am Handy getestet: funktioniert einwandfrei! Einzige Möglichkeit die ich noch sehe ist, dass der Reguläre Ausdruck unter iOS evtl. nicht funktioniert?! Ich verwende nämlich Android und wie gesagt, da läufts! Hast du ein iPhone? Vor dem Update auf 0.5 und dem Anpassen der Config hat NetIO bei dir noch funktioniert? Hast du noch den Regulären Ausdruck (parseResponse) der da funktionierte?
adminAdministratorJa, die Ausgabe von /attributes ist trotzdem richtig. Ist leider ein Bug in der von mir geforderten Mono-Version, dass er den Namen der Klasse mit ins JSON serialisiert und es dadurch etwas unübersichtlich wird. In den neueren Mono-Version > 4.0 ist das behoben, dafür ist dort ein schwerwiegenderer Bug enthalten, der die Verwendung des HTTPS-Service unmöglich macht. Von daher müssen wir vorerst mit dieser Zeile leben…
Die Zeile hat jedoch nichts mit deinem eigentlichen Problem zu tun, dass NetIO nicht mehr funktioniert. Hast du die parseResponse-Ausdrücke in NetIO entsprechend für Version 0.5 angepasst? Ansonsten poste mal das JSON deiner NetIO config (möglichst ohne User/Passwort :-))
adminAdministratorWar ein dämlicher Bug. Beim Mapping der benannten Adressen wurde hard codiert immer das Schema für die Logo7 verwendet :-). Hab selbst keine Logo8 und daher die Funktion auch nie mit dieser getestet. Jetzt sollte das ganze aber funktionieren. Die neue LogoControl 0.5.1 steht im Download zur Verfügung. Es reicht aus die EXE auszutauschen und neu zu starten.
adminAdministratorEinzige Vorraussetzung ist die Angabe des entsprechenden PLC typs oben in den settings, das hast du ja aber auch gemacht. Bei mir funktioniert das bislang auch einwandfrei, allerdings habe ich auch eine Logo7 im Einsatz. Muss mir nochmal den Code anschauen, ob da für die Logo8 evtl. das Mapping von Namen auf die Adressen fehlerhaft ist… Sonst kann ich mir das aktuell nicht erklären
adminAdministratorBei mir ist das Soll-Feld ein eigenes Feld ( /rest/devices/63/attributes/1/value?set={text} steht jetz drin). Geht nicht!
Mach mal aus dem „value“ ein „valueText“, also so:
/rest/devices/63/attributes/1/valueText?set={text}
Im value steht der Rohwert, so wie er in der Logo gespeichert ist (Hex-ähnlich, also nicht für Menschen lesbar). Im valueText steht die vom valueTextConverter konvertierte menschenlesbare Variante. Diese Variante (also der valueText) lässt sich nun in LogoControl 0.5 auch direkt schreiben und LogoControl kümmert sich um das Rückwärtsrechnen in den kryptischen Hex-ählichen Wert.
adminAdministratorOK, das liegt dann wirklich an überlappenden Speicherbereichen. Die Ein- und Ausschaltzeit der LOGO-Wochenschaltuhr belegen beide jeweils ein „word“. Ein Wort sind 2 Bytes, das wären in deinem Beispiel die Adressen 92, 94, 96, 98, 100 und 102. Ich habe bei mir mal einen kompletten Nocken der Wochenschaltuhr konfigurierbar gemacht:
<device id="aussensteck_zeit" name="Außensteckdose Zeitsteuerung"> <attribute id="1" name="Status" plc="main" address="305.1" valueTextConverter="an_aus" /> <attribute id="EinZeit" name="Einschaltzeit" plc="eg" address="701" datatype="word" valueTextConverter="time" /> <attribute id="AusZeit" name="Ausschaltzeit" plc="eg" address="703" datatype="word" valueTextConverter="time" /> <attribute id="Mo" name="Montag" plc="eg" address="700.1" valueTextConverter="an_aus" /> <attribute id="Di" name="Dienstag" plc="eg" address="700.2" valueTextConverter="an_aus" /> <attribute id="Mi" name="Mittwoch" plc="eg" address="700.3" valueTextConverter="an_aus" /> <attribute id="Do" name="Donnerstag" plc="eg" address="700.4" valueTextConverter="an_aus" /> <attribute id="Fr" name="Freitag" plc="eg" address="700.5" valueTextConverter="an_aus" /> <attribute id="Sa" name="Samstag" plc="eg" address="700.6" valueTextConverter="an_aus" /> <attribute id="So" name="Sonntag" plc="eg" address="700.0" valueTextConverter="an_aus" /> </device>
Die Parameter-VM-Zuordnung:
Und Live schaut das ganze dann so aus:
-
AutorBeiträge