ich habe eine SPS mit der ich mein komplettes Haus steuere. Die SPS hat eine Ehernet Schnittstelle. Ich möchte die digitalen E/A und Analogen Eingänge vom Arduino zur SPS senden bzw von der SPS Steuern.
Hintergrund, es gibt mache Sensoren IR, 2 Zeilendisplay die ich nicht ohne weiteres mit einer SPS steuerun kann. Hier kommt das Arduino zum einsatz.
Es gibt sowas für das AVR net IO. Da aber für ein Arduini kein code vorliegt müsste ich diesen selbst schreiben.
Meine Frage gibt es schon einen Code der dem vom ARV net IO von Pollin entspricht ?
Code funktioniert so ich sende eine Anfrage und erhalte die Antwort
z.b
Abfrage Digitaler Eingang 1 am NET io:
GETPORT 1 antwort 1 oder 0
Es gibt die Firmata Bibliothek die aber mit Processing zusammenarbeitet.
Die SPS hat keine RS232 die Du verwenden könntest?
Ich glaube es sit einfacher einen Sketch auf Arduino zu schreiben der das Standartinterface der SPS liest als die SPS zu programmieren um mit einem Frensteuerungssketch Arduino steuert.
Grüße Uwe
Da ich mich besser mit SPS Programierung auskenne ich es für mich ehr unmöglich sowas nachzubilden.
Mit dem AVR net io funktioniert mein SPS Programm soweit.
Gibt es diesen AVR net IO CODE auch für ein Arduino ??
Was meinst du mit Stück Code ich habe den Pollin Code ja nicht.
Habe nur sowas
Digitalen Eingang abfragen
Kommando: GETPORT
Parameter: X
Beispiel: GETPORT 1 (ruft den Zustand des digitalen Eingangs 1 ab)
Funktion: akt. Status des jeweiligen Digitaleingangs einlesen X steht für den gewählten Digitaleingang
Antwort: Zustand des Eingangs bei High-Pegel = 1, bei Low-Pegel = 0 als ASCII-Zeichen
Analogen Eingang abfragen
Kommando: GETADC
Parameter: X
Beispiel: GETADC 3 (ruft den akt. Wert des ADC-Eingangs 3 ab)
Funktion: akt. Werte der möglichen ADC-Eingänge abrufen X steht für den gewählten ADC-Eingang
Antwort: Dezimaler Wert des gewählten ADC-Kanals z.B. (936)
Ausgang schalten
Kommando: SETPORT
Parameter : X.Y
Beispiel: SETPORT 4.0 (Schaltet Ausgang 4 auf LOW)
Funktion: X steht für den gewählten Ausgang welcher geschaltet werden soll.
Wenn Y=0 dann Ausgang=0, wenn Y=1 dann Ausgang=1.
Anwort: „ACK“ wenn positiv
„NAK“ wenn Fehler aufgetreten sind
Status abrufen
Kommando: GETSTATUS
Parameter: keine
Funktion: Status der Ausgänge abfragen.
Antwort: „S“+Pinstatus mit „1“ für High oder „0“ für Low als ASCII-Zeichen
z.B. S11000101 d.h. Ausgang 1=High, Ausgang 2=Low, Ausgang 3=High usw...
In der Ethernet Bibliothek findest Du das ChatServer-Beispiel. Dies ist ein sehr einfacher Telnet-Server, der aber noch keine Befehle versteht. michael_x hat Dir eine mögliche Routine (noch ohne Fehlerverarbeitung wie Pufferüberlauf) gegeben, wie Du eine ganze Zeile einlesen kannst. Die Verarbeitung kannst Du danach mittels strncmp() in IF/THEN-Reihen machen.
Ich hoffe, Du erwartest hier nicht, dass wir Dir den Pollin-Controller nachprogrammieren. Das Programmieren musst Du übernehmen, wir helfen Dir weiter, wenn Du irgendwo anstösst.
Ich dachte es hat jemand schon mal so eine Anwendung Programiert, die ich mir einfach abändern kann.
Die abfrage über Ehernet gibte es doch bestimmt schon ?
Die abfrage über Ehernet gibte es doch bestimmt schon ?
Ja, Firmata ist in etwa das Gleiche, aber eben nicht identisch, mit anderem Befehlssatz und effizienterem Protokoll. Das hat uwefed Dir bereits vorgeschlagen, aber Du hast ihn komplett ignoriert und bist wieder auf Dein GETPORT losgesteuert. Das macht zumindest für mich den Eindruck, Du willst eine genaue Kopie dieses zwar ziemlich intuitiven aber auch sehr ineffizienten Protokolls.
Um nicht wieder mit einer Annahme hängen zu bleiben: Was ist an Firmata (http://firmata.org für Dich nicht zu gebrauchen?