Objects PKW
Présentation
Le contrôleur CANopen prend en charge la fonction PKW (Periodically Kept in acyclic Words – périodiquement conservé en mots acycliques). La fonction PKW est constituée de 4 objets spécifiques au fabricant : 0x3000:0x01 à 0x3000:0x04.
Ces objets permettent à un client CANopen de lire ou d’écrire dans tout registre à l’aide de PDO. Ils sont mappés par défaut dans les PDO4 de transmission et de réception.
Vous pouvez choisir d’accéder à un registre par son numéro ou par son index ou sous-index CANopen, selon le code de fonction.
Adressage par numéro de registre des données en SORTIE PKW
Les requêtes de données PKW OUT (
) sont mappées par défaut dans le PDO4 de réception.Pour accéder à un registre à l’aide de l’adressage par numéro, vous devez sélectionner l’un des codes de fonction suivants :
-
R_REG_16 = 0x25 pour lire 1 registre
-
R_REG_32 = 0x26 pour lire 2 registres
-
W_REG_16 = 0x2A pour écrire 1 registre
-
W_REG_32 = 0x2B pour écrire 2 registres
0x3000:0x01 |
0x3000:0x02 |
||||
---|---|---|---|---|---|
Mot 1 |
Mot 2 |
Mot 3 |
Mot 4 |
||
MSB |
LSB |
||||
Adresse de registre |
Bit de basculement (bit 15) |
Bits de fonction (bits 8 à 14) |
Inutilisé (bits 0 à 7) |
Données à écrire |
|
Numéro du registre |
0/1 |
R_REG_16 Code 0x25 |
0x00 |
_ |
_ |
R_REG_32 Code 0x26 |
_ |
_ |
|||
W_REG_16 Code 0x2A |
Données à écrire dans le registre |
_ |
|||
W_REG_32 Code 0x2B |
Données à écrire dans le registre 1 |
Données à écrire dans le registre 2 |
Adressage CANopen des données PKW OUT
Pour accéder à un registre à l’aide de CANopen, vous devez sélectionner l’un des codes de fonction suivants :
-
R_CO_16 = 0x35 pour lire 1 registre
-
R_CO_32 = 0x36 pour lire 2 registres
-
W_CO_16 = 0x3A pour écrire 1 registre
-
W_CO_32 = 0x3B pour écrire 2 registres
0x3000:0x01 |
0x3000:0x02 |
||||
---|---|---|---|---|---|
Mot 1 |
Mot 2 |
Mot 3 |
Mot 4 |
||
MSB |
LSB |
||||
Adresse de registre |
Bit de basculement (bit 15) |
Bits de fonction (bits 8 à 14) |
Adresse de registre |
Données à écrire |
|
Index CANopen |
0/1 |
R_CO_16 Code 0x35 |
Sous-index CANopen |
_ |
_ |
R_CO_32 Code 0x36 |
_ |
_ |
|||
W_CO_16 Code 0x3A |
Données à écrire dans le registre |
_ |
|||
W_CO_32 Code 0x3B |
Données à écrire dans le registre 1 |
Données à écrire dans le registre 2 |
Toute modification de ce code de fonction déclenchera le traitement de la requête (sauf si le code de fonction [b8...b14] = 0x00).
Ce mécanisme permet à l’initiateur de la requête de savoir à quel moment une réponse est prête en interrogeant le bit 15 du code de fonction dans l’objet 30000x:03. Lorsque ce bit du projet de SORTIE est égal au bit de basculement émis par la réponse dans les données d’ENTREE (au lancement de la requête), alors la réponse est prête.
Adressage par numéro de registre des données en ENTRÉE PKW
Les réponses de données PKW IN (LTMR renvoie la même adresse de registre et le même code de fonction ou un code d’erreur détecté.
) sont mappées par défaut dans le PDO4 d’émission. Le
0x3000:0x03 |
0x3000:0x04 |
||||
---|---|---|---|---|---|
Mot 1 |
Mot 2 |
Mot 3 |
Mot 4 |
||
MSB |
LSB |
||||
Adresse de registre |
Bit de basculement (bit 15) |
Bits de fonction (bits 8 à 14) |
Inutilisé (bits 0 à 7) |
Données à écrire |
|
Identique au numéro de registre de la requête |
Identique à la requête |
ERREUR DÉTECTÉE Code 0x4E |
0x00 |
Code de l’erreur détectée |
|
R_REG_16 Code 0x25 |
Données à lire dans le registre |
_ |
|||
R_REG_32 Code 0x26 |
Données à lire dans le registre 1 |
Données à lire dans le registre 2 |
|||
W_REG_16 Code 0x2A |
_ |
_ |
|||
W_REG_32 Code 0x2B |
_ |
_ |
Adressage CANopen des données PKW IN
Le LTMR renvoie la même adresse de registre et le même code de fonction ou un code d’erreur détecté.
0x3000:0x03 |
0x3000:0x04 |
||||
---|---|---|---|---|---|
Mot 1 |
Mot 2 |
Mot 3 |
Mot 4 |
||
MSB |
LSB |
||||
Adresse de registre |
Bit de basculement (bit 15) |
Bits de fonction (bits 8 à 14) |
Adresse de registre |
Données à écrire |
|
Identique à l’index CANopen de la requête |
Identique à la requête |
ERREUR DÉTECTÉE Code 0x4E |
Sous-index CANopen |
Code de l’erreur détectée |
|
R_REG_16 Code 0x55 |
Données à lire dans le registre |
_ |
|||
R_REG_32 Code 0x36 |
Données à lire dans le registre 1 |
Données à lire dans le registre 2 |
|||
W_REG_16 Code 0x3A |
_ |
_ |
|||
W_REG_32 Code 0x3B |
_ |
_ |
Si l’initiateur tente d’écrire un objet ou un registre TeSys T à une valeur non autorisée ou d’accéder à un registre inaccessible, un code d’erreur détecté est retourné (code fonction = bit de basculement + 0x4E). Le code d’erreur exact se trouve dans les mots 3 et 4.
Ces codes sont les mêmes que les codes d’abandon SDO Codes d’abandon SDO.
La requête n’est pas acceptée et l’objet/registre garde sa valeur initiale.
Pour redéclencher exactement la même commande :
-
Rétablissez le code fonction 0x00.
-
Attendez la trame de réponse indiquant que le code de fonction est égal à 0x00.
-
Rétablissez la valeur précédente du code.
Cette opération est utile pour un client limité tel qu’une HMI.
Une autre méthode pour déclencher à nouveau la même commande consiste à inverser le bit de basculement de l’octet du code de fonction.
La réponse est valide lorsque le bit de basculement de la réponse est égal à celui qui est écrit dans la réponse (cette méthode est plus efficace mais nécessite un meilleur niveau de programmation).