TwinCAT Database Server Mise en œuvre rapide du mode manuel VERSION : 1.0 BETA /JC DATE : 26-12 -12
Table des matières 1 Installation... 3 2 XML Configurator file editor... 4 2.1 Description des menus :... 4 2.2 Paramétrage en manuel... 6 2.3 Accès distant à la base de données (Impersonate User)... 9 3 Programme PLC... 11 3.1 Création de la base... 11 3.2 Ecriture... 16 3.3 Lecture... 17 3.4 Suppression des données... 20 4 Liens utiles... 21
1 Installation Pour installer cette fonctionnalité dans TwinCAT, il faut installer le supplément TwinCAT DataBase Server ou TwinCAT DataBase Server CE en fonction de l OS sur lequel il sera installé (on peut trouver ces suppléments sur le site www.beckhoff.fr rubrique download). Le code «DEMO» peut être utilisé lors de l installation pour une utilisation limitée du supplément, pour version complète se rapprocher de Beckhoff France pour obtenir une licence. Une fois installé, on doit avoir le répertoire suivant dans la barre de tâches Windows : L utilitaire «XML Configuration File Editor» permet de générer un fichier de configuration au format XML pour le paramétrage du serveur de base de données. On doit également avoir avec l installation du supplément, la bibliothèque «TcDatabase.lib» dans le répertoire c:\twincat\plc\lib ; celle-ci permet d utiliser des blocs fonctionnels pour la gestion de Base de données dans le projet PLC. Page 3
2 XML Configurator file editor Ce programme se présente comme ceci : 2.1 Description des menus : Page 4
New configuration file Open Save File Upload New database New ADS device New symbol group Delete Insert symbols TPY Insert symbols ROUTE Description Créer une configuration vide avec les paramètres par défaut. Ouvrir un fichier XML de configuration existant. Sauvegarde tous les changements effectués et crée un fichier de configuration nommé «CurrentConfigDataBase.xml». Uploader le fichier de configuration dans le server de BDD 1, copie également ce fichier dans le dossier boot de TwinCAT puis active la configuration. Crée une nouvelle BDD. Crée un nouveau dispositive de configuration ADS. Crée un nouveau groupe de configuration de symbole. Permet d effacer l élément sélectionné. Importe des variables/symboles depuis un fichier.tpy dans le groupe de symbole sélectionné. Importe des variables/symboles depuis un fichier.tpy dans le groupe de symbole sélectionné. Sous Item / Options on peut choisir le mode de démarrage du serveur de BDD : - «Manual» : Le serveur est actif et attend des requêtes venant du PLC par le biais des blocs fonctionnel de la bibliothèque TcDataBase.lib. Ce manuel traitera principalement de ce mode de fonctionnement. - «AutoStart» : Le server est actif et réalise l enregistrement des groupes de symbole déclarés de façon automatique à partir du moment où TwinCAT est en RUN. (Le projet doit être déclaré en boot projet). Ce mode fonctionne un peu comme de l archivage automatique de variable (PLC vers BDD ou BDD vers PLC). 1 BDD : Base De Données Page 5
Comme le montre la figure ci-dessus, en mode manuel l outil «XML configuration file Editor» sert pour la déclaration de la base de données et du périphérique ADS (PC) utilisé. 2.2 Paramétrage en manuel On peut choisir de créer et paramétrer la BDD directement depuis le PLC ou avec le configurateur. Nous allons voir dans cette partie comment paramétrer la base avec le configurateur ; au chapitre 3 nous verrons le paramétrage en PLC. Page 6
En premier lieu il faut créer la base et la paramétrer en fonction du type de base utilisé et du provider : DBType : Permet de choisir parmi une liste de type de base : Exemple de paramétrage pour une base de type MS Access : Page 7
On peut trouver le paramétrage pour les autres types à l adresse suivante : http://infosys.beckhoff.com/content/1033/tcdbserver/html/tcdbserver_dbdeclaration.htm?id=20750 il est égelement possible de rajouter une procédure d authentification en cochant la case «autentification» : On peut y spécifier un login et mot de passe pour l accès à la BDD. Ensuite il faut paramétrer le «device ADS» (c est-à-dire le PC) qui contient la base de donnée que va utiliser le serveur : On peut choisir dans la liste des PC connus du routeur TwinCAT ou entrer les éléments à la main. Une fois le paramétrage terminé, on peut soit sauvegarder le fichier XML généré dans le dossier de boot TwinCAT, puis faire changer l état de TwinCAT pour prendre en compte la modification ; où alors utiliser la commande «Upload file» pour faire tout cela automatiquement. Page 8
Le fichier généré pour la configuration du dessus est le suivant : On y retrouve les éléments que l on a paramétrés ; il est à noter qu il est possible de modifier directement ce fichier XML sans passer par le configurateur (par exemple pour changer le nom de la table ou encore l AMS Net Id de la cible). 2.3 Accès distant à la base de données (Impersonate User) Avec l option «Impersonate User» il est possible de sécuriser l accès à la base de données du périphérique distant. Page 9
Pour rendre cette option fonctionnelle il suffit de renseigner les différents paramètres d authentification du périphérique distant dans la base des registres. Les clefs à créer sont les suivantes : ->[HKEY_LOCAL_MACHINE\SOFTWARE\Beckhoff\TwinCAT\System] "ImpersonatedPassword" Contient le mot de passe pour l authentification. ->[HKEY_LOCAL_MACHINE\SOFTWARE\Beckhoff\TwinCAT\System] "ImpersonatedUserDomain" Contient le nom du domaine sur lequel l utilisateur est connecté. ->[HKEY_LOCAL_MACHINE\SOFTWARE\Beckhoff\TwinCAT\System] "ImpersonatedUserName" Contient le nom de l utilisateur. Page 10
3 Programme PLC Nous allons voir ici les principaux blocs fonctionnels pour la gestion des BDD en manuel. La liste complète de ces blocs est disponible ici : http://infosys.beckhoff.com/content/1033/tcdbserver/html/tcdbserver_intro%20lib.htm?id=20768 3.1 Création de la base Le programme PLC peut soit utiliser une base de donnée déjà créée, ou soit directement en créer une. Trois cas se présentent : 1) Le ficher de la BDD existe, on veut faire le paramétrage de l XML via le configurateur ; dans ce cas on rajoute une «Database» dans le configurateur et on renseigne celle-ci avec les paramètres de la BDD existante. On crée aussi le «Device» avec ses paramètres ; il n y aura rien à créer en PLC. 2) Le ficher de la BDD existe, on veut faire le paramétrage de l XML via le PLC ; dans ce cas il y a juste à créer le «Device» dans le configurateur (pas de «Database» à créer) : Les paramètres de la BDD seront ajoutés au fichier XML à l aide du programme PLC grâce au bloc fonctionnel suivant : Page 11
Exemple pour une base Ms Access: Le paramètre de sortie «hdbid» est un identifiant qui sera utilisé par les autres blocs fonctionnels pour accéder à la BDD. Si on n utilise pas ce bloc pour générer cet ID mais que l on passe par le configurateur, on peut le récupérer ici : Page 12
Par défaut cet ID s incrémente avec le nombre de «Database» (1 pour le Database, 2 pour la deuxième etc ). Il est également récupérable dans le fichier XML de configuration. 3) Le ficher de la BDD n existe pas et sera créé par le PLC; Dans ce cas il y a juste à créer le «Device» dans le configurateur (comme dans le cas 2) ; les paramètres de la BDD seront ajoutés au fichier XML à l aide du programme PLC. Pour créer la base dans le projet PLC on utilise le bloc fonctionnel suivant : Exemple, création d une base Ms Access : Attention tous les types de BDD ne peuvent pas être crées directement avec ce bloc fonctionnel, il n est pas possible de créer des bases de type DB2, Oracle, MySQL, PostgreSQl, InterBase et Firebird. Page 13
Apres la création, il ne faut pas oublier d appeler le bloc «FB_DBConnectionAdd» (voir exemple du cas 2), pour pouvoir rajouter les éléments dans le XML de configuration et récupérer l ID de la BDD. On peut ensuite rajouter une table à la BDD à l aide du FB suivant : Exemple de création d une table dans une base Ms Access : L un des paramètres d entrée du bloc est un pointeur sur une structure «ST_DBColumnCfg» contenant les différents champs que l on veut créer dans la base : Page 14
«SColumnName» est pour le nom du champ. «scolumnproperty» contient les propriétés SQL du champ (Exemple pour un champ de type ID on utilisera la propriété «IDENTITY(seed,increment)») Le type E_DbColumnTypes contient le type du champ les différentes valeurs possibles sont : Un exemple de déclaration pour une table avec 4 champs (ID, Article, X, Y): Page 15
3.2 Ecriture Pour réaliser une écriture dans une base de données, on peut utiliser le bloc fonctionnel suivant : On spécifie la requête SQL que l on souhaite faire exécuter avec l entrée «pcmdaddr» ; exemple: 'INSERT INTO MaTable (Article, X, Y) VALUES ($'Test$',$'1$',$'2$')'; Cette requête ajoute aux champs Article, X et Y les valeurs respectives Test, 1 et 2. Le caractère simple cote utilisé pour spécifier des valeurs doit être précédé du symbole «$» pour que le compilateur voit pas la fin de la chaine (on peut aussi utiliser son équivalent ascii $27). Un exemple d utilisation de ce FB : Note : On peut également utiliser le FB «FB_FormatString» (librairie TcUtilities.lib) pour formater la requête, ceci permet notamment de gérer les autres types de variables comme les variables réelles, exemple : Dans cet exemple X et Y seront interprétés en tant que REAL dans la chaine de requête et par la par la BDD. Page 16
3.3 Lecture La lecture peut se faire de deux manières, ligne par ligne ou un ensemble de ligne. Le plus fréquemment utilisé est la lecture multiple; le bloc à utiliser est le suivant : La sortie «nrecords» renseigne sur le nombre d élément renvoyé par la requête. L entrée «PDestAddr» doit recevoir un pointeur sur un tableau de structure ; cette structure doit contenir des variables qui reproduisent les champs demandés dans la requête. Par exemple notre BDD est composé comme ceci : On veut récupérer tous les articles de type «Piece1» ainsi que les coordonnées X et Y sans l ID. La requête SQL à utiliser (entrée pcmdaddr du FB) sera : 'Select MaTable.Article, MaTable.X, MaTable.Y From MaTable Where MaTable.Article = $'Piece1$'' Page 17
On doit stocker le résultat dans un tableau de structure, pour l exemple précédent, la structure doit être comme ceci : Il n y a pas de variable pour l ID car la requête ne demande pas de retourner ce champ. Il faut du coup déclarer un tableau de structure assez grand pour contenir le résultat de la requête. Un exemple d utilisation de ce bloc: Déclaration : Programme : Page 18
Le résultat dans le tableau de structure sera : Pour réaliser la lecture dans la BDD on peut également utiliser le FB «FB_DBRecordSelect_EX» ; son fonctionnement est très similaire à celui de l exemple précédent, sauf qu il ne permet de retourner qu un élément à la fois, il faut donc appeler celui-ci autant de fois que nécessaire en jouant sur les indexes pour parcourir la base, l intérêt est donc limité. Page 19
3.4 Suppression des données Pour effacer un élément dans une BDD on peut utiliser le bloc fonctionnel suivant : Un exemple de requête ressemblerait à : 'DELETE FROM MaTable WHERE (X = 200) AND (Y = 100)' Page 20
4 Liens utiles La documentation complète de ce supplément se trouve à cette adresse : http://infosys.beckhoff.com/content/1033/tcdbserver/html/note.htm?id=20738 Pour la version CE voir ici : http://infosys.beckhoff.com/content/1033/tcdbserverce/html/note.htm?id=20829 Ou sur l infosys installable à partir du CD de TwinCAT. Page 21
BECKHOFF AUTOMATION Sarl Immeuble "Le Montréal" ZA de Courtaboeuf 19 bis, Avenue du Québec 91951 COURTABOEUF Cedex Tél : 01 69 29 83 70 Fax : 01 69 28 40 55 www.beckhoff.fr info@beckhoff.fr