IPX800 v5 : récupération des IO par l'API

Bonjour

Je me familiarise avec l’API de l’IPX800 v5. Pour le moment j’en suis à la récupération des IO.

Je comprend que GET /api/core/io me permet de récupérer la liste des IO et je souhaiterais savoir s’il y a la possibilité de filtrer le résultat par type de sortie ou d’entrée. Par exemple les sorties, sorties virtuelles, entrées, etc.

Concernant les IO virtuelles je vois que la réponse contient un propriété « virtual », je peux éventuellement m’en servir pour filtrer la réponse après coup.
Par contre je ne vois rien qui me permette de distinguer une entrée d’un sortie.

Cordialement,

Julien

Bonjour,
Je travaille actuellement sur un utilitaire sous Excel pour la visualisation des ressources et des liens.

Les variables (IO, analog et string) fonctionnent comme suit :

  • Une variable est indépendante (virtuelle) ou liée à une ressource.
  • Elle dispose d’un accès en écriture (Link0) et en lecture (Link1).
  • Si elle est liée à une ressource en écriture (Link0), il s’agit d’une variable de sortie.
  • Si elle est liée à une ressource en lecture (Link1), il s’agit d’une variable d’entrée.
  • Elle peut être raccordée à un lien. Les id des liens sont numérotés à partir de 10485760.

La méthode que j’utilise est la suivante :

Si Link0 > 0 => je teste Link0 AND FFFC00 : Si le résultat est 10485760, il s’agit d’un lien, sinon il s’agit de l’identifiant d’une ressource qui écrit dans la variable, donc la variable est une sortie.
Je fait la même opération sur Link1…
Pour les strings, il n’y a pas de lien, c’est plus simple.

Bonne journée

Pourquoi cette comparaison ? à quoi correspond la valeur FFFC00 ?

A propos des id, est-ce que ceux correspondants aux entrées/sorties physiques sont fixes ? Par exemple, chez moi les sorties ont les id 65536 à 65543. Si ces valeurs sont identiques sur tous les IPX800v5 et si elles le resteront pour les productions futures des IPX800v5, cela me semble suffisant pour filtrer.

Bonjour JuTs,

les Id sont les mêmes sur toutes les machines et ne devraient pas changer, c’est le cœur de la gestion des variables de la V5.

Une remarque : 65536 → 65543 sont les Id des variables de commande des relais.
Les variables des états des relais sont les 8 suivantes.

Bonne journée

1 « J'aime »

Bonjour JuTs,

FFFC00 correspond à la valeur d’un masque exprimé en hexadécimal, appliqué à la valeur de l’identifiant de link0 ou link1.

Explication :

les liens commencent à 10485760 soit A00000 en hexadécimal.
Pour savoir si un identifiant est un lien, on fait une opération ET, bit à bit, avec un masque FFFC00 :

  • soit un identifiant en décimal = 10485850, hexa = A0005A, binaire =1010 0000 0000 0000 0101 1010
    ET
  • Masque en décimal = 16 776 192, hexa =FFFC00, binaire =1111 1111 1111 1100 0000 0000
    Le résultat est = 10485760, hexa=A00000 , binaire = 1010 0000 0000 0000 0000 0000

Donc l’identifiant correspond à un lien.

Pour les variables IO [IPX], pour simplifier, il est possible d’utiliser les _id suivants :

_id name
65536 [IPX]Relay cmd 1
65537 [IPX]Relay cmd 2
65538 [IPX]Relay cmd 3
65539 [IPX]Relay cmd 4
65540 [IPX]Relay cmd 5
65541 [IPX]Relay cmd 6
65542 [IPX]Relay cmd 7
65543 [IPX]Relay cmd 8
65544 [IPX]Relay state 1
65545 [IPX]Relay state 2
65546 [IPX]Relay state 3
65547 [IPX]Relay state 4
65548 [IPX]Relay state 5
65549 [IPX]Relay state 6
65550 [IPX]Relay state 7
65551 [IPX]Relay state 8
65552 [IPX]Digital input 1
65553 [IPX]Digital input 2
65554 [IPX]Digital input 3
65555 [IPX]Digital input 4
65556 [IPX]Digital input 5
65557 [IPX]Digital input 6
65558 [IPX]Digital input 7
65559 [IPX]Digital input 8
65560 [IPX] Opto 1
65561 [IPX] Opto2
65562 [IPX] Opto 3
65563 [IPX] Opto 4
65564 [IPX]Open coll. state 1
65565 [IPX]Open coll. state 2
65566 [IPX]Open coll. state 3
65567 [IPX]Open coll. state 4
65568 [IPX]Open coll. 1
65569 [IPX]Open coll. 2
65570 [IPX]Open coll. 3
65571 [IPX]Open coll. 4
65572 [IPX]Reboot
65573 [IPX]Sel BP

Au delà, les identifiants dépendent de la configuration personnelle de l’IPX800

Bonne journée.

2 « J'aime »

Merci pour l’explication.

Il me reste un cas pour lequel je recherche une solution. J’essaie de trouver un moyen de récupérer les sorties qui ont une temporisation. Je vois que le link1 du start d’un TEMPO correspond au link0 de l’Output du TEMPO et que le link1 de ce dernier correspond au link0 du relais. Mais je ne suis pas sûr qu’il y ait un moyen de connaitre le type d’objet contrôlant un relai. Ni de connaître le type d’un IO tout court d’ailleurs.

Bonjour,

Comme je l’ai déjà indiqué, les variables peuvent être indépendantes (virtuelle) ou liées à une ressource (objet, interface, extension…). Elle peut également être reliée à des liens.

Les identifiant des liens sont dans la plage A00000. Visuellement, cela correspond à un identifiant du type 10485xxx. Par le calcul, il suffit de diviser la valeur de l’identifiant par 65535 et de vérifier si la valeur entière du résultat est égale à 160. Cette opération peut être réalisée par un décalage de 16 bits à droite de l’identifiant ou par l’utilisation de l’opérateur "\" (en fonction de l’outil que vous utilisez).

Si l’identifiant de Link0 ou sur Link1 est un lien :
-Toutes les variables ayant le même lien sur Link0 ou sur Link1 sont liées.

Si l’identifiant de Link0 ou sur Link1 n’est pas un lien :
-il s’agit de l’identfiant de la ressource, le « ressourceId »
-toutes les variables ayant le même RessourceId sur Link0 ou sur Link1 appartiennent à la même ressource.

il s’agit de la resssourceId de la Tempo

il s’agit de la référence du lien (en réalité du connecteur). En faisant l’opération Link/-10485760, on doit retrouver la référence du connecteur utilisé.
Le link1 de l’IO doit donner le ressourceId du relais.

Le mapping des types de ressources n’est malheureusement pas publié par GCE Je ne sais pas si c’est possible de l’obtenir.

Pour info, voici une partie du mapping que j’ai reconstitué, sans garantie …

image

Bonne journée

1 « J'aime »