softwarebausteine:ansteuerung_gbm16t
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
softwarebausteine:ansteuerung_gbm16t [2014/08/16 20:55] – wolfgang | softwarebausteine:ansteuerung_gbm16t [2014/09/17 12:09] – opendcc | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Ansteuerung eines GBM16T ====== | ||
+ | ===== Kommunikation mit dem GBM16T ===== | ||
+ | Der GBM16T ist über eine serielle Schnittstelle angebunden, diese Schnittstelle transportiert mit 250k, 8N1 bidirektional die Daten. Es wird ein Format [size] payload [crc8] verwendet. Die payload unterteilt sich in Befehlsart und Parameter und wird über eine einheitliche Datei tp_tc_interface.h festgelegt. Die CRC-Prüfung erfolgt analog zu BiDiB selbst, d.h. die Routinen zur CRC-Prüfung sind im Zielsystem i.d.R. bereits vorhanden. | ||
+ | |||
+ | ==== Notwendige Definitionen ==== | ||
+ | Die Module für den GBM16T brauchen folgende defines, diese sind in addon_model.h hinterlegt: | ||
+ | #define NUM_of_GBM16T | ||
+ | #define NUM_of_TRACKS | ||
+ | #define NUM_of_ADDR_per_TRACK | ||
+ | #define XPRESSNET_ENABLED | ||
+ | |||
+ | === Zusätzliche Programmmodule === | ||
+ | **ci0_serial: | ||
+ | |||
+ | **occupancy: | ||
+ | zum GBM16T abgewickelt und der Zustand des GBM16T überwacht. Das Modul benutzt eine zentrale Datenstruktur | ||
+ | gbm_t, welche Verbindungsstatus, | ||
+ | | ||
+ | void set_gbm_confidence(uint8_t tp, uint8_t alive); | ||
+ | void set_track_occupied(uint8_t tp, uint8_t index); | ||
+ | void set_track_free(uint8_t tp, uint8_t index); | ||
+ | void set_track_addr(uint8_t tp, uint8_t index, uint16_t* addr); | ||
+ | void init_occupancy(void); | ||
+ | t_cr_task check_sys_stat(void); | ||
+ | |||
+ | Durch diese Module kommen drei neue Echtzeitstasks ins System: | ||
+ | t_cr_task control_if(void); | ||
+ | t_cr_task check_sys_stat(void); | ||
+ | t_cr_task secure_ack(void); | ||
+ | |||
+ | Diese Tasks werden entsprechend angelegt, wobei die Definitionen jeweils mit #if (NUM_of_GBM16T > 0) konditional angelegt werden. | ||
+ | |||
+ | === Zusätzliche Features === | ||
+ | **FEATURE_BM_ISTSPEED_AVAILABLE** Der GBM16T kann es, also ist per default auf 1 zu setzen, der mögliche Wertebereich ist 0 oder 1. | ||
+ | |||
+ | **FEATURE_BM_ISTSPEED_INTERVAL** Hier ist eine Defaultwert von 100 sinnvoll, der Wertebereich von 0 bis 200 | ||
+ | |||
+ | **FEATURE_BM_DYN_STATE_INTERVAL** Hier ist eine Defaultwert von 5 sinnvoll, der Wertebereich von 0 bis 20 | ||
+ | |||
softwarebausteine/ansteuerung_gbm16t.txt · Zuletzt geändert: 2016/01/09 13:08 von Michael