Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Allgemeines

Automatisch

allgemein:scilab_bloecke

Scilab Scicos/Xcos HART Blöcke

Im Projekt APeroStim verwenden wir Scilab Scicos/Xcos zusammen mit der Scilab Toolbox HART.

Die HART Toolbox vereinfacht das erstellen neuer Blöcke für Scilab Scicos/Xcos durch eine einfache Modulstruktur und Skripte zum kompilieren und einbinden der selbst geschriebenen Blöcke.

HART Module des APeroStim Projekts

Alle Blöcke des APeroStim Projekts sind im Aperostim_Students SVN im Verzeichnis HART_Modules zu finden. Momentan gibt es die 5 HART Module:

  • as_stimulation_blocks → Beinhaltet alle Blöcke für die Funktionelle Elektrostimulation.
  • as_array_based_blocks → Beinhaltet alle Blöcke für Array Elektroden.
  • as_ilc_based_blocks → Beinhaltet alle Blöcke für die ILC.
  • as_imu_based_blocks → Beinhaltet alle Blöcke für die Inertialsensoren und die nachfolgende Datenverarbeitung.
  • as_misc_blocks → Beinhaltet alle Blöcke die sich nicht eindeutig zuordnen lassen.

Organisation der APeroStim Scilab Scicos/Xcos Blöcke

Um während der gesamten Projektlaufzeit immer alle alten Versuche wiederholen zu können werden alle Blöcke nach einem Namensschema und mit einer Versionsnummer erstellt.

Neue Versionen eines Blocks können sehr einfach mit der Toolboxverwaltung erstellt werden. Die Toolboxverwaltung ist ein Scilab Skript welches sich im SVN Ordner HART_Modules/Toolboxverwaltung.sce befindet. Die Dokumentation der Toolboxverwaltung ist im SVN Ordner HART_Modules/Dokumentation/ zu finden.

Anlegen neuer APeroStim HART Module

Ein für APeroStim vorbereitetes Beispiel Modul liegt im SVN Ordner Hart_Modules/Toolboxverwaltung/templates/.

Weitere Informationen finden sich in der Dokumentation der Toolboxverwaltung. (Diese Funktion wird auch irgendwann in die Toolboxverwaltung integriert….)

Um die Anzahl der Module etwas zu begrenzen sollte erst geprüft werden, ob der Block bzw. die Blöcke nicht in vorhandene Module passen.

Notwendige Schritte zur Erstellung eines neuen Scicos Blocks

Allgemeine Anleitungen zur Erstellung eines Scilab Scicos/Xcos Blocks (beinhaltet meistens die Computational Function).

Besonderheiten der APeroStim HART Blöcke

  • MODUL_DIR/macros/
    • Interfacing Function: Datei = as_new_block_XX.sci
    • Scilab Funktion muss ebenfalls as_new_block_XX heißen
    • Innerhalb der Interfacing Function wird der Name der Computational Function definiert. Hier ist ebenfalls as_new_block_XX anzugeben (ohne Endung!)
  • MODUL_DIR/macros/gif_icons/
    • Scilab 4 Paletten Icon (wird nicht angezeigt) as_new_block_XX.gif
  • MODUL_DIR/macros/svg_icons/
    • Scilab 5 Paletten Icon as_new_block_XX.svg
  • MODUL_DIR/src/c/
    • Computational Function: Datei = as_new_block_XX.[c|cpp]
    • C / C++ Funktion muss ebenfalls as_new_block_XX heißen
    • src/c_RTAI/ und src/c_preempt/ beinhalten normalerweise nur symbolische Links zu den Dateien in src/c/.
      Diese Symlinks können sehr einfach mit:
       rm *; find ../c/ \( -name "*.h" -o -name "*.c" -o -name "*.cpp" \) -exec ln -s  {} ./  \; 

      erstellt werden. Die Befehlszeile wird dabei im Verzeichnis src/c_RTAI oder src/c_preempt aufgerufen. Werden andere Dateiendungen als *.c, *.cpp oder *.h benutzt, muss der find Befehl angepasst werden!

  • MODUL_DIR/
    • Toolbox Konfiguration: Datei = configure.sce
    • Konfiguration muss um die neue Computational Function erweitert werden! D.h. bei names ist an der richtigen Stelle as_new_block_XX zu ergänzen. Bei files muss hingegen as_new_block_XX.[c|cpp] ergänzt werden.
    • Evtl. sind besondere Compiler- oder Linkerflags anzugeben. Diese Flags werden dann aber bei der Erstellung aller Blocken verwendet!

(Diese Funktion wird auch irgendwann in die Toolboxverwaltung integriert, bzw. wird das HART Skript hart_edit_scicosblock.sci integriert.)

Anforderungen an die Computational

Nachfolgend sind die Anforderungen an die Computational Funktion eines APeroStim HART Blocks aufgelistet.

Die Einhaltung ist erforderlich um verschiedenen Versionen eines Blocks verwalten zu können. Da C keinen Namensraum kennt müssen alle öffentlichen ( d.h. dem Linker bekannte) Funktionen eindeutig sein!

C Dateien
  • Funktionen und globale Variablen in der Computatinal Funktion müssen mit static als lokal gekennzeichnet werden.
  • Dies betrifft alle Funktionen außer der eigentlichen Computational Function also z.B. void as_delta_control_01(scicos_block *block,int flag)
C++ Dateien
  • Die C++ Klassen sind in einen entsprechenden 1) zusammenzufassen.
  • Alle Klassen / Dateien die zu einem Block gehören haben den selben Namespace!
  • Konvention für die Namensraum Namen: ns_[VOLLER_NAME_DES_BLOCKS] z.B. ns_as_delta_control_01
    • Namen die nach diesem Schema aufgebaut sind werden von der Toolboxverwaltung automatisch angepasst!
  • Innerhalb der Datei, in der die eigentliche Computational Function liegt, muss dieser Namensraum bekannt gemacht werden.
    • D.h. es muss
      using namespace std;
      using namespace ns_as_delta_control_01;

      in dieser Datei stehten.

    • Alle C Funktionen oder globale Variablen der Datei, in der die eigentliche Computational Function liegt, sind wie bei C Dateien mit static als lokal zu kennzeichnen (außer der eigentlichen CF)!
allgemein/scilab_bloecke.txt · Zuletzt geändert: 05/05/2014 14:15 von valtin