FR 2804218 A1 20010727 FR 0001015 A 20000126 1 2804218 La présente invention se rapporte à un automate programmable doté d'un système d'exploitation privatif ne supportant pas le protocole TCP-IP mais adapté aux programmes d'automatisme et équipé d'une part d'au moins un module intelligent dans lequel est installé un serveur HTTP et d'autre part d'un module de communication susceptible d'être connecté à des équipements distants par un bus. Un automate programmable modulaire est composé d'une unité de traitement programmable et de modules intelligents qui assurent des fonctions d'automatismes (par exemple pesage, commande d'axe, régulation, etc) et sont raccordés à l'unité de traitement via un bus de communication ou des réseaux sous des protocoles privés. La technologie matérielle et logicielle (noyau temps réel, système d'exploitation et protocole de communication) de l'automate est généralement " propriétaire ", c'est à dire spécifique au constructeur de l'automate. L'unité de traitement programmable contient l'application écrite en langage de programmation d'automate (par exemple en langage connu sous la dénomination PL7 dans le cas des automates de Schneider Automation). Un module intelligent est un micro - calculateur doté d'une unité de traitement, de mémoire morte et vive, d'entrées/sorties privées. L'automate peut par ailleurs être équipé d'un module de communication permettant le raccordement à un réseau de type TCP/IP et de modules d'entrées I sorties tout ou rien ou analogiques. Un module de communication TCP/IP implémente des fonctions serveurs (par exemple la fonction serveur HTTP) qui permet à un client TCP/IP de se raccorder à l'automate via un réseau, sous protocole TCP/IP. Rappelons qu'un client TCP/IP est un équipement qui a l'initiative de l'ouverture d'une connexion sur un serveur TCP/IP. Il est aussi possible que le module de communication TCP/IP implémente une fonction client sur TCP/IP permettant de se raccorder à un équipement TCP/IP serveur. Le module de communication TCP/IP peut servir de pont pour transporter les trames d'un réseau à protocole privé à un réseau à protocole de type TCP/IP. Pour que le module de communication offre des services de type serveur de téléchargement FTP (" File Transfer Protocol "), de serveur HTTP (" Hypertext Transfer Protocol ") ou d'agent SNMP (" Simple Network Management Protocole "), I'unité centrale de l'automate programmable expose des zones de données que ces différents services présentent aux postes clients distants du réseau TCP/IP. Des services de types client de type " mail ", client de type FTP, client de type SNTP (" Simple Network Time Protocole ") ou un client de type SAP (logiciel client / serveur de gestion d'entreprise avec notamment des fonctions de gestions de production) peuvent permettre au programme application de l'automate de renseigner la mémoire avec des informations issues de serveurs distants implémentant ces protocoles. Les fonctions clients ou serveurs sont prédéfinies 2 2804218 et codées dans le module de communication TCP-IP. Pour que des services des modules intelligents soient accessibles du réseau, une application d'adaptation doit être implémentée dans l'unité centrale de l'automate. L'invention a pour but de permettre à un module intelligent d'héberger une fonction client ou une fonction serveur ou d'être membre d'un groupe Multicast en utilisant les services TCP/IP d'un module de communication de la configuration de l'automate programmable. Dès lors le module intelligent peut être utilisé par un membre du réseau TCP/IP comme s'il y était physiquement connecté. L'automate selon l'invention est caractérisé par le fait que le module intelligent est doté d'une interface de programmation d'application qui permet d'utiliser à distance des fonctions de connexion et de communication du module de communication de type TCP-IP. L'invention va maintenant être décrite avec plus de détail en se référant à un mode de réalisation donné à titre d'exemple et représenté par les dessins annexés sur lesquels: - la figure 1 est un schéma de l'architecture matérielle d'un automate programmable modulaire selon l'invention; - la figure 2 est un schéma fonctionnel illustrant les fonctions de communication d'un module de communication et d'un module intelligent; - la figure 3 illustre les différentes fonctions de connexion et communication entre un client et un serveur. L'architecture représentée à la figure 1 comporte un automate référencé PLC équipé d'une unité centrale UC, de modules intelligents MM ayant une fonction d'automatisme (pesage, commande d'axe,...) et d'un module de communication MC à fonction serveur. Ces modules et l'unité centrale communiquent par un bus de communication privé BP qui est par exemple un bus fond de panier. Cet automate serveur PLC peut être connecté à d'autres automates programmables. L'unité centrale UC de l'automate programmable contient un programme d'application écrit dans un langage commande d'automatisme habituel (" langage à contacts", etc.). Il gère les entrées-sorties en utilisant des variables automates. Le module de communication MC, pourvu d'une mémoire centrale et d'un microprocesseur, est doté d'un noyau temps réel étendu par une couche réseau TCP/IP (" stack 3 2804218 TCP/IP ") pilotant un adaptateur matériel lui permettant de communiquer via un réseau B sous protocole TCP-IP, avec un ou des postes clients C (ordinateurs). L'architecture logicielle du module de communication MC comprend: - Un service délégation Serveur permettant à une fonction d'automatisme d'un module intelligent MM de déléguer au module MC l'ouverture et la gestion d'une connexion serveur sur le réseau B de type TCP-IP. - Un service de délégation Client permettant à une fonction d'automatisme d'un module intelligent MM de déléguer au module MC l'ouverture et la gestion d'une connexion client sur le réseau B de type TCP-IP. - Un service de délégation Multicast permettant à une fonction d'automatisme d'un module intelligent MM de déléguer au module MC l'ouverture et la gestion d'une connection Multicast sur le réseau B de type TCP-IP - Un service d'encodage / décodage et d'aiguillage permettant d'une part d'encoder des requêtes provenant des services précédant, selon l'un des protocoles supportés par le bus de communication privé (BP), de les aiguiller pour les acheminer vers les modules intelligents et d'autre part, de décoder des requêtes en provenance des modules intelligents (MM) et de les aiguiller vers l'un des services de délégation définis ci dessus. L'architecture logicielle du module intelligent MM comprend une interface de programmation d'application (API) TCP API qui permet d'utiliser à distance les services délégués du module de communication MC. L'interface TCP API peut donc être utilisée par le programmeur développant (ou complétant) la fonction d'automatisme du module intelligent MM selon trois utilisations distinctes pour réaliser: - Une fonction serveur: c'est l'interface " TCP API serveur " - Une fonction client: c'est l'interface " TCP API client " - Une fonction pour participer à un groupe Multicast: " TCP API Multicast ". L'interface " TCP API serveur " se compose, en se référant à la figure 3, des fonctions permettant à l'application serveur du module intelligent MM de l'automate PLC de communiquer avec le poste client C distant à savoir: 4 2804218 - "Socket " qui crée une socket d'écoute en vue de la préparation d'une connexion. Une socket est une structure de données matérialisant des informations permettant au programme de la fonction d'automatisme d'accéder aux couches réseaux. " Bind " qui attache un numéro de port à une socket. - " Listen " qui met une socket de type serveur en écoute des connexions des clients. " Accept " qui crée une socket client, quand un client se connecte à distance. " Shutdown ", " Close " qui effectuent la fermeture de la connexion et rendent les ressources utilisées. Deux flots de données (caractères) sont établis entre le client et le serveur après connexion par les fonctions suivantes: - " Recv >" qui permet de recevoir des caractères du flot de données TCP/IP client - " Send >" qui émet des caractères vers le flot TCP/IP client L'interface " TCP API client " se compose, en se référant à la figure 3, des fonctions permettant à la fonction d'automatisme client du module intelligent MM de l'automate PLC de communiquer avec le poste serveur C distant à savoir: "Socket " qui crée une socket. Une socket est une structure de données matérialisant des informations permettant au programme de la fonction d'automatisme d'accéder aux couches réseaux. - - "Shutdown ", " Close " qui effectuent la fermeture de la connexion et rendent les ressources utilisées. Deux flots de données (caractères) sont établis entre le client et le serveur après connexion par les fonctions suivantes: - " Recv " qui permet de recevoir des caractères du flot de donnée TCP/IP serveur - " Send " qui émet des caractères vers le flot TCP/IP serveur 2804218 La fonction d'automatisme du module intelligent MM pour participer à un groupe de communication Multicast utilise une interface de programmation d'application (TCP API Multicast) qui permet d'encoder / décoder sous forme de requête les fonctions suivantes: - Socket création d'une socket en vue de la préparation d'une connexion - Join connexion de la socket sur un groupe multicast - Recv réception des caractères du flot de donnée du groupe Multicast - Send émission des caractères sur le flot de donnée du groupe Multicast - Leave déconnexion de la socket du groupe Multicast Close fonctions de services permettant de rendre les ressources utilisées Les fonctions de l'interface " TCP API " (serveur, client, multicast) ci-dessus se comportent d'une manière analogue aux fonctions portant les mêmes noms de la bibliothèque libc du compilateur c de gnu. Toutefois, les fonctions de " TCP API >" possèdent des paramètres (arguments) supplémentaires par rapport à leurs analogues de libc. Ces arguments permettent de coder des informations pour les transporter sur le bus de communication et les interpréter avec les services délégués du module MC et d'aiguiller les requêtes issues de l'interface TCP API, sur le bus de communication privé BP (adressage des modules sur le bus de communication privé,...). Ces arguments comprennent aussi un " bloc d'état " permettant l'asynchronisme entre la fonction d'automatisme du module intelligent MM et les services délégués du module MC. A cet effet le premier appel d'une fonction émet une requête vers le service délégué du module de communication MC et initialise le bloc d'état. Les appels suivants, avec le même bloc d'état, permettent de récupérer les paramètres de retour de la fonction: lorsque la fonction s'est terminée dans le module MC, elle émet un message vers le module MM. La fonction d'automatisme du module intelligent MM peut ainsi réaliser des actions, utilisant par exemple les interfaces reliant le module au processus qu'il commande (interface procédé), entre les appels successifs décrits ci- dessus: c'est l'asynchronisme. On interface la fonction d'automatisme du module MM avec une fonction serveur, client ou " groupe Multicast ", en adoptant des conventions qui sont du ressort de l'analyse système pour les modes de marche (séquence des opérations à mettre en oeuvre pour délivrer des informations pertinentes pour les processus commandés ou pour agir sur eux) et l'attribution des numéros de port (en cas de serveur) ou des adresses distantes en cas de fonctions clientes avec 6 2804218 le programme application automate. On peut implémenter l'interface TCP API dans l'unité centrale UC de l'automate programmable qui est un module intelligent particulier, la fonction d'automatisme supportée s'appelant Le programme application automate. Le programme application de l'automate programmable utilise un complément du jeu d'instruction système dans le langage d'automatisme (connu sous la dénomination PL7 pour les automates Schneider Automation) correspondant aux services serveur, client ou Multicast délégués pour réaliser des fonctions serveur, client ou Multicast. Une telle application permet à l'automate d'être client ou serveur de n'importe quelle application serveur ou client distante. A titre d'exemple, un serveur HTTP implémenté dans le module intelligent MM peut exposer la configuration de ce module via des pages HTML générées à la volée, à un poste client équipé d'un navigateur WEB. Il est ainsi possible de configurer ce module intelligent MM en ligne ou non. Le fonctionnement va maintenant être expliqué, pour un automate comportant dans sa configuration un module MC de communication supportant TCP/IP. Au démarrage de l'automate, le module intelligent MM démarre son serveur HTTP. L'attribution des ports de chaque serveur comprend par exemple le numéro géographique du module intelligent MM pour permettre une identification unique et facile pour la personne qui programme, maintient ou utilise l'application de l'automate programmable. Eventuellement, des applets Java permettent d'assurer des fonctions de rafraîchissement dynamique. En complément du mode " on-line ", un module virtuel peut être installé lors de la configuration de l'automate qui démarre sur le poste de programmation un serveur de simulation apportant des fonctions analogues au serveur embarqué dans le module. Il est bien entendu que l'on peut sans sortir du cadre de l'invention imaginer des variantes et des perfectionnements de détail et de même envisager l'emploi de moyens équivalents. 7 2804218 REVENDICATIONS 1. Automate programmable (PLC) doté d'un système d'exploitation privatif ne supportant pas le protocole TCP-IP mais adapté aux programmes d'automatisme et équipé d'une part d'au moins un module intelligent (MM, UC) dans lequel est installé un serveur HTTP et d'autre part d'un module de communication (MC) susceptible d'être connecté à des équipements distants (C) par un bus, caractérisé par le fait que le module intelligent (MM, UC) est doté d'une interface de programmation d'application (TCP API) qui permet d'utiliser à distance des fonctions de connexion et de communication (TCP) du module de communication (MC) de type TCP-IP. 2. Automate selon la revendication 1, caractérisé par le fait que le module de communication (MC) comprend un service délégation Serveur permettant à une application d'un module MM de déléguer audit module MC l'ouverture. et la gestion d'une connexion serveur sur le réseau TCP-IP, un service de délégation Client permettant à une application d'un module MM de déléguer au module MC l'ouverture et la gestion d'une connexion client sur le réseau TCP-IP, un service de délégation Multicast permettant à une application d'un module MM de déléguer au module MC l'ouverture et la gestion d'une connexion Multicast sur le réseau TCP-IP et un service de transcodage et de routage permettant d'encoder les requêtes provenant des services précédant, selon l'un des protocoles supportés par le bus de communication privé, afin de les acheminer vers les modules intelligents et de décoder les requêtes en provenance des modules intelligents et de les router vers les services de délégation. 3. Automate selon la revendication 1 ou 2, caractérisé par le fait que l'interface de programmation d'application (TCP API) comporte des fonctions se comportant d'une manière analogue aux fonctions portant les mêmes noms de la bibliothèque libc du compilateur c de gnu mais présentant des arguments supplémentaires pour coder les informations de manière à ce qu'elles puissent être transportées sur le bus de communication privé (BP) et qu'elles soient interprétables par les services délégués du module de communication (MC) et l'aiguillage des messages issus de la dite interface (TCP API) sur le bus de communication privé (BP). 4. Automate selon la revendication 1, 2 ou 3, caractérisé par le fait que pour assurer l'asynchronisme entre l'application du module de communication (MM) et les services délégués du module de communication (MC), le premier appel d'une fonction émet une demande au service délégué du module de communication (MC) et initialise un bloc d'état passé en paramètre et que les appels suivants, avec le même bloc d'état, permettent de récupérer les paramètres de retour de la fonction, un message étant émis vers le module intelligent (MM) lorsque la fonction s'est terminée dans le module (MC).