mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CAN - synchronisieren


Autor: Manfred Schön (mandinice)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallöchen

Ich entwickle gerade mehrere Geräte die Daten über CAN an eine SPS 
senden.

Die SPS kann leider nur einen Datensatz pro Zyklus empfangen.

Werden nun von einem zum nächsten Zyklus durch Zufall mehrere Datensätze 
an die SPS gesendet, so gehen alle Datensätze bis auf den ersten 
verloren.
( Die Geräte arbeiten ja unabhängig voneinander )


Was ist die einfachste Methode die CAN-Device untereinander zu 
synchronisieren und zu verhindern, dass die Daten nicht zu kurz 
hintereinander gesendet werden.

Wer hat da eine Idee.

Danke Euch.

mfg
Mandi

Autor: karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In einem Gerät einen Counter erzeugen, jenen auf den CAN legen.
Jedem am CAN angeschlossenen Gerät einen Counterzustand zuweisen in dem 
es seine Daten sendet.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Was ist die einfachste Methode die CAN-Device untereinander zu
>synchronisieren und zu verhindern, dass die Daten nicht zu kurz
>hintereinander gesendet werden.

Software Handshake. Oder einfach nicht so oft senden.

>Werden nun von einem zum nächsten Zyklus durch Zufall

Zufall gibt es nicht, Programmierfehler schon;)

Autor: Manfred Schön (mandinice)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallöchen

Zufall gibt's schon : Wenn ein Gerät später eingeschaltet wird als die 
anderen. Dann sendet es in zufälligen Zeitabstand zu den Anderen.

Ausserdem läuft nach Wochen auch jeder noch so genaue Quartz davon.


hmg
Mandi

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Zufall gibt's schon : Wenn ein Gerät später eingeschaltet wird als die
>anderen. Dann sendet es in zufälligen Zeitabstand zu den Anderen.

Dann sorg dafür das es die Klappe hält. Senden nur
auf Anfrage von der SPS. Problem gelöst.

Autor: Robert Teufel (robertteufel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da hab ich wohl was vom CAN Protokoll falsch verstanden. Der 
hoechstpriore kommt immer durch wenn er gleichzeitig sendet, die anderen 
bekommen das aber mit, denn im CAN Protokoll empfaengt man ja auch immer 
was man sendet. Ist also ein "staerkerer" (mehr dominante Bits) am Bus 
muss der schwaechere eben danach nochmals senden.

Wahrscheinlich hab ich die Frage nicht so ganz verstanden aber 
vielleicht hat der Fragende auch nicht so viel Erfahrungen mit CAN!?

Ansonsten kann man auch mit CAN so eine Art Token verschicken, einer hat 
das sagen (SPS) und erlaubt jeweils EINEM anderen zu sprechen. Sonst 
halten alle die Schnauze.
Wenn die Nachrichten nicht sehr zeitkritisch sind sollte das kein 
Problem sein.

Noch eine Methode, CAN Gateway, sozusagen ein Puffer der mehrere CAN 
Schnittstellen hat und zwischen die SPS und Deine Geraete geschalten 
wuerde.

Gruss, Robert

Autor: cskulkw (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Manfred,

kannst Du einmal näher erläutern, wie lang bei Deiner SPS ein Zyklus 
andauert?

Vielleicht habe ich aber auch zu wenig Ahnung davon, was ein Zyklus bei 
einer SPS bedeutet?

Sollte die SPS mit einer CAN-Botschaft pro Sekunde bereits überfordert 
sein, dann kommst Du um den Einsatz eines Gateway wohl nicht herum.

Kannst Du die Programmierung der SPS beeinflussen? Oder mußt Du Dich mit 
einer vorhandenen Umsetzung abfinden?

Gruß

cskulkw

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist das denn für ne komische SPS?
Prinzipiell sollte die komplette Bandbreite, die der Bus im worstcase 
hergibt auch bearbeitet werden können.
Dann, klar die Frage - wie lange ist ein Zyklus?
Ich würde nicht versuchen, irgendeine Trickserei an der Software der 
anderen CAN-Knoten vorzunehmen.
Ansatzpunkte:
-ist es knapp an der Grenze (Botschaftslänge <-> Zykluszeit) hilft 
vielleicht schon der Umstieg auf 29bit-ID, das verlängert die 
Botschaften.
-Senkung der Baudrate

Wenn du mit den beiden Massnahmen dahin kommst, dass ein Botschaft 
länger dauert als die Zykluszeit, hast du gewonnen.

Ansonsten würde ich mir eine Kiste mit 2xCAN bauen. Die eine Seite 
empfängt alles aus dem Feld, sortiert die in einen buffer und schickt 
die schön regelmässig im Rahmen des möglichen an die SPS. Evtl. kannst 
du noch ein paar Filterfunktionen einbauen, falls es Botschaften gibt, 
die die SPS gar nicht mitbekommen muss und damit den traffic auf dem 
2.Bus senken.
Das alles hilft dir aber nur, wenn der Gesamtdurchsatz kleiner ist als 
der, den die SPS verarbeiten kann. ALso das Problem an der zeitlichen 
Abfolge der einzelnen messages liegt.

Autor: Manfred Schön (mandinice)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallöchen

>> Was ist das denn für ne komische SPS?

www.unitronics.com - soweit güntig und gar nicht schlecht.
Aber leider zeitweise wirklich komisch :-(

>>Dann, klar die Frage - wie lange ist ein Zyklus?
>>Ich würde nicht versuchen, irgendeine Trickserei an der Software der
>>anderen CAN-Knoten vorzunehmen.

>>-Senkung der Baudrate
>>Wenn du mit den beiden Massnahmen dahin kommst, dass ein Botschaft
>>länger dauert als die Zykluszeit, hast du gewonnen.

Das werd ich mal prüfen


>>Ansonsten würde ich mir eine Kiste mit 2xCAN bauen. Die eine Seite
>>empfängt alles aus dem Feld, sortiert die in einen buffer und schickt
>>die schön regelmässig im Rahmen des möglichen an die SPS.

Allerletzte Lösung - Ist auch ne kostenfrage.

hmg
Mandi

Autor: hhh@hh.com (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann die Gummer wenigstens CANOpen?
Dann Sync verwenden.

Autor: Manfred Schön (mandinice)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallöchen

Die SPS kann CanOpen.

Aber  können das auch meine Geräte ?

Hab' schon gehört von CanOpen. Aber was ist das ?

hmg
Mandi

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.