Arduino spricht mit LOGO / Simatic S7

Begonnen von John, 10 Januar 2015, 23:44:28

Vorheriges Thema - Nächstes Thema

John

Nachdem mein DINO-Arduino nun schon bald 1 1/2 Jahre in der Schublade liegt und er seiner Aufgabe durch eine LOGO!8 entbunden wurde,
fand ich die Frage spannend, ob es möglich sei, Arduinos mit Logos zu verbinden, da sich Arduinos gut auf 1-Wire verstehen,
Logos hingegen gar nicht.

Ergebnis :
* Arduino kann den Speicher der Logo auslesen und beschreiben
* alle Werte der Logo können auch von FHEM gelesen und beschrieben werden, somit auch die zuvor vom Arduino abgelegten
* Autmatische Abläufe können damit ohne Vermittlung von FHEM realisiert werden.


Die Zutaten:

* eine LOGO!8
* Arduino mit Ethernet-Schnittstelle
* ein Arduino Treiber für das S7-Protokoll http://settimino.sourceforge.net/
* wenn das Ganze in FHEM zu sehen sein soll, das Logo-Modul für FHEM http://forum.fhem.de/index.php/topic,30624.0.html/
* sollte man einen ENC28J60 als Ethernet-Chip am Arduino einsetzen, braucht man noch den UIP-Ethernet Treiber von Norbert
https://github.com/ntruchsess/arduino_uip


Damit  können nun Arduino-Sensoren direkt die Steuerung versorgen,
oder
Arduino-Relais werden über das Netzwerk von der LOGO gesteuert.

Die Möglichkeiten sind enorm.

Zum Thema LOGO http://www.fhemwiki.de/wiki/LOGO_-_Das_Logikmodul

Ich habe einfach mal die Ausgänge der Logo (steuert die Heizungspumpen an) auf die Relais vom Dino gespiegelt
(liegt bei mir am Schreibtisch)
Damit hör ich nun akustisch was am Brenner passiert.

Anbei noch ein Beispiel, wie ein Treppenlichtschalter realisiert werden kann, dessen Taster von unterschiedlichen Geräten erfasst werden.
I3 und I4 sind Eingänge der Logo. NI1 ist eine Netzwerkeingang der vom Arduino beschrieben wird.
Alle 3 Signale werden über B004 verodert. B003 realisiert die Funktion des Treppenlichtschalter (fertiges Funktionsmodul in Logo).
Dessen Ausgang geht auf einen Netzwerk-Ausgang, der wiederum als Relais im Arduino liegt.
(Arduino muss den zugeordneten Speicherbereiche zyklisch lesen/schreiben)

In der Logo-IDE kann man die Logik vorab wunderbar durch Simulation testen (siehe Anhang) und verifizieren.
(rote Linien sind aktive Pfade, blaue sind passiv)

Der Treiber Settimono ist für die Simatic S7 geschrieben, so daß sich die Logo auch durch eine S7 ersetzen läßt.
(beide verwenden das S7-Protokoll)

Produktiv-Sketch im Anhang
(23.06.2015 KE1.zip)

       
  • Arduino UNO mit Ethershield
  • 6 Temperatursensoren vom DS18B20 werden von Arduino eingelesen (Onewire.Ino)
  • für jeden Temperatur-Wert wird ein Status-Byte mit einem Live-Bit übertragen
  • der Temperatur-Wert wird in 10-tel Grad als word übertragen, damit werden 3 Bytes pro Temperaturwert verwendet
  • die Daten werden ab VB.200 in der Logo abgelegt



John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

liha

kann man aus fhem nicht direkt triggern?

bisher kann ich die v*.* nur setzen und rücksetzen, ein impuls wäre besser geeignet um z.b. v0.0 als taster nutzen zu können.

John

Hallo liha,

ich bin nicht sicher, ob ich dich richtig verstanden habe.

Zitatkann man aus fhem nicht direkt triggern?
Klar kann man das, das ist ja eigentlich der Standard, daß alles über FHEM gemacht wird
und wenn FHEM steht, geht wirklich nichts mehr.

Aber hier wollte ich zeigen, daß sich Arduinos auch ohne FHEM mit der LOGO verbinden können.

Zitatbisher kann ich die v*.* nur setzen und rücksetzen, ein impuls wäre besser geeignet um z.b. v0.0 als taster nutzen zu können.
Die Logo selbst kann sich aus der steigenden und fallenden Flanke einen Trigger generieren.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

liha

Zitat von: John am 16 Januar 2015, 20:43:32

wenn FHEM steht, geht wirklich nichts mehr.


genau das ist was ich verhindern möchte, meine LOGOs sind alle so verbaut und programmiert, dass sie mit Tastern, S7droid und nun auch mit FHEM gesteuert werden sollen.
Das kann nur funktionieren, wenn an alle Eingänge (Hardware wie auch Netzwerk) nur Impulse gesendet werden.
Wie kann man nun aus FHEM einen Impuls an V0.0 senden?

John

ZitatDas kann nur funktionieren, wenn an alle Eingänge (Hardware wie auch Netzwerk) nur Impulse gesendet werden.
Da bin ich nicht deiner Meinung, die Logo ist schlau genug auf positive und negative Flanken zu reagieren.
Beispiel:
* Funk-Taster sendet an FHEM.
* FHEM toggled Bit
* Bit an VBxy in Logo schreiben
* Logo erkennt positive wie negative Flanke (XOR + Verzögerungsglied)

ZitatWie kann man nun aus FHEM einen Impuls an V0.0 senden?
Du schreibst 1 , danach sofort wieder die 0.
Die Logo ist schneller als FHEM.
(die erste Variante kommt mit einem einzigen Schreibzugriff aus)

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Starkstrombastler

Also, wenn ich das richtig verstehe, stellt der Arduino die Funktion einer Remote-Logo dar, und das für weniger als das halbe Geld. Das eröffnet doch einige neue Möglichkeiten.
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

John

#6
Die Logo verwendet wie alle anderen Siemens SPSen das S7-Protokoll.
Man kann bis zu 8 Verbindungen einrichten und diesen  die Server- oder Client- Rolle zuordnen.

Wenn Logo A einen Wert zu Logo B schreiben will, muss LogoA eine Client-Verbindung und LogoB eine Server-Verbindung aufweisen.

Der Arduino kann nur als Client agieren, aber damit eben auch alles von LogoB lesen oder deren Speicher beschreiben.
Den Speicher der Logo kann man sich als ein Byte-Array von 0..800 vorstellen.

Das alles funktioniert ohne FHEM.

Gleichwohl arbeitet FHEM selbst als Client bezogen auf das S7-Protokoll (mit dem Modul LOGO) und kann sich somit über
alle Daten der Logo am Laufenden halten.

Ich plane mit dem Arduino 6 Stück des digitalen Temperatursensors DS18B20 zu erfassen und an die Logo weiterzureichen. (Heizungssteuerung)
Die Logo kann mit DS18B20 nicht umgehen.

John


CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

John

#7
Die ersten Sensoren sind integriert.

Die Logo verfügt über eine Web-Server, in dem sie sich selbst virtualisiert darstellt (siehe Anhang)
und den man mit einem Weblink wunderbar in FHEM integrieren kann.

Im Variablen Browser sieht man sich direkt die Werte anzeigen lassen .

John

CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

moonsorrox

#8
Hallo John,

ich probiere mich gerade daran die Ansicht der Logo8 in Fhem darzustellen, dass gelingt mir leider nicht.
Ich habe in der DEF folgendes:
image http://10.0.0.70/logo_bm_01.shtm?!

Zeigt mir aber leider nichts an, kannst du mir auf die Sprünge helfen, normal muss man sich ja auch anmelden um die Ansicht LOGO! BM zu bekommen
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

John

Hab das so definiert (IP-Adresse anpassen)

define LOGO8.LINK weblink iframe http://192.168.178.11/logo_login.shtm?!App-Language=0
attr LOGO8.LINK htmlattr width="900" height="700"


John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

moonsorrox

OK vielen Dank.
Sobald man den room in Fhem verlässt muss man sich aber immer neu anmelden sobald man den Logo room wieder betritt, ist das bei dir auch so.?
Super das es erst mal auf jeden Fall geht....
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

John

Zitat..ist das bei dir auch so.?
Ja, ist so.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

skopel84

Hallo John

Ich versuche im Moment auch das Arduino mit der Logo direkt zu verbinden um der Logo mehr Möglichkeiten zu verpassen. Leider komme ich trotz einigem googlen und langer Versuche nicht weiter. Könntest du mir eventuell deinen Arduino Code schicken??

Zusätzlich möchte ich kurz auf eine Interessante Variante in diesem Bezug aufmerksam machen.
Es gibt inzwischen eine scheinbar vernünftige Steuerung welche auf den Arduino Chips basiert und sich aus der bekannten Umgebung programmieren lässt. Unter Controllino findet man die wichtigsten Parameter.

Grüße Sebastian

John

Hallo Sebastian,

den Sketch habe ich dem ersten Beitrag angefügt.

Anbei noch das Schema des gesamten Projektes.
Arduino versorgt unabhängig von FHEM die Logo mit den Temperaturwerten.
Die benötigt diese, um die Brennersteuerung zu "optimieren".

Viel Spaß damit.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

mani

Hallo John,
Habe zurzeit mein Raspberry mit dem Arduino UNO über USB verbunden @Piduino  und übergebe so mit deinem Modul die Werte an die 0BA7.Ich habe auch eine DCF77 includiert welche die Systemzeit des Raspberry setzt.
Viel besser würde es mir gefallen wenn die Logo direkt mit dem Arduino kommuniziert und ich die Werte nicht über FHEM an die Logo übergebe aber wie kann ich die Atomzeit der DCF77 welche ich dann mit dem Arduino auslesen möchte an die Logo übergeben?

Danke MFG Mani
RasPi B+,Onkyo_AVR,Luxtronik2,Logo7,Mpd,Arduino Uno mit Ethernet,KNX,Jablotron