Existe-t-il des API disponibles dans le commerce qui peuvent compiler / télécharger des programmes via une API?

9

Mon équipe a décidé d'utiliser un PLC pour contrôler un processus industriel qui nécessite des E / S simples et en temps réel vers des périphériques externes avec un traitement minimal. Cependant, nous nous attendons à ce que les sorties exactes nécessaires varient entre les exécutions (en fait, une exécution donnée sera très rarement répétée), et l'opérateur n'aura aucune expérience de programmation PLC / logiciel.

Bien que je ne puisse pas divulguer le produit réel, la meilleure analogie serait que nous concevons un fabricant de smoothie industriel, avec un PLC contrôlant précisément l'ouverture et la fermeture de différentes vannes en temps réel. L'opérateur utilisera notre logiciel pour concevoir une séquence personnalisée d'additions de différents réactifs et l'activation / désactivation de la machinerie lourde pertinente (par exemple, un mélangeur industriel).

Voici le défi: notre approche actuelle consiste à écrire notre propre compilateur qui traduit les instructions que l'opérateur donne (vanne ouverte A pendant 10 ms, vanne ouverte B pendant 20 ms) en logique à relais et code machine PLC. Nous téléchargerions ensuite directement notre programme auto-compilé sur l'automate via série. Tout cela devrait être automatisé afin que l'opérateur ne doive cliquer sur un bouton qu'après avoir défini sa séquence d'étapes.

Cependant, malgré mes recherches, je n'ai pas trouvé un seul fournisseur d'automates qui 1) possède un compilateur avec API ou publie suffisamment d'informations sur leur code machine API pour permettre à un utilisateur d'écrire un compilateur, 2) prend en charge le téléchargement direct de programmes vers l'automate sans utiliser le logiciel de programmation du vendeur (CX-programmer, Atmel studio, etc.).

Je suis amené à croire que nous adoptons peut-être la mauvaise approche, ou du moins ne savons pas quel produit rechercher. Les E / S sont suffisamment simples pour ne pas justifier la construction de notre propre carte, mais la fonctionnalité que nous recherchons, à savoir l'interaction de l'API avec un logiciel PC de haut niveau, ne semble pas être disponible.

Idéalement, nous aimerions télécharger le programme entier sur l'automate à la fois et ne pas envoyer d'instructions une à la fois. L'exécution de toutes les instructions sur l'automate (ou sur tout appareil que nous finissons par utiliser) doit être en temps réel.

Existe-t-il des API disponibles dans le commerce qui prennent en charge la compilation et le téléchargement de code machine, de sorte que l'ensemble du processus pourrait être automatisé par un programme plus important? Existe-t-il un autre moyen de télécharger un programme en temps réel sur un automate écrit par un logiciel PC écrit dans un langage de haut niveau?

Dragonsheep
la source
Qu'en est-il de l'utilisation d'un système d'exploitation et laissez l'utilisateur éditer votre code de programme via une interface graphique personnalisée et le compiler, par exemple avec GCC, puis télécharger le programme compilé sur votre "API".
Eggi
Pourriez-vous suggérer du matériel ou des didacticiels qui présentent la programmation et les principes RTOS? Je suis plus familier avec le développement embarqué non RT et la logique à relais traditionnelle, donc bien que je sois très intéressé par cette solution, je ne sais pas trop par où commencer.
Dragonsheep
@ Qu'est-ce qu'une API? S'il s'agit d'une "interface de programme d'application", comment compilez-vous / téléchargez-vous?
Dmitry Grigoryev
1
@Dragonsheep Mieux vaut ignorer cette idée. Il y a trop d'aspects qui ne sont pas à l'épreuve de l'industrie comme l'a déclaré Henry Cun. 1er: Comment changez-vous le code avant de compiler? Mettez-le quelque part en texte clair? 2ème: support au fil des décennies avec l'OS
Eggi

Réponses:

11

Vous pouvez certainement utiliser un API pour cela. Sauf que vous ne voulez pas changer le code PLC pour chaque "recette de smoothie".
Vous devriez écrire une application PLC qui lit les recettes de n'importe quelle source, comme les cartes SD, le stockage réseau, le stockage interne ou même les codes QR si vous en avez envie.

Souvent, les API ont déjà une fonction pour cela , où une recette est un ensemble de paramètres que vous pouvez charger (et modifier avec l'IHM).

E / S en temps réel vers des périphériques externes avec un traitement minimal

Quoi que vous choisissiez d'utiliser, n'inventez pas votre propre API . Ça ne vaut probablement pas le temps. Et ne pensez pas que le logiciel ou le module supplémentaire coûte cher, vous ne pouvez pas l'écrire pour ce prix.

Jeroen3
la source
5

Je suppose que c'est une tâche assez simple pour un PLC minimal, plutôt que quelque chose utilisant des automates industriels avancés

Je supposerai également que cela est utile sur le plan industriel, c'est-à-dire que la recette devrait pouvoir être modifiée en 10 ans par le client. Aussi que son utilité devrait vous survivre en sortant des affaires ou en passant à de nouveaux produits.

De nombreux systèmes nécessiteront un logiciel spécial pour télécharger et / ou compiler, comme vous le dites. À long terme, vos clients constateront que Windows 11,12,13 ne lancera plus le logiciel. Pour éviter cela, vous voulez que le programme soit en simple ascii, envoyé sur un port série quelconque. Cela dure depuis environ 50 ans et ne montre aucun signe de disparition.

Forth peut être "compilé" sur la cible, le client n'a donc qu'à lui envoyer de l'ascii depuis un terminal. Il ne sera jamais obsolète.

Une partie de la philosophie Forth consiste à écrire des primitives spécifiques au domaine ("AddBanana", "Blend", "Pour") que vos clients traitent comme un langage spécifique pour le produit. Bien que Forth soit considéré comme obscur par les informaticiens, il est conceptuellement très facile à utiliser pour les utilisateurs finaux - ce serait un programme valide.

10 grams Thickener 500 grams Banana 15 seconds Hi Blend 50 grams Blueberry 5 seconds slow Blend Pour 5 seconds wait CleanCycle

Par exemple, vous pouvez utiliser un petit automate basé sur Arduino et charger FlashForth Il existe de nombreux autres choix, par exemple MPEForth et un automate basé sur ARMcortex

Votre logiciel est maintenant un éditeur et un programme pour envoyer des séries. Il existe des outils standard pour cela, et longtemps après votre départ, le client peut le faire fonctionner à partir de zéro, car c'est si simple.

Un échec avec votre idée, c'est que le client programme le produit et peut bien sûr le bourrer en faisant la mauvaise chose - quelle que soit l'approche que vous prenez.

Parce qu'il ne s'agit que de fichiers ascii, il est assez facile pour vous de créer un shell sophistiqué pour le client, mais le produit fonctionnera toujours sans.

Henry Crun
la source
Merci pour la réponse! Quelque chose comme le Controllino que vous avez suggéré est exactement ce que nous recherchons! Un API minimaliste où nous avons un contrôle direct sur le logiciel et pouvons télécharger des programmes via série. Lorsque vous dites que nous avons "beaucoup d'autres choix", quels seraient les termes de recherche pertinents / quels autres produits proposez-vous? Mon équipe connaît mieux l'industrie lourde, nous avons donc manqué d'idées après avoir parcouru les catalogues habituels Siemens / Mitsubishi / Omron et ne pas avoir trouvé ce que nous recherchions.
Dragonsheep
@Dragonsheep: Nous vous recommandons d'attendre un jour ou deux avant d'accepter une réponse. Cela encourage les autres à écrire et vous obtiendrez plus de réponses et différents points de vue.
Transistor
Si c'est une approche intéressante pour vous, et que vous êtes des gens qui paient de l'argent pour les outils, l'expertise et le soutien, alors vous voudrez peut-être parler à Stephen Pelc à MPEForth. Il fait ce genre de chose commercialement. D'un autre côté, si vous êtes un logiciel libre, recherchez des modules ou des PLC basés sur Arduino et FlashForth.
Henry Crun
1
Je serais également d'accord avec @Transistor et les réponses de Jeroen: si vous avez besoin d'un API industriel, alors c'est ce dont vous avez besoin. (et les modules aléatoires Arduino plc ne sont pas assez robustes pour être des contrôleurs d'usine, plus un contrôleur à l'intérieur d'une boîte bénigne). J'aurais tendance à être en désaccord avec les solutions de type «obtenir quelque chose avec un système d'exploitation et utiliser GCC» comme conduisant probablement au pire des mondes possibles.
Henry Crun
Il s'agit en effet d'une application industrielle que nous espérons vendre à un client. Nous espérons avoir la fiabilité de plus de 20 ans que les grands fournisseurs industriels (Mitsubishi, etc.) ont démontrée avec leurs produits, il y a donc une certaine inquiétude à aller à l'un de ces nouveaux fournisseurs de matériel open source. Dans le même temps, en termes de logiciel, l'open source semble nous donner le contrôle que nous recherchons. Stephen semble être une bonne personne à contacter. Merci pour l'exemple.
Dragonsheep
2

Ne jouez pas avec Arduino, etc., pour une application industrielle. Les API sont conçus dans un souci de fiabilité, de robustesse, de normes et de support à long terme. La société pour laquelle je travaille gère au moins un automate Texas Instruments depuis 1987 et plusieurs autres depuis le début des années 1990. Les pièces de rechange sont toujours disponibles auprès de sources industrielles sur eBay, etc.

Utilisez un API et une IHM industrielle avec suffisamment de puissance pour faire ce dont vous avez besoin. J'ai récemment terminé un travail de mélangeur où nous voulions une flexibilité de recette avec des étapes automatisées et manuelles. La séquence est contrôlée en parcourant un tableau programmé via l'IHM.

  • Numéro d'étape. par exemple «5».
  • La description. Par exemple, «Pesage automatique des bananes», «Chargement manuel des cerises», «Racler».
  • Vitesse de mélange (RPM). par exemple «25».
  • Mélanger le temps (s). par exemple «120».
  • Raclage requis à la fin de l'étape? (O / N), par exemple «Y».
  • Besoin de chaleur? (O / N) par exemple «N».
  • Température (° C). par exemple «0».

Nous avons conçu le système avec une gamme de vingt étapes, ce qui est suffisant dans un avenir prévisible mais pourrait facilement être étendu, si nécessaire. Tous les paramètres ont des valeurs min et max définies dans l'application IHM.

Cela laisse le système très flexible et modifiable. Nous avons un système robuste avec un API et une IHM familiers et supportables par un grand nombre d'entreprises.

Transistor
la source
Merci pour la réponse. L'application particulière que nous avons concerne la biochimie automatisée, donc avec des centaines de réactifs et potentiellement des centaines d'étapes impliquées dans le processus que nous automatisons, je suis actuellement d'avis que tout type de programmation de dispositif IHM serait désespérément compliqué.
Dragonsheep
1

Vous n'avez pas spécifié de budget pour le matériel et les logiciels de développement ou pour le coût unitaire du matériel déployé, mais si vous pouvez vous le permettre, votre exigence pourrait certainement être satisfaite en utilisant le matériel CompactRIO de National Instruments et le logiciel LabVIEW Real-Time .

Le contrôleur CompactRIO est un contrôleur intégré robuste, fiable, de haute performance et de qualité industrielle avec des certifications standard de l'industrie.

Une gamme de modules d'E / S est disponible qui se branche sur le châssis du contrôleur, ou si votre conception est fixe et que vous souhaitez réduire le coût unitaire, les contrôleurs et les E / S sont disponibles sous forme de cartes uniques à intégrer à votre matériel. . Vous écririez un logiciel dans LabVIEW Real-Time pour l'exécuter sur le contrôleur et effectuer le contrôle de processus, ce qui pourrait également servir d'interface utilisateur Web pour éditer les étapes du processus ou communiquer avec un programme d'interface utilisateur, écrit en LabVIEW ou dans une autre langue. , s'exécutant sur un PC hôte. J'ai une expérience limitée avec les automates mais je pense qu'il est juste de dire que cette solution serait d'un ordre de grandeur plus puissante et flexible, bien que probablement à un coût plus élevé.

Notez que bien que le contrôleur cRIO soit livré avec un FPGA intégré, vous n'avez pas besoin d'acheter le module LabVIEW FPGA à moins que vous n'ayez réellement besoin d'écrire du code FPGA; il semble que le temps réel devrait convenir à vos besoins.

nekomatic
la source
0

Ma suggestion est de jeter un œil à LabVIEW. Je pense que cela répondrait aux besoins énumérés dans votre message. Évitez d'écrire votre compilateur. C'est bien plus de travail que vous n'en avez besoin. Ce sont de nombreux automates commerciaux qui feraient l'affaire. Je pense que NI est l'un des plus faciles à utiliser. En ce qui concerne le téléchargement de programmes utilisateur, vous devez créer une application pour y parvenir.

http://www.ni.com/en-us/shop/labview.html

NI dispose d'une large gamme de modules, notamment AtoD, sorties numériques, sorties analogiques, interface CAN, etc. Le logiciel est très utile pour créer de belles interfaces utilisateur. L'inconvénient est que ce n'est pas bon marché. If est également très différent de la programmation basée sur du texte. Une formation serait nécessaire.

user125718
la source