Schneider Electric Twido Emulation Support Mode d'emploi

Ajouter à Mes manuels
72 Des pages
Schneider Electric Twido Emulation Support Mode d'emploi | Fixfr
Twido Emulation Support
EIO0000001693 11/2016
Twido Emulation Support
Guide de la bibliothèque
EIO0000001693.02
11/2016
www.schneider-electric.com
Le présent document comprend des descriptions générales et/ou des caractéristiques techniques
des produits mentionnés. Il ne peut pas être utilisé pour définir ou déterminer l'adéquation ou la
fiabilité de ces produits pour des applications utilisateur spécifiques. Il incombe à chaque utilisateur
ou intégrateur de réaliser l'analyse de risques complète et appropriée, l'évaluation et le test des
produits pour ce qui est de l'application à utiliser et de l'exécution de cette application. Ni la société
Schneider Electric ni aucune de ses sociétés affiliées ou filiales ne peuvent être tenues pour
responsables de la mauvaise utilisation des informations contenues dans le présent document. Si
vous avez des suggestions, des améliorations ou des corrections à apporter à cette publication,
veuillez nous en informer.
Aucune partie de ce document ne peut être reproduite sous quelque forme ou par quelque moyen
que ce soit, électronique, mécanique ou photocopie, sans autorisation préalable de Schneider
Electric.
Toutes les réglementations de sécurité pertinentes locales doivent être observées lors de
l'installation et de l'utilisation de ce produit. Pour des raisons de sécurité et afin de garantir la
conformité aux données système documentées, seul le fabricant est habilité à effectuer des
réparations sur les composants.
Lorsque des équipements sont utilisés pour des applications présentant des exigences techniques
de sécurité, suivez les instructions appropriées.
La non-utilisation du logiciel Schneider Electric ou d'un logiciel approuvé avec nos produits
matériels peut entraîner des blessures, des dommages ou un fonctionnement incorrect.
Le non-respect de cette consigne peut entraîner des lésions corporelles ou des dommages
matériels.
© 2016 Schneider Electric. Tous droits réservés.
2
EIO0000001693 11/2016
Table des matières
Consignes de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . .
A propos de ce manuel. . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 1 Informations générales sur la bibliothèque
TwidoEmulationSupport . . . . . . . . . . . . . . . . . . . . . . . . .
Informations générales sur la bibliothèque TwidoEmulationSupport. .
Chapitre 2 Blocs fonction standard . . . . . . . . . . . . . . . . . . . . . . . . .
FB_Timer : temporisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FB_Counter : compteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FB_FiFo et FB_LiFo : bloc fonction Registre . . . . . . . . . . . . . . . . . .
FB_ShiftBitRegister : registre de bits à décalage . . . . . . . . . . .
Chapitre 3 Blocs fonction avancés . . . . . . . . . . . . . . . . . . . . . . . . . .
FB_ScheduleBlock : bloc fonction ScheduleBlock . . . . . . . . . . . . .
FB_Drum : programmateur cyclique . . . . . . . . . . . . . . . . . . . . . . . . . .
FB_StepCounter : compteur d'étapes . . . . . . . . . . . . . . . . . . . . . . .
FB_PID : bloc fonction PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 4 Blocs fonction de communication . . . . . . . . . . . . . . . . . .
FB_EXCH : bloc fonction d'échange . . . . . . . . . . . . . . . . . . . . . . . . . .
FB_ReadVar : bloc fonction de lecture de données . . . . . . . . . . . . . .
FB_WriteVar : bloc fonction d'écriture de données . . . . . . . . . . . . .
FB_WriteReadVar : bloc fonction de lecture et d'écriture. . . . . . . . .
FB_SendRecvMsg : bloc fonction d'envoi et de réception de message
Chapitre 5 Fonctions Twido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fonctions Twido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Glossaire
Index
EIO0000001693 11/2016
.........................................
.........................................
5
9
13
13
15
16
19
21
23
25
26
29
33
35
39
40
43
46
48
51
53
53
69
71
3
4
EIO0000001693 11/2016
Consignes de sécurité
Informations importantes
AVIS
Lisez attentivement ces instructions et examinez le matériel pour vous familiariser avec l'appareil
avant de tenter de l'installer, de le faire fonctionner, de le réparer ou d'assurer sa maintenance.
Les messages spéciaux suivants que vous trouverez dans cette documentation ou sur l'appareil
ont pour but de vous mettre en garde contre des risques potentiels ou d'attirer votre attention sur
des informations qui clarifient ou simplifient une procédure.
EIO0000001693 11/2016
5
REMARQUE IMPORTANTE
L'installation, l'utilisation, la réparation et la maintenance des équipements électriques doivent être
assurées par du personnel qualifié uniquement. Schneider Electric décline toute responsabilité
quant aux conséquences de l'utilisation de ce matériel.
Une personne qualifiée est une personne disposant de compétences et de connaissances dans le
domaine de la construction, du fonctionnement et de l'installation des équipements électriques, et
ayant suivi une formation en sécurité leur permettant d'identifier et d'éviter les risques encourus.
AVANT DE COMMENCER
N'utilisez pas ce produit sur les machines non pourvues de protection efficace du point de fonctionnement. L'absence de ce type de protection sur une machine présente un risque de blessures
graves pour l'opérateur.
AVERTISSEMENT
EQUIPEMENT NON PROTEGE


N'utilisez pas ce logiciel ni les automatismes associés sur des appareils non équipés de
protection du point de fonctionnement.
N'accédez pas aux machines pendant leur fonctionnement.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Cet automatisme et le logiciel associé permettent de commander des processus industriels divers.
Le type ou le modèle d'automatisme approprié pour chaque application dépendra de facteurs tels
que la fonction de commande requise, le degré de protection exigé, les méthodes de production,
des conditions inhabituelles, la législation, etc. Dans certaines applications, plusieurs processeurs
seront nécessaires, notamment lorsque la redondance de sauvegarde est requise.
Vous seul, en tant que constructeur de machine ou intégrateur de système, pouvez connaître
toutes les conditions et facteurs présents lors de la configuration, de l'exploitation et de la
maintenance de la machine, et êtes donc en mesure de déterminer les équipements automatisés,
ainsi que les sécurités et verrouillages associés qui peuvent être utilisés correctement. Lors du
choix de l'automatisme et du système de commande, ainsi que du logiciel associé pour une
application particulière, vous devez respecter les normes et réglementations locales et nationales
en vigueur. Le document National Safety Council's Accident Prevention Manual (reconnu aux
Etats-Unis) fournit également de nombreuses informations utiles.
Dans certaines applications, telles que les machines d'emballage, une protection supplémentaire,
comme celle du point de fonctionnement, doit être fournie pour l'opérateur. Elle est nécessaire si
les mains ou d'autres parties du corps de l'opérateur peuvent entrer dans la zone de point de
pincement ou d'autres zones dangereuses, risquant ainsi de provoquer des blessures graves. Les
produits logiciels seuls, ne peuvent en aucun cas protéger les opérateurs contre d'éventuelles
blessures. C'est pourquoi le logiciel ne doit pas remplacer la protection de point de fonctionnement
ou s'y substituer.
6
EIO0000001693 11/2016
Avant de mettre l'équipement en service, assurez-vous que les dispositifs de sécurité et de
verrouillage mécaniques et/ou électriques appropriés liés à la protection du point de fonctionnement ont été installés et sont opérationnels. Tous les dispositifs de sécurité et de verrouillage
liés à la protection du point de fonctionnement doivent être coordonnés avec la programmation des
équipements et logiciels d'automatisation associés.
NOTE : La coordination des dispositifs de sécurité et de verrouillage mécaniques/électriques du
point de fonctionnement n'entre pas dans le cadre de cette bibliothèque de blocs fonction, du
Guide utilisateur système ou de toute autre mise en œuvre référencée dans la documentation.
DEMARRAGE ET TEST
Avant toute utilisation de l'équipement de commande électrique et des automatismes en vue d'un
fonctionnement normal après installation, un technicien qualifié doit procéder à un test de
démarrage afin de vérifier que l'équipement fonctionne correctement. Il est essentiel de planifier
une telle vérification et d'accorder suffisamment de temps pour la réalisation de ce test dans sa
totalité.
AVERTISSEMENT
RISQUES INHERENTS AU FONCTIONNEMENT DE L'EQUIPEMENT



Assurez-vous que toutes les procédures d'installation et de configuration ont été respectées.
Avant de réaliser les tests de fonctionnement, retirez tous les blocs ou autres cales
temporaires utilisés pour le transport de tous les dispositifs composant le système.
Enlevez les outils, les instruments de mesure et les débris éventuels présents sur
l'équipement.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Effectuez tous les tests de démarrage recommandés dans la documentation de l'équipement.
Conservez toute la documentation de l'équipement pour référence ultérieure.
Les tests logiciels doivent être réalisés à la fois en environnement simulé et réel.
Vérifiez que le système entier est exempt de tout court-circuit et mise à la terre temporaire non
installée conformément aux réglementations locales (conformément au National Electrical Code
des Etats-Unis, par exemple). Si des tests diélectriques sont nécessaires, suivez les recommandations figurant dans la documentation de l'équipement afin d'éviter de l'endommager
accidentellement.
Avant de mettre l'équipement sous tension :
 Enlevez les outils, les instruments de mesure et les débris éventuels présents sur l'équipement.
 Fermez le capot du boîtier de l'équipement.
 Retirez toutes les mises à la terre temporaires des câbles d'alimentation entrants.
 Effectuez tous les tests de démarrage recommandés par le fabricant.
EIO0000001693 11/2016
7
FONCTIONNEMENT ET REGLAGES
Les précautions suivantes sont extraites du document NEMA Standards Publication ICS 7.1-1995
(la version anglaise prévaut) :
 Malgré le soin apporté à la conception et à la fabrication de l'équipement ou au choix et à
l'évaluation des composants, des risques subsistent en cas d'utilisation inappropriée de
l'équipement.
 Il arrive parfois que l'équipement soit déréglé accidentellement, entraînant ainsi un fonctionnement non satisfaisant ou non sécurisé. Respectez toujours les instructions du fabricant pour
effectuer les réglages fonctionnels. Les personnes ayant accès à ces réglages doivent
connaître les instructions du fabricant de l'équipement et les machines utilisées avec
l'équipement électrique.
 Seuls ces réglages fonctionnels, requis par l'opérateur, doivent lui être accessibles. L'accès aux
autres commandes doit être limité afin d'empêcher les changements non autorisés des
caractéristiques de fonctionnement.
8
EIO0000001693 11/2016
A propos de ce manuel
Présentation
Objectif du document
Ce document décrit la bibliothèque TwidoEmulationSupport, qui fournit les fonctions et blocs
fonction permettant de convertir les projets de SoMachine Basic / TwidoSoft / TwidoSuite en une
mise en œuvre compatible dans SoMachine. Pour plus d'informations sur Twido, consultez
Conversion de projets SoMachine Basic et Twido (voir SoMachine, Guide de programmation) et
les listes Ensembles de fonctionnalités du contrôleur relatives à la migration (voir SoMachine,
Guide de programmation).
Champ d'application
Ce document a été actualisé pour le lancement de SoMachine Basic V1.5.
Ce document a été actualisé pour le lancement de SoMachine V4.2.
Document(s) à consulter
Titre de documentation
Référence
SoMachine - Guide de programmation
EIO0000000067 (ENG) ;
EIO0000000069 (FRE) ;
EIO0000000068 (GER) ;
EIO0000000071 (SPA) ;
EIO0000000070 (ITA) ;
EIO0000000072 (CHS)
SoMachine Basic - Fonctions génériques - Guide de la bibliothèque EIO0000001474 (ENG);
EIO0000001475 (FRE) ;
EIO0000001476 (GER) ;
EIO0000001477 (SPA) ;
EIO0000001478 (ITA) ;
EIO0000001479 (CHS)
SoMachine Basic - Guide d'utilisation
EIO0000001693 11/2016
EIO0000001354 (ENG) ;
EIO0000001356 (FRE) ;
EIO0000001410 (GER) ;
EIO0000001357 (SPA) ;
EIO0000001358 (ITA) ;
EIO0000001359 (CHS)
9
Titre de documentation
Référence
SoMachine - Fonctions de lecture/écriture Modbus et ASCII - Guide
de la bibliothèque PLCCommunication
EIO0000000361 (ENG) ;
EIO0000000742 (FRE) ;
EIO0000000743 (GER) ;
EIO0000000744 (SPA) ;
EIO0000000745 (ITA) ;
EIO0000000746 (CHS)
Vous pouvez télécharger ces publications et autres informations techniques depuis notre site web
à l'adresse : http://download.schneider-electric.com
Information spécifique au produit
AVERTISSEMENT
PERTE DE CONTROLE





Le concepteur d'un système de commande doit envisager les modes de défaillance possibles
des chemins de commande et, pour certaines fonctions de commande critiques, prévoir un
moyen d'atteindre un état sécurisé en cas de défaillance d'un chemin, et après cette
défaillance. Par exemple, l'arrêt d'urgence, l'arrêt en cas de surcourse, la coupure de courant
et le redémarrage sont des fonctions de commande cruciales.
Des canaux de commande séparés ou redondants doivent être prévus pour les fonctions de
commande critiques.
Les chemins de commande système peuvent inclure les liaisons de communication. Une
attention particulière doit être prêtée aux implications des délais de transmission non prévus
ou des pannes de la liaison.
Respectez toutes les réglementations de prévention des accidents ainsi que les consignes de
sécurité locales.1
Chaque implémentation de cet équipement doit être testée individuellement et entièrement
pour s'assurer du fonctionnement correct avant la mise en service.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
1
Pour plus d'informations, consultez le document NEMA ICS 1.1 (dernière édition), « Safety
Guidelines for the Application, Installation, and Maintenance of Solid State Control » (Directives de
sécurité pour l'application, l'installation et la maintenance de commande statique) et le document
NEMA ICS 7.1 (dernière édition), « Safety Standards for Construction and Guide for Selection,
Installation, and Operation of Adjustable-Speed Drive Systems » (Normes de sécurité relatives à
la construction et manuel de sélection, installation et opération de variateurs de vitesse) ou son
équivalent en vigueur dans votre pays.
10
EIO0000001693 11/2016
AVERTISSEMENT
FONCTIONNEMENT INATTENDU DE L’EQUIPEMENT


N'utilisez que le logiciel approuvé par Schneider Electric pour faire fonctionner cet
équipement.
Mettez à jour votre programme d'application chaque fois que vous modifiez la configuration
matérielle physique.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Terminologie utilisée dans les normes
Les termes techniques, la terminologie, les symboles et les descriptions correspondantes
employés dans ce manuel ou figurant dans ou sur les produits proviennent généralement des
normes internationales.
Dans les domaines des systèmes de sécurité fonctionnelle, des variateurs et de l'automatisme en
général, les termes employés sont sécurité, fonction de sécurité, état sécurisé, défaut, réinitialisation du défaut, dysfonctionnement, panne, erreur, message d'erreur, dangereux, etc.
Entre autres, les normes concernées sont les suivantes :
Norme
Description
EN 61131-2:2007
Automates programmables - Partie 2 : exigences et essais des équipements
ISO 13849-1:2008
Sécurité des machines - Parties des systèmes de commande relatives à la
sécurité Principes généraux de conception
EN 61496-1:2013
Sécurité des machines - Équipements de protection électro-sensibles Partie 1 : prescriptions générales et essais
ISO 12100:2010
Sécurité des machines - Principes généraux de conception - Appréciation du
risque et réduction du risque
EN 60204-1:2006
Sécurité des machines - Équipement électrique des machines - Partie 1 : règles
générales
EN 1088:2008
ISO 14119:2013
Sécurité des machines - Dispositifs de verrouillage associés à des protecteurs
- Principes de conception et de choix
ISO 13850:2006
Sécurité des machines - Fonction d'arrêt d'urgence - Principes de conception
EN/IEC 62061:2005
Sécurité des machines - Sécurité fonctionnelle des systèmes de commande
électrique, électronique et électronique programmable relatifs à la sécurité
IEC 61508-1:2010
Sécurité fonctionnelle des systèmes électriques/électroniques/électroniques
programmables relatifs à la sécurité - Exigences générales
IEC 61508-2:2010
Sécurité fonctionnelle des systèmes électriques/électroniques/électroniques
programmables relatifs à la sécurité - Exigences pour les systèmes
électriques/électroniques/électroniques programmables relatifs à la sécurité
EIO0000001693 11/2016
11
Norme
Description
IEC 61508-3:2010
Sécurité fonctionnelle des systèmes électriques/électroniques/électroniques
programmables relatifs à la sécurité - Exigences concernant les logiciels
IEC 61784-3:2008
Communications numériques pour les systèmes de mesure et de commande Bus de terrain de sécurité fonctionnelle
2006/42/EC
Directive Machines
2014/30/EU
Directive sur la compatibilité électromagnétique
2014/35/EU
Directive sur les basses tensions
De plus, des termes peuvent être utilisés dans le présent document car ils proviennent d'autres
normes telles que :
Norme
Description
Série IEC 60034
Machines électriques rotatives
Série IEC 61800
Entraînements électriques de puissance à vitesse variable
Série IEC 61158
Communications numériques pour les systèmes de mesure et de commande Bus de terrain utilisés dans les systèmes de commande industriels
Enfin, le terme zone de fonctionnement utilisé dans le contexte de la description de dangers
spécifiques a la même signification que les termes zone dangereuse ou zone de danger employés
dans la directive Machines (2006/42/EC) et la norme ISO 12100:2010.
NOTE : Les normes susmentionnées peuvent s'appliquer ou pas aux produits cités dans la
présente documentation. Pour plus d'informations sur chacune des normes applicables aux
produits décrits dans le présent document, consultez les tableaux de caractéristiques de ces
références de produit.
12
EIO0000001693 11/2016
Twido Emulation Support
Informations générales sur la bibliothèque TwidoEmulationSupport
EIO0000001693 11/2016
Chapitre 1
Informations générales sur la bibliothèque TwidoEmulationSupport
Informations générales sur la bibliothèque
TwidoEmulationSupport
Informations générales sur la bibliothèque TwidoEmulationSupport
Conversion de blocs fonction
Les options suivantes sont fournies pour la conversion de blocs fonction :
Le bloc fonction est converti en un type qui existe déjà dans SoMachine, par exemple dans la
bibliothèque standard.
Pour plus d'informations sur les bibliothèques standard, reportez-vous à la rubrique SoMachine
/ CoDeSys Libraries/ Standard Library de l'aide en ligne.
 Un nouveau bloc fonction entièrement compatible avec SoMachine Basic est mis en œuvre et
fait partie de la bibliothèque TwidoEmulationSupport.
 Pour les fonctions et blocs fonction non conçus pour être utilisés dans un projet SoMachine, le
convertisseur peut générer un type sans mise en œuvre.

Pour plus d'informations sur la conversion de blocs fonction, consultez Conversion de projets
SoMachine Basic et Twido (voir SoMachine, Guide de programmation).
EIO0000001693 11/2016
13
Informations générales sur la bibliothèque TwidoEmulationSupport
14
EIO0000001693 11/2016
Twido Emulation Support
Blocs fonction standard
EIO0000001693 11/2016
Chapitre 2
Blocs fonction standard
Blocs fonction standard
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
FB_Timer : temporisateur
16
FB_Counter : compteur
19
FB_FiFo et FB_LiFo : bloc fonction Registre
21
FB_ShiftBitRegister : registre de bits à décalage
23
EIO0000001693 11/2016
15
Blocs fonction standard
FB_Timer : temporisateur
Vue d'ensemble
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction FB_Timer :
Le bloc fonction %TM dans SoMachine Basic peut configurer 3 types de temporisateur :
TON (Timer On-Delay, temporisateur de délai à l'activation) : ce type de temporisateur permet
de réguler les actions de délai à l'activation.
 TOF (Timer Off-Delay, temporisateur de délai à la désactivation) : ce type de temporisateur
permet de réguler les actions de délai à la désactivation.
 TP (Timer-Pulse, temporisateur de pulsations) : ce type de temporisateur permet de générer
des impulsions d'une durée précise.

Pour plus d'informations consultez l'aide en ligne de CoDeSys dans SoMachine : CoDesSys-
Libraries/Standard Library/Timer.
NOTE : lorsque le type de temporisateur est modifié en ligne et que i_xEnable est TRUE,
l'ancien type de temporisateur sélectionné est réinitialisé et le nouveau type de temporisateur
démarre. Le comportement des sorties des blocs fonction est conforme au nouveau temporisateur
sélectionné.
Description des variables d'E/S
La bibliothèque TwidoEmulationSupport fournit la fonction FB_Timer, qui appelle le type de
temporisateur TON, TOF ou TP selon l'entrée i_etTimerType. La valeur TimeBase indiquée
permet de calculer la durée prédéfinie.
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
16
Entrée
Type de données
Description
i_xEnable
BOOL
Le front montant commence à compter
q_iCurrentValue.
i_iPreset
INT
Valeur initiale de la valeur de présélection (0
à 32 767)
i_etTimerType
ET_TimerType
Indique le type de temporisateur : TON, TOF
ou TP
EIO0000001693 11/2016
Blocs fonction standard
Entrée
Type de données
Description
i_etTimeBase
ET_TimerTimeBases
Base de temps de 1 ms, 10 ms, 100 ms, 1 s,
1 min
Par défaut : 1 min
i_etMaxVal
ET_TimerCounterMaxVal
Valeur maximale
i_xRetentive
BOOL
Comportement du temporisateur :
 TRUE : le temporisateur conserve la
valeur de la sortie q_iCurrentValue
lorsqu'il est désactivé et continue de
compter à partir de la valeur précédente
lorsqu'il est réactivé.
 FALSE : le temporisateur réinitialise la
sortie q_iCurrentValue lorsqu'il est
désactivé.
Le type de données de la variable d'entrée i_etTimerType est :
TYPE ET_TimeType:
(
TON
:= 1,
//
TOF
:= 2,
//
TP
:= 3,
//
) INT;
END_TYPE
On-delay Timer
Off-delay Timer
Pulse Timer
NOTE : Si une valeur non valide est transmise à i_etTimerType, q_xOutput conserve la valeur
FALSE et q_iCurrentValue reste à 0.
Le type de données de la variable d'entrée i_etTimeBase est :
TYPE ET_TimerTimeBases:
(
tb1MS
:= 1,
//
1 millisecond time base
tb10MS
:= 2,
//
10 millisecond time base
tb100MS
:= 3,
//
100 millisecond time base
tb1S
:= 4,
//
10 second time base
tb1M
:= 5,
//
1 minute time base
) INT;
ET_TYPE
Le type de données de la variable d'entrée i_etMaxVal est :
TYPE ET_TimerCounterMaxVal:
(
Val9999
:= 0, //
Value
Val32767 := 1
//
Value
) INT
END_TYPE
EIO0000001693 11/2016
9999
3267
17
Blocs fonction standard
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
18
Sortie
Type de données
Description
q_xOutput
BOOL
Sortie du temporisateur
q_iCurrentValue
INT
Temps écoulé
EIO0000001693 11/2016
Blocs fonction standard
FB_Counter : compteur
Présentation
Le bloc fonction FB_Counter permet de compter ou de décompter des événements.
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction
FB_Counter :
Description des variables d'E/S
La bibliothèque TwidoEmulationSupport fournit un bloc fonction FB_Counter qui appelle le bloc
fonction CTUD. Le comportement standard de CTUD est étendu par un traitement des valeurs de
présélection et un comportement de dépassement conforme à Twido.
Pour plus d'informations sur les compteurs, consultez l'aide en ligne de CoDeSys dans SoMachine
Standard Library / Counter.
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xLoad
BOOL
Règle la valeur courante sur la valeur de
présélection.
i_xReset
BOOL
Réinitialise l'entrée.
i_xCountUp
BOOL
Comptage croissant de l'entrée.
i_xCountDown
BOOL
Comptage décroissant de l'entrée.
i_iPreset
INT
Valeur de présélection
Par défaut : 32767
i_etMaxVal
ET_TimerCounterMaxVal
Valeur maximale du compteur et de
présélection
EIO0000001693 11/2016
19
Blocs fonction standard
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
20
Sortie
Type de données
Description
q_xUnderflow
BOOL
Comptage décroissant du dépassement
par valeur inférieure / vide
q_xDone
BOOL
q_iCounterValue = i_iPreset /
présélection atteinte / terminé
q_iCounterValue
INT
Valeur courante (0 à 32767)
q_xOverflow
BOOL
Comptage croissant du dépassement par
valeur supérieure / plein
EIO0000001693 11/2016
Blocs fonction standard
FB_FiFo et FB_LiFo : bloc fonction Registre
Présentation
Le bloc fonction registre dans SoMachine Basic possède 2 types :
File d'attente (FIFO)
 Pile (LIFO)

Les graphiques suivants présentent les schémas d'affectation des broches des blocs fonction
FB_FiFo et FB_LiFo :
Description des variables d'E/S
Le tableau décrit les variables d'entrée/sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée/sortie
Type de données
Description
iq_iInput
INT
Mot d'entrée (variable en lecture et écriture)
iq_iOutput
INT
Mot de sortie (variable en lecture et écriture)
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xReset
BOOL
L'entrée de réinitialisation initialise le registre à
l'état 1.
i_xStorage
BOOL
L'entrée de stockage stocke le contenu dans le
registre, en cas de front montant.
EIO0000001693 11/2016
21
Blocs fonction standard
Entrée
Type de données
Description
i_xRetrieve
BOOL
L'entrée de récupération charge un mot de
données du registre, en cas de front montant.
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
22
Sortie
Type de données
Description
q_xEmpty
BOOL
Cette sortie indique que le registre est vide.
q_xFull
BOOL
Cette sortie indique que le registre est plein.
EIO0000001693 11/2016
Blocs fonction standard
FB_ShiftBitRegister : registre de bits à décalage
Présentation
Le bloc fonction FB_ShiftBitRegister provoque un décalage vers la gauche ou la droite des
bits de données binaires. Il ne s'agit pas d'un décalage de bits circulaire. Les bits de dépassement
sont perdus.
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction
FB_ShiftBitRegister :
Description des variables d'E/S
Le tableau décrit les variables d'entrée/sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée/sortie
Type de données
Description
iq_iRegister (16 bits)
INT
Bit de registre
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xReset
BOOL
L'entrée de réinitialisation remet tous les bits à 0.
i_xShiftLeft
BOOL
En cas de front montant, décale un bit de registre
vers la gauche.
i_xShiftRight
BOOL
En cas de front montant, décale un bit de registre
vers la droite.
EIO0000001693 11/2016
23
Blocs fonction standard
24
EIO0000001693 11/2016
Twido Emulation Support
Blocs fonction avancés
EIO0000001693 11/2016
Chapitre 3
Blocs fonction avancés
Blocs fonction avancés
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
FB_ScheduleBlock : bloc fonction ScheduleBlock
26
FB_Drum : programmateur cyclique
29
FB_StepCounter : compteur d'étapes
33
FB_PID : bloc fonction PID
35
EIO0000001693 11/2016
25
Blocs fonction avancés
FB_ScheduleBlock : bloc fonction ScheduleBlock
Vue d'ensemble
Le bloc fonction FB_ScheduleBlock sert à contrôler les actions à un mois, un jour et une heure
définis.
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction
FB_ScheduleBlock :
Description des variables d'E/S
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
26
Entrée
Type de données
Description
i_xEnable
BOOL
Activez le bloc fonction FB_ScheduleBlock.
i_etStartMonth
ET_Month
Mois auquel initialiser la sortie. (janvier à
décembre).
i_etEndMonth
ET_Month
Mois auquel réinitialiser la sortie. (janvier à
décembre).
i_uiStartDay
UINT
[1 à 31] Jour de début d'activation
i_uiEndDay
UINT
[1 à 31] Jour de fin d'activation
i_uiStartHour
UINT
[0 à 23] Heure de début d'activation
i_uiEndHour
UINT
[0 à 23] Heure de fin d'activation
EIO0000001693 11/2016
Blocs fonction avancés
Entrée
Type de données
Description
i_uiStartMinute
UINT
[0 à 59] Minute de début d'activation
i_uiEndMinute
UINT
[0 à 59] Minute de fin d'activation
i_xMonday
BOOL
Exécuter l'activité le lundi
i_xTuesday
BOOL
Exécuter l'activité le mardi
i_xWednesday
BOOL
Exécuter l'activité le mercredi
i_xThursday
BOOL
Exécuter l'activité le jeudi
i_xFriday
BOOL
Exécuter l'activité le vendredi
i_xSaturday
BOOL
Exécuter l'activité le samedi
i_xSunday
BOOL
Exécuter l'activité le dimanche
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Sortie
Type de données
Description
q_xOutput
BOOL
Cette sortie est mise à 1 lorsque les
paramètres d'horodatage courants sont
compris entre les paramètres de début et de
fin de la période active.
q_etScheduleBlockDiag
ET_ScheduleBlockDiag
Code de diagnostic ET_ScheduleBlockDiag.
q_sMsg
String
Message de diagnostic
EIO0000001693 11/2016
27
Blocs fonction avancés
La structure de données DTU.ERROR (ENUM) décrit les erreurs qui se produisent lors de
l'utilisation des fonctions de la bibliothèque CAA_DtUtility. Dans cette bibliothèque, la plage de
codes d'erreur 5750-5799 est réservée à l'enregistrement du préfixe des bibliothèques. Pour plus
d'informations, consultez CAA libraries/CAA_DTUtil.library/Data
types/Enumerations/DTU.ERROR (ENUM).
28
EIO0000001693 11/2016
Blocs fonction avancés
FB_Drum : programmateur cyclique
Présentation
Le programmateur cyclique fonctionne selon un principe semblable à celui des programmateurs
cycliques électromécaniques. Il peut fournir jusqu'à 8 états qui sont activés de façon cyclique. Bien
qu'un front montant sur l'entrée i_xNextStep fasse tourner le programmateur, le numéro de
l'étape peut également être défini par le logiciel.
Chaque état du programmateur active un schéma pouvant comporter jusqu'à 16 bits de contrôle,
de sorte que le programmateur cyclique représente une sorte de machine à états.
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction FB_Drum :
Description des variables d'E/S
Le tableau décrit les variables d'entrée/sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée/sortie
Type de données
Description
iq_iStepNumberAct
INT
Numéro d'étape courante qui peut être lu et écrit.
Une fois écrite, la valeur sera prise en compte à
la prochaine exécution du bloc fonction.
EIO0000001693 11/2016
29
Blocs fonction avancés
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xReset
BOOL
L'entrée de réinitialisation règle le
programmateur cyclique sur l'étape 0.
i_xNextStep
BOOL
Un front montant sur cette entrée fait passer le
programmateur cyclique à l'étape suivante et met
à jour les bits de contrôle.
i_iNumberOfSteps
INT
1-8 (nombre d'étapes)
i_abyAssignOutputsToSteps
ARRAY OF BYTE
Attribution des sorties 0..15 aux étapes 0..7
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
30
Sortie
Type de données
Description
q_xFull
BOOL
La sortie "plein" indique que l'étape courante est
égale à la dernière étape définie.
q_x00 - q_x15
BOOL
Sorties ou bits internes associés à l'étape (16 bits
de contrôle) et définis dans l'éditeur de
configuration de SoMachine Basic.
EIO0000001693 11/2016
Blocs fonction avancés
La configuration de FB_Drum n'en est pas réellement une, mais représente un tableau d'entrées
du bloc fonction. Le graphique suivant représente l'Assistant Drum dans SoMachine Basic :
1
2
3
Nombre d'étapes disponibles dans le programmateur cyclique (jusqu'à 8).
Masque de bits 8x16 permettant d'attribuer des états à toutes les sorties en bits (ARRAY [0..15] OF BYTE
représente ce masque).
Sorties 16 bits
EIO0000001693 11/2016
31
Blocs fonction avancés
Nouveau bloc fonction dans la bibliothèque TwidoEmulationSupport :
32
EIO0000001693 11/2016
Blocs fonction avancés
FB_StepCounter : compteur d'étapes
Présentation
Le bloc fonction FB_StepCounter fournit une série d'étapes auxquelles il est possible d'attribuer
des actions. Le passage d'une étape à l'autre dépend d'événements internes ou externes.
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction
FB_StepCounter :
Description des variables d'E/S
Le tableau décrit les variables d'entrée/sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée/sortie
Type de données
Description
iq_axCurrentStep
ARRAY OF BOOL
Bits de ///compteur d'étape de 0 à 255.
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xReset
BOOL
Réinitialise le compteur d'étapes.
i_xUp
BOOL
Le passage à l'entrée de gauche incrémente le
compteur d'une étape, en cas de front montant.
i_xDown
BOOL
L'entrée de décalage à droite décrémente le
///compteur d'étapes d'une étape, en cas de front
montant.
EIO0000001693 11/2016
33
Blocs fonction avancés
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Sortie
Type de données
Description
q_byCurrentStepNumber
BYTE
Bits de ///compteur d'étape de 0 à 255.
Chaque fois qu'une étape est active, le bit associé est réglé sur 1. Le ///compteur d'étapes peut
contrôler les bits de sortie (bits de mémoire). Une seule étape d'une ///fonction pas à pas peut être
active à la fois. Si un bit dans iq_axCurrentStep est défini en externe, tous les autres bits sont
réinitialisés et q_byCurrentStepNumber est réglé en conséquence.
34
EIO0000001693 11/2016
Blocs fonction avancés
FB_PID : bloc fonction PID
Vue d'ensemble
Le bloc fonction FB_PID fournit un contrôleur PID
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction FB_PID :
L'algorithme principal est représenté par l'organigramme suivant :
Il est calculé comme suit :
EIO0000001693 11/2016
35
Blocs fonction avancés
Bien qu'une constante de temps dérivée Td nulle désactive la branche dérivée du contrôleur PID,
un gain proportionnel Kp de 0 est interdit. Cela entraînerait un gain de 100 %.
La définition d'une constante de temps intégrale Ti nulle permet de passer à une autre règle de
calcul :
Cela permettrait de centrer le signal de sortie analogique qui se trouve dans la plage [0..10000].
La valeur mesurée peut être convertie en une plage de valeurs paramétrées. Cette nouvelle plage
est alors appliquée au point de consigne ainsi qu'aux niveaux d'alarme de mesure.
Dans chaque cas, la sortie figure dans la plage [0..10000] mais peut être limitée.
Description des variables d'E/S
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
36
Entrée
Type de données
Description
i_iMeasure
INT
Variable de contrôle [1 à 10000]
i_iSetpoint
INT
Point de consigne de l'automate [1..10000] ou
[min configuré..max configuré]
i_etOpMode
ET_PidOpMode
PID / PI - Dans le cas d'un PID, elle peut être
remplacée par etCorrectorType pour assurer
la compatibilité.
i_xMeasConversion
BOOL
Active la conversion des valeurs mesurées aux
limites données, de [0 à 10000] en
[i_iConversionMin à i_iConversionMax].
i_iConversionMin
INT
Conversion de la valeur minimale.
i_iConversionMax
INT
Conversion de la valeur maximale.
i_xMeasAlarm
BOOL
Active les alarmes de la plage de valeurs
mesurée.
i_iAlarmHigh
INT
Valeur haute de seuil d'alarme pour
q_iAnalogOutput.
i_iAlarmLow
INT
Valeur basse de seuil d'alarme pour
q_iAnalogOutput.
i_iKp
INT
Facteur de gain proportionnel
i_iTi
INT
Constante de temps intégrale
i_iTd
INT
Constante de temps dérivée (ignorée dans le cas
de PI)
EIO0000001693 11/2016
Blocs fonction avancés
Entrée
Type de données
Description
i_xDirectOutput
BOOL
TRUE : action directe
FALSE : action inverse
i_xLimitOutput
BOOL
Active la limite de sortie.
i_iLimitMin
INT
Limite inférieure de sortie
i_iLimitMax
INT
Limite supérieure de sortie
i_iPWMPeriod
INT
Signal PWM
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Sortie
Type de données
Description
q_iAnalogOutput
INT
Sortie numérique de l'automate à convertir en
analogique [1 à 10000]
q_rDutyCycleOutput
REAL
Réduction à une valeur [0 à 1] pouvant être
attribuée à un module PWM manuellement.
q_xPWM
BOOL
Sortie PWM générée par voie logicielle
q_xMeasureValueLowAlarm
BOOL
Surveillance de la variable de pilotage.
Réglé sur 1 si le niveau d'alarme bas n'est pas
atteint.
q_xMeasureValueHighAlarm
BOOL
Surveillance de la variable de pilotage.
Réglé sur 1 si le niveau d'alarme haut est
dépassé.
q_etPidDiag
ET_PidDiag
Code de diagnostic émis par le contrôleur PID
q_sMsg
STRING
Message de diagnostic
La configuration du bloc PID dans SoMachine Basic fournit la ///période d'échantillonnage de
paramètres supplémentaires (dans l'onglet PID de l'Assistant PID). La période d'échantillonnage
est le temps de cycle de la tâche qui exécute le bloc PID. Pour s'assurer que le signal au niveau
de q_xPWM est correctement généré, la période i_iPWMPeriod configurée doit être un multiple
du temps d'échantillonnage. Une période PWM nulle désactive la génération de signal.
EIO0000001693 11/2016
37
Blocs fonction avancés
L'entrée i_etOpMode est du type suivant :
La sortie i_etPidDiag est du type suivant :
38
EIO0000001693 11/2016
Twido Emulation Support
Blocs fonction de communication
EIO0000001693 11/2016
Chapitre 4
Blocs fonction de communication
Blocs fonction de communication
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
FB_EXCH : bloc fonction d'échange
40
FB_ReadVar : bloc fonction de lecture de données
43
FB_WriteVar : bloc fonction d'écriture de données
46
FB_WriteReadVar : bloc fonction de lecture et d'écriture
48
FB_SendRecvMsg : bloc fonction d'envoi et de réception de message
51
EIO0000001693 11/2016
39
Blocs fonction de communication
FB_EXCH : bloc fonction d'échange
Vue d'ensemble
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction FB_EXCH :
Le contrôleur M221 peut communiquer avec un équipement esclave Modbus ou envoyer/recevoir
des messages en mode caractère (ASCII).
Twido et SoMachine Basic fournissent les fonctions suivantes pour la communication :
Instruction EXCH permettant d'émettre/recevoir des messages
 Bloc fonction de contrôle d'échange (MSG) assurant le contrôle des échanges de données

La bibliothèque TwidoEmulationSupport gère la communication avec le bloc fonction FB_EXCH.
Ce bloc fonction utilise le bloc fonction SEN.SEND_RECV_MSG de la bibliothèque PLCCommunication. Il permet d'envoyer et de recevoir les messages définis par l'utilisateur et attend une
réponse.
Description des variables d'E/S
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
40
Entrée
Type de données
Description
i_xExecute
BOOL
La fonction démarre sur le front montant.
i_xReset
BOOL
L'émission de message courante s'arrête sur le
front montant et la communication est
réinitialisée.
i_byPort
BYTE
Port de communication [1..3]
1 = Port série 1
2 = Port série 2
3 = Ethernet
EIO0000001693 11/2016
Blocs fonction de communication
Entrée
Type de données
Description
i_pbyBuffer
POINTER TO BYTE
Pointeur vers le tampon d'envoi et/ou de
réception. Les 2 premiers mots sont des mots de
commande.
2 premiers mots : 4 octets de contrôle :
1. Longueur d'octet de contrôle : L'octet de
longueur contient la longueur de la table
d'émission (250 octets au maximum), qui est
remplacée par le nombre de caractères reçus
à la fin de la réception (si la réception est
demandée).
2. Commande d'octet de contrôle : [0..2]
0 = émission seule
1 = émission/réception
2 = réception seule
3. Octet de contrôle SndBytePosDiscard : la
position de l'octet n'est pas envoyée.
4. Octet de contrôle RcvBytePosDiscard : la
position de l'octet reçu est rejetée.
i_uiLengthInByte
UINT
Longueur du tampon d'émission/réception +
2 mots de commande
i_xAsciiMode
BOOL
TRUE = mode ASCII configuré.
FALSE = mode Modbus TCP configuré.
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Sortie
Type de données
Description
q_xBusy
BOOL
q_xBusy prend la valeur TRUE lorsque la
fonction est en cours d'exécution.
q_xDone
BOOL
q_xDone prend la valeur TRUE lorsque la
fonction s'est exécutée correctement.
q_xError
BOOL
q_xError prend la valeur TRUE lorsque la
fonction est arrêtée suite à la détection d'une
erreur.
q_etExchDiag
ET_ExchDiag
Code de diagnostic.
q_sMsg
STRING [80]
Message de diagnostic.
EIO0000001693 11/2016
41
Blocs fonction de communication
Le bloc fonction FB_EXCH a les codes d'erreur suivants :
42
EIO0000001693 11/2016
Blocs fonction de communication
FB_ReadVar : bloc fonction de lecture de données
Vue d'ensemble
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction
FB_ReadVar :
le bloc fonction FB_ReadVar lit les données d'un équipement externe à l'aide du protocole
Modbus SL ou Modbus TCP.
Description des variables d'E/S
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xExecute
BOOL
La fonction est exécutée sur le front montant de
cette entrée.
NOTE : lorsque ixExecute prend la valeur
TRUE lors du premier cycle de tâche en mode
RUN après un redémarrage à chaud ou à froid, le
front montant n'est pas détecté.
i_xAbort
BOOL
Annule l'opération en cours sur le front montant.
i_iLink
INT
Indique le port utilisé pour communiquer.
 1 = Port série 1
 2 = Port série 2
 3 = Ethernet / Modbus TCP
i_iId
INT
Identificateur de l'équipement externe ciblé :
 Adresse esclave de ligne série : 1 à 247 ou
 Index Ethernet : 1 à 16
(Selon la configuration de liaison)
i_iTimeout
EIO0000001693 11/2016
INT
Définit la durée d'attente maximale de la réponse
du modem. Spécifié en ms. La valeur 0 signifie
aucun délai.
43
Blocs fonction de communication
Entrée
Type de données
Description
i_etObjType
SEN.ObjectType
La valeur du type de données énuméré
(SEN.ObjectType (voir SoMachine,
Fonctions Lecture/Ecriture Modbus et
ASCII, Guide de la bibliothèque
PLCCommunication)) contient les types d'objet
pouvant être écrits :
 MW : lecture du registre de maintien (16 bits)
 I : lecture de l'entrée numérique (1 bit)
 Q : lecture des bits de sortie (1 bit)
 IW : lecture du registre d'entrée (16 bits)
i_diFirstObj
DINT
Adresse du premier objet à partir duquel les
valeurs sont lues.
i_iQuantity
INT
Nombre d'objets à lire.
i_pbyBuffer
POINTER TO BYTE
Adresse du tampon dans lequel les valeurs
d'objet lues sont stockées.
i_astRemoteDevices
ARRAY
[1..Gc_uiRemoteAddr
essTableLen] OF
ST_RemoteDevice
Contient la liste des adresses d'équipement
distant pour la communication Modbus TCP.
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
44
Sortie
Type de données
Description
q_xDone
BOOL
q_xDone prend la valeur TRUE lorsque la
fonction s'est exécutée correctement.
q_xBusy
BOOL
q_xBusy prend la valeur TRUE lorsque la
fonction est en cours d'exécution.
q_xAborted
BOOL
q_xAborted prend la valeur TRUE lorsque la
fonction est annulée à l'aide de l'entrée
i_xAbort.
q_xError
BOOL
q_xError prend la valeur TRUE lorsque la
fonction est arrêtée suite à la détection d'une
erreur.
q_etCommError
SEN.CommunicationEr
rorCodes
q_etCommError contient la valeur des codes
d'erreur de communication
SEN.CommunicationErrorCodes
(voir SoMachine, Fonctions
Lecture/Ecriture Modbus et ASCII,
Guide de la bibliothèque
PLCCommunication).
EIO0000001693 11/2016
Blocs fonction de communication
Sortie
Type de données
Description
q_etOperError
SEN.OperationErrorC
odes
q_etOperError contient la valeur des codes
d'erreur de fonctionnement
SEN.OperationErrorCodes
(voir SoMachine, Fonctions
Lecture/Ecriture Modbus et ASCII,
Guide de la bibliothèque
PLCCommunication).
EIO0000001693 11/2016
45
Blocs fonction de communication
FB_WriteVar : bloc fonction d'écriture de données
Vue d'ensemble
Le graphique suivant présente le schéma d'affectation des broches du bloc fonction
FB_WriteVar :
Le bloc fonction FB_WriteVar écrit les données sur un équipement externe à l'aide du protocole
Modbus SL ou Modbus TCP.
Description des variables d'E/S
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xExecute
BOOL
La fonction est exécutée sur le front montant de cette
entrée.
NOTE : lorsque xExecute prend la valeur TRUE lors
du premier cycle de tâche en mode RUN après un
redémarrage à chaud ou à froid, le front montant n'est
pas détecté.
i_xAbort
BOOL
Annule l'opération en cours sur le front montant.
i_iLink
INT
Indique le port utilisé pour communiquer.
 1 = Port série 1
 2 = Port série 2
 3 = Ethernet / Modbus TCP
i_iId
INT
Identificateur de l'équipement externe ciblé :
 Adresse esclave de ligne série : 1 à 247 ou
 Index Ethernet : 1 à 16
(Selon la configuration de liaison)
NOTE : La valeur 0 est non valide et ne représente pas
un message de diffusion.
i_iTimeout
46
INT
Définit la durée d'attente maximale de la réception d'une
réponse. Spécifié en ms. La valeur 0 signifie aucun
délai.
EIO0000001693 11/2016
Blocs fonction de communication
Entrée
Type de données
Description
i_etObjType
SEN.ObjectType
La valeur du type de données énuméré
(SEN.ObjectType (voir SoMachine,
Fonctions Lecture/Ecriture Modbus et
ASCII, Guide de la bibliothèque
PLCCommunication)) contient les types d'objet
pouvant être écrits :
 MW : écriture de plusieurs registres (16 bits)
 Q : écriture de plusieurs bits de sortie (1 bit)
i_diFirstObj
DINT
Adresse du premier objet à partir duquel les valeurs
sont écrites.
i_iQuantity
INT
Nombre d'objets à écrire.
i_pbyBuffer
POINTER TO BYTE
Adresse du tampon dans lequel les valeurs d'objet à
écrire sont stockées.
i_astRemoteDevices ARRAY
[1..Gc_uiRemoteAd
dressTableLen] OF
ST_RemoteDevice
Contient la liste des adresses d'équipement distant pour
la communication Modbus TCP.
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Sortie
Type de données
Description
q_xDone
BOOL
q_xDone prend la valeur TRUE lorsque la fonction s'est
exécutée correctement.
q_xBusy
BOOL
q_xBusy prend la valeur TRUE lorsque la fonction est en
cours d'exécution.
q_xAborted
BOOL
q_xAborted prend la valeur TRUE lorsque la fonction
est annulée à l'aide de l'entrée i_xAbort.
q_xError
BOOL
q_xError prend la valeur TRUE lorsque la fonction est
arrêtée suite à la détection d'une erreur.
q_etCommError
SEN.Communication
ErrorCodes
q_etCommError contient la valeur des codes d'erreur
de communication SEN.CommunicationErrorCodes
(voir SoMachine, Fonctions
Lecture/Ecriture Modbus et ASCII, Guide de
la bibliothèque PLCCommunication).
q_etOperError
SEN.OperationErro
rCodes
q_etOperError contient la valeur des codes d'erreur
de fonctionnement SEN.OperationErrorCodes
(voir SoMachine, Fonctions
Lecture/Ecriture Modbus et ASCII, Guide de
la bibliothèque PLCCommunication).
EIO0000001693 11/2016
47
Blocs fonction de communication
FB_WriteReadVar : bloc fonction de lecture et d'écriture
Vue d'ensemble
Le bloc fonction FB_WriteReadVar sert à :
écrire des registres internes consécutifs et relire leurs valeurs pendant le même cycle
d'exécution du bloc fonction (transaction unique) ;
 écrire des registres internes consécutifs et lire différents registres.

Le graphique suivant présente le schéma d'affectation des broches du bloc fonction
FB_WriteReadVar :
Le bloc fonction FB_WriteReadVar lit et écrit des registres internes (de type MW uniquement)
sur un équipement externe utilisant le protocole Modbus. Ces opérations de lecture et d'écriture
s'effectuent au cours d'une transaction unique. Notez que l'opération d'écriture intervient en
premier.
Description des variables d'E/S
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xExecute
BOOL
La fonction est exécutée sur le front montant de cette
entrée.
NOTE : lorsque i_xExecute prend la valeur TRUE
lors du premier cycle de tâche en mode RUN après un
redémarrage à chaud ou à froid, le front montant n'est
pas détecté.
48
i_xAbort
BOOL
Annule l'opération en cours sur le front montant.
i_iLink
INT
Indique le port utilisé pour communiquer.
 1 = Port série 1
 2 = Port série 2
 3 = Ethernet / Modbus TCP
EIO0000001693 11/2016
Blocs fonction de communication
Entrée
Type de données
Description
i_iId
INT
Identificateur de l'équipement externe ciblé :
 Adresse esclave de ligne série : 1 à 247 ou
 Index Ethernet : 1 à 16
i_iTimeout
INT
Définit la durée d'attente maximale de la réponse du
modem. Spécifié en ms. La valeur 0 signifie aucun délai.
i_diFirstReadObj
DINT
Adresse du premier objet à partir duquel les valeurs
sont lues.
i_iReadQuantity
INT
Nombre d'objets à lire.
i_pbyReadBuffer
POINTER TO BYTE
Adresse du tampon dans lequel les valeurs d'objet lues
sont stockées.
i_diFirstWriteObj
DINT
Adresse du premier objet à partir duquel les valeurs
sont écrites.
i_iWriteQuantity
INT
Nombre d'objets à écrire.
i_pbyWriteBuffer
POINTER TO BYTE
Adresse du tampon dans lequel les valeurs d'objet à
écrire sont stockées.
(Selon la configuration de liaison)
i_astRemoteDevices ARRAY
[1..Gc_uiRemoteAd
dressTableLen] OF
ST_RemoteDevice
Contient la liste des adresses d'équipement distant pour
la communication Modbus TCP.
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Sortie
Type de données
Description
q_xDone
BOOL
q_xDone prend la valeur TRUE lorsque la fonction s'est
exécutée correctement.
q_xBusy
BOOL
q_xBusy prend la valeur TRUE lorsque la fonction est en
cours d'exécution.
q_xAborted
BOOL
q_xAborted prend la valeur TRUE lorsque la fonction
est annulée à l'aide de l'entrée i_xAbort.
q_xError
BOOL
q_xError prend la valeur TRUE lorsque la fonction est
arrêtée suite à la détection d'une erreur.
q_etCommError
SEN.Communication
ErrorCodes
q_etCommError contient la valeur des codes d'erreur
de communication SEN.CommunicationErrorCodes
(voir SoMachine, Fonctions
Lecture/Ecriture Modbus et ASCII, Guide de
la bibliothèque PLCCommunication).
EIO0000001693 11/2016
49
Blocs fonction de communication
50
Sortie
Type de données
Description
q_etOperError
SEN.OperationErro
rCodes
q_etOperError contient la valeur des codes d'erreur
de fonctionnement SEN.OperationErrorCodes
(voir SoMachine, Fonctions
Lecture/Ecriture Modbus et ASCII, Guide de
la bibliothèque PLCCommunication).
EIO0000001693 11/2016
Blocs fonction de communication
FB_SendRecvMsg : bloc fonction d'envoi et de réception de message
Vue d'ensemble
Le graphique suivant présente le schéma d'affectation des broches du bloc
fonctionFB_SendRecvMsg :
Le bloc fonction FB_SendRecvMsg envoie et reçoit des messages définis par l'utilisateur. Il envoie
un message sur une ligne série, puis attend une réponse. Vous pouvez également
envoyer/recevoir un message sans attendre/envoyer de réponse. Cette fonction doit être utilisée
avec un gestionnaire ASCII.
Description des variables d'E/S
Le tableau décrit les variables d'entrée du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
Entrée
Type de données
Description
i_xExecute
BOOL
La fonction est exécutée sur le front montant de cette
entrée.
NOTE : lorsque i_xExecute prend la valeur TRUE lors
du premier cycle de tâche en mode RUN après un
redémarrage à chaud ou à froid, le front montant n'est
pas détecté.
i_xAbort
BOOL
Annule l'opération en cours sur le front montant.
i_iLink
INT
Indique le port utilisé pour communiquer.
 1 = Port série 1
 2 = Port série 2
i_iTimeout
INT
Définit la durée d'attente maximale de la réception d'une
réponse. Spécifié en ms. La valeur 0 signifie aucun délai.
i_iQuantityToSend
INT
Nombre d'objets à envoyer.
i_pbyBufferToSend
POINTER TO BYTE
Adresse du tampon dans lequel les valeurs d'objet à
envoyer sont stockées. Les 2 premiers mots sont des
mots de commande.
i_iSizeRecvBuffer
INT
Nombre d'objets à recevoir.
EIO0000001693 11/2016
51
Blocs fonction de communication
Entrée
Type de données
Description
i_pbyBufferToRecv
POINTER TO BYTE
Adresse du tampon dans lequel les valeurs d'objet
reçues sont stockées.
Le tableau décrit les variables de sortie du bloc fonction dans la bibliothèque
TwidoEmulationSupport :
52
Sortie
Type de données
Description
q_xDone
BOOL
q_xDone prend la valeur TRUE lorsque la fonction s'est
exécutée correctement.
q_xBusy
BOOL
q_xBusy prend la valeur TRUE lorsque la fonction est en
cours d'exécution.
q_Aborted
BOOL
q_Aborted prend la valeur TRUE lorsque la fonction est
annulée à l'aide de l'entrée i_xAbort.
q_xError
BOOL
q_xError prend la valeur TRUE lorsque la fonction est
arrêtée suite à la détection d'une erreur.
q_etCommError
SEN.Communication
ErrorCodes
q_etCommError contient la valeur des codes d'erreur
de communication SEN.CommunicationErrorCodes
(voir SoMachine, Fonctions
Lecture/Ecriture Modbus et ASCII, Guide de
la bibliothèque PLCCommunication).
q_etOperError
SEN.OperationErro
rCodes
q_etOperError contient la valeur des codes d'erreur
de fonctionnement SEN.OperationErrorCodes
(voir SoMachine, Fonctions
Lecture/Ecriture Modbus et ASCII, Guide de
la bibliothèque PLCCommunication).
q_iQuantiyRecv
INT
Nombre d'objets reçus
EIO0000001693 11/2016
Twido Emulation Support
Fonctions Twido
EIO0000001693 11/2016
Chapitre 5
Fonctions Twido
Fonctions Twido
Fonctions Twido
Présentation
La liste suivante présente les fonctions Twido :
FC_AsciiCharToInt (voir page 54)
 FC_AsciiToInt (voir page 54)
 FC_AsciiToReal (voir page 55)
 FC_ConcatOfInt (voir page 55)
 FC_CopyArrDint (voir page 56)
 FC_CopyArrInt (voir page 56)
 FC_CopyArrReal (voir page 56)
 FC_CopyBitString (voir page 56)
 FC_CopyPackedBitString (voir page 57)
 FC_DegToRad (voir page 57)
 FC_EqualArrDint (voir page 57)
 FC_EqualArrReal (voir page 58)
 FC_FindEqDint (voir page 58)
 FC_FindEqReal (voir page 58)
 FC_FindGtDint (voir page 59)
 FC_FindGtReal (voir page 59)
 FC_FindLtDint (voir page 59)
 FC_FindLtReal (voir page 60)
 FC_HiOfDint (voir page 60)
 FC_IntToAscii (voir page 60)
 FC_Lkup (voir page 60)
 FC_LoOfDint (voir page 62)
 FC_MaxArrDint (voir page 62)
 FC_MaxArrReal (voir page 62)
 FC_MeanArrReal (voir page 62)
 FC_MinArrDint (voir page 63)
 FC_MinArrReal (voir page 63)
 FC_MoveArrDint (voir page 63)
 FC_MoveArrInt (voir page 63)
 FC_MoveArrReal (voir page 64)
 FC_OccurArrDint (voir page 64)

EIO0000001693 11/2016
53
Fonctions Twido












FC_OccurArrReal (voir page 64)
FC_RadToDeg (voir page 64)
FC_RealToAscii (voir page 65)
FC_RolArrDint (voir page 65)
FC_RolArrReal (voir page 65)
FC_RorArrDint (voir page 66)
FC_RorArrReal (voir page 66)
FC_Round (voir page 66)
FC_SortArrDint (voir page 67)
FC_SortArrReal (voir page 67)
FC_SumArrDint (voir page 68)
FC_SumArrReal (voir page 68)
FC_AsciiCharToInt
Cette fonction renvoie les deux caractères sous la forme d'une valeur entière.
Valeurs d'entrée
i_sChar : STRING avec 2 caractères.
Valeurs renvoyées
Renvoie les caractères sous la forme d'une valeur entière.
Si la chaîne est non valide, la variable globale G_xSystemBitS18 prend la valeur TRUE.
FC_AsciiToInt
La fonction de conversion d'ASCII en entier convertit une valeur de type chaîne ASCII en sa valeur
entière correspondante.
Nom dans SoMachine Basic / Twido
ASCII_TO_INT
Valeurs d'entrée
i_psStartAddr : POINTER TO STRING ;
Valeurs renvoyées
ASCII_TO_INT : INT
Les règles de conversion d'une valeur ASCII en valeur entière sont les suivantes :
 La valeur ASCII doit être comprise entre -32 768 et 32 767.
 La fonction lit toujours l'octet de poids fort en premier.
 Tout caractère ASCII en dehors de l'intervalle [0...9] ([30 hex - 39 hex]]) est considéré
comme un caractère de fin, à l'exception du signe moins '-' (2D hex) lorsqu'il est le premier
caractère.
 En cas de dépassement (> 32 767 ou < -32 768), la variable globale G_xSystemBitS18
(erreur détectée ou dépassement arithmétique) est réglée sur 1 et la valeur 32 767 ou -32 768
est renvoyée.
 Si le premier caractère de l'opérande est un caractère de « fin », la valeur 0 est renvoyée et la
variable globale G_xSystemBitS18 est mise à TRUE.
54
EIO0000001693 11/2016
Fonctions Twido
FC_AsciiToReal
La fonction de conversion d'ASCII en REAL en entier convertit la valeur de chaîne ASCIIen sa
valeur REAL correspondante.
Nom dans SoMachine Basic / Twido
ASCII_TO_FLOAT
Valeurs d'entrée
i_psStartAddr : POINTER TO STRING
Valeurs renvoyées
FC_AsciiToReal : REAL
Les règles de conversion d'une valeur ASCII en REAL sont les suivantes :
La fonction lit l'octet de poids fort en premier.
 Tout caractère ASCII non compris dans l'intervalle [0 à 9] ([30 hex - 39 hex]) est considéré
comme un caractère de « fin », sauf les caractères suivants :
 le point décimal '.' (2E hex) ;
 le signe moins '-' (2D hex) ;
 le signe plus '+' (2B hex) ;
 l'exposant 'e' ou 'E' (65 hex ou 45 hex).





La chaîne ASCII peut figurer en notation exponentielle (c'est-à-dire « -2.34567e+13 ») ou
décimale (c'est-à-dire 9826.3457).
En cas de dépassement (si le résultat du calcul est > 3.402824E+38 ou < -3.402824E+38-) :
 La variable globale G_xSystemBitS18 (dépassement arithmétique ou erreur détectée)
prend la valeur TRUE.
 La valeur +/- 1.#INF (valeur + ou - infini) est renvoyée.
Si le résultat du calcul est compris entre -1.175494E-38 et 1.175494E-38, il est arrondi
à 0,0.
Si l'opérande n'est pas un nombre, la valeur 1.#QNAN est renvoyée et la variable globale
G_xSystemBitS18 prend la valeur TRUE.
FC_ConcatOfInt
Cette fonction concatène deux entiers en un entier double.
Nom dans SoMachine Basic / Twido
CONCATW
Valeurs d'entrée
i_iLowVal : INT
i_iHighVal : INT
Valeurs renvoyées
FC_ConcatOfInt : DINT
EIO0000001693 11/2016
55
Fonctions Twido
FC_CopyArrDint
La fonction copie un tableau de valeurs DINT dans une autre adresse mémoire donnée.
Nom dans SoMachine Basic / Twido
COPY_ARR_DINT
Valeurs d'entrée
i_pdiSource : POINTER TO DINT
i_pdiDestination : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_CopyArrDint : BOOL
FC_CopyArrInt
La fonction copie un tableau de valeurs INT dans une autre adresse mémoire donnée.
Nom dans SoMachine Basic / Twido
COPY_ARR_INT
Valeurs d'entrée
i_piSource : POINTER TO INT
i_piDestination : POINTER TO INT
i_bySize : BYTE
Valeurs renvoyées
FC_CopyArrInt : BOOL
FC_CopyArrReal
La fonction copie un tableau de valeurs REAL dans une autre adresse mémoire donnée.
Nom dans SoMachine Basic / Twido
COPY_ARR_REAL
Valeurs d'entrée
i_prSource : POINTER TO REAL
i_prDestination : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_CopyArrReal : BOOL
FC_CopyBitString
La fonction copie un tableau de valeurs BOOL dans une autre adresse mémoire donnée.
56
Nom dans SoMachine Basic / Twido
COPY_ARR_BOOL
Valeurs d'entrée
i_pxSource : POINTER TO BOOL
i_pxDestination : POINTER TO BOOL
i_bySize : BYTE
Valeurs renvoyées
FC_CopyBitString : BOOL
EIO0000001693 11/2016
Fonctions Twido
FC_CopyPackedBitString
La fonction copie un BitString empaqueté de la longueur des bits i_bySize dans un autre
emplacement mémoire.
Nom dans SoMachine Basic / Twido
FC_CopyPackedBitString
Valeurs d'entrée
i_pbySource : POINTER TO BYTE
i_pbyDestination : POINTER TO BYTE
i_bySize : BYTE - limited to SIZE OF (DINT)
Valeurs renvoyées
FC_CopyPackedBitString : DINT
FC_DegToRad
La fonction FC_DegToRad convertit en radians un angle exprimé en degrés.
Nom dans SoMachine Basic / Twido
DEG_TO_RAD
Valeurs d'entrée
i_rDeg : REAL ;
Valeurs renvoyées
FC_DegToRad : REAL
Formule
Radian = Degrees * (Pi / 180)
Where,
Pi = 3.1415926535
Règles d'utilisation :
L'angle à convertir doit être compris entre -737 280 et +737 280.
Pour les valeurs situées hors de ces plages, le résultat affiché est + 1.#QNAN et la variable
globale G_xSystemBitS18 prend la valeur TRUE.
FC_EqualArrDint
La fonction FC_EqualArrDint compare 2 tables de taille définie, élément par élément. Si une
différence apparaît, le rang du premier élément dissemblable est renvoyé sous forme d'entier. S'il
n'y a aucune différence, la valeur "-1" est renvoyée.
Nom dans SoMachine Basic / Twido
EQUAL_ARR
Valeurs d'entrée
i_pdiFirstArrStartValue : POINTER TO DINT
i_pdiSecondArrStartValue : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_EqualArrDint : INT
Les adresses de début des 2 tableaux à comparer sont fournies au niveau des 2 entrées de
pointeur.
Le nombre d'éléments à comparer doit être défini à l'entrée i_bySize.
EIO0000001693 11/2016
57
Fonctions Twido
FC_EqualArrReal
La fonction FC_EqualArrReal compare 2 tables de taille définie, élément par élément. Si une
différence apparaît, le rang du premier élément dissemblable est renvoyé sous forme d'entier. S'il
n'y a aucune différence, la valeur -1 est renvoyée.
Nom dans SoMachine Basic / Twido
EQUAL_ARR
Valeurs d'entrée
i_pdiFirstArrStartValue : POINTER TO REAL
i_pdiSecondArrStartValue : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_EqualArrReal : INT
Les adresses de début des 2 tableaux à comparer sont fournies au niveau des 2 entrées de
pointeur.
Le nombre d'éléments à comparer doit être défini à l'entrée i_bySize.
FC_FindEqDint
La fonction FC_FindEqDint recherche dans un ensemble de valeurs DINT données la position
du premier élément de tableau qui est égal à une valeur donnée.
Nom dans SoMachine Basic / Twido
FIND_EQR
Valeurs d'entrée
i_diValue : DINT
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_FindEqDint : INT
Si la valeur donnée ne figure pas dans le tableau, la valeur -1 est renvoyée.
FC_FindEqReal
La fonction FC_FindEqReal recherche dans un ensemble de valeurs REAL données la position
du premier élément de tableau qui est égal à une valeur donnée définie par l'utilisateur.
Nom dans SoMachine Basic / Twido
FIND_EQR
Valeurs d'entrée
i_rValue : REAL
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_FindEqReal : INT
Si la valeur donnée ne figure pas dans le tableau, la valeur -1 est renvoyée.
58
EIO0000001693 11/2016
Fonctions Twido
FC_FindGtDint
La fonction FC_FindGtDint recherche dans un ensemble de valeurs DINT données la position
du premier élément de tableau qui est supérieur à une valeur donnée définie par l'utilisateur.
Nom dans SoMachine Basic / Twido
FIND_GTR
Valeurs d'entrée
i_diValue : DINT
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_FindGtDint : INT
Si aucun élément du tableau n'est supérieur à la valeur donnée, la valeur -1 est renvoyée.
FC_FindGtReal
La fonction FC_FindGtReal recherche dans un ensemble de valeurs REAL données la position
du premier élément de tableau qui est supérieur à une valeur donnée définie par l'utilisateur.
Nom dans SoMachine Basic / Twido
FIND_GTR
Valeurs d'entrée
i_rValue : REAL
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_FindGtReal : INT
Si aucun élément du tableau n'est supérieur à la valeur donnée, la valeur -1 est renvoyée.
FC_FindLtDint
La fonction FC_FindLtDint recherche dans un ensemble de valeurs DINT données la position
du premier élément de tableau qui est inférieur à une valeur donnée définie par l'utilisateur.
Nom dans SoMachine Basic / Twido
FIND_LTR
Valeurs d'entrée
i_diValue : DINT
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_FindLtDint : INT
Si aucun élément du tableau n'est supérieur à la valeur donnée, la valeur -1 est renvoyée.
EIO0000001693 11/2016
59
Fonctions Twido
FC_FindLtReal
La fonction FC_FindLtReal recherche dans un ensemble de valeurs REAL données la position
du premier élément de tableau qui est inférieur à une valeur donnée définie par l'utilisateur.
Nom dans SoMachine Basic / Twido
FIND_LTR
Valeurs d'entrée
i_rValue : REAL
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_FindLtReal : INT
Si aucun élément du tableau n'est supérieur à la valeur donnée, la valeur -1 est renvoyée.
FC_HiOfDint
Cette fonction extrait les bits de poids fort (MSB) d'un entier double vers un entier.
Nom dans SoMachine Basic / Twido
HW
Valeurs d'entrée
i_diVal : DINT
Valeurs renvoyées
FC_LoOfDint : INT
FC_IntToAscii
La fonction de conversion d'entier en ASCII convertit une valeur entière en sa valeur de chaîne
ASCII équivalente.
Nom dans SoMachine Basic / Twido
INT_TO_ASCII
Valeurs d'entrée
i_iVal : INT
Valeurs renvoyées
INT_TO_ASCII : ARRAY [1..4] OF INT
Les règles de conversion d'une valeur entière en valeur ASCII sont les suivantes :
La valeur entière doit être comprise entre -32768 et 32767.
 La fonction écrit toujours l'octet de poids fort en premier.
 Le caractère de fin est le « retour chariot » (ASCII 13).
 La fonction détermine automatiquement le nombre de zones %MW devant contenir des valeurs
ASCII (de 1 à 4).

FC_Lkup
La fonction FC_Lkup sert à interpoler un ensemble de données en virgule flottante X par rapport
à Y pour une valeur X donnée.
Nom dans SoMachine Basic / Twido
60
LKUP
EIO0000001693 11/2016
Fonctions Twido
Valeurs d'entrée
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_Lkup : INT
Les conditions suivantes s'appliquent à la valeur d'entrée i_prSartAddr :
 nombre pair de valeurs ;
 minimum de 6 valeurs ;
 le premier élément est la valeur x à trouver ;
 le deuxième élément est défini par la fonction : résultat de l'interpolation ;
 tous les éléments suivants sont des points de support d'interpolation par paires de X et Y.
Règles d'interpolation :
La fonction LKUP suit la règle d'interpolation linéaire, comme défini dans l'équation suivante :
Pour Xi ≤ X ≤ Xi + 1, où i = 1 … (m-1)
En supposant que les valeurs Xi sont classées dans l'ordre croissant : X1 ≤ X2 ≤ ...X...≤ Xm1 ≤ Xm
Si deux valeurs Xi consécutives sont égales (Xi=Xi+1=X), l'équation 1 entraîne une exception non
valide. Pour gérer cette exception, l'algorithme suivant est utilisé à la place de l'équation 1 :
Pour Xi = Xi+1 = X, où i = 1…(m-1).
Valeur de résultat :
La valeur de résultat indique si l'interpolation a réussi ou non.
0 : Interpolation réussie
1 : erreur d'interpolation : tableau incorrect, Xm < Xm-1
2 : erreur d'interpolation : i_rXValue hors limites, X < X1
4 : erreur d'interpolation : i_rXValue hors limites, X > Xm
8 : taille non valide du tableau de données : i_prYValue est défini comme nombre impair, ou
i_prYValue < 6
Le résultat ne contient pas la valeur d'interpolation calculée (Y). Pour une valeur (X) donnée, le
résultat de l'interpolation (Y) est contenu dans i_prYValue.
EIO0000001693 11/2016
61
Fonctions Twido
i_rXValue est la variable en virgule flottante qui contient la valeur (X) définie par l'utilisateur, pour
laquelle calculer la valeur (Y) interpolée.
La plage valide de i_rXValue est :
X1 ≤ i_rXValue ≤ Xm
FC_LoOfDint
Cette fonction extrait les bits de poids faible (LSB) d'un entier double vers un entier.
Nom dans SoMachine Basic / Twido
LW
Valeurs d'entrée
i_diVal : DINT
Valeurs renvoyées
FC_LoOfDint : INT
FC_MaxArrDint
Dans un ensemble de valeurs DINT données, cette fonction recherche la valeur maximale. La
recherche n'est effectuée que sur la longueur définie de la table.
Nom dans SoMachine Basic / Twido
MAX_ARR
Valeurs d'entrée
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_MaxArrDint : DINT
FC_MaxArrReal
Dans un ensemble de valeurs REAL données, cette fonction recherche la valeur maximale. La
recherche n'est effectuée que sur la longueur de table définie.
Nom dans SoMachine Basic / Twido
MAX_ARR
Valeurs d'entrée
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_MaxArrReal : REAL
FC_MeanArrReal
Dans un ensemble de valeurs REAL données, cette fonction sert à calculer la moyenne de la
longueur requise de la table de valeurs REAL.
62
Nom dans SoMachine Basic / Twido
MEAN
Valeurs d'entrée
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_MeanArrReal : REAL
EIO0000001693 11/2016
Fonctions Twido
FC_MinArrDint
Dans un ensemble de valeurs DINT données, cette fonction recherche la valeur minimale. La
recherche n'est effectuée que sur la longueur définie de la table.
Nom dans SoMachine Basic / Twido
MIN_ARR
Valeurs d'entrée
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_MinArrDint : DINT
FC_MinArrReal
Dans un ensemble de valeurs REAL données, cette fonction recherche la valeur minimale. La
recherche n'est effectuée que sur la longueur définie de la table.
Nom dans SoMachine Basic / Twido
MAX_ARR
Valeurs d'entrée
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_MinArrReal : REAL
FC_MoveArrDint
La fonction déplace la valeur d'entrée dans la table de valeurs DINT, d'un nombre d'éléments égal
à une valeur donnée.
Nom dans SoMachine Basic / Twido
MOVE_ARR_DINT
Valeurs d'entrée
i_diValue : DINT
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_MoveArrDint : BOOL
FC_MoveArrInt
La fonction déplace la valeur d'entrée dans la table de valeurs INT, d'un nombre d'éléments égal
à une valeur donnée.
Nom dans SoMachine Basic / Twido
MOVE_ARR_INT
Valeurs d'entrée
i_iValue : INT
i_piStartAddr : POINTER TO INT
i_bySize : BYTE
Valeurs renvoyées
FC_MoveArrInt : BOOL
EIO0000001693 11/2016
63
Fonctions Twido
FC_MoveArrReal
La fonction déplace la valeur d'entrée dans la table de valeurs REAL, d'un nombre d'éléments égal
à une valeur donnée.
Nom dans SoMachine Basic / Twido
MOVE_ARR_REAL
Valeurs d'entrée
i_rValue : REAL
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_MoveArrReal : BOOL
FC_OccurArrDint
Dans un ensemble de valeurs DINT données, cette fonction recherche le nombre d'éléments
égaux à une valeur donnée.
Nom dans SoMachine Basic / Twido
OCCUR_ARR
Valeurs d'entrée
i_diValue : DINT
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_OccurArrDint : INT
FC_OccurArrReal
Dans un ensemble de valeurs REAL données, cette fonction recherche le nombre d'éléments
égaux à une valeur donnée.
Nom dans SoMachine Basic / Twido
OCCUR_ARR
Valeurs d'entrée
i_rValue : REAL
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_OccurArrReal : INT
FC_RadToDeg
Cette fonction FC_RadToDeg convertit en degrés un angle exprimé en radians.
64
Nom dans SoMachine Basic / Twido
RAD_TO_DEG
Valeurs d'entrée
i_rRad : REAL ;
Valeurs renvoyées
FC_RadToDeg : REAL
Formule
Degree = Radian * (180 / Pi)
Where,
Pi = 3.1415926535
EIO0000001693 11/2016
Fonctions Twido
Règles d'utilisation :
L'angle à convertir doit être compris entre -4096Pi et 4096Pi.
Pour les valeurs situées hors de ces plages, le résultat affiché est + 1.#QNAN et G_xSystemBitS18 prend la valeur TRUE.
FC_RealToAscii
La fonction de REAL à ASCII convertit une valeur REAL en sa valeur de chaîne ASCII équivalente.
Nom dans SoMachine Basic / Twido
FLOAT_TO_ASCII
Valeurs d'entrée
i_rVal : REAL
Valeurs renvoyées
FC_RealToAscii : ARRAY [1..7] OF INT
Les règles de conversion d'une valeur REAL en valeur ASCII sont les suivantes :
 La fonction écrit toujours l'octet de poids fort (MSB) en premier.
 La représentation s'effectue en notation scientifique conventionnelle.
 Le résultat « Infini » ou « Pas un nombre » renvoie la chaîne « NAN ».
 Le caractère de fin est le « retour chariot » (ASCII 13).
 La précision de conversion est de 6 chiffres.
FC_RolArrDint
Dans un tableau DINT donné, cette fonction décale chaque élément de n positions vers l'adresse
de début de la liste. Les n premiers éléments sont déplacés en fin de liste.
Nom dans SoMachine Basic / Twido
ROL_ARR
Valeurs d'entrée
i_iShiftPosNumber : INT
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_RolArrDint : BOOL
Si la valeur de i_iShiftPosNumber est négative ou nulle, aucun décalage n'est effectué.
FC_RolArrReal
Dans un ensemble de valeurs REAL données, cette fonction effectue un décalage circulaire de
n positions de haut en bas des éléments.
Nom dans SoMachine Basic / Twido
ROL_ARR
Valeurs d'entrée
i_iShiftPosNumber : INT
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
EIO0000001693 11/2016
65
Fonctions Twido
Valeurs renvoyées
FC_RolArrReal : BOOL
Si la valeur de i_iShiftPosNumber est négative ou nulle, aucun décalage n'est effectué.
FC_RorArrDint
Dans un tableau DINT donné, cette fonction décale chaque élément de n positions vers l'adresse
de fin de la liste. Les n derniers éléments sont déplacés en début de liste.
Nom dans SoMachine Basic / Twido
ROR_ARR
Valeurs d'entrée
i_iShiftPosNumber : INT
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_RorArrDint : BOOL
Si la valeur de i_iShiftPosNumber est négative ou nulle, aucun décalage n'est effectué.
FC_RorArrReal
Dans un ensemble de valeurs REAL données, cette fonction effectue un décalage circulaire de
n positions de bas en haut des éléments.
Nom dans SoMachine Basic / Twido
ROL_ARR
Valeurs d'entrée
i_iShiftPosNumber : INT
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_RorArrReal : BOOL
Si la valeur de i_iShiftPosNumber est négative ou nulle, aucun décalage n'est effectué.
FC_Round
La fonction FC_Round arrondit une représentation en virgule flottante stockée dans une
chaîne ASCII.
66
Nom dans SoMachine Basic / Twido
ROUND
Valeurs d'entrée
i_psStartAddr : POINTER TO STRING ;
i_byRoundNumber : BYTE ;
Valeurs renvoyées
FC_Round : ARRAY[1..7] of INT
EIO0000001693 11/2016
Fonctions Twido
Les règles de l'instruction ROUND sont les suivantes :
 L'opérande est toujours arrondi à la valeur inférieure.
 Le caractère de fin de la chaîne de l'opérande est utilisé comme caractère de fin de la chaîne
de résultat.
 Le caractère de fin peut être tout caractère ASCII compris dans l'intervalle [0 à 9] ([30 hex 39 hex]), à l'exception des caractères suivants :
 le point '.' (2E hex),
 le signe moins '-' (2D hex),
 le signe plus '+' (2B hex),
 l'exposant 'e' ou 'E' (65 hex ou 45 hex).

Le résultat et l'opérande ne doivent pas compter plus de 13 octets, soit la taille maximale d'une
chaîne ASCII.
FC_SortArrDint
La fonction trie les éléments d'une table de valeurs DINT dans l'ordre croissant ou décroissant, et
stocke le résultat dans la même table.
Nom dans SoMachine Basic / Twido
SORT_ARR
Valeurs d'entrée
i_iSortDirection : INT
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_SortArrDint : BOOL
Le paramètre de sens i_iSortDirection indique la séquence de tri :
 sens > 0, tri dans l'ordre croissant.
 sens < 0, tri dans l'ordre décroissant.
 sens = 0, aucun tri effectué.
FC_SortArrReal
La fonction trie les éléments d'une table de valeurs DINT dans l'ordre croissant ou décroissant, et
stocke le résultat dans la même table.
Nom dans SoMachine Basic / Twido
SORT_ARR
Valeurs d'entrée
i_iSortDirection : INT
i_prStartAddr : POINTER TO REAL
i_bySize : BYTE
Valeurs renvoyées
FC_SortArrReal : BOOL
EIO0000001693 11/2016
67
Fonctions Twido
Le paramètre de sens i_iSortDirection indique l'ordre du tri :
 sens > 0, tri dans l'ordre croissant.
 sens < 0, tri dans l'ordre décroissant.
 sens = 0, aucun tri effectué.
FC_SumArrDint
La fonction FC_SumArrDint additionne un nombre déterminé d'éléments de tableau dont
l'adresse est définie à l'entrée i_pdiStartAddr. Cela signifie que la fonction effectue la somme
de tous les éléments d'une table d'objets.
Nom dans SoMachine Basic / Twido
SUM_ARR
Valeurs d'entrée
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_SumArrDint : DINT
La variable globale G_xSystemBitS18 prend la valeur TRUE lorsque le résultat est hors des
limites du format de mot double correspondant à l'opérande de la table.
FC_SumArrReal
La fonction FC_SumArrReal additionne un nombre déterminé d'éléments de tableau dont
l'adresse est définie à l'entrée i_pdiStartAddr. Cela signifie que la fonction effectue la somme
de tous les éléments d'une table d'objets.
Nom dans SoMachine Basic / Twido
SUM_ARR
Valeurs d'entrée
i_pdiStartAddr : POINTER TO DINT
i_bySize : BYTE
Valeurs renvoyées
FC_SumArrReal : REAL
La variable globale G_xSystemBitS18 prend la valeur TRUE lorsque le résultat est hors des
limites du format de mot double correspondant à l'opérande de la table.
68
EIO0000001693 11/2016
Twido Emulation Support
Glossaire
EIO0000001693 11/2016
Glossaire
!
%MW
Selon la norme IEC, %MW représente un registre de mots mémoire (par exemple, un objet
langage de type mot mémoire).
A
application
Programme comprenant des données de configuration, des symboles et de la documentation.
B
bloc fonction
Unité de programmation qui possède 1 ou plusieurs entrées et renvoie 1 ou plusieurs sorties. Les
blocs fonction (FBs) sont appelés via une instance (copie du bloc fonction avec un nom et des
variables dédiés) et chaque instance a un état persistant (sorties et variables internes) d'un appel
au suivant.
Exemples : temporisateurs, compteurs
bus d'extension
Bus de communication électronique entre des modules d'E/S d'extension et un contrôleur.
C
configuration
Agencement et interconnexions des composants matériels au sein d'un système, ainsi que les
paramètres matériels et logiciels qui déterminent les caractéristiques de fonctionnement du
système.
contrôleur
Automatise des processus industriels. On parle également de contrôleur logique programmable
(PLC) ou de contrôleur programmable.
E
E/S
Entrée/sortie
EIO0000001693 11/2016
69
Glossaire
F
fonction
Unité de programmation possédant 1 entrée et renvoyant 1 résultat immédiat. Contrairement aux
blocs fonction (FBs), une fonction est appelée directement par son nom (et non via une instance),
elle n'a pas d'état persistant d'un appel au suivant et elle peut être utilisée comme opérande dans
d'autres expressions de programmation.
Exemples : opérateurs booléens (AND), calculs, conversion (BYTE_TO_INT).
L
LSB
Acronyme de least significant bit/byte, bit/octet de poids faible. Partie d'un nombre, d'une adresse
ou d'un champ qui est écrite le plus à droite dans une valeur en notation hexadécimale ou binaire
classique.
M
MSB
Acronyme de most significant bit/byte, bit/octet de poids fort. Partie d'un nombre, d'une adresse ou
d'un champ qui est écrite le plus à gauche dans une valeur en notation hexadécimale ou binaire
classique.
P
PID
Acronyme de proportional, integral, derivative, proportionnel-intégral-dérivé. Mécanisme de retour
de boucle de contrôle générique (contrôleur) largement utilisé dans les systèmes de contrôle
industriels.
programme
Composant d'une application constitué de code source compilé qu'il est possible d'installer dans
la mémoire d'un contrôleur logique.
PWM
70
Acronyme de pulse width modulation, modulation de largeur d'impulsion. Sortie rapide qui oscille
entre OFF et ON au cours d'un cycle de service réglable, ce qui produit une forme d'onde
rectangulaire (ou carrée selon le réglage). Une PTO est bien adaptée pour effectuer la simulation
ou l'approximation d'une sortie analogique. En effet, elle régule la tension de la sortie pendant sa
période et s'avère ainsi utile dans les applications de gradation d'éclairage ou de contrôle de
vitesse (entre autres).
EIO0000001693 11/2016
Twido Emulation Support
Index
EIO0000001693 11/2016
Index
A
ASCII_TO_FLOAT, 55
ASCII_TO_INT, 54
C
CONCATW, 55
COPY_ARR_BOOL, 56
COPY_ARR_DINT, 56
COPY_ARR_INT, 56
COPY_ARR_REAL, 56
D
DEG_TO_RAD, 57
E
EQUAL_ARR, 57, 58
F
FB_Counter, 19
FB_Drum, 29
FB_EXCH, 40
FB_FiFo, 21
FB_LiFo, 21
FB_PID, 35
FB_ReadVar, 43
FB_ScheduleBlock, 26
FB_SendRecvMsg, 51
FB_ShiftBitRegister, 23
FB_StepCounter, 33
FB_Timer, 16
FB_WriteReadVar, 48
FB_WriteVar, 46
FC_AsciiCharToInt, 54
FC_AsciiToInt, 54
FC_AsciiToReal, 55
FC_ConcatOfInt, 55
EIO0000001693 11/2016
FC_CopyArrDint, 56
FC_CopyArrInt, 56
FC_CopyArrReal, 56
FC_CopyBitString, 56
FC_CopyPackedBitString, 57, 57
FC_DegToRad, 57
FC_EqualArrDint, 57
FC_EqualArrReal, 58
FC_FindEqDint, 58
FC_FindEqReal, 58
FC_FindGtDint, 59
FC_FindGtReal, 59
FC_FindLtDint, 59
FC_FindLtReal, 60
FC_HiOfDint, 60
FC_IntToAscii, 60
FC_Lkup, 60
FC_LoOfDint, 62
FC_MaxArrDint, 62
FC_MaxArrReal, 62
FC_MeanArrReal, 62
FC_MinArrDint, 63
FC_MinArrReal, 63
FC_MoveArrDint, 63
FC_MoveArrInt, 63
FC_MoveArrReal, 64
FC_OccurArrDint, 64
FC_OccurArrReal, 64
FC_RadToDeg, 64
FC_RealToAscii, 65
FC_RolArrDint, 65
FC_RolArrReal, 65
FC_RorArrDint, 66
FC_RorArrReal, 66
FC_Round, 66
FC_SortArrDint, 67
FC_SortArrReal, 67
FC_SumArrDint, 68
FC_SumArrReal, 68
FIND_EQR, 58, 58
FIND_GTR, 59, 59
71
Index
FIND_LTR, 59, 60
FLOAT_TO_ASCII, 65
H
HW, 60
I
INT_TO_ASCII, 60
L
LKUP, 60
LW, 62
T
TwidoEmulationSupport, bibliothèque
FB_Counter, 19
FB_Drum, 29
FB_EXCH, 40
FB_FiFo, 21
FB_LiFo, 21
FB_PID, 35
FB_ReadVar, 43
FB_ScheduleBlock, 26
FB_SendRecvMsg, 51
FB_ShiftBitRegister, 23
FB_StepCounter, 33
FB_Timer, 16
FB_WriteReadVar, 48
FB_WriteVar, 46
M
MAX_ARR, 62, 62, 63
MEAN, 62
MIN_ARR, 63
MOVE_ARR_DINT, 63
MOVE_ARR_INT, 63
MOVE_ARR_REAL, 64
O
OCCUR_ARR, 64, 64
R
RAD_TO_DEG, 64
ROL_ARR, 65, 65, 66
ROR_ARR, 66
ROUND, 66
S
SORT_ARR, 67, 67
SUM_ARR, 68, 68
72
EIO0000001693 11/2016

Manuels associés