Arduino spricht mit LOGO / Simatic S7

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

Vorheriges Thema - Nächstes Thema

John

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
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

mani

@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
RasPi B+,Onkyo_AVR,Luxtronik2,Logo7,Mpd,Arduino Uno mit Ethernet,KNX,Jablotron

John

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
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

mani

#18
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

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

John

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
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

mani

@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
RasPi B+,Onkyo_AVR,Luxtronik2,Logo7,Mpd,Arduino Uno mit Ethernet,KNX,Jablotron

John

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
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

mani

@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
RasPi B+,Onkyo_AVR,Luxtronik2,Logo7,Mpd,Arduino Uno mit Ethernet,KNX,Jablotron

John

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


CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

mani

@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
RasPi B+,Onkyo_AVR,Luxtronik2,Logo7,Mpd,Arduino Uno mit Ethernet,KNX,Jablotron

John

ZitatArduino Programm ausführen und Logdateien, sowie deine Anwendung hier reinstellen.
John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

mani

#26
@John  okey im Anhang mein Versuch :-X mit der Abänderung von deinem Sketch .....


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

John

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
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

mani

#28
@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
RasPi B+,Onkyo_AVR,Luxtronik2,Logo7,Mpd,Arduino Uno mit Ethernet,KNX,Jablotron

John

#29
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
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP