SYGEN.EXE

Brevi cenni sul linguaggio di programmazione

Riportiamo qui un estratto della documentazione preliminare relativa al compilatore sygen.exe scritto per il predecessore di Wirobo. Il testo contiene anche riferimenti a parti hardware previste ma non ancora realizzate. E’ stato scritto in Basic Microsoft e gira sotto Windows Xp.

Per facilitare le connessioni della matrice sinaptica anche da parte di chi preferisce la programmazione software a quella hardware, è stato creato questo piccolo linguaggio di programmazione prendendo spunto dal BASIC che è il linguaggio di programmazione più semplice esistente. Il programma va scritto su una applicazione standard come il Notepad di Windows o qualsiasi altro editor di testo che non aggiunga formattazione supplementare (non vanno bene Word e simili).

Il testo poi verrà compilato con sygen.exe che avrà come uscita un file di testo chiamato <nomeprogramma>.obj dovre verranno scritte le connessioni da effettuare con le sinapsi. Questo esempio serve per chiarire il concetto:

Programma sorgente:

 

Programma compilato:

 

dove S1 è l’ingresso della matrice e B4 è l’uscita. Notare che il segno > indica che il diodo va collegato con anodo su S1 e catodo su B4. Attenzione che se il segno è < allora il diodo va collegato inversamente!

 

Istruzioni

Ingressi

Gli ingressi fanno capo al connettore Input Bus ed Extended Input Bus che sono i connettori di ingresso della Matrice Sinaptica. I primi sono denominati con la lettera “I” seguiti da un numero (I1, I2, …) mentre gli altri sono seguiti da un’altra lettera in minuscolo (Ia, Ib, …)

I1

I2

I3

I9

Ia

Ib

Ic

SEQUENCER1

SEQUENCERn

 

Assegnazioni

Servono per personalizzare le label standard con un nome che esplica la funzione di quell’ingresso o il tipo di sensore a cui viene attaccato. Ogni etichetta non può contenere spazi ma può contenere questi simboli tra parentesi ( _ – )

<ingresso> = <Label>

es:

I1 = Bumper_Sx

<Nx> = <label>

es:

Na = Allarme

 

Funzioni Logiche

Le funzioni logiche sono solo due

AND

OR

 

Statements

REM <commento>  (documentazione del listato)

; (salto riga per aumentare la leggibilità. Può servire per aggiungere un remark sulla stessa linea. Tutto quello che segue viene ignorato fino al prossimo Line Feed)

IF [<ingresso> | <Label>] THEN [<neurone>|<Label>]

IF [<neurone> | <Label>] THEN [<ingresso>|<Label>]

DELAY<n>  (n = 1,2,3 inteso come sequenze di tempo)

SOUND<n>  (n = 1,2,3 tipo di suono da generare)

END  (fine programma)

 

Azioni

Le Azioni fanno capo al Functions Bus e all’ Extended Function Bus che sono i connettori di uscita della Matrice Sinaptica. I primi sono denominati con la lettera “U” seguiti da un numero (U1, U2, …) mentre gli altri sono seguiti da un’altra lettera in minuscolo (Ua, Ub, …). Di questi soltato le label dell’ Extended Function Bus possono essere assegnate a delle label personalizzate come per gli Ingressi.

START (motori)

STOP (motori)

Inv_sx_short (N1 – Inversione motore sx temporizzata)

Inv_sx_long (N2 -Inversione motore sx temporizzata)

Inv_msx (N3 – Inversione motore sinistro)

Inib_sx (N4 – Inibizione motore sinistro)

Dis_sx (N5 – Disimpegno verso sinistra)

Dis_dx (N6 – Disimpegno verso destra)

Inib_dx (N7 – Inibizione motore destro)

Inv_dx_long (N8 – Inversione motore dx temporizzata)

Inv_dx_short (N9 – Inversione motore dx temporizzata)

Inv_mdx (N10 – Inversione motore destro)

Na (funzione a)

Nb (funzione b)

Nc (funzione c)

Nd (funzione d)

SOUND1 (suono n°1 – SG1)

SOUND2 (suono n°2 – SG2)

SOUND3 (suono n°3 – SG3)

DELAY1 (uscita sequencer n°1 – SU1)

DELAY2 (uscita sequencer n°2 – SU2)

DELAY3 (uscita sequencer n°3 – SU3)

 

Esempio di programma

Programma sorgente:

 

Programma compilato:

 

Limitazioni attuali e caratteristiche della programmazione

La programmazione del robot ha delle limitazioni dovute alla sua struttura parallela particolare. Alcune di queste sono:

  • Non ci sono for-next perche non ci sono operazioni cicliche.

  • Le istruzioni AND e OR non sono “operatori booleani”. L’istruzione AND è applicabile solo in uscita mentre l’istruzione OR è applicabile solo in ingresso. Questa limitazione è legata alla logica DRL (Diode Resistor Logic).

  • Non possono essere messe istruzioni in sequenza perchè non è ancora disponibile il “sequencer”. In realtà anche se le istruzioni vengono scritte sequenzialmente nel listato, queste vengono eseguite in parallelo. Se non correttamente scritte potrebbero aversi dei funzionamenti inattesi a causa della sovrapposizione degli effetti, anche se il compilatore dovrebbe trovare gli errori più comuni.

  • Ogni riga di programma può finire con un LF+CR (return) o con un punto e virgola se è presente successivamente una riga di commento.

  • Spazi e TAB nelle righe di programma vengono ignorati durante la compilazione.

  • Le etichette (label) non possono contenere al loro interno gli spazi, ma possono contenere il segno meno (-) o il segno di sottolineatura (_). Es: etichetta_1 , label-2 .

 


 

Etichettato

Lascia un commento

Vai alla barra degli strumenti