RS485 lesen und schreiben im Process...

pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

RS485 lesen und schreiben im Process...

 · 
Posted: 25.09.2014 - 19:12  ·  #1
Hallo Leute,

ich muss für eine Ansteuerung zusätzlich über RS485 mit ein paar Busteilnehmern reden.

Jetzt möchte ich das ganze von Anfang an in einem Process packen, gibt es dafür ein Demo, wie man das am besten angeht ohne zu viel Rechenzeit zu verschwenden/verschenken?

Es gibt ja die Möglichkeit das ganze über den Interrupt zu machen und über ein CallBack die Info zu bekommen, das der Sendespeicher leer ist.

Nur was muss ich dabei beachten, wenn ich mit Tasks/Process und Interrupt-Betrieb arbeite?
Ich gehe davon aus, das der Interrupt meinen Task / Process kurz unterbricht, den Callback macht und wieder weiter an der unterbrochenen Stelle macht, oder?

Irgendwo im Handbuch hatte ich mal was gelesen, das man bei Nutzung der Processe lieber nicht den Interrupt Betrieb nutzen soll, aber finde die Stelle nicht mehr. Was soll man denn dann nutzen?

Gruß
Thorsten
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: RS485 lesen und schreiben im Process...

 · 
Posted: 25.09.2014 - 21:44  ·  #2
Hallo Thorsten,

da gibt es keinerlei Proble mit Prozesse/Tasks und Ser.Schnittstelle.
Nur ein konkurrierender Zugriff von zwei Tasks etc. auf das gleiche SerPort geht nicht.

rolf
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: RS485 lesen und schreiben im Process...

 · 
Posted: 26.09.2014 - 10:04  ·  #3
Quote by rh

Hallo Thorsten,

da gibt es keinerlei Proble mit Prozesse/Tasks und Ser.Schnittstelle.
Nur ein konkurrierender Zugriff von zwei Tasks etc. auf das gleiche SerPort geht nicht.

rolf

Hallo Rolf,

ok, da habe ich wohl was verwechselt und falsch in Erinnerung:
Quote
Bei Prozesse oder Tasks sollte auf SerStat
verzichtet werden und dafür WaitPipe(RxBuffer) verwendet werden.

Das hat sich wohl nur auf das SerStat bezogen.

Das mit dem "Konkurrierenden Zugriff" ist klar, das würde nach hinten losgehen.

Sag mal ist es irgendwie möglich eine Schnittstelle umschaltbar zu machen, so das der Anwender entweder den ModbusRTU-Treiber auf dem RS485 nutzen kann oder den Treiber von uns für die Busteilnehmer?

Ich habe da leider nichts in der Doku gefunden, wie ModBusEnable, ModbusStart/Init oder ModbusStop.

Gruß
Thorsten
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: RS485 lesen und schreiben im Process...

 · 
Posted: 26.09.2014 - 17:55  ·  #4
Hallo Thorsten,

ModBusRTU läuft im Interrupt. D.h. der Interrupt Vektor des UARTs zeigt genau auf
den Modbus Treiber und lässt sich nicht verbiegen, da sich alles im Flash abspielt.

rolf
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1341
Registered: 02 / 2009
Subject:

Re: RS485 lesen und schreiben im Process...

 · 
Posted: 26.09.2014 - 18:22  ·  #5
Quote by rh

Hallo Thorsten,

ModBusRTU läuft im Interrupt. D.h. der Interrupt Vektor des UARTs zeigt genau auf
den Modbus Treiber und lässt sich nicht verbiegen, da sich alles im Flash abspielt.

rolf


Hallo rolf,

das ist ja Mist :(

Also müsste ich 2 verschiedene Firmwarestände erzeugen, am besten per Compilerschalter.

Kann man das irgendwie automatisieren? Evtl. über eine Batchroutine?
Hast Du da einen Ansatz?

Gruß
Thorsten
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: RS485 lesen und schreiben im Process...

 · 
Posted: 27.09.2014 - 11:50  ·  #6
Hallo Thorsten,

da helfen nur Compiler Schalter, wie auch in Delphi üblich:
Code
$Define withRTU}
  ...
{$IFDEF withRTU}
  ...
{$ELSE}
  ...
{$ENDIF}

rolf
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   111   125 · Page-Gen-Time: 0.029108s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI