FR3140970A1 - Method for deploying at least one software application, electronic device and corresponding computer program product - Google Patents
Method for deploying at least one software application, electronic device and corresponding computer program product Download PDFInfo
- Publication number
- FR3140970A1 FR3140970A1 FR2210691A FR2210691A FR3140970A1 FR 3140970 A1 FR3140970 A1 FR 3140970A1 FR 2210691 A FR2210691 A FR 2210691A FR 2210691 A FR2210691 A FR 2210691A FR 3140970 A1 FR3140970 A1 FR 3140970A1
- Authority
- FR
- France
- Prior art keywords
- data
- application
- access
- executable
- passive
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 120
- 238000004590 computer program Methods 0.000 title abstract description 12
- 230000008569 process Effects 0.000 claims abstract description 29
- 238000004891 communication Methods 0.000 claims abstract description 22
- 230000005540 biological transmission Effects 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 description 22
- 235000021183 entrée Nutrition 0.000 description 12
- 238000003860 storage Methods 0.000 description 11
- 238000001514 detection method Methods 0.000 description 10
- 238000004458 analytical method Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 230000000875 corresponding effect Effects 0.000 description 7
- 241000135309 Processus Species 0.000 description 6
- 238000009877 rendering Methods 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 241001080024 Telles Species 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000004883 computer application Methods 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000003908 quality control method Methods 0.000 description 2
- 238000013518 transcription Methods 0.000 description 2
- 230000035897 transcription Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000003754 machining Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000003449 preventive effect Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Procédé de déploiement d’applications, dispositif électronique et produit programme d’ordinateur correspondant L’invention concerne un procédé de déploiement d’une application logicielle passive dans un réseau de communication, ledit procédé comprenant : Une obtention du code binaire de ladite application passive et d’une désignation du ou des type(s) de données consommées et/ou produites par ladite application ;Une sélection au moins partiellement automatique d’un accès aux données d’au moins une source de données dudit réseau et/ou vers au moins un consommateur de données dudit réseau, ladite sélection tenant compte dudit au moins un type désigné et d’au moins un type de données attendu via ledit accès;Une création automatique d’un exécutable actif dont au moins un processus logiciel comprend une invocation de ladite application passive avec en paramètre(s) d’entrée au moins une donnée obtenue via ledit accès et/ou avec en paramètre(s) de sortie au moins une donnée à émettre via ledit accès. L’invention concerne aussi le dispositif électronique, système, produit programme d’ordinateur et support d’enregistrement correspondants. Figure pour l'abrégé : Fig. 3Method for deploying applications, electronic device and corresponding computer program product The invention relates to a method for deploying a passive software application in a communications network, said method comprising: Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and/or produced by said application; An at least partially automatic selection of access to data from at least one data source of said network and/or to at least a data consumer of said network, said selection taking into account said at least one designated type and at least one type of data expected via said access; Automatic creation of an active executable of which at least one software process comprises an invocation of said passive application with as input parameter(s) at least one piece of data obtained via said access and/or with as output parameter(s) at least one piece of data to be transmitted via said access. The invention also relates to the corresponding electronic device, system, computer program product and recording medium. Figure for abstract: Fig. 3
Description
La présente application se rapporte au domaine général du déploiement d’applications, dans divers secteurs comme par exemple dans le secteur de l’industrie, de l’agriculture et/ou du médical.This application relates to the general field of application deployment, in various sectors such as for example in the industrial, agricultural and/or medical sectors.
Elle concerne notamment un procédé de déploiement d’application(s) logicielle(s) ainsi qu’un dispositif électronique adapté à la mise en œuvre d’un tel procédé, et les produit programme d’ordinateur et support d’enregistrement correspondants.It relates in particular to a method for deploying software application(s) as well as an electronic device adapted to the implementation of such a method, and the corresponding computer program product and recording medium.
L’industrie connait aujourd’hui plus que jamais des défis environnementaux et sociétaux (sécurité du personnel, manque de disponibilité de personnel qualifié, concurrence...) la poussant à automatiser certaines opérations, comme des tâches de contrôle qualité, de sécurité et de maintenance prédictive, en lien avec des postes de production. Pour faire face à ces défis, les industriels s’appuient souvent des fournisseurs externes, multiples, spécialisés chacun dans la fourniture de solutions automatisées répondant à une problématique particulière. Des exemples de telles fournitures comprennent une application de détection de défaut par vision par ordinateur (ou « computer vision » selon la terminologie anglaise), une application de détection de panne par analyse de vibration, une application de détection de passage etc. Chaque fournisseur de solution amène à l’industriel son propre environnement : des capteurs dédiés, en majorité filaires, son propre matériel informatique (comme un serveur de proximité à installer dans le site industriel concerné, ou ses propres connexions avec les machines du client, en majorité filaires etc..)The industry is experiencing environmental and societal challenges today more than ever (personnel safety, lack of availability of qualified personnel, competition, etc.) pushing it to automate certain operations, such as quality control, safety and security tasks. predictive maintenance, linked to production stations. To face these challenges, manufacturers often rely on multiple external suppliers, each specialized in providing automated solutions responding to a particular problem. Examples of such supplies include a computer vision fault detection application, a vibration analysis fault detection application, a passage detection application, etc. Each solution provider brings its own environment to the manufacturer: dedicated sensors, mostly wired, its own computer hardware (such as a proximity server to be installed in the industrial site concerned, or its own connections with the client's machines, in majority wired etc.)
Cela conduit à une complexification du parc matériel et logiciel d’un industriel et à des difficultés à garder une vision d’ensemble de ce parc, pour un industriel.This leads to an increase in the complexity of a manufacturer's hardware and software portfolio and to difficulties in maintaining an overall vision of this portfolio for a manufacturer.
La présente demande a pour objet de proposer des améliorations à au moins certains des inconvénients de l’état de la technique.The purpose of this application is to propose improvements to at least some of the disadvantages of the state of the art.
La présente demande vise à améliorer la situation à l'aide notamment d'un procédé de déploiement au moins partiellement automatique d’une application logicielle passive dans un réseau de communication, ledit procédé comprenant :
- Une obtention du code binaire de ladite application passive et d’une désignation du ou des type(s) de données consommées et/ou produites par ladite application ;
- Une sélection au moins partiellement automatique d’au moins un accès aux données d’au moins une source de données dudit réseau et/ou vers au moins un consommateur de données dudit réseau, ladite sélection tenant compte dudit au moins un type désigné et d’au moins un type de données attendu via ledit accès;
- Une création automatique d’un exécutable actif dont au moins un processus logiciel comprend une invocation de ladite application passive avec en paramètre(s) d’entrée au moins une donnée obtenue via ledit accès et/ou avec en paramètre(s) de sortie au moins une donnée à émettre via ledit accès.
- Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and/or produced by said application;
- An at least partially automatic selection of at least one access to data from at least one data source of said network and/or to at least one data consumer of said network, said selection taking into account said at least one designated type and at least one type of data expected via said access;
- An automatic creation of an active executable of which at least one software process includes an invocation of said passive application with as input parameter(s) at least one piece of data obtained via said access and/or with as output parameter(s) at least one piece of data to be transmitted via said access.
Dans au moins certains modes de réalisation, ledit procédé comprend un ajout dans une bibliothèque d’exécutables actifs dudit réseau de communication dudit premier exécutable actif créé. Dans au moins certains modes de réalisation, ledit premier exécutable ajouté est associé dans ladite bibliothèque à ladite au moins une source de données et/ou audit au moins un consommateur de données.In at least some embodiments, said method comprises adding said first active executable created to a library of active executables of said communication network. In at least certain embodiments, said first added executable is associated in said library with said at least one data source and/or said at least one data consumer.
Dans au moins certains modes de réalisation, ledit procédé comprend un lancement dudit premier exécutable actif ou une proposition d’un tel lancement.In at least some embodiments, said method comprises launching said first active executable or proposing such a launch.
Dans au moins certains modes de réalisation, ladite désignation est obtenue par accès à un fichier descriptif des données consommées et/ou produites par ladite application.In at least certain embodiments, said designation is obtained by accessing a descriptive file of the data consumed and/or produced by said application.
Dans au moins certains modes de réalisation, ledit accès est un accès à une base de données. Dans au moins certains modes de réalisation, ledit au moins un type de données via ledit accès est obtenu par scrutation dudit réseau. Dans au moins certains modes de réalisation, ledit accès est un canal d’un bus de données dudit réseau.In at least some embodiments, said access is access to a database. In at least certain embodiments, said at least one type of data via said access is obtained by scanning said network. In at least certain embodiments, said access is a channel of a data bus of said network.
Dans au moins certains modes de réalisation, lesdites données obtenues via ledit canal sont obtenues par souscription dudit processus logiciel audit canal de données pour recevoir les données en provenance de ladite au moins une source de données.In at least some embodiments, said data obtained via said channel is obtained by subscribing said software process to said data channel to receive data from said at least one data source.
Dans au moins certains modes de réalisation, ledit processus logiciel comprend une transmission desdites données desdites données à émettre sur ledit canal. Dans au moins certains modes de réalisation, lesdits canaux de données sont des canaux d’un bus de données MQTTIn at least some embodiments, said software process comprises a transmission of said data of said data to be transmitted on said channel. In at least some embodiments, said data channels are channels of an MQTT data bus
Les caractéristiques, présentées isolément dans la présente demande en lien avec certains modes de réalisation du procédé de la présente demande peuvent être combinées entre elles selon d’autres modes de réalisation de ce procédé. Selon un autre aspect, la présente demande concerne également un dispositif électronique adapté à mettre en œuvre le procédé de la présente demande dans l’un quelconque de ses modes de réalisations.The characteristics, presented separately in this application in connection with certain embodiments of the process of the present application, can be combined with each other according to other embodiments of this process. According to another aspect, the present application also relates to an electronic device adapted to implement the method of the present application in any of its embodiments.
Par exemple, la présente demande concerne ainsi un dispositif électronique comprenant un moins un processeur configuré pour un déploiement au moins partiellement automatique d’une application logicielle passive dans un réseau de communication, le processeur étant notamment configuré pour:
- Une obtention du code binaire de ladite application passive et d’une désignation du ou des type(s) de données consommées et/ou produites par ladite application ;
- Une sélection au moins partiellement automatique d’au moins un accès aux données d’au moins une source de données dudit réseau et/ou vers au moins un consommateur de données dudit réseau, ladite sélection tenant compte dudit au moins un type désigné et d’au moins un type de données attendu via ledit accès;
- Une création automatique d’un exécutable actif dont au moins un processus logiciel comprend une invocation de ladite application passive avec en paramètre(s) d’entrée au moins une donnée obtenue via ledit accès et/ou avec en paramètre(s) de sortie au moins une donnée à émettre via ledit accès.
- Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and/or produced by said application;
- An at least partially automatic selection of at least one access to data from at least one data source of said network and/or to at least one data consumer of said network, said selection taking into account said at least one designated type and at least one type of data expected via said access;
- An automatic creation of an active executable of which at least one software process includes an invocation of said passive application with as input parameter(s) at least one piece of data obtained via said access and/or with as output parameter(s) at least one piece of data to be transmitted via said access.
La présente demande concerne aussi par exemple un système comprenant :
- au moins un dispositif électronique comprenant un moins un processeur configuré pour un déploiement au moins partiellement automatique d’une première application logicielle passive dans un réseau de communication, le processeur étant notamment configuré pour:
- Une obtention du code binaire de ladite application passive et d’une désignation du ou des type(s) de données consommées et/ou produites par ladite application ;
- Une sélection au moins partiellement automatique d’au moins un accès aux données d’au moins une source de données dudit réseau et/ou vers au moins un consommateur de données dudit réseau, ladite sélection tenant compte dudit au moins un type désigné et d’au moins un type de données attendu via ledit accès;
- Une création automatique d’un exécutable actif dont au moins un processus logiciel comprend une invocation de ladite application passive avec en paramètre(s) d’entrée au moins une donnée obtenue via ledit accès et/ou avec en paramètre(s) de sortie au moins une donnée à émettre via ledit accès. Au moins un dispositif source et/ou un consommateur de données dudit réseau.
- at least one electronic device comprising at least one processor configured for at least partially automatic deployment of a first passive software application in a communications network, the processor being configured in particular for:
- Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and/or produced by said application;
- An at least partially automatic selection of at least one access to data from at least one data source of said network and/or to at least one data consumer of said network, said selection taking into account said at least one designated type and at least one type of data expected via said access;
- An automatic creation of an active executable of which at least one software process includes an invocation of said passive application with as input parameter(s) at least one piece of data obtained via said access and/or with as output parameter(s) at least one piece of data to be transmitted via said access. At least one source device and/or one data consumer of said network.
La présente demande concerne aussi un programme d'ordinateur comprenant des instructions pour la mise en œuvre des divers modes de réalisation du procédé ci-dessus, lorsque le programme d’ordinateur est exécuté par un processeur et un support d’enregistrement lisible par un dispositif électronique sur lequel est enregistré le programme d’ordinateur.The present application also relates to a computer program comprising instructions for implementing the various embodiments of the above method, when the computer program is executed by a processor and a recording medium readable by a device electronic device on which the computer program is recorded.
Par exemple, la présente demande concerne ainsi un programme d'ordinateur comprenant des instructions pour la mise en œuvre, lorsque le programme est exécuté par un processeur d’un dispositif électronique, d'un procédé de déploiement au moins partiellement automatique d’une première application logicielle passive dans un réseau de communication, ledit procédé comprenant :
- Une obtention du code binaire de ladite application passive et d’une désignation du ou des type(s) de données consommées et/ou produites par ladite application ;
- Une sélection au moins partiellement automatique d’au moins un accès aux données d’au moins une source de données dudit réseau et/ou vers au moins un consommateur de données dudit réseau, ladite sélection tenant compte dudit au moins un type désigné et d’au moins un type de données attendu via ledit accès;
- Une création automatique d’un exécutable actif dont au moins un processus logiciel comprend une invocation de ladite application passive avec en paramètre(s) d’entrée au moins une donnée obtenue via ledit accès et/ou avec en paramètre(s) de sortie au moins une donnée à émettre via ledit accès.
- Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and/or produced by said application;
- An at least partially automatic selection of at least one access to data from at least one data source of said network and/or to at least one data consumer of said network, said selection taking into account said at least one designated type and at least one type of data expected via said access;
- An automatic creation of an active executable of which at least one software process includes an invocation of said passive application with as input parameter(s) at least one piece of data obtained via said access and/or with as output parameter(s) at least one piece of data to be transmitted via said access.
Par ailleurs, la présente demande concerne aussi un support d’enregistrement lisible par un processeur d’un dispositif électronique et sur lequel est enregistré un programme d’ordinateur comprenant des instructions pour la mise en œuvre, lorsque le programme est exécuté par le processeur, d'un procédé de déploiement au moins partiellement automatique d’une première application logicielle passive dans un réseau de communication, ledit procédé comprenant :
- Une obtention du code binaire de ladite application passive et d’une désignation du ou des type(s) de données consommées et/ou produites par ladite application ;
- Une sélection au moins partiellement automatique d’au moins un accès aux données d’au moins une source de données dudit réseau et/ou vers au moins un consommateur de données dudit réseau, ladite sélection tenant compte dudit au moins un type désigné et d’au moins un type de données attendu via ledit accès;
- Une création automatique d’un exécutable actif dont au moins un processus logiciel comprend une invocation de ladite application passive avec en paramètre(s) d’entrée au moins une donnée obtenue via ledit accès et/ou avec en paramètre(s) de sortie au moins une donnée à émettre via ledit accès.
- Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and/or produced by said application;
- An at least partially automatic selection of at least one access to data from at least one data source of said network and/or to at least one data consumer of said network, said selection taking into account said at least one designated type and at least one type of data expected via said access;
- An automatic creation of an active executable of which at least one software process includes an invocation of said passive application with as input parameter(s) at least one piece of data obtained via said access and/or with as output parameter(s) at least one piece of data to be transmitted via said access.
Les programmes mentionnés ci-dessus peuvent utiliser n’importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n’importe quelle autre forme souhaitable.The programs mentioned above may use any programming language, and be in the form of source code, object code, or intermediate code between source code and object code, such as in partially compiled form, or in n any other desirable shape.
Les supports d'informations mentionnés ci-dessus peuvent être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, un support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique.The information carriers mentioned above can be any entity or device capable of storing the program. For example, a medium may comprise a storage means, such as a ROM, for example a CD ROM or a microelectronic circuit ROM, or even a magnetic recording means.
Un tel moyen de stockage peut par exemple être un disque dur, une mémoire flash, etc.Such a storage means can for example be a hard disk, flash memory, etc.
D'autre part, un support d'informations peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Un programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet.On the other hand, an information carrier may be a transmissible medium such as an electrical or optical signal, which may be carried via an electrical or optical cable, by radio or by other means. A program according to the invention can in particular be downloaded onto an Internet-type network.
Alternativement, un support d'informations peut être un circuit intégré dans lequel un programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution de l’un quelconque des modes de réalisation du procédé objet de la présente demande de brevet.Alternatively, an information carrier may be an integrated circuit in which a program is incorporated, the circuit being adapted to execute or to be used in the execution of any one of the embodiments of the method which is the subject of this application. patent.
De façon générale, par obtention d’un élément, on entend dans la présente demande par exemple une réception de cet élément depuis un réseau de communication, une acquisition de cet élément (via par exemple des éléments d’interface utilisateur ou des capteurs ou autres composants de mesure), une création de cet élément par divers moyens de traitement tels que par copie, encodage, décodage, transformation etc. et/ou un accès de cet élément depuis un support de stockage local ou distant accessible à au moins un dispositif mettant en œuvre, au moins partiellement, cette obtention.In general, by obtaining an element, we mean in the present application for example a reception of this element from a communication network, an acquisition of this element (via for example user interface elements or sensors or other measurement components), a creation of this element by various means of processing such as by copying, encoding, decoding, transformation etc. and/or access to this element from a local or remote storage medium accessible to at least one device implementing, at least partially, this obtaining.
D’autres caractéristiques et avantages de l’invention apparaîtront plus clairement à la lecture de la description suivante de modes de réalisation particuliers, donnés à titre de simples exemples illustratifs et non limitatifs, et des dessins annexés, parmi lesquels :Other characteristics and advantages of the invention will appear more clearly on reading the following description of particular embodiments, given by way of simple illustrative and non-limiting examples, and the appended drawings, among which:
La
La
La
La
La
La présente demande propose un procédé, au moins partiellement automatique, de déploiement d’applications logicielles au sein d’un environnement physique, plus ou complexe, comme un ensemble industriel (éventuellement distribué sur plusieurs sites). Les applications peuvent par exemple correspondre à des solutions logicielles mettant en œuvre des techniques d’intelligence artificielle (IA) ou à des programmes compilés et/ou interprétés plus classiques, fournis par divers fournisseurs.The present application proposes a method, at least partially automatic, for deploying software applications within a physical environment, more or more complex, such as an industrial unit (possibly distributed over several sites). Applications may, for example, correspond to software solutions implementing artificial intelligence (AI) techniques or to more traditional compiled and/or interpreted programs, provided by various suppliers.
Dans la présente demande, on entend par application ou ressource logicielle « passive », une ressource logicielle sous format binaire ou textuel s’exécutant uniquement si un autre exécutable l’a invoquée (ou « appelée ») en lui fournissant les éventuels paramètres d’entrée qu’il attend. Une telle ressource peut correspondre par exemple au code binaire obtenu par une compilation du code source d’une méthode ou d’une fonction logicielle.In the present application, the term “passive” application or software resource is understood to mean a software resource in binary or textual format that executes only if another executable has invoked (or “called”) it by providing it with any possible parameters. entry he is waiting for. Such a resource may correspond, for example, to the binary code obtained by compiling the source code of a method or software function.
Une ressource passive n’a pas été prévue pour obtenir elle-même ses paramètres d’entrée. C’est l’exécutable (passif ou actif) qui l’invoque, ou l’opérateur qui l’invoque via une ligne de commande par exemple, qui va affecter des valeurs à ses paramètres d’entrée. De même, la ressource passive se contente de « retourner », en fin d’exécution, son ou ses paramètres de sortie éventuel(s), à l’exécutable (passif ou actif) ou l’opérateur qui l’invoque.A passive resource has not been designed to obtain its input parameters itself. It is the executable (passive or active) which invokes it, or the operator which invokes it via a command line for example, which will assign values to its input parameters. Likewise, the passive resource simply “returns”, at the end of execution, its possible output parameter(s), to the executable (passive or active) or the operator which invokes it.
A l’opposé, on entend ici par application ou ressource « active », ou exécutable « actif », ou autonome, un code binaire logiciel capable de s’exécuter sans être invoqué par un autre exécutable, en acquérant par lui-même les valeurs des variables qu’il utilise. Une telle ressource peut correspondre par exemple au code binaire d’un processus logiciel obtenu par couplage (ou « link » selon la terminologie anglais) du code binaire obtenu par compilation du code source de ce processus et les codes binaires issues des compilations des méthodes, fonctions, dictionnaires qu’il utilise. Un tel code exécutable peut être lancé par une application logicielle (créant ainsi le processus objet du code) et s’exécuter ensuite en tâche de fond, en acquérant de lui-même les valeurs de ses paramètres d’entrée.In contrast, what is meant here by “active” application or resource, or “active” or autonomous executable, is software binary code capable of executing without being invoked by another executable, by acquiring the values by itself. variables it uses. Such a resource may correspond for example to the binary code of a software process obtained by coupling (or “link” according to English terminology) of the binary code obtained by compilation of the source code of this process and the binary codes resulting from the compilations of the methods, functions, dictionaries it uses. Such executable code can be launched by a software application (thus creating the process object of the code) and then run in the background, acquiring the values of its input parameters on its own.
Dans une infrastructure automatisée, un exécutable actif peut par exemple obtenir ses paramètres d’entrée parmi les données brutes disponibles sur une infrastructure de gestion de données, qu’il connait et avec laquelle il peut interagir (comme une base de données, un bus de données et/ou une autre application). Une telle interaction peut être prévue par exemple lors du développement du code source de l’exécutable, ou via un fichier de configuration. Par exemple, il peut obtenir ses paramètres d’entrée en se connectant à une base de données, ou en souscrivant à au moins un canal d’un bus de données mettant à disposition des données. Par données « mises à disposition », on entend ici à la fois les données véhiculées par le bus en provenance d’au moins une source des données (que l’exécutable va consommer) que les données émises sur le bus (par l’exécutable) et susceptibles d’être consommées par d’autres exécutables, ou à servir de commandes à des machines connectées à ce bus.In an automated infrastructure, an active executable can for example obtain its input parameters from the raw data available on a data management infrastructure, which it knows and with which it can interact (such as a database, a bus data and/or another application). Such an interaction can be planned for example during the development of the source code of the executable, or via a configuration file. For example, it can obtain its input parameters by connecting to a database, or by subscribing to at least one channel of a data bus making data available. By “made available” data, we mean here both the data transported by the bus coming from at least one data source (which the executable will consume) and the data transmitted on the bus (by the executable ) and likely to be consumed by other executables, or to serve as commands to machines connected to this bus.
Le procédé de la présente demande vise à modifier une ressource logicielle « passive » pour en faire un exécutable « actif », et ceci de manière au moins partiellement (voire totalement) automatique, par exemple sans réécriture de code, et/ou, au moins dans certains modes de réalisation, à déployer cet exécutable actif simplement, par exemple en le proposant sur une interface utilisateur.The method of the present application aims to modify a “passive” software resource to make it an “active” executable, and this in an at least partially (or even completely) automatic manner, for example without rewriting code, and/or, at least in certain embodiments, to deploy this active executable simply, for example by offering it on a user interface.
Par exemple, dans au moins certains modes de réalisation, l’exécutable actif créé à partir de l’application passive peut être rendu accessible (par exemple dans une bibliothèque d’exécutables) à une plateforme logicielle offrant une interface utilisateur permettant de lancer ces exécutables actifs.For example, in at least some embodiments, the active executable created from the passive application may be made accessible (e.g. in an executable library) to a software platform providing a user interface for launching such executables assets.
Ces exécutables actifs peuvent par exemple être définis de façon à s’exécuter en continue, en tâche de fond, en partageant entre eux des ressources logicielles ou matérielles à leur disposition, comme des capteurs, ou des machines qu’ils commandent. Ainsi, plusieurs applications « passives » peuvent partager (via leur encapsulation dans des exécutables actifs) une même source de données (comme un même capteur par exemple).These active executables can, for example, be defined so as to run continuously, in the background, by sharing among themselves the software or hardware resources at their disposal, such as sensors, or the machines that they control. Thus, several “passive” applications can share (via their encapsulation in active executables) the same data source (like the same sensor for example).
Les exécutables et leurs ressources logicielles ou matérielles peuvent dans certains modes de réalisation communiquer ensemble de façon asynchrone.Executables and their software or hardware resources can in certain embodiments communicate together asynchronously.
Dans certains mode de réalisation, un exécutable actif peut par exemple avoir la capacité à la fois de :
- de s’alimenter au fil de l’eau avec des données provenant de cette ou de ces source(s) (par exemple des données acquises par un ou plusieurs capteurs connectés à la plateforme), par exemple via des mécanismes de souscription à au moins un canal de données véhiculant de telles données;
- d’invoquer l’application passive avec des donnée d’entrée résultant de données provenant de cette/ces source(s);
- transmettre au fil de l’eau des données résultants de l’invocation de l’application passive à d’autres exécutables (par exemple via des mécanismes de publication de ces résultats dans au moins un canal du bus de données adapté à véhiculer de telles données.
- to be fed over time with data coming from this or these source(s) (for example data acquired by one or more sensors connected to the platform), for example via subscription mechanisms to at least a data channel carrying such data;
- to invoke the passive application with input data resulting from data coming from this/these source(s);
- transmit over time data resulting from the invocation of the passive application to other executables (for example via mechanisms for publishing these results in at least one channel of the data bus adapted to convey such data .
Selon les modes de réalisation, les données provenant de ces sources de données peuvent être des données « brutes » ou « non traitées » (ie des données acquises par cette/ces source(s) de données, par exemple telles que mesurées par ces sources de données, comme une vitesse lorsqu’une source de données est un capteur de vitesse), ou des données « traitées » , obtenue par traitement de données « brutes ». Il peut s’agir par exemple d’une donnée intégrant une interprétation d’une vitesse mesurée par un capteur de vitesse, comme une qualification de cette vitesse (trop vite, trop lent) éventuellement corrélée à d’autres données (état des pneumatiques sur une voiture, chaussée mouillée ou non, etc.)).Depending on the embodiments, the data coming from these data sources may be “raw” or “unprocessed” data (ie data acquired by this/these data source(s), for example as measured by these sources data, such as a speed when a data source is a speed sensor), or “processed” data, obtained by processing “raw” data. This may for example be data integrating an interpretation of a speed measured by a speed sensor, such as a qualification of this speed (too fast, too slow) possibly correlated with other data (state of the tires on a car, wet road or not, etc.)).
L’application passive elle-même peut par exemple être une application ne mettant en œuvre aucun mécanisme de communication asynchrone de données (comme une souscription à, ou une publication vers, au moins un canal de données)The passive application itself may for example be an application not implementing any asynchronous data communication mechanism (such as a subscription to, or publication to, at least one data channel)
L’invocation de l’application active peut par exemple permettre à l’exécutable actif créé d’interagir (via l’application passive) avec des équipements (par exemple des machines industrielles) connectées à la plateforme et auxquelles est dédiée l’application passive. La transmission des données (de sortie) résultant de l’invocation de l’application passive à d’autres exécutables en charge de la commande d’équipements comme des machines industrielles peut également permettre une commande indirecte (via ces « autres » exécutables) de ces équipements.The invocation of the active application can for example allow the created active executable to interact (via the passive application) with equipment (for example industrial machines) connected to the platform and to which the passive application is dedicated . The transmission of (output) data resulting from the invocation of the passive application to other executables responsible for controlling equipment such as industrial machines can also allow indirect control (via these “other” executables) of this equipment.
Dans au moins certains de ses modes de réalisation, le procédé peut ainsi aider à générer simplement des combinaisons d’exécutables, pour obtenir par exemple des fonctionnalités complexes complètement automatisées et personnalisées, dédiées par exemple aux besoins particuliers d’une entreprise.In at least some of its embodiments, the method can thus help to simply generate combinations of executables, to obtain for example completely automated and personalized complex functionalities, dedicated for example to the particular needs of a company.
Dans au moins certains de ses modes de réalisation, le procédé peut aider un utilisateur à mettre en œuvre diverses applications, en les intégrant de façon simple, au moins partiellement automatique, à son propre environnement, et ceci sans multiplier les interfaces utilisateurs, les matériels etc...In at least some of its embodiments, the method can help a user to implement various applications, by integrating them in a simple manner, at least partially automatically, into their own environment, and this without multiplying user interfaces, hardware etc...
On décrit à présent, en lien avec la
Comme illustré en
Le système peut également comprendre des éléments de gestion et/ou d’interconnexion réseau (non représentés).The system may also include network management and/or interconnection elements (not shown).
La
Le dispositif 200 comprend notamment au moins une mémoire M 210 comme une mémoire tampon, une mémoire volatile, par exemple de type RAM (pour « Random Access Memory » selon la terminologie anglaise), et/ou une mémoire non volatile (par exemple de type ROM (pour « Read Only Memory » selon la terminologie anglaise). Le dispositif 200 peut également comprendre une unité de traitement UT 220, équipée par exemple d'au moins un processeur P 222, et pilotée par un programme d'ordinateur PG 212 stocké en mémoire M 210. A l'initialisation, les instructions de code du programme d'ordinateur PG sont par exemple chargées dans une mémoire RAM avant d'être exécutées par le processeur P. Ledit au moins un processeur P 222 de l'unité de traitement UT 220 peut notamment mettre en œuvre, individuellement ou collectivement, l'un quelconque des modes de réalisation du procédé de la présente demande (décrit notamment en relation avec la figures 3), selon les instructions du programme d'ordinateur PG.The device 200 notably comprises at least one memory M 210 such as a buffer memory, a volatile memory, for example of the RAM type (for “Random Access Memory” according to English terminology), and/or a non-volatile memory (for example of the RAM type). ROM (for “Read Only Memory” according to English terminology) The device 200 can also include a processing unit UT 220, equipped for example with at least one processor P 222, and controlled by a stored computer program PG 212. in memory M 210. At initialization, the code instructions of the computer program PG are for example loaded into a RAM memory before being executed by the processor P. Said at least one processor P 222 of the processing unit processing UT 220 can in particular implement, individually or collectively, any of the embodiments of the method of the present application (described in particular in relation to Figures 3), according to the instructions of the computer program PG.
Le dispositif peut également comporter, ou être couplé à, au moins un module d’entrée/ sortie I/O 230, tel qu’un module de communication, permettant par exemple au dispositif 200 de communiquer avec d’autres dispositifs du système 100, via des interfaces de communication filaires ou sans fils, et/ou tel qu’un module d’interfaçage avec un utilisateur du dispositif (aussi appelé plus simplement dans cette demande « interface utilisateur »).The device can also include, or be coupled to, at least one I/O input/output module 230, such as a communication module, allowing for example the device 200 to communicate with other devices of the system 100, via wired or wireless communication interfaces, and/or such as an interfacing module with a user of the device (also called more simply in this application “user interface”).
Par interface utilisateur du dispositif, on entend par exemple une interface intégrée au dispositif 200, ou une partie d’un dispositif tiers couplé à ce dispositif par des moyens de communication filaires ou sans fils. Par exemple, il peut s’agir d’un écran secondaire du dispositif ou d’un ensemble de hauts parleurs connectés par une technologie sans fils au dispositif.By user interface of the device, we mean for example an interface integrated into the device 200, or a part of a third-party device coupled to this device by wired or wireless communication means. For example, it may be a secondary screen of the device or a set of speakers connected by wireless technology to the device.
Une interface utilisateur peut notamment être une interface utilisateur, dite «de sortie», adaptée à un rendu (ou au contrôle d’un rendu) d’un élément de sortie d‘une application informatique utilisée par le dispositif 200, par exemple une application s’exécutant au moins partiellement sur le dispositif 200 ou une application « en ligne » s’exécutant au moins partiellement à distance, par exemple sur le serveur 140 du système 100. Des exemples d’interface utilisateur de sortie du dispositif incluent un ou plusieurs écrans, notamment au moins un écran graphique (tactile par exemple), un ou plusieurs haut-parleurs, un casque connecté.A user interface may in particular be a so-called “output” user interface, adapted to a rendering (or to the control of a rendering) of an output element of a computer application used by the device 200, for example an application running at least partially on the device 200 or an “online” application running at least partially remotely, for example on the server 140 of the system 100. Examples of output user interfaces of the device include one or more screens, in particular at least one graphic screen (touchscreen for example), one or more speakers, a connected headset.
Par ailleurs, une interface utilisateur peut être une interface utilisateur, dite «d’entrée», adaptée à une acquisition d’une commande d’un utilisateur du dispositif 200. Il peut s’agir notamment d’une action à effectuer en lien avec un item rendu sur une interface de sortie du dispositif, et/ou d’une commande à transmettre à une application informatique utilisée par le dispositif 200 (par exemple un exécutable actif comme introduit ci-avant), par exemple une application s’exécutant au moins partiellement sur le dispositif 200 ou une application « en ligne » s’exécutant au moins partiellement à distance, par exemple sur le serveur 140 du système 100. Des exemples d’interface utilisateur d’entrée du dispositif 200 incluent un moyen d’acquisition audio et/ou vidéo (microphone, caméra (webcam) par exemple), un clavier, une souris.Furthermore, a user interface may be a so-called "input" user interface, adapted to acquiring a command from a user of the device 200. It may in particular be an action to be carried out in connection with an item rendered on an output interface of the device, and/or a command to be transmitted to a computer application used by the device 200 (for example an active executable as introduced above), for example an application running at less partially on the device 200 or an "online" application running at least partially remotely, for example on the server 140 of the system 100. Examples of input user interface of the device 200 include an acquisition means audio and/or video (microphone, camera (webcam) for example), a keyboard, a mouse.
De tels moyens d’entrées/sorties peuvent par exemple être adaptés à une gestion (création, mémorisation, sélection, lancement, paramétrage etc.) d’au moins un exécutable. Ils peuvent permettre par exemple un paramétrage des entrées/sorties d’une ressource (ou application) « passive » à déployer sous forme d’un exécutable actif (par exemple une désignation d’au moins un canal de données à utiliser pour fournir des paramètres d’entrée à la ressource via l’exécutable à déployer et/ou une désignation d’au moins un canal de données à alimenter, via l’exécutable, avec des paramètres de sortie fournis par cette ressource, une désignation d’au moins une source de données pour cet exécutable à déployer et/ou d’un destinataire de données pour cet exécutable).Such input/output means can for example be adapted to management (creation, storage, selection, launch, configuration, etc.) of at least one executable. They can allow for example a configuration of the inputs/outputs of a “passive” resource (or application) to be deployed in the form of an active executable (for example a designation of at least one data channel to be used to provide parameters input to the resource via the executable to be deployed and/or a designation of at least one data channel to be supplied, via the executable, with output parameters provided by this resource, a designation of at least one data source for this executable to be deployed and/or a data recipient for this executable).
Dans certains modes de réalisation, les modules d’entrées/ sorties peuvent également comprendre des moyens de communication adaptés à recevoir des données (par exemple des données acquises par un autre dispositif comme des images, des mesures etc..) et/ou de moyens d’acquisitions de ces données. Ces moyens d’acquisition peuvent comprendre des capteurs physiques ou logiciels aptes à l’acquisition de telles données. De tels modules d’entrées/sorties peuvent notamment être adaptés à consommer des données circulant sur au moins un canal 422, 424 d’un bus 420 de données et/ou à émettre des données sur au moins un canal 426 d’un bus 420 de données (voir
Ledit au moins un microprocesseur du dispositif 200 peut notamment être adapté pour un déploiement au moins partiellement automatique d’une première application logicielle passive dans un réseau de communication. Ledit processeur peut notamment être configuré pour:
- Une obtention du code binaire de ladite application passive et d’une désignation du ou des type(s) de données consommées et/ou produites par ladite application ;
- Une sélection au moins partiellement automatique d’au moins une source de données dudit réseau et/ou d’au moins un consommateur de données dudit réseau, ladite sélection tenant compte dudit au moins un type désigné et d’au moins un type de données mises à disposition et/ou attendues dans ledit réseau;
- Une création automatique d’un exécutable actif dont au moins un processus logiciel comprend une invocation de ladite application passive avec en paramètre(s) d’entrée au moins une donnée mise à disposition par ladite source de données sélectionnée et/ou avec en paramètre(s) de sortie au moins une donnée attendue par ledit au moins un consommateur sélectionné.
- Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and/or produced by said application;
- An at least partially automatic selection of at least one data source of said network and/or of at least one data consumer of said network, said selection taking into account said at least one designated type and at least one type of data put available and/or expected in said network;
- An automatic creation of an active executable of which at least one software process comprises an invocation of said passive application with as input parameter(s) at least one piece of data made available by said selected data source and/or with as parameter ( s) output at least one piece of data expected by said at least one selected consumer.
Dans certains modes de réalisation, le procédé de la présente demande peut être mis en œuvre de façon distribuée entre au moins deux dispositifs 110, 120, 130, 140, 150 ou 160 du système 100. Ainsi, dans certains modes de réalisation, un premier dispositif (par exemple un serveur 140 du système 100) peut construire un exécutable « actif » (selon le procédé de la présente demande) qu’il communique à au moins un second dispositif (par exemple un terminal 110 ou le dispositif de stockage 150 du système 100), de qui un troisième dispositif (comme le terminal 110, ou le serveur 140) pourra ultérieurement obtenir ce modèle. L’exécutable peut ensuite être lancé sur le second et/ou le troisième dispositif (par exemple le serveur 140, ou un autre serveur, ou le terminal 110) (selon le procédé de la présente demande).In certain embodiments, the method of the present application can be implemented in a distributed manner between at least two devices 110, 120, 130, 140, 150 or 160 of the system 100. Thus, in certain embodiments, a first device (for example a server 140 of the system 100) can construct an “active” executable (according to the method of the present application) which it communicates to at least a second device (for example a terminal 110 or the storage device 150 of the system 100), from which a third device (such as terminal 110, or server 140) can subsequently obtain this model. The executable can then be launched on the second and/or third device (for example the server 140, or another server, or the terminal 110) (according to the method of the present application).
Dans d’autres modes de réalisation, le procédé de la présente demande peut être mis en œuvre localement par le dispositif 200.In other embodiments, the method of the present application can be implemented locally by the device 200.
Une mise en œuvre distribuée du procédé peut permettre de déployer en parallèle un même exécutable sur plusieurs dispositifs (par exemple pour permettre une redondance de traitements critiques) en mettant en commun certains traitements pour l’obtention de l’exécutable « actif » à partir d’une application passive.A distributed implementation of the method can make it possible to deploy the same executable in parallel on several devices (for example to allow redundancy of critical processing) by pooling certain processing operations to obtain the "active" executable from 'a passive application.
Par ailleurs, une implémentation locale à un dispositif peut aider à simplifier la mise en œuvre de la solution objet de la présente demande, et donc aider à limiter son coût d’implémentation. Elle peut aussi aider à préserver la confidentialité de certaines données sensibles ou de certains traitements secrets (comme des secrets de fabrication faisant partie du savoir-faire d’une entreprise) dont on souhaite éviter la diffusion.Furthermore, a local implementation of a device can help to simplify the implementation of the solution which is the subject of this application, and therefore help to limit its implementation cost. It can also help preserve the confidentiality of certain sensitive data or certain secret processing operations (such as manufacturing secrets forming part of a company's know-how) whose dissemination we wish to avoid.
Certains des modules d‘entrée -sorties ci-dessus sont optionnels et peuvent donc être absents du dispositif 200 dans certains modes de réalisation. Notamment, lorsque le procédé est mis en œuvre localement, certains modules d’entrées/sorties liés à la transmission ou à la réception de données peuvent être absents.Some of the above input-output modules are optional and may therefore be absent from the device 200 in certain embodiments. In particular, when the process is implemented locally, certain input/output modules linked to the transmission or reception of data may be absent.
Par le terme « module » ou le terme « composant » ou «élément » du dispositif, on entend ici un élément matériel, notamment câblé, ou un élément logiciel, ou une combinaison d’au moins un élément matériel et d’au moins un élément logiciel. Le procédé selon l’invention peut donc être mis en œuvre de diverses manières, selon ses modes de réalisation, notamment sous forme câblée et/ou sous forme logicielle.By the term "module" or the term "component" or "element" of the device, we mean here a hardware element, in particular wired, or a software element, or a combination of at least one hardware element and at least one software element. The method according to the invention can therefore be implemented in various ways, depending on its embodiments, in particular in wired form and/or in software form.
On présente à présent, en lien avec les figures 3 et 4, certaines mises en œuvre du procédé 300 de la présente demande sur un dispositif électronique (qui peut être similaire au dispositif 200 de la
Comme illustré, le procédé 300 peut comprendre une obtention 310 des caractéristiques d’au moins une application logicielle à déployer dans ledit réseau de communication.As illustrated, the method 300 may include obtaining 310 the characteristics of at least one software application to be deployed in said communication network.
Cette obtention peut comprendre notamment une obtention 312 de l’application elle-même et une obtention 314 de sa description. Selon les modes de réalisation, ces deux étapes peuvent être effectuées en parallèle, ou successivement (sans préjugé de leur ordre respectif), ou encore, ces deux étapes peuvent être réunies en seule étape, où l’application et sa description sont obtenues ensemble (par exemple dans un même flux de données).This obtaining may include in particular obtaining 312 of the application itself and obtaining 314 of its description. Depending on the embodiments, these two steps can be carried out in parallel, or successively (without prejudice to their respective order), or else, these two steps can be combined in a single step, where the application and its description are obtained together ( for example in the same data flow).
Dans certains modes de réalisation, l’application et/ou sa description peut être reçue d’un autre dispositif (via des moyens de communication) ; par exemple téléchargée depuis un serveur d’applications (par exemple par un opérateur, via une interface web), ou chargée depuis un support de stockage interne ou externe (tel qu’un disque dur externe ou qu’une clé USB par exemple), Après obtention, l’application et/ou sa description reçue(s) peut par exemple être chargée pour y être mémorisée, sur un support de stockage (comme un support non transitoire tel qu’un disque dur) de la plateforme.In certain embodiments, the application and/or its description can be received from another device (via means of communication); for example downloaded from an application server (for example by an operator, via a web interface), or loaded from an internal or external storage medium (such as an external hard drive or a USB key for example), After obtaining, the application and/or its description received can for example be loaded to be stored there, on a storage medium (such as a non-transitory medium such as a hard disk) of the platform.
Par exemple, un fournisseur d’applications ou un fournisseur d’un équipement à commander peut fournir une application (par exemple une application de commande de de cet équipement), sous forme d’un code binaire ou d’un fichier texte (comme un script), et une description de l’application. Cette description peut par exemple préciser si l’application possède des paramètres d’entrée et/ou de sortie, et si c’est le cas, le nombre, le type, l’ordre, et /ou l’éventuelle valeur par défaut de ces paramètres. Il peut s’agir par exemple d’une liste exhaustive et ordonnée (selon l’ordre des paramètres lors de l’invocation de l’application), indiquant le type de chacun des paramètres d’entrée et/ou de sortie.For example, an application provider or a provider of equipment to be controlled may provide an application (for example an application for controlling this equipment), in the form of a binary code or a text file (such as a script), and a description of the application. This description can for example specify whether the application has input and/or output parameters, and if so, the number, type, order, and/or possible default value of these parameters. It may for example be an exhaustive and ordered list (according to the order of the parameters when invoking the application), indicating the type of each of the input and/or output parameters.
Selon les modes de réalisation, la description peut être transmise sous diverses formes, comme un document papier ou électronique, transmis via un support de stockage, ou téléchargé, conjointement à l’application ou de façon séparée.Depending on the embodiments, the description can be transmitted in various forms, such as a paper or electronic document, transmitted via a storage medium, or downloaded, jointly with the application or separately.
Le format du document électronique peut différer selon les modes de réalisation. Dans le cas d’un document électronique, il peut s’agir d’un document au format « pdf », ou basé sur le format « HTML» (pour « HyperText Markup Language » en anglais), ou d’un fichier descriptif interprétable automatiquement. Par exemple, il peut utiliser un format particulier au fournisseur d’applications ou de l’équipement à commander ou utiliser un format standard de sérialisation de données, comme le format connu sous le nom de YAML, ou un format utilisant un langage de balisage, comme HTML.The format of the electronic document may differ depending on the embodiments. In the case of an electronic document, it may be a document in "pdf" format, or based on the "HTML" format (for "HyperText Markup Language" in English), or an interpretable descriptive file automatically. For example, it may use a format specific to the application provider or equipment to be ordered or use a standard data serialization format, such as the format known as YAML, or a format using a markup language, like HTML.
L’obtention 314 de la description peut par exemple mettre en œuvre une transcription d’au moins une partie d’un document papier ou électronique (comme un document au format « pdf ») dans un format interprétable automatiquement. Cette transcription peut par exemple être effectuée manuellement par un opérateur via une interface homme machine (comme une interface web) du dispositif 200 ou de façon automatique, par exemple via des techniques automatiques d’analyse de documents telles que des techniques automatiques de reconnaissance de caractères, d’analyse syntaxique et/ou sémantique etc..Obtaining 314 the description can for example implement a transcription of at least part of a paper or electronic document (such as a document in “pdf” format) in an automatically interpretable format. This transcription can for example be carried out manually by an operator via a human machine interface (such as a web interface) of the device 200 or automatically, for example via automatic document analysis techniques such as automatic character recognition techniques. , syntactic and/or semantic analysis etc.
Comme illustré en
Dans l’exemple de la
Selon les modes de réalisation, le protocole de messagerie peut être divers, il peut dans exemple s’agir d’un protocole de messagerie basé sur un protocole standard de communication comme TCP/IP (de l'anglais Transmission Control Protocol (TCP) et Internet Protocol (IP) , comme MQTT (pour Message Queuing Telemetry Transport).Depending on the embodiments, the messaging protocol can be diverse, for example it can be a messaging protocol based on a standard communication protocol such as TCP/IP (from the English Transmission Control Protocol (TCP) and Internet Protocol (IP), such as MQTT (for Message Queuing Telemetry Transport).
Une description des données circulant sur le bus de données peut par exemple être obtenue auprès d’une entité gestionnaire du bus de données.A description of the data circulating on the data bus can for example be obtained from an entity managing the data bus.
Par exemple, certaines modes de réalisation peuvent utiliser une entité de type « Broker » dans le cas d’un bus MQTT et/ou une analyse dynamique 322 des données effectivement mises à disposition sur le bus.For example, certain embodiments can use a “Broker” type entity in the case of an MQTT bus and/or a dynamic analysis 322 of the data actually made available on the bus.
Par exemple, dans le cas d’un bus MQTT, un abonnement au canal ‘#’ permet de recevoir les données circulant sur tous les canaux actifs. Chaque message de données peut alors indiquer par exemple le canal utilisé.For example, in the case of an MQTT bus, a subscription to channel ‘#’ allows you to receive data circulating on all active channels. Each data message can then indicate, for example, the channel used.
Dans certains modes de réalisation, un système déclaratif peut également mis en place afin de permettre à une source de données (un capteur par exemple) de signaler qu’elle est active et qu’elle utilise un canal spécifique.In certain embodiments, a declarative system can also be implemented to allow a data source (a sensor for example) to signal that it is active and that it is using a specific channel.
Ainsi, un canal dédié peut par exemple être utilisé pour générer (et/ou diffuser) un annuaire des canaux disponibles. Chaque source peut par exemple émet un signal sur ce canal (par exemple dans un format bien défini). Les exécutables (abonnés à ce canal peuvent alors être averti du canal utilisé par la source et s’enregistrer (ou non) dans les destinataires du canal de la source.Thus, a dedicated channel can for example be used to generate (and/or broadcast) a directory of available channels. Each source can for example emit a signal on this channel (for example in a well-defined format). Executables (subscribed to this channel) can then be notified of the channel used by the source and register (or not) in the recipients of the source channel.
Une analyse dynamique des canaux peut par exemple utiliser un outil de détection de type (comme le détecteur de type « Java Data Type »), afin d’obtenir dynamiquement le type de données d’au moins un canal du bus (par exemple automatiquement lors de l’utilisation du procédé de la présente demande, avant ou pendant l’exécution de l’exécutable actif. Dans le cas de l’outil Java Data Type, l’analyse dynamique d’une donnée circulant sur un canal de données peut permettre par exemple de retrouver un type primitif, de bas niveau, de Java, comme le type « booléen », le type « caractère », le type « entier », le type « nombre flottant », ou le type « double ». Bien entendu, les formats identifiés lors de l’analyse dynamique peuvent varier selon les modes de réalisation (par exemple selon l’outil de détection de type utilisé).A dynamic channel analysis can for example use a type detection tool (such as the “Java Data Type” type detector), in order to dynamically obtain the data type of at least one channel of the bus (for example automatically when of the use of the method of the present application, before or during the execution of the active executable. In the case of the Java Data Type tool, the dynamic analysis of data circulating on a data channel can allow. for example to find a primitive, low-level Java type, such as the “boolean” type, the “character” type, the “integer” type, the “floating number” type, or the “double” type. , the formats identified during the dynamic analysis may vary depending on the embodiments (for example depending on the type detection tool used).
La description des données susceptibles de circuler sur le bus de données peut notamment comprendre un identifiant d’au moins un dispositif et/ou processus source de telles données (comme les éléments 442, 444 de la
Dans l’exemple de la
Par exemple, lorsqu’un type (primitif par exemple) de données circulant sur le bus est identique à un type (primitif par exemple) d’un paramètre d’entrée ou de sortie de l’application, le canal de circulation sera considéré comme un canal possible de mise à disposition de données (par ou pour un exécutable invoquant l’application) et mémorisé en association 334 du paramètre d’entrée ou de sortie de l’application concerné.For example, when a type (primitive for example) of data circulating on the bus is identical to a type (primitive for example) of an input or output parameter of the application, the circulation channel will be considered as a possible channel for making data available (by or for an executable invoking the application) and stored in association 334 with the input or output parameter of the application concerned.
Lorsqu’un type de données susceptibles de circuler sur au moins un des canaux du bus est différent d’un type d’un paramètre d’entrée ou de sortie de l’application, le procédé peut comprendre une lecture 332 d’une table de conversion associant au moins un couple constitué d’un premier et d’un second type de données (primitifs par exemple) avec au moins une méthode de conversion à utiliser pour convertir des données de ce premier type en données de ce second type.When a type of data capable of circulating on at least one of the bus channels is different from a type of an input or output parameter of the application, the method can include a reading 332 of a table of conversion associating at least one pair consisting of a first and a second type of data (primitives for example) with at least one conversion method to be used to convert data of this first type into data of this second type.
La table de conversion (comme l’élément 430 de la
La lecture 332 de la table de conversion peut permettre d’identifier une méthode de conversion à utiliser pour convertir au moins une donnée circulant sur au moins un des canaux du bus en au moins un paramètre d’entrée de l’application, ou pour convertir au moins un paramètres de sortie de l’application en donnée adaptée à circuler sur au moins un des canaux du bus.Reading 332 of the conversion table can make it possible to identify a conversion method to be used to convert at least one piece of data circulating on at least one of the bus channels into at least one application input parameter, or to convert at least one output parameter of the application in data adapted to circulate on at least one of the channels of the bus.
Si la lecture de la table de conversion permet d’identifier une méthode de conversion entre un canal de données et un paramètre d’entrée ou de sortie de l’application, le canal de circulation sera considéré comme un canal possible de mise à disposition de données (par ou pour un exécutable invoquant l’application), moyennant l’utilisation de la méthode de conversion. Ce canal de données sera alors mémorisé en association avec le paramètre d’entrée et/ou de sortie de l’application concernée, et la méthode de conversion (ou un lien vers cette méthode) à utiliser.If reading the conversion table makes it possible to identify a method of conversion between a data channel and an input or output parameter of the application, the circulation channel will be considered as a possible channel for making the data available. data (by or for an executable invoking the application), using the conversion method. This data channel will then be stored in association with the input and/or output parameter of the application concerned, and the conversion method (or a link to this method) to use.
La mise en correspondance aboutit ainsi, dans l’exemple illustré, à une éventuelle association 334, à une donnée d’entrée ou de sortie, d’au moins un canal de mise à disposition de données, ainsi qu’optionnellement à au moins une méthode de conversion associée.The matching thus results, in the example illustrated, in a possible association 334, with input or output data, with at least one data provision channel, as well as optionally with at least one associated conversion method.
Lorsque au moins un paramètre d’entrée ou de sortie n’est associée à aucun canal, et, dans le cas d’un paramètre d’entrée, ne possède aucune valeur par défaut, le procédé peut comprendre une génération d’un message d’alerte et son émission vers un autre dispositif distant et/ou à son rendu vers une interface homme machine du dispositif 200. En effet, il peut être nécessaire d’affecter manuellement une valeur par défaut à un paramètre d’entrée et/ou de modifier ou d’ajouter un canal et/ou une source de données au système 100 pour permettre la mise à disposition de données d’un type correspondant (éventuellement via une conversion) au paramètre d’entrée.When at least one input or output parameter is not associated with any channel, and, in the case of an input parameter, has no default value, the method may include generating a message alert and its transmission to another remote device and/or its rendering to a human machine interface of the device 200. Indeed, it may be necessary to manually assign a default value to an input parameter and/or modify or add a channel and/or a data source to the system 100 to enable the provision of data of a type corresponding (possibly via conversion) to the input parameter.
On notera qu’un paramètre de sortie qui n’est associé à aucun canal peut tout simplement être ignoré par l’exécutable invoquant l’application passive.Note that an output parameter which is not associated with any channel can simply be ignored by the executable invoking the passive application.
Dans certains modes de réalisation, le procédé peut comprendre une sélection, parmi les canaux associés à un paramètre d’entrée ou de sortie de l’application, d’au moins un canal de données à utiliser lors d’une invocation de l’application passive. Dans certains modes de réalisation, cette sélection peut être automatique.In certain embodiments, the method may comprise a selection, among the channels associated with an input or output parameter of the application, of at least one data channel to be used during an invocation of the application passive. In certain embodiments, this selection may be automatic.
Par exemple, la sélection d’au moins un canal de données peut être automatique dans des cas où un seul canal est associé à un paramètre d’entrée et/ou de sortie de l’application, ou lorsque la sélection se base sur l’application de règles paramétrées préalablement. Par exemple, une règle peut indiquer que les données de tous les canaux associés à un paramètre d’entrée doivent être utilisées comme paramètre d’entrée de l’application (l’exécutable surveillant alors l’ensemble de ces canaux), ou encore qu’un paramètre de sortie doit être mis à disposition (émis par exemple) sur tous les canaux associés à ce paramètre de sortie.For example, the selection of at least one data channel may be automatic in cases where a single channel is associated with an input and/or output parameter of the application, or when the selection is based on the application of previously configured rules. For example, a rule can indicate that the data from all channels associated with an input parameter must be used as the application's input parameter (the executable then monitors all of these channels), or that 'an output parameter must be made available (emitted for example) on all channels associated with this output parameter.
Dans certains modes de réalisation, le procédé peut comprendre un rendu 336 des canaux associés à un paramètre de l’application, ainsi que par exemple des caractéristiques de ces canaux (comme un identifiant d’au moins un dispositif source ou consommateur des données circulant sur un canal ), de façon à permettre à un opérateur de faire un choix parmi le ou les canaux associés au paramètre concerné et/ou de confirmer la sélection (automatique) d’un ou de plusieurs canaux.In certain embodiments, the method may include a rendering 336 of the channels associated with a parameter of the application, as well as for example characteristics of these channels (such as an identifier of at least one source or consumer device of the data circulating on a channel), so as to allow an operator to make a choice among the channel(s) associated with the parameter concerned and/or to confirm the (automatic) selection of one or more channels.
Dans un tel mode de réalisation , le procédé peut comprendre une acquisition 338 d’une désignation d’au moins un des canaux associé au paramètre. La désignation peut par exemple comprendre au moins un identifiant d’au moins un canal de données à sélectionner (ou en variante à ne pas utiliser) et/ou au moins un identifiant d’au moins un dispositif source ou consommateur de données utilisant un canal de données à sélectionner (ou en variante à ne pas utiliser).In such an embodiment, the method may include an acquisition 338 of a designation of at least one of the channels associated with the parameter. The designation may for example include at least one identifier of at least one data channel to be selected (or alternatively not to be used) and/or at least one identifier of at least one data source or consumer device using a channel of data to select (or alternatively not to use).
Dans l’exemple de la
Un tel exécutable 410 peut comprendre:
- un élément logiciel offrant une fonctionnalité de souscription (ou abonnement) et/ou de désabonnement à au moins un premier canal 422, 424 d’un bus de données 420 (par exemple les canaux associés à un paramètre d’entrée de l’application sélectionnés lors de la mise en correspondance 330) ou en variante, plus spécifiquement, aux mises à disposition de données, via ce premier canal 422, 424, en provenance d’au moins une première source 442, 444 de données ;
- un élément logiciel en charge d’écouter en permanence sur le premier canal 422, 424, et d’obtenir les données circulant sur ce premier canal 422, 424 ou , en variante, les données en provenant de la première source 442, 444;de données utilisant ce premier canal)
- un élément logiciel offrant une conversion éventuelle d’au moins une donnée (« brute » par exemple) mise à disposition sur le premier canal, en au moins une donnée d’un type connu (« donnée primitive ») et/ou une conversion éventuelle d’au moins une donnée primitive en au moins une donnée de format adapté au paramètre d’entrée 414 associé au premier canal 422, 424, en utilisant par exemple une méthode de conversion associée à ce paramètre d’entrée 414 et à ce premier canal 422, 424 lors de la mise en correspondance 330;
- un élément logiciel adapté à une invocation de l’application « passive » 412 avec en paramètre(s) d’entrée 414 au moins une donnée obtenue via l’écoute sur le premier canal 422, 424 (et éventuellement convertie) (ou une donnée fonction de la donnée obtenue)
- un élément logiciel offrant une conversion éventuelle d’au moins un paramètre(s) 416 de sortie de l’application 412 invoquée, en utilisant la méthode de conversion associée à ce paramètre de sortie 416 lors de la mise en correspondance 330 et
- un élément logiciel adapté à une mise à disposition du paramètre de sortie 416 (ou d’une donnée fonction de ce paramètre) sur un deuxième canal 426 associé à ce paramètre de sortie 416 et sélectionné lors de la mise en correspondance 330 et éventuellement converti
- a software element offering a subscription (or subscription) and/or unsubscription functionality to at least a first channel 422, 424 of a data bus 420 (for example the channels associated with an input parameter of the selected application during matching 330) or alternatively, more specifically, to the provision of data, via this first channel 422, 424, coming from at least a first data source 442, 444;
- a software element responsible for permanently listening on the first channel 422, 424, and obtaining the data circulating on this first channel 422, 424 or, alternatively, the data coming from the first source 442, 444; data using this first channel)
- a software element offering a possible conversion of at least one piece of data (“raw” for example) made available on the first channel, into at least one piece of data of a known type (“primitive data”) and/or a possible conversion of at least one primitive data into at least one data of format adapted to the input parameter 414 associated with the first channel 422, 424, using for example a conversion method associated with this input parameter 414 and this first channel 422, 424 when matching 330;
- a software element adapted to an invocation of the “passive” application 412 with as input parameter(s) 414 at least one piece of data obtained via listening on the first channel 422, 424 (and possibly converted) (or a piece of data depending on the data obtained)
- a software element offering a possible conversion of at least one output parameter(s) 416 of the invoked application 412, using the conversion method associated with this output parameter 416 during the matching 330 and
- a software element adapted to making the output parameter 416 (or data based on this parameter) available on a second channel 426 associated with this output parameter 416 and selected during the matching 330 and possibly converted
Selon les modes de réalisation, l’exécutable peut comprendre divers autres éléments logiciels. Par exemple, dans certains modes de réalisation, il peut comprendre un module de génération de traces de l’invocation de l’application passive (ie d’alertes rapportant cette invocation) vers un dispositif d’un opérateur.Depending on the embodiments, the executable may include various other software elements. For example, in certain embodiments, it may include a module for generating traces of the invocation of the passive application (ie alerts reporting this invocation) towards an operator's device.
Ces éléments logiciel peuvent être mis en œuvre dans des modules logiciel distincts ou commun. Par exemple, dans certains modes de réalisation, au moins certains de ces éléments logiciels peuvent être mis en œuvre par un module logiciel commun appelé par la suite Publish/subscrib Proxy . Le code d’au moins certains de ces éléments et/ou module(s) logiciel(s) peut être identique quelle que soit l’application passive du système 100, l’instanciation des élément(s) et/ou module(s) logiciel(s) se faisant par exemple en utilisant la description obtenue 310 de l’application, la description obtenue 320 des données mises en circulation sur le bus et/ou les associations mémorisées lors de la mise en correspondance 330 du procédé de la présente demande.These software elements can be implemented in separate or common software modules. For example, in certain embodiments, at least some of these software elements may be implemented by a common software module hereinafter called Publish/subscrib Proxy. The code of at least some of these software elements and/or module(s) may be identical regardless of the passive application of the system 100, the instantiation of the element(s) and/or module(s) software(s) being done for example using the description obtained 310 of the application, the description obtained 320 of the data put into circulation on the bus and/or the associations stored during the matching 330 of the method of the present application .
L’exécutable actif (ou autonome) peut par exemple être créé 342 de façon automatique, à partir de l’application passive et (par exemple) du et/ou des modules logiciels ci-dessus, via des outils de génération d’exécutable; comme des outils utilisant des techniques d’encapsulation comme la technologie Docker ©. Ainsi, dans l’exemple de la
Dans l’exemple de la
Comme illustré en
Des informations relatives à l’état courant du bus, aux dispositif et/ou processus, source et/ou consommateur de données, présents à l’instant courant sur le bus et/ou aux autres exécutables en cours d’exécution sur la plateforme et aux dispositif ou processus, source et/ou consommateur de données pour ces autres exécutables peuvent également être rendus.Information relating to the current state of the bus, to the device and/or process, source and/or consumer of data, present at the current time on the bus and/or to other executables currently running on the platform and to the device or process, source and/or consumer of data for these other executables can also be rendered.
Le rendu peut être optionnel dans certains modes de réalisation.Rendering may be optional in certain embodiments.
Dans certains modes de réalisation, le procédé peut comprendre une mise à jour 352 éventuelle de l’exécutable actif. Une telle mise à jour 352 peut prendre par exemple la forme d’un remplacement d’une version antérieure d’un processus actif par une version ultérieure (générée comme déjà exposé par le procédé de la présente demande). Dans certains modes de réalisation, l’exécutable actif peut par exemple recevoir via un canal spécifique du bus de donnée une commande de désabonnement à au moins un canal sélectionné (ou en variante une commande de désabonnement à une source de données utilisant ce canal) et une nouvelle commande d’abonnement à un nouveau canal (ou en variante une nouvelle commande d’abonnement à une source de données utilisant ce canal) .L’exécution d’une telle commande peut par exemple comprendre une validation automatique de la commande, utilisant la table de conversion introduite précédemment.In certain embodiments, the method may include a possible update 352 of the active executable. Such an update 352 can for example take the form of replacing a previous version of an active process with a later version (generated as already explained by the process of the present application). In certain embodiments, the active executable can for example receive via a specific channel of the data bus a command to unsubscribe to at least one selected channel (or alternatively a command to unsubscribe to a data source using this channel) and a new subscription command to a new channel (or alternatively a new subscription command to a data source using this channel). The execution of such a command may for example include automatic validation of the command, using the conversion table introduced previously.
Une telle mise à jour peut par exemple survenir lorsque les données d’une source de données nouvellement présentes dans le système (un capteur par exemple), sont plus pertinentes que celles d’une source de données déjà présentes dans le système.Such an update can, for example, occur when the data from a data source newly present in the system (a sensor for example), are more relevant than those from a data source already present in the system.
Une telle possibilité de mise à jour peut être optionnelle dans certains modes de réalisation.Such an update possibility may be optional in certain embodiments.
Dans l’exemple illustré en
Dans certains modes de réalisation, la mise en correspondance peut être effectuée manuellement, par exemple après le lancement de l’exécutable actif. Dans de tels modes de réalisation, la mise en correspondance peut être effectuée plusieurs fois (par exemple quand un nouveau canal de données, ou une nouvelle source de données paraît intéressant à un opérateur, ou quand un nouveau consommateur de données, pouvant être intéressé par le résultat de l’exécution de l’application passive est nouvellement présent dans le système). Dans de tels modes de réalisation, pouvant induire une modification des souscriptions aux canaux du bus de données, le module logiciel peut comprendre un désabonnement de certains canaux.In some embodiments, the matching may be performed manually, for example after launching the active executable. In such embodiments, the matching can be performed several times (for example when a new data channel, or a new data source appears interesting to an operator, or when a new data consumer, who may be interested in the result of the execution of the passive application is newly present in the system). In such embodiments, which may induce a modification of subscriptions to data bus channels, the software module may include an unsubscription of certain channels.
De tels modes de réalisation peuvent permettre par exemple de modifier les sources de données utilisées comme paramètres d’entrée de l’application passive, comme de modifier l’utilisation des résultats d’exécution de l’application, sans arrêter l’exécution de l’exécutable actif.Such embodiments may make it possible, for example, to modify the data sources used as input parameters of the passive application, such as to modify the use of the execution results of the application, without stopping the execution of the application. 'active executable.
Le procédé objet de la présente demande a été détaillé ci-dessus.The process which is the subject of the present application has been detailed above.
Un tel procédé, dans au moins certains de ses modes de réalisation; peut par exemple aider un opérateur à construire et à lancer (par exemple de façon simple) des exécutables actifs, ou autonomes, utilisant des procédures automatisées, et éventuellement à combiner facilement ces exécutables (par exemple via des fonctionnalités de chainage d’action offertes par une interface homme machine de la plateforme), par exemple via des fonctionnalités de chainage connues sous le nom de « low code » (comme par exemple l’outil « NodeRed »).Such a method, in at least some of its embodiments; can for example help an operator to build and launch (for example in a simple way) active or autonomous executables, using automated procedures, and possibly to easily combine these executables (for example via action chaining functionalities offered by a human machine interface of the platform), for example via chaining functionalities known as “low code” (such as the “NodeRed” tool).
On présente un exemple d’utilisation du procédé de la présente demande en liaison avec la
Le procédé est mis en œuvre:
- d’une part pour obtenir une première procédure P1 automatique effectuant un contrôle visuel de la qualité des pièces produites par la machine industrielle, avec arrêt du convoyeur et génération d’un message (email, sms) en cas de défaut,
- et d’autre part pour obtenir une seconde procédure P2 automatique limitant l’accès à une zone Z1 510 dans laquelle est effectué le contrôle par la procédure P1 car celle-ci peut présenter un danger pour des opérateurs du fait des arrêt et redémarrage du convoyeur.
- on the one hand to obtain a first automatic P1 procedure carrying out a visual check of the quality of the parts produced by the industrial machine, with stopping of the conveyor and generation of a message (email, SMS) in the event of a defect,
- and on the other hand to obtain a second automatic P2 procedure limiting access to a zone Z1 510 in which the control is carried out by the P1 procedure because this can present a danger for operators due to stopping and restarting of the conveyor .
L’automatisation de la procédure P1 nécessite par exemple le déploiement d’un exécutable actif (ici un Image Docker) I1 créé , selon le procédé de la présente demande, à partir d’une application IA1 d’un fournisseur F1, spécialisé en vision par ordinateur.The automation of the procedure P1 requires for example the deployment of an active executable (here a Docker Image) I1 created, according to the method of the present application, from an application IA1 from a supplier F1, specialized in vision by computer.
Par exemple, l’application passive A1 peut être une application mettant en œuvre des techniques d’intelligence artificielle (IA) pour détecter des fissures dans un objet, et ayant :
- un paramètre d’entrée au format Base64, JPEG (pour « Joint Photographic Expert Group »), PNG (pour » Portable Network Graphics »), SVG (pour « Scalable Vector Graphics »), ou WebP (pour « Web Picture » ), permettant à l’application d’acquérir une photo de l’objet ;
- un paramètre de sortie sous forme d’un booléen, ou JSON représentatif de la détection ou non d’une fissure et/ou éventuellement de la localisation sur l’image de la fissure.
- an input parameter in Base64, JPEG (for “Joint Photographic Expert Group”), PNG (for “Portable Network Graphics”), SVG (for “Scalable Vector Graphics”), or WebP (for “Web Picture”) format, allowing the application to acquire a photo of the object;
- an output parameter in the form of a Boolean, or JSON representing the detection or not of a crack and/or possibly the location on the image of the crack.
Dans une zone de supervision 530, un collecteur de données 532 en provenance de capteurs collecte 522 en temps réel les données des capteurs. Ainsi, à chaque détection la caméra C1 transmet ses données (ici des images) au collecteur 532 qui les distribue via le bus de données 538 (par exemple sur des canaux spécifiques) aux exécutables I1 534 et I2 536.In a supervision zone 530, a data collector 532 from sensors collects sensor data 522 in real time. Thus, at each detection the camera C1 transmits its data (here images) to the collector 532 which distributes them via the data bus 538 (for example on specific channels) to the executables I1 534 and I2 536.
L’exécutable actif I1 souscrit par exemple à un canal de données S1 véhiculant des données de format base 64 (correspondant par exemple à des images publiées par une caméra C1 512 située à proximité du convoyeur).The active executable I1 subscribes for example to a data channel S1 conveying base 64 format data (corresponding for example to images published by a camera C1 512 located near the conveyor).
L’exécutable actif I1 reçoit ainsi les images de la caméra C1 et les utilise pour invoquer l’application IA1 qui analyse ces images.The active executable I1 thus receives the images from the camera C1 and uses them to invoke the application IA1 which analyzes these images.
Les images peuvent par exemple être véhiculées dans un format binaire via un des canaux ou être véhiculées en format Base64 .The images can for example be conveyed in a binary format via one of the channels or be conveyed in Base64 format.
L’exécutable I1 publie à chaque analyse d’une image par l’application IA1 le résultat (booléen) de cette analyse dans un second canal S2.The executable I1 publishes each time an image is analyzed by the application IA1 the result (Boolean) of this analysis in a second channel S2.
Dans cet exemple, un exécutable « lowcode » LC1 peut en outre être créé pour utiliser les résultats fournis via le canal S2 par l’exécutable I1. Par exemple l’exécutable LC1 peut souscrire au canal S2 et à chaque réception via ce canal d’une donnée (« True » par exemple) indiquant un défaut, il envoie un email ou sms d’alerte à un contact dont les coordonnées sont accessibles à l’exécutable LC1.In this example, a lowcode executable LC1 can additionally be created to use the results provided via the S2 channel by the executable I1. For example, the LC1 executable can subscribe to the S2 channel and each time data is received via this channel (“True” for example) indicating a fault, it sends an email or SMS alert to a contact whose contact details are accessible to the LC1 executable.
Par ailleurs, l’automatisation de la procédure P2 nécessite par exemple le déploiement d’un exécutable actif (ici un Image Docker également) I2 créé, selon le procédé de la présente demande, à partir d’une application IA2 d’un fournisseur F2, spécialisé dans la détection de franchissement.Furthermore, the automation of the P2 procedure requires, for example, the deployment of an active executable (here also a Docker Image) I2 created, according to the method of the present application, from an IA2 application from a supplier F2 , specialized in crossing detection.
L’exécutable actif I2 souscrit par exemple au même canal de données S1 que l’exécutable actif I1 (véhiculant des données de format base 64 correspondant par exemple à des images publiées par la même caméra C1.The active executable I2 subscribes for example to the same data channel S1 as the active executable I1 (carrying base 64 format data corresponding for example to images published by the same camera C1.
L’exécutable actif I2 536 reçoit ainsi les images de la caméra C1 et les utilise pour invoquer l’application IA2 qui analyse ces images pour détecter un franchissement d’un délimitateur de zone (ici Z1). L’exécutable I2 publie à chaque analyse d’une image par l’application IA2 le résultat (booléen) de cette analyse dans un troisième canal S3. Un exécutable de type « low code » (par exemple l’exécutable LC1 ou un autre exécutable) souscrire au canal S3 et à chaque réception via ce canal S3 d’une donnée (« True » par exemple) indiquant un franchissement du délimitateur de la zone Z1, il envoie un email ou sms d’alerte à un contact dont les coordonnées sont accessibles à l’exécutable LC1. L’exécutable IA2 publie une donnée (par exemple une donnée booléenne dont la valeur correspondant à une commande d’arrêt par exemple) dans le canal des contrôleurs des machines M1 et M2 qui à leur tour détectent cette donnée et interprètent cette valeur et arrêtent 524 les convoyeurs M1 et M2 (par exemple des jumeaux numériques des machines M1 et M2).The active executable I2 536 thus receives the images from camera C1 and uses them to invoke the IA2 application which analyzes these images to detect the crossing of a zone delimiter (here Z1). The I2 executable publishes each time an image is analyzed by the IA2 application the result (Boolean) of this analysis in a third S3 channel. A “low code” type executable (for example the LC1 executable or another executable) subscribes to the S3 channel and each time data is received via this S3 channel (“True” for example) indicating a crossing of the delimiter of the zone Z1, it sends an email or SMS alert to a contact whose contact details are accessible to the LC1 executable. The executable IA2 publishes data (for example Boolean data whose value corresponds to a stop command for example) in the channel of the controllers of the machines M1 and M2 which in turn detect this data and interpret this value and stop 524 the M1 and M2 conveyors (e.g. digital twins of the M1 and M2 machines).
L’exemple ci-dessus montre l’application du procédé de la présente demande pour obtenir, de façon au moins partiellement automatique, et plus facilement que certaines solutions de l’art antérieur, des procédures complexes de contrôle, particulière aux besoins d’un système et/ou de ses utilisateurs.The example above shows the application of the method of the present application to obtain, in an at least partially automatic manner, and more easily than certain solutions of the prior art, complex control procedures, particular to the needs of a system and/or its users.
Des exemples d’implémentation ont été testés par les inventeurs, avec par exemple:
- une machine disposant au minimum de 2 CPU, 2Go de RAM,
- une latence inférieure à 10ms,
- un nombre d’ exécutables actifs de l’ordre d’une dizaine ;
- des connectiques USB ;
- des capacité de connectivité par Ethernet ;
- des machines industrielles du client avec automate connectable via Ethernet ou sans fil ;
- des capteurs connectables via Ethernet ou sans fil ;
- des applications comportant des techniques d’Intelligence Artificielle et/ou des services, de fournisseurs du marché.
- a machine with at least 2 CPUs, 2GB of RAM,
- a latency less than 10ms,
- a number of active executables of around ten;
- USB connectors;
- Ethernet connectivity capabilities;
- customer's industrial machines with PLC connectable via Ethernet or wireless;
- sensors connectable via Ethernet or wireless;
- applications comprising Artificial Intelligence techniques and/or services from market suppliers.
Au moins certains modes de réalisation du procédé de la présente demande peuvent aider une entreprise/un opérateur (ou utilisateur) à limiter le coût et/ou l’impact de l'automatisation d’opérations afférentes à son activité, tout en aidant à maintenir un niveau de performance de ces opérations.At least certain embodiments of the method of the present application can help a company/operator (or user) to limit the cost and/or impact of the automation of operations relating to its activity, while helping to maintain a level of performance of these operations.
Au moins certains modes de réalisation du procédé de la présente demande peuvent par exemple aider un industriel à limiter les coûts d’installation ou d’usage de matériel (comme des capteurs ou des serveurs) en lien avec une application (en utilisant par exemple du matériel déjà opérationnel en lien avec d’autres applications).At least certain embodiments of the method of the present application can for example help an industrial company to limit the costs of installation or use of equipment (such as sensors or servers) in connection with an application (for example by using hardware already operational in connection with other applications).
Au moins certains modes de réalisation du procédé de la présente demande peuvent par exemple aider un industriel à limiter la densité en matériel dans un environnement physique tel un site industriel.At least certain embodiments of the method of the present application can, for example, help an industrial company to limit the material density in a physical environment such as an industrial site.
Au moins certains modes de réalisation du procédé de la présente demande peuvent par exemple aider un industriel à limiter l’hétérogénéité de son parc logiciel et/ou matériel et/ou à simplifier les modalités de surveillance, d’évolution et/ou de maintenance de ce parc.At least certain embodiments of the method of the present application can for example help an industrial company to limit the heterogeneity of its software and/or hardware fleet and/or to simplify the methods of monitoring, evolution and/or maintenance of this park.
Au moins certains modes de réalisation du procédé de la présente demande peuvent par exemple aider un industriel à limiter les conflits d’accès à des automates de machines, dont l’impact peut être désastreuxAt least certain embodiments of the method of the present application can, for example, help an industrial company to limit conflicts of access to machine automation, the impact of which can be disastrous.
Au moins certains modes de réalisation du procédé de la présente demande peuvent par exemple aider à obtenir, de façon au moins relativement simple, des analyses de bout en bout de certaines chaînes de production..At least certain embodiments of the method of the present application can for example help to obtain, in at least a relatively simple manner, end-to-end analyzes of certain production chains.
La présente demande peut s’’appliquer à des applications logicielles « passives » diverses et notamment des applications en lien avec tout type d’équipement (comme de type « IoT » (pour « Internet of Things » selon la terminologie anglaise) ou industriel, fixe ou mobile, etc..)This application may apply to various “passive” software applications and in particular applications related to any type of equipment (such as “IoT” type (for “Internet of Things” according to English terminology) or industrial, fixed or mobile, etc.)
Par exemple, le procédé de la présente demande peut être mise en œuvre dans les sites industriels possédant un parc de machines équipées d’automates, pour aider à automatiser des procédures complexes. Ainsi, il peut par exemple créer des exécutables actifs à partir d’applications « passives » de divers fournisseurs, par exemple des fournisseurs spécialisés dans les problématiques suivantes :For example, the process of the present application can be implemented in industrial sites having a fleet of machines equipped with automation, to help automate complex procedures. For example, it can create active executables from “passive” applications from various suppliers, for example suppliers specializing in the following issues:
Contrôle de sécurité de zone avec arrêt automatisé et notification des alertes au personnel habilité ;Area security control with automated shutdown and alert notification to authorized personnel;
Contrôle de qualité des pièces usinées à la sortie de machines d’usinage avec isolement des pièces défectueuses (par exemple dans des zones différentes selon leur niveau et/ou type de défaut) ;Quality control of machined parts at the exit of machining machines with isolation of defective parts (for example in different areas depending on their level and/or type of defect);
Application de calibrage automatique après détection de défaut ;Application of automatic calibration after fault detection;
Détection préventive de panne via des capteurs de vibration et des applications mettant en œuvre des techniques d’’Intelligence Artificielles associéesPreventive fault detection via vibration sensors and applications implementing associated Artificial Intelligence techniques
Collecte de données et génération de statistiques et aux métriquesData collection and generation of statistics and metrics
Modifications de procédures de production à la volée et mesure des impacts de différentes versions de procédures.Modifications to production procedures on the fly and measurement of the impacts of different versions of procedures.
Claims (10)
- Une obtention du code binaire de ladite application passive et d’une désignation du ou des type(s) de données consommées et/ou produites par ladite application ;
- Une sélection au moins partiellement automatique d’au moins un accès aux données d’au moins une source de données dudit réseau et/ou vers au moins un consommateur de données dudit réseau, ladite sélection tenant compte dudit au moins un type désigné et d’au moins un type de données attendu via ledit accès;
- Une création automatique d’un exécutable actif dont au moins un processus logiciel comprend une invocation de ladite application passive avec en paramètre(s) d’entrée au moins une donnée obtenue via ledit accès et/ou avec en paramètre(s) de sortie au moins une donnée à émettre via ledit accès.
- Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and/or produced by said application;
- An at least partially automatic selection of at least one access to data from at least one data source of said network and/or to at least one data consumer of said network, said selection taking into account said at least one designated type and at least one type of data expected via said access;
- An automatic creation of an active executable of which at least one software process includes an invocation of said passive application with as input parameter(s) at least one piece of data obtained via said access and/or with as output parameter(s) at least one piece of data to be transmitted via said access.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR2210691A FR3140970A1 (en) | 2022-10-17 | 2022-10-17 | Method for deploying at least one software application, electronic device and corresponding computer program product |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR2210691 | 2022-10-17 | ||
FR2210691A FR3140970A1 (en) | 2022-10-17 | 2022-10-17 | Method for deploying at least one software application, electronic device and corresponding computer program product |
Publications (1)
Publication Number | Publication Date |
---|---|
FR3140970A1 true FR3140970A1 (en) | 2024-04-19 |
Family
ID=84362168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR2210691A Pending FR3140970A1 (en) | 2022-10-17 | 2022-10-17 | Method for deploying at least one software application, electronic device and corresponding computer program product |
Country Status (1)
Country | Link |
---|---|
FR (1) | FR3140970A1 (en) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120054716A1 (en) * | 2010-08-24 | 2012-03-01 | Thales | Deployment method and device and assistance in deploying components forming an embedded real time system |
US20190286424A1 (en) * | 2017-06-03 | 2019-09-19 | Apple Inc. | Integration of learning models into a software development system |
-
2022
- 2022-10-17 FR FR2210691A patent/FR3140970A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120054716A1 (en) * | 2010-08-24 | 2012-03-01 | Thales | Deployment method and device and assistance in deploying components forming an embedded real time system |
US20190286424A1 (en) * | 2017-06-03 | 2019-09-19 | Apple Inc. | Integration of learning models into a software development system |
Non-Patent Citations (1)
Title |
---|
VAN ENGELEN ROBERT: "Code generation techniques for developing light-weight XML Web services for embedded devices", PROCEEDINGS ACM SAC, 14 March 2004 (2004-03-14), 2 Penn Plaza, Suite 701New YorkNY10121-0701USA, pages 854 - 861, XP055963746, ISBN: 978-1-58113-812-2, Retrieved from the Internet <URL:https://dl.acm.org/doi/pdf/10.1145/967900.968075> [retrieved on 20230509], DOI: 10.1145/967900.968075 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9058571B2 (en) | Tool for automated transformation of a business process definition into a web application package | |
US10635433B2 (en) | Cross application behavior customization | |
US8843832B2 (en) | Architecture, system and method for a real-time collaboration interface | |
EP1193948A2 (en) | Communications system based on the SOAP protocol | |
Indrasiri et al. | gRPC: up and running: building cloud native applications with Go and Java for Docker and Kubernetes | |
Helu et al. | Scalable data pipeline architecture to support the industrial internet of things | |
CN111447170B (en) | Data processing method and system, computer system and computer readable medium | |
US11294740B2 (en) | Event to serverless function workflow instance mapping mechanism | |
Di Martino et al. | A semantic IoT framework to support RESTful devices' API interoperability | |
EP3555745B1 (en) | Device for loading data into computer processing units from a data source | |
EP1255409A1 (en) | Conversion between textual and binary BIFS (Binary Format for scene) format | |
CN116860266A (en) | Application containerized deployment method and device, electronic equipment and storage medium | |
Bader et al. | Towards Enabling Cyber-Physical Systems in Brownfield Environments: Leveraging Environmental Information to Derive Virtual Representations of Unconnected Assets | |
Indrasiri et al. | Design Patterns for Cloud Native Applications | |
EP3846417B1 (en) | Method for sharing iot functionalities and device for sharing | |
CN102479082A (en) | Method and system for providing client end interface information, and client end interface generating device | |
FR3140970A1 (en) | Method for deploying at least one software application, electronic device and corresponding computer program product | |
CN109218338B (en) | Information processing system, method and device | |
US11663114B2 (en) | Method and system for automatically testing event-driven microservices | |
CN111897565A (en) | Data processing method, device and equipment based on Internet of things | |
EP3506566B1 (en) | Method and device for remote monitoring of multiple connected objects | |
CN114679458A (en) | Privatization deployment method and device suitable for multiple clouds | |
CN112783903B (en) | Method and device for generating update log | |
CN112698817A (en) | Message access method, device, system and storage medium based on micro-service architecture | |
US20110213826A1 (en) | Secretly transmitting messages over public channels |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 2 |
|
PLSC | Publication of the preliminary search report |
Effective date: 20240419 |