Layer Setting Services (LSS)
Interconnectie in een CANopen netwerk
Zoals reeds eerder vermeld, er moet aan twee voorwaarden worden voldaan voor de interconnectie van CANopen-apparaten binnen een netwerk:
- Alle apparaten moet dezelfde baudrate gebruiken, en
- Alle CANopen node-id’s moet uniek zijn.
In de begintijd van CANopen konden het node-ID en de baudrate met DIP-switches op apparaten ingesteld worden. Tegenwoordig liggen dergelijke instelling natuurlijk in non-volatile geheugen vast. De CANopen-specificatie DS-306: Layer Setting Services (LSS) beschrijft hoe deze belangrijke waarden kunnen worden ingesteld via de bus met behulp van een eenvoudig protocol. Voorwaarde voor het gebruik van LSS, naast de softwareondersteuning door de node zelf, een 1:1 bedrading vast met de node. De baudrate en het node-ID kunnen dan worden ingesteld via dialoogvorm. De COB-ID 0x7E5 wordt gebruikt voor CAN-berichten naar het apparaat, het apparaat reageert hierop via COB-ID 0x7E4. LSS berichten zijn altijd de volle 8 bytes lang. Ongebruikte bytes zijn gereserveerd en moeten worden geïnitialiseerd met 0.
Om contact met het te configureren CANopen apparaat te maken, wordt het "Global Switch Mode" commando verzonden:
Dit commando brengt het apparaat in de LSS configuratie-modus. Helaas vind op dit commando geen antwoord bevestiging plaats. De systeem integrator kan dus alleen uit vinden of het apparaat heeft gereageerd door het volgende commando te verzenden. Vervolgens wordt de node-ID opegevraagd via het "Inquire Node-ID" bericht:
Als dat lukt, bericht het apparaat terug:
Als er geen reactie volgt, dan ondersteunt het apparaat LSS niet of de baudrate is niet correct. Indien namelijk de baudsnelheid bij aanvang niet bekend is, moet de bovengenoemde berichtenvolgorde herhaald worden voor alle mogelijke CANopen baudrates tot het apparaat een geldige terugmelding stuurt. Het "Configure Node-ID"-bericht wordt gebruikt om de nieuwe node-ID te configureren:
Een mogelijk fout code is onderdeel van de node-reactie:
Error code 0 betekent succesvol gewijzigd; error code 1 betekent een niet-ontvankelijke CANopen node-ID, de overige fout codes zijn voorbehouden. De “Error Extension” bevat leverancier-specifieke informatie, maar deze is enkel geldig bij fout code 0xFF. De baudrate is geconfigureerd met het "Configure Bit Timing Parameters" bericht:
De gestandaardiseerde CANopen bautrates zijn als volgt:
Baudrate table 0x00 | |
---|---|
Table index | Baudrate |
0 | 1000 kBit/s |
1 | 800 kBit/s |
2 | 500 kBit/s |
3 | 250 kBit/s |
4 | 125 kBit/s |
5 | Gereserveerd |
6 | 50 kBit/s |
7 | 20 kBit/s |
8 | 10 kBit/s |
Opnieuw meldt de node terug:
Error code 0 betekent succesvol gewijzigd; error code 1 betekent een niet-ontvankelijke baudrate, de andere foutcodes zijn voorbehouden. De “Error Extension” bevat leverancier-specifieke informatie, maar deze is enkel geldig bij fout code 0xFF. Nu de CANopen node-ID en de baudrate zijn geconfigureerd, dienen deze instellingen te worden opgeslagen met behulp van het "Store Configuration" bericht:
Ook nu is een mogelijk fout code onderdeel van de node-reactie:
Error code 0 betekent succesvol opgeslagen; error code 1 betekent dat het apparaat geen ondersteuning biedt voor het opslaan van waarden; error code 2 betekent dat er een probleem is met de toegang tot het opslagmedium, de andere foutcodes zijn voorbehouden. De “Error Extension” bevat leverancier-specifieke informatie, maar deze is enkel geldig bij fout code 0xFF. Tot slot wordt het apparaat teruggebracht van de configuratie-modus naar de normale modus via “Switch Mode Global":
Nadat de CANopen node fysiek uit en weer ingeschakeld is, zal het apparaat met de nieuwe instellingen werken.