Pagina 36 van: Aandrijftechniek – nummer 2 – 2018

www.AT-aandrijftechniek.nl MAART 2018 AT AANDRIJFTECHNIEK36
waarbij we er zeven gebruiken voor zen-
den (SDO response, 4 x TPDO, Heartbeat
en EMCY) en acht voor ontvangst (SDO
request, 4 x RPDO, NMT slave, Sync en
Timestamp).
Objectoriëntatie versus
traditionele koppeling
Een traditionele CANopen bibliotheek
gaat uit van twee FIFO’s naar de CANbus:
een voor zenden en een voor ontvangen.
In onze objectoriëntatie gebruiken we er
vijftien, één voor elk object. Waar in het
eerste geval alle filtering van ontvangen
berichten in de software moet geschie-
den, doen we dat nu op hardware-niveau
door middel van de 32 beschikbare filters
in de PIC32 controller. Tevens kunnen we
periodiek te zenden berichten, zoals de
heartbeat, eenvoudig eenmalig activeren
en hoeven we er in onze verdere timing
geen rekening meer mee te houden. In
onze software zien we duidelijk waar de
verschillende objecten afgehandeld wor-
den en hoeven we niet meer van hot naar
her te springen om te zien waar wat ge-
beurt. Bovendien is de software veel beter
te lezen door verschillende lagen toe te
passen, die tevens in verschillende omge-
vingen zijn geprogrammeerd. Hierdoor
kan zowel de leek als de professional
eraan werken.
Mix van C, Basic en scripttaal
Ons project is destijds begonnen met een
Basic interpreter, die reeds draaide op de
PIC32 hardware. Deze zogenaamde MM-
Basic is destijds geschreven door de
Australiër Geoff Graham. Wij hebben ge-
kozen voor de oudere versie 2.7, die nog
volledig open source was. De Basic inter-
preter is geschreven in C, gebruikmakend
van de MPLAB-X omgeving van Microchip.
Om te kunnen communiceren met de
CANbus hebben we zelf een vijftiental
CAN-commando’s toegevoegd aan de
Basic. Samen met een aantal andere facili-
teiten is dit uitgegroeid tot een eigen
CANBasic, die een goede basis vormt als
scripttaal voor allerlei CAN-toepassingen.
Met name om het loggen van CANdata op
een flexibele manier te kunnen doen,
hebben we een simpel onderliggend
scripttaaltje ontwikkeld. Dit hebben we
inmiddels in versie 2 uitgebreid tot een
completer geheel, dat met een Basic com-
mando CANSCRIPT kan worden aangeroe-
pen. Verschillende scripts kunnen nu op
meerdere plaatsen in het Basic pro-
gramma worden aangeroepen. We kun-
nen deze scripts zien als assembler routi-
nes, die we vroeger in onze Basic pro-
grammatuur toevoegden om een en
ander te versnellen. Om de scripts te kun-
nen ontwikkelen, is een on-line ontwikkel-
omgeving beschikbaar.
Voor ons CANopen project hebben we
onze C-programmatuur niet aangepast.
Dus onze Basic geldt als basis voor onze
CANopen slave. Wel hebben we aange-
paste scripts gemaakt voor PDO’s, SDO’s,
NMT, Sync, et cetera. Deze scripts worden
op diverse plaatsen in ons programma
aangeroepen.
CANopen Object Dictionary,
EDS en Device Profile
Om met een CANopen product te kunnen
werken zijn dit drie essentiële items. De
Object Dictionary is de real-time database
waarin alle variabele parameters worden
bijgehouden. We zijn er in geslaagd om
alle parameters in een Basic array met 256
waarden onder te brengen. Zowel het
Basic programma als de diverse communi-
catiescripts kunnen hieruit data lezen en
schrijven.
Onder meer de basiswaarden van de Ob-
ject Dictionary, maar ook minima, maxima
en dataformaat zijn vastgelegd in de EDS
De firmware is geschreven in C. Basic Statements en zijn in feite C-functies.
De applicatie is geschreven in Basic, volledig aan te passen door de gebruiker.
34-35-36-37_canopen.indd 36 08-03-18 14:42