FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: John am 10 Januar 2015, 23:44:28

Titel: Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 10 Januar 2015, 23:44:28
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/ (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/ (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 (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 (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)



John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: liha am 16 Januar 2015, 18:03:39
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.
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 16 Januar 2015, 20:43:32
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
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: liha am 17 Januar 2015, 12:33:57
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?
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 17 Januar 2015, 14:02:53
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
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: Starkstrombastler am 17 Januar 2015, 21:34:30
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.
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 17 Januar 2015, 22:05:48
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


Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 18 Januar 2015, 09:30:21
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

Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: moonsorrox am 11 Februar 2015, 15:41:25
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
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 11 Februar 2015, 15:46:50
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
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: moonsorrox am 11 Februar 2015, 16:11:38
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....
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 11 Februar 2015, 16:27:34
Zitat..ist das bei dir auch so.?
Ja, ist so.

John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: skopel84 am 23 Juni 2015, 09:36:22
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
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 23 Juni 2015, 22:13:13
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
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: mani am 15 Juli 2015, 12:08:41
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
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 15 Juli 2015, 19:50:10
ZitatViel 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?

Ausgehend von Logo8:
im VM-Bereich gibt es für die Uhrzeit reservierte Adressen (siehe Anhang)
Diese kann man auch beschreiben und damit die Systemzeit manipulieren (mit meiner Logo8 eben getestet).

Da Arduino jedes Byte im VM-Bereich beschreiben kann, sollte also deinem Vorhaben nichts entgegenstehen.
John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: mani am 22 Juli 2015, 14:02:52
@John,hallo danke erstmal für deine Info, aber irgendwie steck ich fest da ich nicht wirklich verstehe wie ich DB in der Logo ansprechen kann.
Ich möchte in der Logo NAI1(VW50),NAI2(VW90),NAI3(VW376) beschreiben, da soll mein Arduino die Werte für Temperatur,Wind und Helligkeit hineinschreiben.
Wie muss ich den Sketch Schreiben um den DatenPunkt VW50 zu beschreiben?komme mit meinen Google Recherchen einfach nicht weiter und die Settimino Webseite scheint auch nicht erreichbar....kannst  du mir auf die sprünge helfen?

Danke Mani
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 23 Juli 2015, 21:29:05
Hallo mani

es ist sinnvoll möglichst aufeinanderfolgende Bereiche für den Transfer zu nehmen, dann kann man das mit einem einzigen
Schreibzugriff realisieren.
Also z.B. VW50,VW52,VW54.

Vorgehensweise:
1. Arduino kann erfolgreich eine Verbindung zur Logo aufbauen
2. Schreibbefehle von Arduino zu Logo realisieren
3. geschriebene Werte in der Logo überprüfen (z.B. mit Logo-SoftComfort)

Welche der Punkte hast du schon realisiert ?

John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: mani am 24 Juli 2015, 06:46:39
Hallo John ,
bin noch sehr am Anfang...hab jetzt die Netzwerkeingänge in NAI 50,52,53 umgeändert und den lokalTSAP und RemoteTSAP (0x2100,0x2200) eingerichtet.
Zurzeit scheiter ich noch am Verbindungsaufbau zur Logo,versuche deinen Logo Sketch für mich anzupassen. Habe da ich keine Onewire sensoren benutze ow und config entfernt habe aber so noch keine funktionierende Verbindung herstellen können da ich nicht genau weiss was ich da noch mit verändern muss.....

Danke Mani

Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 24 Juli 2015, 09:33:00
Hallo Mani,

dann ist das erste Ziel einen Verbindungsaufbau hinzubekommen.
Gehe wir davon aus, dass du TSAP 23.00 auf der Logo-Seite verwendest.
Dann sieht die Konfiguration in der Logo wie im Anhang aus.

Arduino selbst verwendet TSAP 01.00.


  byte mac[] = {  0xDE,0x90, 0x91, 0x92, 0x93, 0x14 };  // mac adresse v. arduino
  IPAddress Local(192,168,178,14); // IP.Adresse Arduino
  int LogoRemoteTSAP= 0x2300;  // TSAP der Logo-Seite (siehe Konfiguration)

IPAddress PLC(192,168,178,11);   // IP Adresse Logo

int LogoLocalTSAP= 0x0100;   // TSAP v. Arduino


John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: mani am 24 Juli 2015, 10:47:55
@John okey danke für deine Hilfe
  habe die Serververbindung der Logo wie folgt angepasst:
Logo.lokalTSAP 02.00 ,RemoteTSAP 01.00,IP-Adresse 10.0.0.22 und
Arduino IP-Adresse 10.0.0.35

und auch im Sketch nach deiner Anleitung geschrieben,aber ich kann noch keine Verbindung aufbauen da ich noch nicht weis wie ich den Logosketch aus KE1 umschreiben muss damit er alleine funktionieren kann. :'(

Mfg Mani
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 24 Juli 2015, 10:55:08
Hallo Mani,

wie schätzt du deine Fähigkeiten beim Programmieren für Arduino ein ?

Wenn du Anfänger bist, solltest duch erst ein paar Basis-Beispiele die mit Arduino ausgeliefert werden durcharbeiten
bevor wir hier weitermachen.

John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: mani am 24 Juli 2015, 11:22:44
@John bin schon noch eher Anfänger aber habe es bereits geschafft mit dem Arduino eine Wetterstation zu realisieren mit der ich Wind, Helligkeit, Temperatur und den DFC77 Empfänger ablesen kann. Zurzeit schreibe ich mit FHEM die Werte in die Logo aber das ist nicht sehr stabil daher würde ich es gerne eine direkte Übertragung schaffen.

Wer toll wenn du mir Weiterhelfen könntest .....

Mfg Mani
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 24 Juli 2015, 11:37:58
Versuch eine Minimal- Applikation zu schreiben.

Ziel ist es, eine Verbindung mit der Logo herzustellen.

Checkpunkte:
Logo kann von deinem PC aus angepingt werden
Arduino ebenso
Arduino Programm ausführen und Logdateien, sowie deine Anwendung hier reinstellen.

John


Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: mani am 24 Juli 2015, 15:24:14
@John,
Genau bei der Aufgabe steck ich fest,ich kann von meinem Pc heraus Logo anpingen und auch den Arduino konnte ich schon anpingen  nur die Verbindung zur Logo schaff ich nicht habe auch versucht die Verbindung mit Runstop Sketch herzustellen.Aber ich bekomme es nicht hin....
:'(
Mfg Mani
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 24 Juli 2015, 17:19:44
ZitatArduino Programm ausführen und Logdateien, sowie deine Anwendung hier reinstellen.
John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: mani am 24 Juli 2015, 17:44:40
@John  okey im Anhang mein Versuch :-X mit der Abänderung von deinem Sketch .....


Mfg Mani
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 25 Juli 2015, 10:43:57
Du must die Baudrate vom "Seriellen Monitor" auf 57600 einstellen,
entsprechend der Anweisung im Code
  Serial.begin(57600

sonst siehst du nur Müll.

Der Monitor ist das einzige Hilfsmittel, um die korrekt Funktion des Programmes zu prüfen.

John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: mani am 26 Juli 2015, 20:38:17
@John und schon scheint die Verbindung schon zu Funktionieren :) Danke Vielmals
Jetzt sollte ich noch wissen wie ich die Werte der Logo übergebe :-\....

Mein derzeitiger Stand im Anhang

MFG Mani
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 26 Juli 2015, 21:22:58
Das sind doch gute Nachrichten.

Nun zur Funktion die in die Logo schreibt
int LogoWrite(int start,int count, void * buffer)

start = start index im VM-Bereich , zu dem die Werte aus buffer zu schreiben sind
count= Anzahl der Bytes die zu schreiben sind
buffer= speicherbereich in dem sich die zu schreibende Werte befinden.

Beispiel

int rval=0x12;
bufferForWrite[0] = highByte(rval);
bufferForWrite[1] = lowByte(rval);
LogoWrite(100,2,&bufferForWrite[0]); // legt in Logo bei VB100 und zu VB101 die bytes ab


John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: mani am 26 Juli 2015, 22:48:04
@John so ganz komm ich noch nicht dahinter gibt es da eine Formel oder wie kann ich Rausfinden wie ich in meinem Fall VW50-VW54 und die RTC bits beschreibe?
Mfg Mani
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 26 Juli 2015, 23:05:50
VW50  = VB50  und VB51

Stellt dir den VM Bereich einfach als Array von Bytes vor.
Der Index (hier 50) ist der Start-Index im Array.
Wenn du also VW 50 berschreiben wills muss du 2 Byte ab Array Index 50 schreiben

Willst du auf VW52 schreiben sind 2 Byte ab Array Index 52 zu schreiben.

Achtung VW51 liegt zur Hälfte in VW50 und VW52 mit Index 51 und 52.

Aber fange zuerste mit einem einzelnen Wert an (VW50), wenn das klappt machst du es mit mehreren.

John


Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: mani am 27 Juli 2015, 08:41:28
@John okey aber wie kommt es zustande das LogoWrite(200,2,&bufferForWrite[0]); // die bytes in VB100  zu VB101 ablegt hängt das mit TSAP zusammen?

Mfg Mani
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 27 Juli 2015, 10:33:16
sorry , mein Fehler
habe Beitrag #29 entsprechend korrigiert.

TSAP hat nur mit der netzwerktechnischen Adressierung zu tun, niemals mit der Adressierung der Speicherbereiche.
John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: mani am 27 Juli 2015, 12:30:28
@John danke  hab nun meine ersten Werte in die Logo geschrieben  :)...
byte bufferForWrite [sensorWert];
   int rval=sensorWert;
   bufferForWrite[0] = highByte(rval);
   bufferForWrite[1] = lowByte(rval);
   LogoWrite(54,2,&bufferForWrite[0]);


Mfg Mani
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: smarties am 29 Oktober 2015, 22:29:43
Zitat von: John am 10 Januar 2015, 23:44:28
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)

Hallo John
Ich versuche dein Beispiel nach zu bauen. Verbindung klappt schon mal. Aber wie schalte ich den Eingang 1 (V400) im Arduino?
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 01 November 2015, 11:26:15
Hallo smarties,

schau dir doch nachfolgende Funktion an, damit kannst du in einem Byte ein einzelnes Bit setzen.

int WriteBit(uint16_t vb, byte bit, bool value);

John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: smarties am 02 November 2015, 10:41:03
Hallo John

Die Funktion "WriteBit" ist nicht in Settimino.cpp enthalten.
Ich habe nun eine Lösung mit "LogoWrite" (WriteArea) gefunden:


  //Test1: Eingang an Logo schalten
  byte Wert = 1;
  LogoWrite(400,1,&Wert);


Das funktioniert zwar zum ein und ausschalten. Ich beobachte die Variable 400 im Logo8 Webinterface.

Nun habe ich testhalber versucht REAL-Zahlen zwischen Logo und Arduino auszutauschen:


//Test2: Float Wert an Logo übergeben (wechselnd)
  float Wert2 = 35.27;
  if (booWechsler){
    booWechsler=false;
    Wert2 = -9.81;
  }
  else{
    booWechsler=true;
    }
  LogoWrite(200,4,&Wert2);



In der Variablen-Übersicht auf der Logo sehe ich dann nur -182664960 und 336413184

Ein anderer Test übergibt ein Wert von der Logo zum Arduino:


//Test 3: Wert aus Logo lesen
  int Wert3 = 0;
  LogoRead(300,1,&Wert3);
  Serial.println(Wert3);


Gebe ich in der Variablen Übersicht der Logo bei VM300 (Byte, SIGNED) den Wert 56 ein, dann bekomme ich am Arduino auch 56. Wenn ich aber -56 eingebe, bekomme ich am Arduino 200!

Wo muss ich hier ansetzen um mein Ziel zu erreichen? Es müssen sich schlussendlich Zahlen beliebiger Grösse beidseitig übertragen lassen.

Zur Info: bin auf der Logo, sowie auf dem Arduino Anfänger, aber mit bereits einigen Erfahrungen.
Meine Zielanwendung ist eine Solarsteuerung. Die Temperaturen werden mit Onewire auf dem Arduino erfasst.
Dann speichere ich sie in einer mysql DB und werte diese mittels PHP auf einer Website aus.

lg smarties
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 02 November 2015, 17:41:00
Hallo smarties,

ZitatDie Funktion "WriteBit" ist nicht in Settimino.cpp enthalten.
Ich habe nun eine Lösung mit "LogoWrite" (WriteArea) gefunden:
Wenn du Settimino-Variante aus dem Projekt verwendest das im ersten Beitrag betreitsteht, wirst du diese Funktion finden.
Ich habe Settimino entsprechend erweitert.

ZitatNun habe ich testhalber versucht REAL-Zahlen zwischen Logo und Arduino auszutauschen:
Das ist ziemlich sinnfrei, da Logo ohnehin keine Real-Zahlen verarbeiten kann.

Ich rate dir dringend mit Festpunktzahlen zu arbeiten. Das ist in der Logo der Standard.
Beispiel: du legts 123 in VW120 ab, was 12.3 Grad Celsius bedeuten soll.
Die gedachte Einheit ist also 1/10 Grad. Die Nachkommstallen sind also eine Konvention die du mit dir selber vereinbarst.
(Der Arduino Programmierer muss das wissen und der Logo-Programmierer ebenso).



  int Wert3 = 0;
  LogoRead(300,1,&Wert3);

Du liest hier 1 Byte in auf einen int (2 Byte ). Das kann nicht gut gehen.

Grundsätzlich solltest du dich noch mit dem Thema "Endianess" beschäftigen.


John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: smarties am 03 November 2015, 17:53:30
Hallo John

Das mit den Festpunktzahlen leuchet mir ein. Habe auch versucht mich mit dem Thema Endianess auseinanderzusetzen.  Verstehe das noch nicht so richtig.
Was mir schon mal helfen würde, ist ein Beispiel, wie ich int-Zahlen (positive wie negative vom Arduino aufs Logo-Display bringe.

lg smarties
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 04 November 2015, 08:51:18
Die Logo ist ein Big-Endian Maschine, der Arduino hingegen eine Little-Endian.

Damit muss bei der Logo bei aufsteigernder Adresszählung das höherwertige Byte des Integer zuerst erscheinen, danach das niederwrtige Byte.

Das wird auch beim Zurücklesen der Daten von der Logo deutlich via Settimino
Zitatword S7Helper::WordAt(void *Buffer, int index)
{
    word hi=(*(pbyte(Buffer) + index))<<8;
    return hi+*(pbyte(Buffer) + index+1);
}

Hier wird das höherwertige Byte by index und niederwertibge bei index + 1 erwartet.

John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: smarties am 04 November 2015, 21:46:16
Langsam verstehe ich das. Habe folgendes versucht:


//Test2: Wert an Logo übergeben (wechselnd)
  int Wert2 = 3527;
  if (booWechsler){
    booWechsler=false;
    Wert2 = -981;
  }
  else{
    booWechsler=true;
    }
  LogoWrite(200,2,&Wert2);


Den Wert 3527 kann ich nun in der Logo Variablen-Ansicht entschlüsseln, in dem ich die beiden Byte vertausche.
Mit -981 krieg ich das nicht hin. Negative Zahlen werden anders behandelt?

Wie kann ich den Wert 3527 im Logo Display anzeigen?

Danke für deine Geduld.

lg smarties
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 04 November 2015, 21:59:59
Du musst natürlich im Logo-Browser den korrekten Datentyp wählen.

Folgender Wert im Anhang ist im Arduino als int definiert und wird auch bei negativem Wert korrekt dargestellt.
(Arduino erfasst über 1-Wire-Sensor die Raumtemperatur, diese ist in 10-tel Grad zu verstehen)

Ein Arduino-int muss im Logo-Datenbrowser als WORD/Signed dargestellt werden.

Negative Zahlen werden bei Arduino und Logo im 2-er Komplement repräsentiert.

John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: smarties am 05 November 2015, 09:52:43
Danke, das hilft mir ein wenig weiter.

Hast du mir noch einen Tipp, wie ich den Inhalt der Variablen aufs Logo-Display bringe?

lg smarties
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 05 November 2015, 10:11:09
Siehe E-Learning
https://sitrain.automation.siemens.com/sitrain/open_wbt/logo8/menu.html?mode=standalone (https://sitrain.automation.siemens.com/sitrain/open_wbt/logo8/menu.html?mode=standalone)
John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: smarties am 05 November 2015, 13:17:02
Interessante Site. Habe einige Beispiele druchgespielt. Aber eine Lösung, wie ich den Wert aus der Variable auf das Display bringe, habe ich nicht gefunden.
Ich habe rausgefunden dass mittels Netzwerk Ein- und Ausgängen auf den lokalen Memory zugegriffen werden kann. Aber wie weiter? Wie hast du das mit der Temepratur-Anzeige gemacht, John?

lg smarties
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 05 November 2015, 17:02:43
In Kapitel 3 des E-Learn-Programms wird doch alles erklärt.
John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: smarties am 05 November 2015, 18:56:13
Irgendwie verstehen wir uns falsch. Ich möchte nicht einen PT1000 Sensor einlesen, sondern den Wert, welchen mir der Arduino in die VM geschrieben hat.
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: smarties am 15 November 2015, 11:41:46
Zitat von: John am 02 November 2015, 17:41:00
Wenn du Settimino-Variante aus dem Projekt verwendest das im ersten Beitrag betreitsteht, wirst du diese Funktion finden.
Ich habe Settimino entsprechend erweitert.

Hallo John
Ich habe deine Settimino-Variante mal hinzugefügt. In deiner Variante kann ich die S7 Helper wie zB S7.BitAt nicht mehr verwenden. Bei Kompilieren erhalte ich den Fehler "'S7' was not declared in this scope". Ich kann den Fehler nicht finden. In der Original Settimino gibt es dieses Problem nicht.

Wie komme ich an diese Funktionen ran?

lg smarties
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 15 November 2015, 15:35:16
in Settimono.h folgende Zeile ent-Kommentieren

Zitat//#define _EXTENDED  // john

John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: smarties am 15 November 2015, 19:24:08
Schein noch nicht zu reichen. Jetzt erhalte ich eine neuen Fehler beim Kompilieren, ohne weiteren Hinweis auf die Ursache:

exit status 1
Fehler beim Kompilieren.
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 16 November 2015, 22:27:16
mit
#define _NORMAL
anstelle von

#define _EXTENDED

funktioniert das Übersetzen bei mir.

John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: tvrservis am 28 Dezember 2015, 10:00:14
Hi John,
I want to test your application KE1.ino with Arduino Nano and Ethernet shield enc28j60. I use the library UIPEthernet https://github.com/ntruchsess/arduino_uip. When compiling lists the following error:

In file included from \arduino_uip-master/UIPEthernet.h:28:0, from KE1.ino:34:
\arduino_uip-master/ethernet_comp.h:5:24: error: redefinition of 'class UIPClient'
#define EthernetClient UIPClient
                        ^
\libraries\Ethernet\src/EthernetClient.h:8:7: note: in expansion of macro 'EthernetClient'
class EthernetClient : public Client {
       ^
In file included from \libraries\arduino_uip-master/UIPEthernet.h:33:0, from KE1.ino:34:
\libraries\arduino_uip-master/UIPClient.h:63:7: error: previous definition of 'class UIPClient'
class UIPClient : public Client {
       ^
Error compiling.

What am I doing wrong?

Thank you for your response,
Kornel
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 28 Dezember 2015, 12:06:35
Hi Kornel,

I tried to simplify the sketch for enc28j60-based boards.
I hope it will work.

John


Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: tvrservis am 28 Dezember 2015, 13:32:02
Yes, it works.
Good job. Thanks!
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: special.mechanics am 13 Januar 2016, 20:36:33
hallo JOHN
ich möchte mich bei dir bedanken
immerhin war es dieser thread welcher mich zur lösung meines problems gebracht hat
vor 14 tagen wusste ich noch garnicht das es einen arduino gibt und nun kann mein YUN sich per wifi mit meinem LOGO!8 steuergeräten verbinden und die komplette fernsteuerung übernehmen
bis jetzt habe ich die visualisierung nur in selbstgeschrieben android apps (iswvis) realisiert

hab zwar paar stunden gebraucht auf meine alten tage eine neue art der programmierung zu lernen (bin sps programmierer) aber mit deinen hinweisen hier bin ich auf den richtigen pfad gekommen
hab deinen KE1 umgeschrieben und denn ein oder anderen punkt ergänzt
ganz wichtig war mir ein "alive" signal zwischen den beiden . dadurch das in DB 1 am ende nur die variablen veränderst ist es äusserst unpraktisch wenn ein/ausgangssignale nicht zurückgesetzt werden wenn die beiden ihren kontakt während des ablaufs verlieren :)

manchmal braucht man nur den nötigen tritt in die richtige richtung

Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: tante ju am 13 Januar 2016, 22:57:38
>von FHEM kurzen Impuls an LOGO ...

Zitat von: John am 17 Januar 2015, 14:02:53
Du schreibst 1 , danach sofort wieder die 0.
Die Logo ist schneller als FHEM.
(die erste Variante kommt mit einem einzigen Schreibzugriff aus)

Warum so kompliziert?

In der LOGO einen 0-Wert auf ein Speicherbit (V0.0) legen und daran die Schaltung anschließen.
Ein Schreibvorgang einer 1 auf diesen Wert wird in der LOGO vor der Auswertung des 0-Bits ausgeführt. Das Resultat ist also in der Logik der LOGO exakt ein kurzer 1 Impuls.
Dazu braucht es von FHEM nicht zwei Schreibzugriffe.

Läuft bei mir seit fast zwei Jahren ohne Probleme. Taster (I) auf ODER-Eingang 1 und 0-V0.0 auf ODER-Eingang 2. So kann ich in der weiteren Logik auf Taster reagieren und auf einen Schreibzugriff von FHEM (set logomerker 1). Der nächste READ seitens FHEM liest wieder die 0 aus dem Merker und aktualisiert den Wert in FHEM entsprechend.

Im Bild ein Ausschnitt einer Rolladensteuerung mit Tastern. Da die echten Taster die Funktion haben: 1*drücken=in Richtung fahren, nochmal drücken=stopp (oder Richtungsumkehr, wenn es der andere Taster ist), wäre eine 1 und 0 schreiben von FHEM zu langsam.
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 13 Januar 2016, 23:06:59
@special.mechanics
ich danke dir für deine Rückmeldung. Es freut mich immer, wenn meine Arbeit auch anderen weiter hilft.

Eine Verbindungsübewachung ist im Sketch KE1 sogar für jeden einzelnen Sensors realisiert.

In diesem Beitrag siehst du die Variablen-Darstellung
http://forum.fhem.de/index.php/topic,31899.msg247534.html#msg247534 (http://forum.fhem.de/index.php/topic,31899.msg247534.html#msg247534)
Hier ist das erste Byte (VM200) für das Live-Bit eines Sensors reserviert und das folgende Wort (VM201) für den eigentlichen Messwert.

Wenn die Verbindung abreisst, kann die Logo den fehlenden Wechsel vom Live-Bit erkennen.
Das ist der Fall, wenn der Sensor abgesteckt wird, aber auch wenn generell die Verbindung abreisst.

John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: special.mechanics am 14 Januar 2016, 19:00:00
john ....
ich hab das schon gesehen . hab aber viel gecleant in dem sketch . die ganzen onwire sachen z.b.
ich stehe noch am anfang mit der art der programmierung :) da sind perfekte scripte noch nicht an der tagesordnung
demzufolge habe ich es mir einfach gemacht und hole mir mit dem yun einfach ein bit aus einem impulsgeber und schreib dieses zurück
so weiss der yun das es eine logo gibt (weiss er ja eh auch woanders her) und die logo umgedreht auch
da habe ich zwar das delay der lese/schreib befehle und das des impulsgebers aber es reicht mir das beide spätestens nach 1 sek bescheid wissen zumal das selbe script auch von der android visualisierung benutzt wird
ich bin mit den logo programmen eh immer an der schmerzgrenze (399 von 400 blöcken und sowas) , da muss ich bissl auf kompatiblität achten :)
die automatische wiederverbindung scheint im originalen settimoscript auch nicht recht zu funktionieren , das habe ich ebenfalls über das alivesignal gelegt (die gehen eben davon aus das das ethernet stabil funktioniert)
ab jetzt kann ich nur nicht mehr mit einem delay() arbeiten . aber das geht ja auch anders
sobald der yun eben zu "langsam" für das alive ist wartet die logo eben mit netzwerkbefehlsausführungen
das ist immer noch besser als andersrum

Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: VaidasJ am 17 Januar 2016, 09:23:08
Hello,

ich will fragen ob die ferbindung zwichen Logo und Arduino bei Sie stabil lauft? Bei mir passiert oft die Fehler: "diconnectiong due severe error:4". Als ich verstehe dass ist etwas mit TCP fehler verbunden. Ich will die heizung kessel steuern (stellmotoren, ventilen) und brauche dass die temperatur daten wurden immer stabil geschrieben werden als sie andert.
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 17 Januar 2016, 12:00:37
@VaidasJ

Arduino wird in jedem Fall nach 24 Stunden neu gestartet

void loop()
{
  ...
  // täglich reset 
  if (millis()>daylyResetWaiter)
  {
    SoftReset();
  }
}


Weiterhin wird die Verbindung zur Logo überwacht.
Wenn es nicht gelingt nach 3 Minuten eine Verbindung aufzubauen, dann erfolgt ebenfalls ein Reboot.

void LogoLoop()
{
...
  if (s7Client.Connected)
  {
    logoUnconnectWaiter = millis() + LGOO_CONNECT_TIMEOUT;
  }

  // wenn keine tcp connect über n sekunden, dann reboot
  if (millis()>logoUnconnectWaiter)
  {
    SoftReset();
  }
}


Eine gestörte Verbindung von weniger als 3 Minuten ist für mich unerheblich, da ich nur Temperaturen erfasse.
Insofern ist meine Verbindung stabil.

Wenn es für dich einfacher ist können wir auch Englisch sprechen.

John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: VaidasJ am 17 Januar 2016, 13:30:39
@John

Thank you for your answer. As I stated earlier, I need to control my boiler system, e.g. mixing valve by using valve actuator and a few more zone valves and pumps. For mixing valve control I bought also analog output module, because it is easier to implement PI or PID controller for this task using proportional valve actuator instead using 3-point SPDT actuator controlled by relays (or maybe it is some good solution to control 3-point SPDT actuator). For my application I need at least 6 temperature sensors, so to buy 3 analog RTD modules is not a cheap deal. So during mixing valve control, if sensor hangs for 2 or 3 minutes due to connection problems it is not acceptable. Actually I thought it will be a more stable connection. I wanted to apply Logo commercially also in other domestic heating non-standard solutions (modernization of old heating systems in private houses with different architecture), but the price for temperature modules makes the overall solution in my country to expensive. Still it would be a great solution because of easy programming and reliable hardware.
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: John am 17 Januar 2016, 21:46:51
@VaidasJ
I got similar trouble with the tcp/ip connection like you, so I found the described solution for me.
This is certainly not a commercially viable solution.

More I mean , for commercial use you need a CE marking for all components.

I would prefer for your case LOGO-Hardware to control the actuators and to collect  time-sensitive values

John
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: VaidasJ am 18 Januar 2016, 11:39:26
@John

Could you suggest any reliable e-shop where I could by LOGO modules and for example pt100 sensors for reasonably price? Or maybe you have tried or know some other manufacturers hardware (or some professional home automation controllers, which could be programmed) more suitable for such applications?
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: VaidasJ am 22 Januar 2016, 10:42:22
I have made recently a lot different experiments and conclusion is:
Connection is very stable if Arduino writes data often (I didn't get any single error during long time of period). But it is in case if time gap between writes does not exceed ~10s. It is very stable also if you additionally enable Logo WebService and make Web connections also.
But if time gap between writes is big enough (according experiments it is fixed and is about 10,5s), I will get error 100%. So I think it is something what I don't know in this case. Maybe it is related with Logo part. Most likely it is a connection timeout. Any thoughts? Still walk around in my case is to send Arduino status bit every 5s or so (Logo knows that with Arduino part is everything ok), send sensors data then temperature measurements are changed.
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: charlie71 am 22 Januar 2016, 19:32:16
Hallo Leute,

wirklich tolles Projekt.

Ich möchte gerne auf eine alternative Plattform, die sich ebenso mit der Arduino Oberfläche programmieren lässt, aufmerksam machen.
Ich habe schon seit 2 Monaten einen ESP8266 in Verwendung (4Mbit/Flash, 32bit CPU, über serielle Schnittstelle programmierbar, integriertes WLAN). Dieser liest Temperatur und Feuchte ein und schreibt es über Wlan in meine Logo (siehe Fotos).
One Wire Sensoren lassen sich auch anschließen.
Ach ja ein ESP12 breakout board aus China kostet < 3,-EUR.


Wenn jemand daran Interesse hat stelle ich gerne Platinenlayout und Source code zur Verfügung

lg
Charlie71

Links:
http://arduino-hannover.de/2014/12/11/wifi-kochbuch-mit-esp8266/
http://www.esp8266.com/viewforum.php?f=25
https://github.com/esp8266/Arduino


Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: norbert21059 am 21 September 2016, 07:09:13
Hallo,

der ESP8266 ist wirklich ein tolles Teil. Ich mache auch sehr viel damit.
Jetzt will ich für einen Bekannten seinen Fronius Wechselrichter auslesen und in eine S7 schreiben.
Auslesen klappt schonmal über die Fronius API. Aber bei der S7 klemmt's.
Es gibt da eine Arduino lib -> http://settimino.sourceforge.net/
Läuft aber nicht mit ESP. Vielleicht kann ich deinen Logo-Code adaptieren?
Hab von der S7 allerdings NULL Kennung. Aber da hilft mir der Bekannte.

Hätte also Interesse am Code.

mfG u. Danke

Norbert
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: charlie71 am 11 Oktober 2016, 14:53:48
Hallo Norbert,

sorry für den delay, die EMAIL Forenverständigung ist aus irgend einen Grund im Spam ordner gelandet.
Im Anhang der Code.

lg
Charlie71
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: norbert21059 am 13 Oktober 2016, 06:09:57
Vielen Dank!

Werd's die Tage mal checken.

mfG


Zitat von: charlie71 am 11 Oktober 2016, 14:53:48
Hallo Norbert,

sorry für den delay, die EMAIL Forenverständigung ist aus irgend einen Grund im Spam ordner gelandet.
Im Anhang der Code.

lg
Charlie71
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: norbert21059 am 24 Oktober 2016, 22:16:22
Hallo Charlie71,

hat super funktioniert Deine Implementierung von Settimino für den ESP.
Ist "eigentlich" ganz einfach.
Ich hatte da wohl ein paar Verständnissprobleme. Aber jetzt ist Alles klar.
Vielen Dank nochmals!! Du hast mir (uns) sehr geholfen.
Ich häng mal meinen Code mit ran, damit Du (Ihr) sehen kannst (könnt) was draus geworden ist.
Das Prog. ist bewusst einfach gehalten und mit vielen Kommentaren versehen,
damit der Bekannte sich in die Materie einarbeiten kann.
Die Fronius-Api liefert zwar eine JSON-Datei zurück, mir ist es aber nicht gelungen mit ArduinoJson ein Ergebnis zu erzielen.
Deshalb das Parsen der einzelnen Zeilen.

Also nochmals vielen Dank.
Norbert21059
Titel: Antw:Arduino spricht mit LOGO / Simatic S7
Beitrag von: Mr.Burns am 05 April 2018, 20:14:10
Hallo zusammen,

ich bin neu hier und das Thema ist auch schon etwas älter. Vielleicht kann mir trotzdem jemand helfen:

Ich habe vor, meinen RFID Leser mittels Arduino (nano) und ENC28j60 (weil ich noch so viele übrig habe) auszulesen die Nummer und an meine S7 300 zu übergeben.

Den Teil mit dem RFID Leser ist fertig und funktioniert auch schon.
Hab gesehen, das ihr das schon in Teilen fertig habt...

Gruß