Linux schnell genug für RS485 Buszyclus?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
NoCee
Beiträge: 170
Registriert: Do 3. Mär 2011, 21:34
OS, Lazarus, FPC: WinXp/7/10 Opensuse13.2/Leap15.3 (L 2.2.0 FPC 3.2.2 )
CPU-Target: Intel 32/64Bit, ARM9
Wohnort: Ulm

Linux schnell genug für RS485 Buszyclus?

Beitrag von NoCee »

Hallo zusammen,

ich möchte im Betrieb eine Baugruppe an einer Maschine simulieren weils
die nicht mehr gibt.
Dabei handelt es sich um einen Barcodescanner in einer Hochregallagerfördertechnik für
Paletten. Die Baugruppe macht eine Busverbindung vom Barcodescanner zu einem Multiplexer
für mehrere Barcodescanner in der Anlage. Dieser Multiplexer pollt alle vorhandenen Busadressen
auf dem RS485 Bus der Reihe nach durch. Das Protokoll ist offengelegt, die Software krieg ich sicherlich hin.
Als Ersatzhardware würde ich gerne ein Arm/Linux System einsetzen so was wie Beaglebone Black da der
die seriellen Schnittstellen direkt auf der CPU hat und nicht über USB oder i2C angeschlossen hat und mit
Lazarus mit oder ohne Gui programmiert werden kann.

Vielleicht hat ja jemand Erfahrung mit solchen Bussystemen
Kann man mit so einem Mini-Linuxrechner ein Bussystem betreiben oder ist ein Rechner mit Linux
dafür nicht echtzeitfähig genug?

Wenn der Master (Multiplexer) eine Adresse abfägt, will dieser innerhalb der Bustimeoutzeit eine Antwort,
sonst wird die Adresse als defekt/nicht vorhanden angenommen.
Wir haben da mehrere Busvarianten im Haus. Unter anderem 9600bd und 38400bd aber auch 187k.
Die Linuxkiste macht fast nichts anderes als dieses Busprotokoll abzuarbeiten.
Oder wäre da ein Unterprozessor wie etwa ein Arduino oder so notwendig bzw. besser geeignet?
Als OS soll da schon ein Standard-Linux laufen. Ein Echtzeitfähiges Linux würde meine Kompetenzen leicht
überfordern.

Danke schon mal für Antworten
Gruß NoCee

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Linux schnell genug für RS485 Buszyclus?

Beitrag von m.fuchs »

NoCee hat geschrieben:Wenn der Master (Multiplexer) eine Adresse abfägt, will dieser innerhalb der Bustimeoutzeit eine Antwort,
sonst wird die Adresse als defekt/nicht vorhanden angenommen.

Kommt darauf an, ob du damit leben kannst dass die Adresse als defekt/n.v. angenommen wird. Wenn das zwischendurch mal kein Problem ist (weil zum Beispiel beim nächsten Durchlauf alles gut ist), dann kannst du mit einem Standard-Linux mal ausprobieren.
Wenn das nicht geht wirst du um ein echtes Realtime-Setup (in welcher Form auch immer) nicht herumkommen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Linux schnell genug für RS485 Buszyclus?

Beitrag von mschnell »

Ist das kein Asynchron - Protokoll ?

Ein Asynchron-Protokoll lässt sich vermutlich mit der UART - Hardware des BeagleBone auch unter Linux realisieren, sofern - wie bei jedem anständigen Protokoll, bei Bustimeout erstmal ein oder mehrere Retries gemacht werden, bevor der Knoten als nicht vorhanden deklariert wird.

Wenn das ein spezielles Bit-Protokoll oder der Timeout wirrklich "hart" ist, ist das vermutlich aus Timing-gründen unter Linux schwierig bis unmöglich. Aazu verfügt der BeagleBone-Chip (von TI) aber über Coprozessoren, die unabhängig von Linux arbeiten mit dem Hauptprozessor (Linux-System) kommunizieren können. Arduino brauchst Du also nicht. Die Hardware bringt der BeagleBone schon mit.

-Michael

Antworten