Forum: Mikrocontroller und Digitale Elektronik CAN - synchronisieren


von Manfred S. (mandinice)


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

von karl (Gast)


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.

von holger (Gast)


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;)

von Manfred S. (mandinice)


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

von holger (Gast)


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.

von Robert T. (robertteufel)


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

von cskulkw (Gast)


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

von crazy horse (Gast)


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.

von Manfred S. (mandinice)


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

von hhh@hh.com (Gast)


Lesenswert?

Kann die Gummer wenigstens CANOpen?
Dann Sync verwenden.

von Manfred S. (mandinice)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.