Schneider Electric TP Unite, librairie sur prise terminal Mode d'emploi
Ajouter à Mes manuels108 Des pages
▼
Scroll to page 2
of
108
Somm blc debut page _______________________________________________________ Sommaire général ___________________________________________________________________________ Chapitre 1 2 3 Page Présentation 7 1.1 But du logiciel TP UNI-TE 8 1.2 Composition du produit 10 1.3 Principe d'utilisation 1.3-1 Définition de termes et de fonctionnalités 1.3-2 Utilisation 1.3-3 Complément d'utilisation sous OS/2 11 11 12 13 1.4 Description des principales fonctions 1.4-1 Gestion du contexte de communication 1.4-2 Gestion des équipements 1.4-3 Accès aux données 1.4-4 Données non sollicitées 1.4-5 Fonction générique 1.4-6 Récupération des réponses 14 14 15 15 15 15 15 1.5 Tableaux récapitulatifs des fonctions 16 Installation 19 2.1 Installation sous DOS 20 2.2 Installation sous OS/2 21 2.3 Installation sous WINDOWS 23 Utilisation sous DOS 25 3.1 Développement de l'application 26 3.2. Compilation et édition de lien 26 ___________________________________________________________________________ 1 _______________________________________________________ Sommaire général ___________________________________________________________________________ Chapitre 4 5 Page 3.3 Mise au point et exploitation 26 3.4 Exemple d'application 3.4-1 Description du programme 3.4-2 Programme source "Exemple.C". 27 27 28 Utilisation sous OS/2 31 4.1 Développement de l'application 32 4.2. Compilation et édition de lien 32 4.3. Installation du driver et connexion 32 4.4 Mise au point et exploitation 33 4.5 Exemple d'application 4.5-1 Architecture correspondant à l'exemple 4.5-2 Description du programme 4.5-3 Programme source "Exemple.C". 33 34 34 35 Utilisation sous WINDOWS 39 5.1 Développement de l'application 40 5.2. Compilation et édition de lien 40 5.3 Mise au point et exploitation 40 5.4 Exemple d'application 5.4-1 Description du programme 5.4-2 Programme source "Exemple1.C". 40 41 41 ___________________________________________________________________________ 2 _______________________________________________________ Sommaire général ___________________________________________________________________________ Chapitre 6 Syntaxe des fonctions Page 47 6.1 Fonctions : gestion du contexte de communication 6.1-1 UNITEInitDriver 6.1-2 UNITECloseDriver 6.1-3 UNITEOpenConnection 6.1-4 UNITECloseConnection 6.1-5 UNITEOpenUnsollicitedData 6.1-6 UNITECloseUnsollicitedData 6.1-7 UNITETimeOut 6.1-8 UNITEGetSystemError (OS/2 uniquement) 6.1-9 UNITEGetUsExtInfo (WINDOWS uniquement) 49 49 50 51 52 53 54 55 56 56 6.2 Fonctions : gestion des équipements 6.2-1 UNITEMirror 6.2-2 UNITEIdentification 6.2-3 UNITEReserve 6.2-4 UNITERelease 6.2-5 UNITEIAmAlive 6.2-6 UNITERun 6.2-7 UNITEStop 57 57 58 59 60 61 62 63 6.3 Fonctions : accès aux variables 6.3-1 UNITEReadInternalBit 6.3-2 UNITEReadSystemBit 6.3-3 UNITEWriteInternalBit 6.3-4 UNITEWriteSystemBit 6.3-5 UNITEReadInternalWord 6.3-6 UNITEReadConstantWord 6.3-7 UNITEReadSystemWord 6.3-8 UNITEWriteInternalWord 6.3-9 UNITEWriteSystemWord 6.3-10 1UNITEReadCommonWord 6.3-11 UNITEWriteCommonWord 6.3-12 UNITEReadInternalDWord 6.3-13 UNITEReadConstantDWord 6.3-14 UNITEWriteInternalDWord 64 64 65 66 67 68 69 70 71 72 73 74 75 76 77 ___________________________________________________________________________ 3 Somm blc debut page _______________________________________________________ Sommaire général ___________________________________________________________________________ Chapitre Page 6.3-15 6.3-16 6.3-17 6.3-18 7 UNITEReadObject UNITEWriteObject UNITEReadWordArray UNITEWriteWordArray 78 79 80 81 6.4 Fonctions : gestion de domaine 6.4-1 UNITETransferTsxPC 6.4-2 UNITETransferPCTsx 82 82 84 6.5 Fonction : données non sollicitées 6.5-1 UNITEUnsollicitedData DOS 6.5-2 UNITEUnsollicitedData OS/2 86 86 87 6.6 Fonction : fonction générique 6.6-1 UNITERequest 88 88 6.7 Fonction : récupération des réponses 6.7-1 UNITEResponse 6.7-2 UNITEResponseMult (OS/2 uniquement) 90 90 91 Annexes 93 7.1 Lexique 94 7.2 Liste des codes d'erreur DOS 7.2-1 Codes communs à toutes les fonctions 7.2-2 Valeurs relatives aux fonctions de transfert de fichier 7.2-3 Codes d'erreurs liés à la variable usExtinfo 95 95 96 97 7.3 Liste des codes d'erreur OS/2 7.3-1 Codes communs à toutes les fonctions 7.3-2 Valeurs relatives aux fonctions de transfert de fichier 98 98 98 7.4 Requêtes UNI-TE 99 7.4-1 Lecture d'objets 99 7.4-2 Ecriture d'objets 104 7.4-3 Initialisation Application 107 ___________________________________________________________________________ 4 _______________________________________________________ AVERTISSEMENTS Sommaire général ___________________________________________________________________________ Ce que vous trouverez dans ce manuel Chapitre 1 : Présentation à quoi sert le produit, de quoi il est composé, la liste des fonctions disponibles, le principe d'utilisation d'une fonction, la description des principales fonctions, les caractéristiques et performances. Chapitre 2 : Installation environnement requis, procédure d'installation, organisation des fichiers résultants, modification des paramètres de configuration. Chapitre 3 : Utilisation les différentes étapes pour développer une application utilisant les services de la librairie TPUNI-TE, un exemple d'application qui peut servir à tester la liaison avec un équipement distant. Chapitre 4 : Syntaxe des fonctions syntaxes à respecter pour appeler une fonction. Chapitre 5 : Annexes Lexique des termes utilisés, liste des codes d'erreurs. A qui s'adresse ce manuel Ce document s'adresse à des développeurs d'application en langage C++. Les prérequis Nous supposons que l'utilisateur connaît déjà : • le langage "C" • le système d'exploitation DOS ou OS/2 • les objets UNI-TE des équipements Documentation Telemecanique associée TSX DM FPP F TSX DM PCX V52F : Mise en œuvre liaison bus FIPIO sur processeur TSX/ PMX modèle 40 version V6. : Manuel de mise en œuvre du coprocesseur PL7-3. ___________________________________________________________________________ 5 _______________________________________________________ Sommaire général ___________________________________________________________________________ ___________________________________________________________________________ 6 Sommaire Sous-chapitre Chapitre11 Présentation Présentation Page 1.1 But du logiciel TP UNI-TE 1.2 Composition du produit 10 1.3 Principe d'utilisation 11 1.3-1 Définition de termes et de fonctionnalités 1.3-2 Utilisation 1.3-3 Complément d'utilisation sous OS/2 11 12 13 Description des principales fonctions 14 1.4-1 1.4-2 1.4-3 1.4-4 1.4-5 1.4-6 14 15 15 15 15 15 1.4 1.5 Gestion du contexte de communication Gestion des équipements Accès aux données Données non sollicitées Fonction générique Récupération des réponses Tableaux récapitulatifs des fonctions 8 16 ___________________________________________________________________________ 7 1.1 But du logiciel TP UNI-TE Le logiciel TP UNI-TE permet la connexion de micro-ordinateurs compatibles PC sous DOS, OS/2 et WINDOWS avec un coprocesseur PL7-3. Elle permet une mise en œuvre simplifiée et fiable de la communication entre un PC et des automatismes Telemecanique, sans nécessiter une connaissance spécifique de ceux-ci. Intégration d'applications dans l'architecture de communication X-WAY L'objectif des réseaux de communication normalisés ISO/OSI est de permettre l'élaboration d'architectures d'équipements de provenance et de nature très diverses, qu'il s'agisse de l'informatique de planification et de gestion de production ou de contrôleurs d'automatismes tels qu'automates programmables, commandes numériques de machines outils ou de robots, système de vision etc... L'architecture de communication X-WAY, conforme au modèle OSI, comprend un ensemble de réseaux locaux industriels permettant la construction de structures d'automatismes répartis, des plus simples aux plus complexes. L'offre logicielle TP UNI-TE est mise en œuvre sur des micro-ordinateurs exécutant par exemple : • des applications autonomes de production ou de traitements de données • des application passerelles entre le monde des automatismes et celui de la gestion, planification. • ....... Rappel sur UNI-TE : Le système de messagerie industriel Telemecanique supporté par l'architecture de communication X-WAY s'appelle UNI-TE. Le protocole UNI-TE fonctionne suivant un mécanisme Client/Serveur de Requêtes/ Réponses (services confirmés). Un équipement supportant le protocole UNI-TE peut être : • CLIENT : c'est l'équipement qui prend l'initiative de la communication avec un autre équipement SERVEUR, il récupère (lecture) ou transmet (écriture) des informations ou envoie un ordre (Run, Stop) • SERVEUR : c'est l'équipement qui rend le service demandé par le CLIENT et lui envoie une réponse après exécution. Un équipement peut émettre un message de sa propre initiative vers un autre équipement sans que le message ne soit confirmé. Les données émises s'intitulent alors données non sollicitées (DNS). Le micro-ordinateur équipé du logiciel TP UNI-TE est un utilisateur UNI-TE de type CLIENT. ___________________________________________________________________________ 8 Présentation 1 Le logiciel TP UNI-TE est une "librairie" de fonctions écrites en langage C. Elle permet à des programmes utilisateurs d'exploiter de façon simplifiée la communication en s'affranchissant des connaissances nécessaires à la mise en œuvre des différentes couches logicielles qui la composent. Cette librairie vient s'intercaler entre le programme utilisateur et le driver TSXPC dont elle exploite les possibilités de communication. Programme utilisateur Librairie TP UNI-TE Driver Prise Terminal Coprocesseur RESEAU FIPWAY Les principaux services offerts par TP UNI-TE sont les suivants : • Gestion du contexte de communication. • Gestion des équipements • Accès aux variables • Réception de données non sollicitées • Gestion de domaine • Fonction générique • Récupération des réponses ___________________________________________________________________________ 9 1.2 Composition du produit Deux disquettes 3"1/2 La présente documentation avec licence Le logiciel TP UNI-TE livré, a été développé en langage Microsoft Visual C++. ___________________________________________________________________________ 10 Présentation 1.3 1 Principe d'utilisation 1.3-1 Définition de termes et de fonctionnalités Pour comprendre le principe d'utilisation de la librairie, il est nécessaire de définir quelques termes. Client UNI-TE : équipement capable d'émettre des requêtes UNI-TE. Serveur UNI-TE : équipement répondant aux demandes de services (requêtes) émises par un équipement client. Le programme utilisateur est client UNI-TE c'est-à-dire qu'à son initiative, il accède aux équipements serveurs UNI-TE du réseau par exploitation des services de la librairie listés dans les tableaux du chapitre 1.5. Du fait de cette organisation CLIENT/SERVEUR, l'équipement de 2 PC avec 2 logiciels TP UNI-TE ne permet pas de les faire communiquer entre eux. ADRESSAGE 5 NIVEAUX XWAY : dans le système d'adressage TELEMECANIQUE, les adresses des émetteurs et destinataires sont codées sur 5 octets : • réseau : numéro de réseau. • station : numéro de l'équipement sur le réseau. • porte : identification des entités logiques de la station. Si l'équipement est un automate programmable et que le numéro de porte est égal à 5: • module : emplacement géographique d'un coupleur dans l'automate. • voie : numéro d'une entité logique du coupleur ou adresse d'un esclave UNITELWAY + 100. Pour l'accès au serveur UNI-TE du coprocesseur PL7-3 : (réseau) = 0 (station) = 254 (porte) = 0 (module) = 0 (voie) = 0 Pour l'accès à un bloc TxT n de l'application PL7-3 du coprocesseur : (réseau) = 0 (station) = 254 (porte) = 16 + 11 (module) = 0 (voie) = 0 Pour accéder à un ou à des équipements distants, il est nécessaire d'ouvrir un ou plusieurs canaux de communication : Canal de communication : ressource permettant d'émettre les requêtes (liées à des fonctions) à destination d'un équipement distant. Le logiciel TP UNI-TE peut gérer jusqu'à 3 canaux de communication. Un canal de communication ne peut émettre des requêtes qu'à destination d'un seul ___________________________________________________________________________ 11 équipement serveur. Il est possible d'ouvrir plusieurs canaux de communication à destination du même équipement. Sur un canal de communication une requête n'est émise que si la réponse à la précédente est parvenue. Plusieurs requêtes peuvent être émises simultanément en utilisant des canaux différents. 1.3-2 Utilisation Pour communiquer avec un équipement à partir d'une application PC, le programme utilisateur doit suivre les étapes suivantes : 1 . initialiser le contexte de communication : utilisation de la fonction UNITEInitdriver 2 . ouvrir un ou plusieurs canaux de communication à destination de un ou plusieurs équipements. utilisation de la fonction UNITEOpenConnection qui retourne un numéro de canal hEquip. 3 . gérer la séquence suivante à chaque accès : • utiliser une fonction UNITE_xx_xx en indiquant le canal dédié (hEquip), l'endroit où on désire stocker la réponse, et les données utiles correspondant à la fonction. • la fonction retourne un Identificateur de requête hReq • poursuivre son traitement • émettre la demande de réponse à la fonction précédemment utilisée en utilisant la fonction UNITEResponse avec l'identificateur hReq • si les données sont prêtes, la fonction retourne la réponse OK indiquant que les données stockées à l'adresse prédéfinie sont valides. lorsque les accès sont terminés : 4 . fermer le ou les canaux de communication. utilisation de la fonction UNITECloseConnection 5 . libérer le contexte de communication : utilisation de la fonction UNITECloseDriver Le programme utilisateur peut recevoir des données non sollicitées. Un canal de communication prédéfini (porte 3) peut être ouvert en réception pour recueillir ce type de données. L'application arrivera à envoyer des données non sollicitées par l'initialisation d'un bloc TXT de type TERminal dont le paramètre Txti,t sera positionné à 3 par le programme application. ___________________________________________________________________________ 12 Présentation 1 1.3-3 Complément d'utilisation sous OS/2 Le système d'exploitation OS/2 est multitâche et permet à plusieurs programmes application de faire appel aux services de la librairie de façon asynchrone. Application 1 Application 2 Application n Serveur TP UNI-TE/OS2 Driver ___________________________________________________________________________ 13 1.4 Description des principales fonctions 1.4-1 Gestion du contexte de communication Les fonctions de gestion du contexte de communication permettent l'utilisation du logiciel TP UNI-TE à partir d'une ou de plusieurs applications. UNITEInitDriver : initialisation du contexte de communication UNITECloseDriver : libération du contexte de communication Ces 2 fonctions doivent être activées au début (UNITEInitDriver) et à la fin (UNITECloseDriver) de chaque application de communication. UNITEOpenConnection : ouverture d'un canal de communication UNITECloseConnection: fermeture d'un canal de communication Avant de pouvoir émettre des requêtes à destination d'un équipement distant, il est nécessaire d'ouvrir un ou plusieurs canaux de communication. Plusieurs canaux peuvent être ouverts à destination d'un même équipement. On ne peut activer qu'une seule fonction à la fois par canal. Lorsqu'on a terminé d'utiliser un canal, on le referme. UNITEOpenUnsollicitedData : ouverture du canal de réception de données non sollicitées UNITECloseUnsollicitedData : fermeture du canal de réception de données non sollicitées Avant de pouvoir recevoir des données non sollicitées d'un équipement distant, il est nécessaire d'ouvrir un canal en réception. Les émetteurs de DNS à destination du PC doivent utiliser l'adresse XWAY destinataire suivante : Réseau et station par défaut (0 : RES, 254 : station), Porte égale à 3, Module et Voie à 0 ou par bloc TXT de type TER LOCAL avec Txti,t = 3 dans le programme, Module et Voie à 0. UNITETimeOut : réglage du temps d'attente maximum Lorsque le logiciel TP UNI-TE émet une requête à destination d'un équipement distant, il lance une temporisation égale à ce temps. Si dans le programme application, on active la fonction UNITEResponse et que cette temporisation est arrivée à terme sans qu'on ait obtenu de réponse, UNITEResponse renverra un code d'erreur TIME_OUT. ___________________________________________________________________________ 14 Présentation 1 1.4-2 Gestion des équipements Ces différentes fonctions permettent de tester le chemin de communication avec un équipement distant, d'obtenir l'identification d'un équipement distant, de le mettre en marche ou à l'arrêt, de gérer les mécanismes de réservation-déréservation, etc. 1.4-3 Accès aux données Ces fonctions permettent d'accéder en lecture ou en écriture aux objets UNI-TE situés dans le coprocesseur ou un équipement distant. 1.4-4 Données non sollicitées Cette fonction permet de récupérer des données non sollicitées émises par un équipement distant ou le coprocesseur. 1.4-5 Fonction générique Cette fonction permet de générer n'importe quelle requête UNI-TE. 1.4-6 Récupération des réponses La fonction UNITEResponse permet de récupérer la réponse à une requête précédemment envoyée. La réponse peut être pollée ou attendue avec un temps d'attente infini. ___________________________________________________________________________ 15 1.5 Tableaux récapitulatifs des fonctions Les tableaux suivants récapitulent l'ensemble des fonctions disponibles classées par type de service. NOM DE LA FONCTION GESTION DU CONTEXTE DE COMMUNICATION UNITEInitDriver initialisation du contexte de communication UNITECloseDriver libération du contexte de communication UNITEOpenConnection ouverture d'un canal de communication UNITECloseConnection fermeture d'un canal de communication UNITEOpenUnsollicitedData ouverture du canal de communication en réception de données non sollicitées UNITECloseUnsollicitedData fermeture du canal de communication en réception de données non sollicitées UNITETimeOut réglage du temps d'attente maximum UNITEGetSystemError (seulement OS/2) récupération d'une erreur système OS/2 NOM DE LA FONCTION GESTION DES EQUIPEMENTS UNITEMirror test de la connexion d'un équipement UNITEIdentification identification d'un équipement UNITEReserve réservation d'un équipement UNITERelease déréservation d'un équipement UNITEIAmAlive entretien de réservation UNITERun mise en marche d'un équipement UNITEStop arrêt d'un équipement ___________________________________________________________________________ 16 Présentation NOM DE LA FONCTION ACCES AUX VARIABLES UNITEReadInternalBit lecture variable de type bit interne UNITEReadSystemBit lecture variable de type bit système UNITEWriteInternalBit écriture variable de type bit interne UNITEWriteSystemBit écriture variable de type bit système UNITEReadInternalWord lecture variable de type mot interne UNITEReadConstantWord lecture variable de type mot constant UNITEReadSystemWord lecture variable de type mot système UNITEWriteInternalWord écriture variable de type mot interne UNITEWriteSystemWord écriture variable de type mot système UNITEReadCommonWord lecture variable de type mot commun UNITEWriteCommonWord écriture variable de type mot commun UNITEReadInternalDWord lecture variable de type double mot interne UNITEReadConstantDWord lecture variable de type double mot constant UNITEWriteInternalDWord écriture variable de type double mot interne UNITEReadObject lecture variable de type objet UNITEWriteObject écriture variable de type objet UNITEReadWordArray lecture variable de type table de mots internes UNITEWriteWordArray écriture variable de type table de mots internes NOM DE LA FONCTION GESTION DE DOMAINE UNITETransferTsxPC télédéchargement du programme automate UNITETransferPCTsx téléchargement du programme automate NOM DE LA FONCTION UNITEUnsollicitedData NOM DE LA FONCTION UNITERequest 1 DONNES NON SOLLICITEES récupération de données non sollicitées FONCTION GENERIQUE fonction permettant l'émission de tout type de requête UNI-TE ___________________________________________________________________________ 17 NOM DE LA FONCTION RECUPERATION DES REPONSES UNITEResponse récupération de la réponse à une requête UNITEResponseMult (seulement OS/2) récupération de la première réponse parmi une liste de requêtes émises Fonctions Valeurs Nombre de canaux de communication 3 Nombre de requêtes simultanées 3 Nombre de cartes PCX dans le PC 1 Nombre de données non sollicitées 1 ___________________________________________________________________________ 18 Sommaire Sous-chapitre Chapitre22 Installation Installation Page 2.1 Installation sous DOS 20 2.2 Installation sous OS/2 21 2.3 Installation sous WINDOWS 23 ___________________________________________________________________________ 19 2.1 Installation sous DOS Procédure Avant d'installer le logiciel TP UNI-TE sur le disque dur, il est conseillé de : • lire le certificat de licence et de garantie concernant les restrictions de copie et d'installation de logiciel. • dupliquer la disquette nécessaire à l'installation afin de la préserver contre toute détérioration accidentelle . L'installation s'effectue en suivant les étapes suivantes (les commandes tapées au clavier sont en caractères gras et en italique) : 1. Insérer la disquette contenant la librairie TP UNI-TE dans le drive A: sous DOS 2. Taper la commande : a: puis appuyer sur la touche RETURN [a:\] apparaît à l'écran. 3. La commande "install destdrive" permet de ranger les fichiers de la librairie sur le disque souhaité. Par exemple, pour les installer sur le disque C, on tape la commande : install c, puis on appuie sur la touche RETURN Le fichier C:\AUTOEXEC.BAT est à modifier de la façon suivante : SET INCLUDE = (...config. déjà existante ...); Disque:\UNITEPC\DOS\INCLUDE SET LIB = (..configuration déjà existant); Disque:\UNITEPC\DOS\LIB 4. Rebooter votre système. Organisation des fichiers résultants RACINE <UNITE PC> <DOS> <LIB> UNITE.LIB librairie des fonctions modèle large <INCLUDE> UNITE.H définition, types et prototypes <SOURCE> EXEMPLE.C LOAD.* COMP.BAT exemple de projet ___________________________________________________________________________ 20 Installation 2.2 2 Installation sous OS/2 Environnement requis Micro-ordinateur compatible PC bus ISA (ou EISA) microprocesseur type 386 au minimum, sous système d'exploitation OS/2 version 2.1. Procédure Avant d'installer le logiciel TP UNI-TE sur le disque dur, il est conseillé de : • lire le certificat de licence et de garantie concernant les restrictions de copie et d'installation de logiciel. • dupliquer la disquette nécessaire à l'installation afin de la préserver contre toute détérioration accidentelle . L'installation s'effectue selon les étapes suivantes (les commandes tapées au clavier sont en caractères gras et en italique) : 1. Insérer la disquette contenant la librairie TP UNI-TE/OS2 dans le drive A: 2. Sélectionner une fenêtre OS/2 plein écran 3. Taper la commande : a: puis appuyer sur la touche RETURN [a:\] apparaît à l'écran. 4. La commande "install destdrive" permet de ranger les fichiers de la librairie sur le disque souhaité, et génère un groupe de deux icônes qui permettent le lancement et l'arrêt du serveur. Par exemple, pour les installer sur le disque C, on tape la commande : install c, puis on appuie sur la touche RETURN Le fichier C:\CONFIG.SYS est à modifier de la façon suivante : IOPL = yes LIBPATH = (...configuration déjà existante) ; Disque:\UNITEPC\OS2\DLL SET PATH = (...configuration déjà existante) ; Disque:\UNITEPC\OS2\BIN SET INCLUDE = (...configuration déjà existante) ; Disque:\UNITEPC\OS2\INCLUDE SET LIB = (...configuration déjà existante) ; Disque\UNITEPC\OS2\LIB 5. Rebooter votre système. Les paramètres de configuration du programme ont alors les valeurs par défaut suivantes : NP : nombre d'application OS/2 gérables : 32 NU : nombre de données non sol. bufferisées : 10 Pour modifier ces paramètres, se reporter au paragraphe "Modifications" page 20. 6. Cliquer deux fois sur le groupe de programme : "Librairie UNI-TE PCX OS/2" puis cliquer deux fois sur l'icône "Lancement Serveur UNI-TE PCX OS/2". ___________________________________________________________________________ 21 Organisation des fichiers résultants RACINE TSXPCSRV.LOG informations sur la configuration et les messages d'erreurs <UNITE PC> <OS2> <LIB> UNITE.LIB librairie des fonctions <INCLUDE> UNITE.h définition, types et prototypes CG-16 Bit UNITE32.h définition, types et prototypes CSet-32 Bit <BIN> TSXPCSRV.EXE LTSXPCSV.EXE KTSXPCSV.EXE <DLL> NETWAY.DLL MPWMBXOS.DLL UNITE.DLL <SOURCE> EXEMPLE.C COMP.CMD LOAD.* serveur TPCUNI-TE lancement serveur TPCUNI-TE arrêt serveur TPCUNI-TE «Txt mod» Modification des paramètres de configuration Par exemple pour gérer 50 canaux de communication et 2 cartes coupleurs. 1. Cliquer deux fois sur l'icône "Arrêt Serveur UNITE PCX OS/2" 2. Cliquer avec le bouton droit de la souris sur l'icône "Lancement Serveur UNITE PCX OS/2" 3. Cliquer sur la flêche de l'item "Ouverture" 4. Cliquer la case en haut et à gauche de la fenêtre "Lancement Serveur UNITE PCX OS/2 - Paramètre" 5. Cliquer sur l'item "Arrêt/Fermeture" 6. Cliquer deux fois sur l'icône "Lancement Serveur UNITE PCX OS/2" ___________________________________________________________________________ 22 «Txt mod» Installation 2.3 2 Installation sous WINDOWS Environnement requis Micro-ordinateur compatible PC bus ISA (ou EISA) microprocesseur type 386 au minimum, sous système d'exploitation WINDOWS 3.1x ou WINDOWS 95. Procédure Avant d'installer le logiciel TP UNI-TE sur le disque dur, il est conseillé de : • lire le certificat de licence et de garantie concernant les restrictions de copie et d'installation de logiciel. • dupliquer la disquette nécessaire à l'installation afin de la préserver contre toute détérioration accidentelle . L'installation s'effectue selon les étapes suivantes (les commandes tapées au clavier sont en caractères gras et en italique) : 1. Se placer sous l'environnement WINDOWS. 2. Insérer la disquette contenant la librairie TP UNI-TE/WINDOWS dans le drive A. 3. Puis sous WINDOWS, EXECUTER a: setup et suivre la procédure. 4. Si le driver PRISE TERMINALE n'est pas déjà installé, insérer la disquette TSX LF TP, exécuter a: setup, puis rebooter le PC. Organisation des fichiers résultants RACINE <UNITE PC> <TSX PC.WIN> <DLL> TPCWIN_M.DLL TPCWIN_S.DLL TPCWIN_L.DLL <INCLUDE> UNITE.h <LIB> TPCWIN_M.LIB TPCWIN_S.LIB TPCWIN_L.LIB ___________________________________________________________________________ 23 ___________________________________________________________________________ 24 Sommaire Sous-chapitre Chapitre33 Utilisation Utilisation sous DOS Page 3.1 Développement de l'application 26 3.2. Compilation et édition de lien 26 3.3 Mise au point et exploitation 26 3.4 Exemple d'application 27 3.4-1 Description du programme 3.4-2 Programme source "Exemple.C". 27 28 ___________________________________________________________________________ 25 3.1 Développement de l'application sous DOS L'application doit être écrite en langage C ou dans un langage acceptant des routines écrites en C Microsoft. L'utilisateur peut utiliser le Microsoft Visual C++. Chaque service proposé correspond à une "fonction" au sens langage C , son utilisation se résume à un simple appel avec passage d'arguments. C'est le programme utilisateur qui organise la gestion et la cohérence des différents services qu'il demande. 3.2 Compilation et édition de lien Tout programme C utilisant la librairie TPUNI-TE/DOS doit impérativement terminer le paragraphe des "include" par : # include <UNITE.h> L'application doit être compilée en modèle LARGE. 3.3 Mise au point et exploitation Tester la liaison vers le ou les équipements SERVEURS en ne validant qu'une partie très simple de l'application : • utilisation de la fonction UNITEMirror ou • utilisation de l'exemple décrit au chapitre suivant. ___________________________________________________________________________ 26 Utilisation 3.4 3 Exemple d'application sous DOS L'application "EXEMPLE.C" livrée avec le logiciel et décrite dans ce chapitre peut être utilisée pour tester l'installation et le bon fonctionnement de la liaison vers un équipement automate TSX7 SERVEUR distant. Il suffit pour cela de modifier l'adresse (UNITEOpenConnection) et de la faire correspondre à celle de l'équipement auquel on désire accéder. Cette application étant livrée sous forme de fichier "source", elle doit être compilée avant utilisation. Un fichier de commande de compilation/édition de lien est fourni avec l'exemple, taper la commande suivante pour obtenir un exécutable : comp exemple pour une compilation en modèle LARGE 3.4-1 Description du programme Le programme effectue les opérations suivantes : • Initialisation du contexte de communication • Ouverture d'un canal de communication avec le coprocesseur • Lecture des mots W10 à W50 par la fonction UNITEReadObject • Lecture des mots W60 à W260 par la fonction UNITEReadWordArray • Fermeture du canal de communication • Libération du contexte de communication. ___________________________________________________________________________ 27 3.4-2 Programme source "Exemple.C". / / **************************************************************************** // // Exemple d'utilisation de la librairie PC-DOS // // / / **************************************************************************** /* Objectifs : - exemples de lecture de variables Historique : Création le 19 Janvier 1994 Algorithme du test : - Initialisation du driver - Ouverture d'un canal de communication - Lecture des mot internes 10 à 50 dans la station - Lecture des mot internes 60 à 260 dans la station */ #include #include #include #include <stdlib.h> <stdio.h> <string.h> <unite.h> //Prototype des fonction UNITE + constantes void main(void) { // VARIABLES INTERNES HEQUIP hEquip; HREQ hrequete; UNITE_RC rc; short buffer1[41],buffer2[201]; USHORT i; DEVICEADD Device; // INITIALISATION DES ADRESSES Device.uchBoard = 1; Device.uchNetwork = 0; Device.uchStation = 254; Device.uchGate = 0; Device.uchModule = 0; Device.uchDevice = 0; ___________________________________________________________________________ 28 Utilisation 3 // OUVERTURE DU DRIVER rc = UNITEInitDriver(1); if (rc < 0 ) { printf("\nPROBLEME INITIALISATION status= %d ",rc); exit(0); } // OUVERTURE DU CANAL DE COMMUNICATION AVEC LA STATION hEquip = UNITEOpenConnection(&Device); if (hEquip<0) { printf("\nPROBLEME OPEN CONNEXION status= %d ",hEquip); if (hEquip == ENOK) printf("\n usExtinfo = %d ",usExtinfo); exit(0); } // Lecture des mot internes 10 à 50 dans la station hrequete = UNITEReadObject(hEquip,0x68,0x07,10,41,(PCHAR)buffer1); if(hrequete<0) { printf("\n PB REQUEST Read Object hrequete =%d ",hrequete); if (hrequete == ENOK) printf("\n usExtinfo = %d ",usExtinfo); exit(0); } // REPONSE LECTURE rc=UNITEResponse(hrequete,WAIT); if(rc<0) { printf("\n PB RESPONSE Read Object rc =%d",rc); if (rc == ENOK) printf("\n usExtinfo = %d ",usExtinfo); exit(0); } // Affichage des valeurs lues for (i=0;i<41;i++) { printf("\n valeur[%d] = %d",i,buffer1[i]); } ___________________________________________________________________________ 29 // Lecture des mot internes 60 à 260 dans la station hrequete=UNITEReadWordArray(hEquip,60,201,buffer2); if(hrequete<0) { printf("\n PB REQUEST Read Word Array hrequete[0] =%d ",hrequete); if (hrequete == ENOK) printf("\n usExtinfo = %d ",usExtinfo);exit(0); } // Affichage des valeurs lues for (i=0;i<201;i++) { printf("\n valeur[%d] = %d",i,buffer2[i]); } // FERMETURE DU CANAL DE COMMUNICATION rc = UNITECloseConnection(hEquip); if (rc != OK) { printf("\nErreur UNITECloseConnection n¯%d : %d",i,rc); if (rc == ENOK) printf("\n usExtinfo = %d ",usExtinfo); } rc = UNITECloseDriver(1); if (rc != OK) { printf("\nErreur UNITECloseDriver : %d",rc); if (rc == ENOK) printf("\n usExtinfo = %d ",usExtinfo); } } ___________________________________________________________________________ 30 Sommaire Sous-chapitre Chapitre44 Utilisation Utilisation sous OS/2 Page 4.1 Développement de l'application 32 4.2. Compilation et édition de lien 32 4.3 Installation du driver et connexion 32 4.4 Mise au point et exploitation 33 4.5 Exemple d'application 33 4.5-1 Architecture correspondant à l'exemple 4.5-2 Description du programme 4.5-3 Programme source "Exemple.C". 34 34 35 ___________________________________________________________________________ 31 4.1 Développement de l'application sous OS/2 L'application doit être écrite en langage C ou dans un langage acceptant des routines écrites en C Microsoft. L'utilisateur peut utiliser : . le C Microsoft Version 6.0 (16-Bit) . l'IBM C/2 Version 1.3 (16-Bit) . l'IBM C Set Version 2.0 (32-Bit) Le logiciel est découpé selon un modèle client-serveur et laisse libre la gestion multitâche d'OS/2. Ainsi, plusieurs applications utilisateurs peuvent faire appel aux services de manière asynchrone. Chaque service proposé correspond à une "fonction" au sens langage C , son utilisation se résume à un simple appel avec passage d'arguments. C'est le programme utilisateur qui organise la gestion et la cohérence des différents services qu'il demande. Le lancement d'une application doit être précédé du lancement du serveur TP UNI-TE OS/2. 4.2 Compilation et édition de lien Tout programme C utilisant la librairie TP UNI-TE/OS/2 doit impérativement commencer par : # include <UNITE.h> (environnement 16-bit) ou # include <UNITE32.h> (environnement 32-bit) L'application doit être compilée en modèle LARGE (environnement 16-bit). 4.3 Installation du driver et connexion Se reporter à la documentation du coprocesseur PL7.3 ___________________________________________________________________________ 32 Utilisation 4.4 4 Mise au point et exploitation Tester la liaison vers le ou les équipements SERVEURS distants en ne validant qu'une partie très simple de l'application : • utilisation de la fonction UNITEMirror ou • utilisation de l'exemple décrit au chapitre suivant. 4.5 Exemple d'application sous OS/2 L'application "EXEMPLE.C" livrée avec le logiciel et décrite dans ce chapitre peut être utilisée pour tester l'installation et le bon fonctionnement de la liaison vers un équipement automate TSX7 SERVEUR distant. Il suffit pour cela de modifier l'adresse (UNITEOpenConnection) et de la faire correspondre à celle de l'équipement auquel on désire accéder. Cette application étant livrée sous forme de fichier "source", elle doit être compilée avant utilisation. Un fichier de commande est fourni avec l'exemple, taper "comp exemple" pour obtenir un exécutable (environnement de développement 16 bit). ___________________________________________________________________________ 33 4.5-1 Architecture correspondant à l'exemple Station 10 Station 5 FIPWAY Réseau 1 Micro-ordinateur équipé du logiciel TPCUNI-TE/OS2 4.5-2 Description du programme Le programme effectue les opérations suivantes : • Initialisation du contexte de communication • Ouverture d'un canal de communication • Lecture du mot interne W50 dans l'automate • Récupération de la réponse • Ecriture du mot interne W100 dans l'automate • Récupération de la réponse • Transfert du programme TSX.APP du TSX vers le PC • Récupération de la réponse • Fermeture du canal de communication • Libération du contexte de communication ___________________________________________________________________________ 34 Utilisation 4 4.5-3 Programme source "Exemple.C". / / **************************************************************************** // Exemple.C / / **************************************************************************** /* Objectifs : - exemples de lecture, écriture de variables et de transfert de programme Historique : Création le 10 Décembre 1993 Algorithme du test : - Initialisation du driver - Ouverture du canal de communication - Lecture du mot interne 50 - Ecriture du mot interne 100 - Transfert du programme du TSX -> PC */ /*FICHIERS IMPORTES */ #include #include #include #include /* <stdlib.h> <stdio.h> <os2.h> <unite.h> VARIABLES GLOBALES */ static DEVICEADD static DEVICEADD HEQUIP HREQ UNITE_RC short USHORT void main (void) { Equip1Adress = {1,0,1,10,0,0,0}; Equip2Adress = {1,0,1,5,0,0,0}; hequip[10] = {1,0,1,5,0,0,0}; hrequete[10]; rc; valeur; i; ___________________________________________________________________________ 35 / / **************************************************************************** // INITIALISATION DU CONTEXTE CLIENT// **************************************************************************** rc = UNITEInitDriver(); if(rc<0) { printf("\nPROBLEME INITIALISATION staétus=%d.",rc); exit(0); } else printf("\n INIT DRIVER OK.\n"); / / **************************************************************************** // OUVERTURE D'UNE CONNEXION AVEC LA STATION 10// **************************************************************************** hEquip[1] = UNITEOpenConnection(&Equip1Adress); if (hEquip[1]<0) { printf("\nPROBLEME OPEN CONNEXION 1 status= %d ",hequip[1]); exit(0); } else printf ("\n 1.re CONNEXION OUVERTE hequip[1]=%d.\n",hequip[1]; / / **************************************************************************** // OUVERTURE D'UNE CONNEXION AVEC LA STATION 5// **************************************************************************** hEquip[2] = UNITEOpenConnection(&Equip2Adress); if (hEquip[2]<0) { printf("\nPROBLEME OPEN CONNEXION 2 status= %d ",hequip[2]); exit(0); } else printf ("\n 2.me CONNEXION OUVERTE hequip[2]=%d.\n",hequip[2]; ___________________________________________________________________________ 36 Utilisation 4 **************************************************************************** // LECTURE DU MOT W50 DANS LA STATION 10/ **************************************************************************** hrequete[1] = UNITEReadInternalWord(hequip[1],50, &valeur; if(hrequete[1]<0) { printf("\n PB REQUEST Read hrequete[1] =%d.",hrequete[1]); exit(0); } else printf("\n DEMANDE DE LECTURE W50 OK.\n"); **************************************************************************** // REPONSE LECTURE W50/ **************************************************************************** rc=UNITEResponse((HREQ)hrequete[1],WAIT); if(rc<0) { printf("\n PB RESPONSE Read status=%d.",rc); exit(0); } else printf("\n RESPONSE W50 OK valeur = %d.\n",valeur); **************************************************************************** // ECRITURE DE W100 DANS LA STATION 10/ **************************************************************************** hrequete[1]=UNITEWriteInternalWord(hequip[1], 100, valeur); if (hrequete[1]<0 { printf("\n PB REQUEST Read hrequete[1]=%d, valeur=%d; ", hrequete[1],valeur); exit(0); } else printf("\n DEMANDE D'ECRITURE W100 OK\n"); **************************************************************************** // REPONSE ECRITURE W100/ **************************************************************************** rc = UNITEResponse (hrequete[1],WAIT); if (rc<0) { printf("\n PB RESPONSE Write status=%d.",rc); exit(0); } else printf("\n Reponse W100 OK\n"); ___________________________________________________________________________ 37 **************************************************************************** // TRANSFERT DU PROGRAMME DE LA STATION 10/ **************************************************************************** hrequete[1]=UNITETransferTsxPC(hequip[1],"TSX.APP"); if (hrequete[1]<0) { printf ("\n Erreur UNITETransferTsxPC:%d",hrequete[1];exit(0); } else printf ("\n DEMANDE DE Transfert TEST.APP OK.\n"); **************************************************************************** // REPONSE TRANSFERT/ **************************************************************************** rc = UNITEResponse ((HREQ)hrequete[1],WAIT); if (rc<0) { printf("\n probleme de RESPONSE avec status=%d\n",rc); exit(0); } else printf("\n RESPONSE TRANSFERT OK.\n"); **************************************************************************** // FERMETURE DES CONNEXIONS DE L'AUTOMATE/ **************************************************************************** rc = UNITECloseConnection(hequete[1]); if (rc<0) { printf("\n Erreur UNITECloseConnection status=%d\n",rc); exit(0); } else printf("\n 1.re CONNEXION FERMEE.\n"); printf("\n 2.eme CONNEXION FERMEE.\n"); **************************************************************************** // CLOSE DRIVER/ **************************************************************************** rc = UNITECloseDriver (); if (rc<0) { printf("\n Erreur UNITECloseDriver:%d\n",rc); exit(0); } else printf("\n CLOSE DRIVER OK.\n"); } ___________________________________________________________________________ 38 Sommaire Sous-chapitre «Txt mod» 5.1 Chapitre55 Utilisation Utilisation sous WINDOWS Page Développement de l'application 40 5.2. Compilation et édition de lien 40 5.3 Mise au point et exploitation 40 5.4 Exemple d'application 40 5.4-1 Description du programme 41 5.4-2 Programme source "Exemple1.C". 41 ___________________________________________________________________________ 39 5.1 Développement de l'application sous OS/2 «Txt mod» L'application doit être écrite en langage C ou dans un langage acceptant des routines écrites en C Microsoft. L'utilisateur peut utiliser le Microsoft Visual C++ Chaque service proposé correspond à une "fonction" au sens langage C , son utilisation se résume à un simple appel avec passage d'arguments. C'est le programme utilisateur qui organise la gestion et la cohérence des différents services qu'il demande. 5.2 Compilation et édition de lien Tout programme C utilisant la librairie TP UNI-TE/WINDOWS doit impérativement terminer le paragraphe des <include> par : # include <UNITE.h> L'application peut être compilée en modèle SMALL, MEDIUM ou LARGE. 5.3 Mise au point et exploitation Tester la liaison vers le ou les équipements SERVEURS distants en ne validant qu'une partie très simple de l'application : • utilisation de la fonction UNITEMirror ou • utilisation de l'exemple décrit au chapitre suivant. 5.4 Exemple d'application L'application "EXEMPLE1.C" livrée avec le logiciel et décrite dans ce chapitre peut être utilisée pour tester l'installation et le bon fonctionnement de la liaison vers un équipement automate TSX7 SERVEUR distant. Il suffit pour cela de modifier l'adresse (UNITEOpenConnection) et de la faire correspondre à celle de l'équipement auquel on désire accéder. ___________________________________________________________________________ 40 Utilisation 5 «Txt mod» 5.4-1 Description du programme Le programme effectue les opérations suivantes : • Initialisation du contexte de communication • Ouverture d'un canal de communication (avec la station 5) • Lecture des mots internes 10 à 50 par la fonction UNITEReadObject • Récupération de la réponse • Lecture des mots internes 60 à 260 par la fonction UNITEReadWordArray • Fermeture du canal de communication (avec la station 5) • Libération du contexte de communication. 5.4-2 Programme source "Exemple1.C". / / **************************************************************************** // Exemple d'utilisation de la DLL XWAY WINDOWS / / **************************************************************************** /* Objectif : exemple de lecture de variables Algorithme du test : - Initialisation du driver à l'ouverture de la fenêtre - Ouverture du canal de communication - Lecture des mots internes 10 à 50 avec la requête UNITEReadObject - Lecture des mots internes 60 à 260 avec la requête UNITEReadWordArray - Fermeture du canal de communication */ #include #include #include #include #include #include <windows.h> <string.h> "example.h" "resource.h" <stdio.h> <unite.h> prototype des fonctions de la DLL et définition des constantes */ ___________________________________________________________________________ 41 /* VARIABLES INTERNES */ HANDLE char int HANDLE HEQUIP /* «Txt mod» hlnst; buffer[150]; status; hLib; equip[2]; INITIALISATION DE LA STRUCTURE DEVICE Drivers : 1 Inutilise : 0 Reseau : 1 Station : 5 Porte : 0 Module : 0 Voie : 0 */ DEVICEADD device = {1,0,1,5,0,0,0}; HWND hEditWnd; HWND hwnd; /* handle to edit windows */ /* handle to main windows */ **************************************************************************** // FUNCTION: WinMain(HANDLE, HANDLE, LPSTR, int) PURPOSE: calls initialization function, processes message loop// **************************************************************************** int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance, LPSTR IpCmdLine, int nCmdShow) { MSG msg; FARPROC IpfnInit; // pointeur sur la fonction UNITEInit FARPROC IpfnOpen; // pointeur sur la fonction UNITEOpenConnection /*chargement de la DLL UPCWIN_M en modele medium */ hLib = LoadLibrary; if (hLib<32) return FALSE; ___________________________________________________________________________ 42 Utilisation 5 «Txt mod» // Initialisation du driver IpfnInit = GetProcAddress(hLib, "UNITEInitDriver"); status=(*IpfnInit)(1); // Ouverture du canal de communication IpfnOpen = GetProcAddress(hLib, "UNITEOpenConnection"); equip[0]=(*IpfnOpen)((PDEVICEADD)&device); if (!hPrevInstance) if (!InitApplication(hInstance)) return (FALSE); if (!InitInstance(hInstance, nCmdShow)) return (FALSE); while (GetMessage(&msg, NULL, NULL, NULL)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (msg.wParam); } /************************************************************ FUNCTION: MainWndProc(HWND, unsigned, WORD,LONG) PURPOSE: Processes messages MESSAGES: WM_COMMAND - application menu (About dialog box) WM_DESTROY - destroy window ***************************************************************************/ long FAR PASCAL MainWndProc(HWND hWnd, unsigned message, WORD wParam, LONG IParam) { FARPROC IpfnReadWordArray; FARPROC IpfnResponse; FARPROC IpfnReadObject; FARPROC IpfnClose; FARPROC IpfnReadCloseC; static int Req[2]; WORD IpuBufobj[41]; WORD IpuBufArray[201]; ___________________________________________________________________________ 43 switch (message) { case WM_COMMAND: switch (wParam) { /* file menu commands */ case ID_LISTEDEMOTS_START // Utilisation de la requete Lecture liste de mots: requete synchrone IpfnReadWordArray = GetProcAddress(hLib, "UNITEReadWordArray"); Req[0]=(*IpfnReadWordArray) (HEQUIP)equip[0], (USHORT)60,//debut lecture (USHORT)201,//quantite (PSHORT)IpuBufArray; break; case ID_REQUETEOBJET_START // Utilisation de la requete Lecture objet: requete asynchrone IpfnReadObject = GetProcAddress(hLib, "UNITEReadObject"); Req[1]=(*IpfnReadObject) (HEQUIP)equip[0], (UCHAR)104, (UCHAR)7, (USHORT)10,//debut lecture (USHORT)41,//quantite (PUCHAR)IpuBufobj; if (Req[1]>=0 { /*recuperation de la reponse a la requete Req[1]*/ IpfnResponse = GetProcAddress(hLib,"UNITEResponse"); status=(*IpfnResponse)(Req[1],WAIT); } break; case IDM_EXIT: DestroyWindow(hWnd); break; } break; ___________________________________________________________________________ 44 «Txt mod» Utilisation «Txt mod» 5 Case WM_DESTROY: // Fermeture du canal de communication IpfnCloseC=GetProcAdress(hLib, "UNITECloseConnection"); status=(*IpfnCloseC)(equip[0]); /* Fermeture du driver */ IpfnClose=GetProcAdress(hLib, "UNITECloseDriver"); status=(*IpfnClose)(1); // dechargement de la DLL FreeLibrary(hLib); PostQuitMessage(0); break; default: return (DefWindowProc(hWnd, message, wParam,Iparam)); } return (NULL); } ___________________________________________________________________________ 45 ___________________________________________________________________________ 46 Sommaire Chapitre66 Syntaxe des fonctions Syntaxe des fonctions Sous-chapitre «Txt mod» 6.1 6.2 6.3 Page Fonctions : gestion du contexte de communication 49 6.1-1 6.1-2 6.1-3 6.1-4 6.1-5 6.1-6 6.1-7 6.1-8 6.1-9 49 50 51 52 53 54 55 56 56 UNITEInitDriver UNITECloseDriver UNITEOpenConnection UNITECloseConnection UNITEOpenUnsollicitedData UNITECloseUnsollicitedData UNITETimeOut UNITEGetSystemError (OS/2 uniquement) UNITEGetUsExtInfo (WINDOWS uniquement) Fonctions : gestion des équipements 57 6.2-1 6.2-2 6.2-3 6.2-4 6.2-5 6.2-6 6.2-7 57 58 59 60 61 62 63 UNITEMirror UNITEIdentification UNITEReserve UNITERelease UNITEIAmAlive UNITERun UNITEStop Fonctions : accès aux variables 64 6.3-1 UNITEReadInternalBit 64 6.3-2 UNITEReadSystemBit 65 6.3-3 UNITEWriteInternalBit 66 6.3-4 UNITEWriteSystemBit 67 6.3-5 UNITEReadInternalWord 68 6.3-6 UNITEReadConstantWord 69 6.3-7 UNITEReadSystemWord 70 6.3-8 UNITEWriteInternalWord 71 6.3-9 UNITEWriteSystemWord 72 6.3-10 1UNITEReadCommonWord 73 6.3-11 UNITEWriteCommonWord 74 6.3-12 UNITEReadInternalDWord 75 ___________________________________________________________________________ 47 Sous-chapitre 6.3-13 6.3-14 6.3-15 6.3-16 6.3-17 6.3-18 6.4 6.5 6.6 6.7 UNITEReadConstantDWord UNITEWriteInternalDWord UNITEReadObject UNITEWriteObject UNITEReadWordArray UNITEWriteWordArray Page «Txt mod» 76 77 78 79 80 81 Fonctions : gestion de domaine 82 6.4-1 UNITETransferTsxPC 6.4-2 UNITETransferPCTsx 82 84 Fonction : données non sollicitées 86 6.5-1 UNITEUnsollicitedData DOS 6.5-2 UNITEUnsollicitedData OS/2 86 87 Fonction : fonction générique 88 6.6-1 UNITERequest 88 Fonction : récupération des réponses 90 6.7-1 UNITEResponse 6.7-2 UNITEResponseMult (OS/2 uniquement) 90 91 ___________________________________________________________________________ 48 Syntaxe des fonctions 6.1 6 Fonctions : gestion du contexte de communication 6.1-1 UNITEInitDriver • Sous DOS et WINDOWS Description : Initialise le contexte de communication. Toute application client doit débuter par UNITEInitDriver. Syntaxe : UNITE_RC rc = UNITEInitDriver (USHORT usNb_drv); En entrée : USHORT usNb_drv : Nombre de drivers 1 En retour : • soit un code OK si tout s'est bien passé, • soit un code d'erreur négatif : EBORNES EDRVAOPEN ENOK le paramètre en entrée usNb_drv est invalide. le ou les drivers sont déja ouvert(s). il y a une erreur générale remontée par le driver. Consultez la variable globale usExinfo pour en connaître la cause (cf: Tables des erreurs). • Sous OS/2 Description : Initialise le contexte de communication. Toute application client doit débuter par UNITEInitDriver. Syntaxe : UNITE_RC rc = UNITEInitDriver (); En retour : • soit un code OK si tout s'est bien passé, • soit un code d'erreur négatif : NORESAIVAIBLE MPV_INITDONE plus de ressource disponible. init client déjà réalisée. ___________________________________________________________________________ 49 6.1-2 UNITECloseDriver • Sous DOS et WINDOWS Description : Libère le contexte de communication. Terminer l'application client par cette fonction. Syntaxe : UNITE_RC rc = UNITECloseDriver(USHORT usNb_drv); En entrée : USHORT usNb_drv : Nombre de drivers à fermer = 1. En retour : • soit un code OK si tout s'est bien passé, • soit un code d'erreur négatif : EBORNES EDRVAOPEN ENOK le paramètre en entrée usNb_drv est invalide. le ou les drivers n'ont pas été ouverts. il y a une erreur générale remontée par le driver. Consultez la variable globale usExinfo pour en connaître la cause (cf: Tables des erreurs). • Sous OS/2 Description : Libère le contexte de communication. Terminer l'application client par cette fonction. Syntaxe : UNITE_RC rc = UNITECloseDriver(); En retour : • soit un code OK si tout s'est bien passé, • soit un code d'erreur négatif : PBINIT driver non initialisé. ___________________________________________________________________________ 50 Syntaxe des fonctions 6 6.1-3 UNITEOpenConnection Description : Alloue un canal de communication du driver vers un équipement distant. Syntaxe : HEQUIP Hequip = UNITEOpenConnection(PDEVICEADD pDeviceAdd); En entrée : PDEVICEADD pDeviceAdd : adresse de l'équipement distant avec typedef struct { UCHAR uchBoard; : numéro de driver UCHAR uchMode; : non utilisé, mettre à 0 UCHAR uchNetwork; : \ correspondent à UCHAR uchStation; : | l'adresse destinataire UCHAR uchGate; : | XWAY, telle qu'elle est UCHAR uchModule; : | définie dans le protocole UCHAR uchDevice; : / UNI-TE. } DEVICEADD, * PDEVICEADD; En retour DOS et WINDOWS : soit un code (>=0) si tout s'est bien passé Ce code nommé hEquip identifie un équipement. Il sera passé en argument à chaque appel fonction qui est destiné à cet équipement. soit un code d'erreur négatif : EBORNES Le paramètre en entrée uchBoard est invalide. EDRVAOPEN Le ou les drivers sont déjà ouverts. ENOK Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause.(cf:Tables des erreurs) ENOMORESOCK Toutes les voies de communication disponibles ont été ouvertes. EMEMFULL Il n'y a plus de mémoire libre disponible. ESRCEADR L'adresse source n'est pas valide. EDSTADR L'adresse de l'équipement distant n'est pas valide. En retour OS/2 : soit un code (>=0) si tout s'est bien passé Ce code nommé hEquip identifie un équipement. Il sera passé en argument à chaque appel fonction qui est destiné à cet équipement. soit un code d'erreur négatif : NORESAVAILABLE Plus de ressource disponible. PBINITSESSION Contexte de communication non initialisé. MPW_NO_ok Problème liaison. ___________________________________________________________________________ 51 6.1-4 UNITECloseConnection Description : Libère un canal de communication du driver vers un équipement. Syntaxe : UNITE_RC rc = UNITECloseConnection (HEQUIP hEquip); En entrée : hEquip : identificateur de l'équipement lié au canal à libérer. En retour DOS et WINDOWS : • soit OK si tout s'est bien passé, • soit un code d'erreur négatif : EBORNES ENOK ENOTOPENSOCK Le paramètre en entrée hEquip est supérieur au nombre maximum de connexions disponibles. Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause.(cf:Tables des erreurs) Le canal de communication spécifié par le paramètre hEquip n'a pas été ouvert. En retour OS/2 : • soit OK si tout s'est bien passé, • soit un code d'erreur négatif : PBINITSESSION Contexte de communication non initialisé ___________________________________________________________________________ 52 Syntaxe des fonctions 6 6.1-5 UNITEOpenUnsollicitedData Description : Les applications du coprocesseur ou les équipements reliés au coprocesseur par FIPWAY/FIPIO adresseront leurs données non sollicitées vers le canal de communication ouvert en réception (adresse réseau et station égale à celle du coprocesseur, numéro de porte destination égale à 3). Par bloc TXT ; bloc TXT LOCAL ou NET (LOCAL pour une application du coprocesseur, NET sur FIPWAY), type TER, le paramètre Txti,T sera initialisé à 3 dans le programme application avant son émission. Syntaxe : HEQUIP hEquip = UNITEOpenUnsollicitedData(UCHAR uchNumDriver); En entrée : uchNumDriver : numéro de driver : 1 pour DOS et WINDOWS, 0 pour OS/2 En retour DOS et WINDOWS : • soit un numéro (>=0) identifiant le canal de communication en réception de DNS si tout s'est bien passé. Ce numéro hEquip sera passé en argument à chaque lecture de données non sollicitées. • soit un code d'erreur négatif. EBORNES EDRVNOTOPEN ENOK EMEMFULL EUNSOOPEN Le paramètre en entrée uchNum_drv est invalide. Le driver n'a pas été ouvert. Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause.(cf:Tables des erreurs) Il n'y a plus de mémoire libre disponible. Le canal de communication alloué aux données non sollicitées a déjà été ouvert. En retour OS/2 : • soit un numéro (>=0) identifiant le canal de communication en réception de DNS si tout s'est bien passé. Ce numéro hEquip sera passé en argument à chaque lecture de données non sollicitées. • soit un code d'erreur négatif. MPW_OPENED PBINIT NORESAVAILABLE Canal données non sollicitées déjà ouvert. Driver non initialisé. Plus de ressource disponible. ___________________________________________________________________________ 53 6.1-6 UNITECloseUnsollicitedData Description : Libère le canal de communication pour réception des données non sollicitées. Syntaxe : UNITE_RC rc = UNITECloseUnsollicitedData(UCHAR uchNumDriver); En entrée : uchNumDriver : numéro de driver : 1 pour DOS et WINDOWS, 0 pour OS/2. En retour DOS et WINDOWS : • soit un code OK si tout s'est bien passé, • soit un code d'erreur négatif : EBORNES ENOK ENOTOPENSOCK Le paramètre en entrée uchNum_drv est invalide. Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs) Le canal de communication spécifié par le paramètre hEquip n'a pas été ouvert. En retour OS/2 : • soit un code OK si tout s'est bien passé, • soit un code d'erreur négatif : NORESAVAILABLE PBINITSESSION PBIN MPW_NO_OK Plus de ressource disponible Contexte de communication non initialisé. Driver non initialisé. Problème liaison. ___________________________________________________________________________ 54 Syntaxe des fonctions 6 6.1-7 UNITETimeOut Description : Réglage du temps d'attente maximal d'exécution des requêtes. Lorsque le logiciel TPUNI-TE émet une requête à destination d'un équipement distant, il lance une temporisation égale à ce temps. Si dans le programme application, on active la fonction UNITEResponse et que cette temporisation est arrivée à terme sans qu'on ait obtenu de réponse, UNITEResponse renverra un code d'erreur TIME_OUT. Syntaxe : UNITE_RC rc = UNITETimeOut(ULONG ulTimeOut); En entrée : ulTimeOut : temps en millisecondes. En retour DOS et WINDOWS : • soit un code OK si tout s'est bien passé, • soit un code d'erreur négatif : EBORNES le paramètre ulTimeOut est inférieur à -1 Remarque A l'expiration, la transaction est abandonnée. En retour OS/2 : • soit un code OK si tout s'est bien passé, • soit un code d'erreur négatif : MPW_NO_OK problème liaison Remarque A l'expiration, la transaction est abandonnée. ___________________________________________________________________________ 55 6.1-8 UNITEGetSystemError (OS/2 uniquement) Description : Récupération d'une erreur système lorsqu'une fonction retourne le code MPW_ERR_SYSTEM. Syntaxe : USHORT rc = UNITEGetSystemError(); En retour : Le dernier numéro d'erreur système. 6.1-9 UNITEGetUsExtInfo (WINDOWS uniquement) Description : Permet de récupérer la variable UsExtInfo pour connaître le détail d'une erreur (ENOK) retournée par une fonction. Syntaxe : UNITE-RC rc = UNITEGetUsExtInfo (void); En entrée : Rien. En retour : La variable UsExtInfo : les codes d'erreurs liés à cette variable sont présentés en Annexe. ___________________________________________________________________________ 56 Syntaxe des fonctions 6.2 6 Fonctions : gestion des équipements 6.2-1 UNITEMirror Description : Permet de tester la connexion avec un équipement. Tous les équipements serveurs UNI-TE supportent cette requête et renvoient les mêmes données que celles reçues. Syntaxe : HREQ hReq = UNITEMirror (HEQUIP UCHAR hEquip, uchQty); En entrée : hEquip uchQty : identificateur du destinataire de la requête. : nombre d'octets envoyés (de 1 à 126). En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBORNES EBADPARAM ECONNOTOPEN EBADBUFFER EMEMFULL EBUILD ENOK Le paramètre en entrée ucQty est supérieur à 126. Le paramètre en entrée hEquip est inférieur à 0. Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. Les buffers internes n'ont pas été alloués. Il n'y a plus de mémoire libre disponible Erreur à la construction du datagramme Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs) En retour OS/2 : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. ___________________________________________________________________________ 57 6.2-2 UNITEIdentification Description : Identification de l'équipement distant. Tous les équipements serveurs UNI-TE supportent cette requête. Syntaxe : HREQ hReq = UNITEIdentification (HEQUIP hEquip, PUCHAR pBuffer_Ident); En entrée : hEquip : identificateur du destinataire de la requête. En sortie : pBuffer_Ident : pointeur du buffer de stockage de la réponse Identification. En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM ECONNOTOPEN EBADBUFFER EMEMFULL EBUILD ENOK Le paramètre en entrée hEquip est inférieur à 0. Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. Les buffers internes n'ont pas été alloués. Il n'y a plus de mémoire libre disponible. Erreur à la construction du datagramme. Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs) En retour OS/2 : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. ___________________________________________________________________________ 58 Syntaxe des fonctions 6 6.2-3 UNITEReserve Description : Réservation de l'équipement serveur avec lequel on veut dialoguer. La réservation démarre avec la fonction UNITEReserve et se termine avec la fonction UNITERelease. La réservation est interrompue automatiquement au bout de 60s. si elle n'a pas été entretenue avec la fonction UNITEIAmAlive. L'entretien de réservation est réalisé par n'importe quelle requête UNI-TE. En cas d'absence de communication, la fonction UNITEIAmAlive permet cet entretien. Syntaxe : HREQ hReq = UNITEReserve (HEQUIP hEquip); En entrée : hEquip : identificateur du destinataire de la requête. En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM Le paramètre en entrée hEquip est inférieur à 0. ECONNOTOPEN Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. EBADBUFFER Les buffers internes n'ont pas été alloués. EMEMFULL Il n'y a plus de mémoire libre disponible. EBUILD Erreur à la construction du datagramme. ENOK Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs) En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. Remarque Les services critiques qui exigent une réservation (RUN, STOP, Transfert de fichier...), l'entretien de réservation et la déréservation doivent utiliser le même canal de communication que celui mis en oeuvre lors de la réservation. ___________________________________________________________________________ 59 6.2-4 UNITERelease Description : Déréservation d'un équipement. Syntaxe : HREQ hReq = UNITERelease(HEQUIP hEquip); En entrée : hEquip : identificateur du destinataire de la requête. En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM ECONNOTOPEN EBADBUFFER EMEMFULL EBUILD ENOK Le paramètre en entrée hEquip est inférieur à 0. Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. Les buffers internes n'ont pas été alloués. Il n'y a plus de mémoire libre disponible. Erreur à la construction du datagramme. Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs) En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. Remarque Les services critiques qui exigent une réservation (RUN, STOP, Transfert de fichier...), l'entretien de réservation et la déréservation doivent utiliser le même canal de communication que celui mis en oeuvre lors de la réservation. ___________________________________________________________________________ 60 Syntaxe des fonctions 6 6.2-5 UNITEIAmAlive Description : Demande d'entretien de la réservation d'un équipement. Cette réservation doit être entretenue périodiquement (environ toutes les 60 secondes) faute de quoi, l'équipement est automatiquement déréservé. Syntaxe : HREQ hReq = UNITEIAmAlive(HEQUIP hEquip); En entrée : hEquip : identificateur du destinataire de la requête. En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM ECONNOTOPEN EBADBUFFER EMEMFULL EBUILD ENOK Le paramètre en entrée hEquip est inférieur à 0. Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. Les buffers internes n'ont pas été alloués. Il n'y a plus de mémoire libre disponible. Erreur à la construction du datagramme. Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs) En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. Remarque Les services critiques qui exigent une réservation (RUN, STOP, Transfert de fichier...), l'entretien de réservation et la déréservation doivent utiliser le même canal de communication que celui mis en oeuvre lors de la réservation. ___________________________________________________________________________ 61 6.2-6 UNITERun Description : Mise en "Run" d'un équipement. Remarque Nécessite la réservation préalable de l'automate TSX7 par le même canal de communication. Syntaxe : HREQ hReq = UNITERun (HEQUIP hEquip); En entrée : hEquip : identificateur du destinataire de la requête. En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM ECONNOTOPEN EBADBUFFER EMEMFULL EBUILD ENOK Le paramètre en entrée hEquip est inférieur à 0. Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. Les buffers internes n'ont pas été alloués. Il n'y a plus de mémoire libre disponible. Erreur à la construction du datagramme. Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs) En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. ___________________________________________________________________________ 62 Syntaxe des fonctions 6 6.2-7 UNITEStop Description : Mise en "Stop" d'un équipement. Remarque Nécessite la réservation préalable de l'automate TSX7 par le même canal de communication. Syntaxe : HREQ hReq = UNITEStop(HEQUIP hEquip); En entrée : hEquip : identificateur du destinataire de la requête. En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM ECONNOTOPEN EBADBUFFER EMEMFULL EBUILD ENOK Le paramètre en entrée hEquip est inférieur à 0. Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. Les buffers internes n'ont pas été alloués. Il n'y a plus de mémoire libre disponible. Erreur à la construction du datagramme. Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs) En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. ___________________________________________________________________________ 63 6.3 Fonctions : accès aux variables 6.3-1 UNITEReadInternalBit Description : Lecture d'un bit interne Bi. Syntaxe : HREQ En entrée : hEquip usNbit hReq = UNITEReadInternalBit (HEQUIP USHORT PBITVAL hEquip, usNbit, pValue); : identificateur du destinataire de la requête. : numéro du bit interne à lire. En sortie : pValue : pointeur de la structure de réponse avec typedef struct { BYTE bValue; BYTE bOverride; }BITVAL, * PBITVAL; : valeur du bit lu : état de forçage du bit lu En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM Le paramètre en entrée hEquip est inférieur à 0. ECONNOTOPEN Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. EBADBUFFER Les buffers internes n'ont pas été alloués. EMEMFULL Il n'y a plus de mémoire libre disponible. EBUILD Erreur à la construction du datagramme. ENOK Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs). En retour OS/2 : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : PBINITSESSION Contexte de communication non initialisé. MPW_CLIENTNOK Canal de communication non alloué. MPW_REQPENDING Requête en cours sur le canal de communication. MPW_SEQ Problème enchaînement sur serveur. NORESAVAIBLE Pas ou plus de ressource disponible. MPW_REQABORTED Requête abandonnée. PBDRV Problème driver Prise Terminal. RESPREF Code réponse refusée. MPW_ERR_SYSTEM Erreur système. ___________________________________________________________________________ 64 Syntaxe des fonctions 6 6.3-2 UNITEReadSystemBit Description : Lecture d'un bit bit système SYi. Syntaxe : HREQ En entrée : hEquip usNbit hReq = UNITEReadSystemBit (HEQUIP USHORT PBITVAL hEquip, usNbit, pValue); : identificateur du destinataire de la requête. : numéro du bit système à lire. En sortie : pValue : pointeur de la structure de réponse avec typedef struct { BYTE bValue; BYTE bOverride; }BITVAL, * PBITVAL; Seul le champ bValue (valeur du bit lu) est significatif. En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM Le paramètre en entrée hEquip est inférieur à 0. ECONNOTOPEN Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. EBADBUFFER Les buffers internes n'ont pas été alloués. EMEMFULL Il n'y a plus de mémoire libre disponible. EBUILD Erreur à la construction du datagramme. ENOK Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs). En retour OS/2 : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : PBINITSESSION Contexte de communication non initialisé. MPW_CLIENTNOK Canal de communication non alloué. MPW_REQPENDING Requête en cours sur le canal de communication. MPW_SEQ Problème enchaînement sur serveur. NORESAVAIBLE Pas ou plus de ressource disponible. MPW_REQABORTED Requête abandonnée. PBDRV Problème driver Prise Terminal. RESPREF Code réponse refusée. MPW_ERR_SYSTEM Erreur système. ___________________________________________________________________________ 65 6.3-3 UNITEWriteInternalBit Description : Ecriture d'un bit interne Bi. Syntaxe : HREQ hReq = UNITEWriteInternalBit ( HEQUIP USHORT BOOL hEquip usNbit, boValue); En entrée : hEquip usNbit boValue : identificateur du destinataire de la requête. : numéro du bit interne à écrire. : valeur à écrire (0 ou 1) En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM Le paramètre en entrée hEquip est inférieur à 0. ECONNOTOPEN Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. EBADBUFFER Les buffers internes n'ont pas été alloués. EMEMFULL Il n'y a plus de mémoire libre disponible. EBUILD Erreur à la construction du datagramme. ENOK Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs). En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. ___________________________________________________________________________ 66 Syntaxe des fonctions 6 6.3-4 UNITEWriteSystemBit Description : Ecriture d'un bit système SYi. Syntaxe : HREQ hReq = UNITEWriteSystemBit( HEQUIP USHORT BOOL hEquip usNbit, boValue); En entrée : hEquip usNbit boValue : identificateur du destinataire de la requête. : numéro du bit système à écrire. : valeur à écrire (0 ou 1) En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM ECONNOTOPEN EBADBUFFER EMEMFULL EBUILD ENOK Le paramètre en entrée hEquip est inférieur à 0. Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. Les buffers internes n'ont pas été alloués. Il n'y a plus de mémoire libre disponible. Erreur à la construction du datagramme. Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs). En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. ___________________________________________________________________________ 67 6.3-5 UNITEReadInternalWord Description : Lecture d'un mot interne Wi. Syntaxe : HREQ hReq = UNITEReadInternalWord (HEQUIP USHORT PSHORT hEquip, usNword, pValue); En entrée : hEquip usNword : identificateur du destinataire de la requête. : numéro du mot interne à lire. En sortie : pValue : pointeur du mot lu. En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM ECONNOTOPEN EBADBUFFER EMEMFULL EBUILD ENOK Le paramètre en entrée hEquip est inférieur à 0. Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. Les buffers internes n'ont pas été alloués. Il n'y a plus de mémoire libre disponible. Erreur à la construction du datagramme. Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs). En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. ___________________________________________________________________________ 68 Syntaxe des fonctions 6 6.3-6 UNITEReadConstantWord Description : Lecture d'un mot constant CWi. Syntaxe : HREQ hReq = UNITEReadConstantWord ( HEQUIP hEquip, USHORT usNword, PSHORT pValue); En entrée : hEquip usNword : identificateur du destinataire de la requête. : numéro du mot constant à lire. En sortie : pValue : pointeur du mot lu. En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM ECONNOTOPEN EBADBUFFER EMEMFULL EBUILD ENOK Le paramètre en entrée hEquip est inférieur à 0. Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. Les buffers internes n'ont pas été alloués. Il n'y a plus de mémoire libre disponible. Erreur à la construction du datagramme. Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs). En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. ___________________________________________________________________________ 69 6.3-7 UNITEReadSystemWord Description : Lecture d'un mot système SWi. Syntaxe : HREQ hReq = UNITEReadSystemWord ( HEQUIP USHORT PSHORT hEquip, usNword, pValue); En entrée : hEquip usNword : identificateur du destinataire de la requête. : numéro du mot système à lire. En sortie : pValue : pointeur du mot lu. En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM ECONNOTOPEN EBADBUFFER EMEMFULL EBUILD ENOK Le paramètre en entrée hEquip est inférieur à 0. Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. Les buffers internes n'ont pas été alloués. Il n'y a plus de mémoire libre disponible. Erreur à la construction du datagramme. Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs). En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. ___________________________________________________________________________ 70 Syntaxe des fonctions 6 6.3-8 UNITEWriteInternalWord Description : Ecriture d'un mot interne Wi. Syntaxe : HREQ hReq = UNITEWriteInternalWord( HEQUIP USHORT SHORT hEquip, usNword, sValue); En entrée : hEquip usNword sValue : identificateur du destinataire de la requête. : numéro du mot interne à écrire. : valeur à écrire (sur 16 bits) En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM ECONNOTOPEN EBADBUFFER EMEMFULL EBUILD ENOK Le paramètre en entrée hEquip est inférieur à 0. Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. Les buffers internes n'ont pas été alloués. Il n'y a plus de mémoire libre disponible. Erreur à la construction du datagramme. Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs). En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. ___________________________________________________________________________ 71 6.3-9 UNITEWriteSystemWord Description : Ecriture d'un mot système SWi. Syntaxe : HREQ hReq = UNITEWriteSystemWord( HEQUIP USHORT SHORT hEquip, usNword, sValue); En entrée : hEquip usNword sValue : identificateur du destinataire de la requête. : numéro du mot système à écrire. : valeur à écrire (sur 16 bits) En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM ECONNOTOPEN EBADBUFFER EMEMFULL EBUILD ENOK Le paramètre en entrée hEquip est inférieur à 0. Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. Les buffers internes n'ont pas été alloués. Il n'y a plus de mémoire libre disponible. Erreur à la construction du datagramme. Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs). En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. ___________________________________________________________________________ 72 Syntaxe des fonctions 6 6.3-10 UNITEReadCommonWord Description : Lecture d'un mot commun COMi,j. Avec i = numéro de station, et j = numéro du mot. Syntaxe : HREQ hReq = UNITEReadCommonWord ( HEQUIP UCHAR USHORT PCOMWORDVAL En entrée : hEquip uchStation usNWord hEquip, uchStation, usNWord, pValue); : identificateur du destinataire de la requête. : numéro de station. : numéro de mot à lire. En sortie : pValue : pointeur de la structure de réponse avec typedef struct { USHORT usNbWord; : nombre de mots COM dans la station SHORT sValue; : valeur lue }COMWORDVAL, * PCOMWORDVAL; En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM Le paramètre en entrée hEquip est inférieur à 0. ECONNOTOPEN Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. EBADBUFFER Les buffers internes n'ont pas été alloués. EMEMFULL Il n'y a plus de mémoire libre disponible. EBUILD Erreur à la construction du datagramme. ENOK Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs) En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. ___________________________________________________________________________ 73 6.3-11 UNITEWriteCommonWord Description : Ecriture d'un mot commun COMi,j . Avec i = numéro de station, et j = numéro du mot. Syntaxe : HREQ hReq = UNITEWriteCommonWord ( HEQUIP UCHAR USHORT SHORT hEquip, uchStation, usNWord, sValue); En entrée : hEquip uchStation usNWord sValue : identificateur du destinataire de la requête. : numéro de station du destinataire. : numéro du mot à écrire. : valeur à écrire. En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM Le paramètre en entrée hEquip est inférieur à 0. ECONNOTOPEN Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. EBADBUFFER Les buffers internes n'ont pas été alloués. EMEMFULL Il n'y a plus de mémoire libre disponible. EBUILD Erreur à la construction du datagramme. ENOK Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs). En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. ___________________________________________________________________________ 74 Syntaxe des fonctions 6 6.3-12 UNITEReadInternalDWord Description : Lecture d'un double mot interne DWi. Syntaxe : HREQ hReq = UNITEReadInternalDWord ( HEQUIP USHORT PLONG hEquip, usNDword, pValue); En entrée : hEquip usNDword : identificateur du destinataire de la requête. : numéro du double mot interne à lire. En sortie : pValue : pointeur du double mot lu. En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM Le paramètre en entrée hEquip est inférieur à 0. ECONNOTOPEN Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. EBADBUFFER Les buffers internes n'ont pas été alloués. EMEMFULL Il n'y a plus de mémoire libre disponible. EBUILD Erreur à la construction du datagramme. ENOK Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs). En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. ___________________________________________________________________________ 75 6.3-13 UNITEReadConstantDWord Description : Lecture d'un double mot constant DCWi. Syntaxe : HREQ hReq = UNITEReadConstantDWord (HEQUIP USHORT PLONG hEquip, usNDword, pValue); En entrée : hEquip usNDword : identificateur du destinataire de la requête. : numéro du double mot constant à lire. En sortie : pValue : pointeur du double mot lu. En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM Le paramètre en entrée hEquip est inférieur à 0. ECONNOTOPEN Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. EBADBUFFER Les buffers internes n'ont pas été alloués. EMEMFULL Il n'y a plus de mémoire libre disponible. EBUILD Erreur à la construction du datagramme. ENOK Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs). En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. ___________________________________________________________________________ 76 Syntaxe des fonctions 6 6.3-14 UNITEWriteInternalDWord Description : Ecriture d'un double mot interne DWi. Syntaxe : HREQ hReq = UNITEWriteInternalDWord ( HEQUIP USHORT LONG hEquip, usNDword, lValue); En entrée : hEquip usNDword lValue : identificateur du destinataire de la requête. : numéro du double mot à écrire. : valeur à écrire (sur 32 bits) En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM Le paramètre en entrée hEquip est inférieur à 0. ECONNOTOPEN Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. EBADBUFFER Les buffers internes n'ont pas été alloués. EMEMFULL Il n'y a plus de mémoire libre disponible. EBUILD Erreur à la construction du datagramme. ENOK Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs). En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. ___________________________________________________________________________ 77 6.3-15 UNITEReadObject Description : Lecture d'une suite d'objets. Remarque La longueur maximale des données (nombre d'objets multiplié par la taille d'un objet en octets) dépend du serveur UNI-TE interrogé. Elle est de 120 octets pour un automate TSX ou une commande numérique NUM, et de 30 octets pour les TSX 17. Syntaxe : HREQ hReq = UNITEReadObject (HEQUIP UCHAR UCHAR USHORT USHORT PCHAR hEquip, uchSegment, uchType, usFirst, usQty, pValue); En entrée : hEquip uchSegment uchType usFirst usQty : identificateur du destinataire de la requête. : spécifie le numéro de segment. (Voir Chap. 6.4) : spécifie le type de l'objet (double mot, mot, octet, ...) (Voir Chap. 6.4) : adresse du premier objet à lire. : nombre d'objets consécutifs à lire. En sortie : pValue : adresse du buffer où sont stockées les données lues. En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM Le paramètre en entrée hEquip est inférieur à 0. ECONNOTOPEN Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. EBADBUFFER Les buffers internes n'ont pas été alloués. EMEMFULL Il n'y a plus de mémoire libre disponible. EBUILD Erreur à la construction du datagramme. ENOK Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs). En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. ___________________________________________________________________________ 78 Syntaxe des fonctions 6 6.3-16 UNITEWriteObject Description : Ecriture d'une suite d'objets. Remarque La longueur maximale des données (nombre d'objets multiplié par la taille d'un objet en octets) dépend du serveur UNI-TE interrogé. Elle est de 120 octets pour un automate TSX ou une commande numérique NUM, et de 30 octets pour les TSX 17. Syntaxe : HREQ hReq = WriteObject (HEQUIP UCHAR UCHAR USHORT USHORT UCHAR PUCHAR En entrée : hEquip uchSegment uchType usFirst usQty usSize pValue hEquip, uchSegment, uchType, usFirst, usQty, uchSize, pValue); : identificateur du destinataire de la requête. : spécifie le numéro de segment. (Voir Chap. 6.4) : spécifie le type de l'objet (double mot, mot, octet, ...) (Voir Chap. 6.4) : adresse du premier objet à écrire. : nombre d'objets consécutifs à écrire. : taille de la suite d'objets à écrire (en octets) : adresse du buffer où sont stockées les données à écrire. En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM Le paramètre en entrée hEquip est inférieur à 0. ECONNOTOPEN Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. EBADBUFFER Les buffers internes n'ont pas été alloués. EMEMFUL Il n'y a plus de mémoire libre disponible. EBUILD Erreur à la construction du datagramme. ENOK Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs). En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. ___________________________________________________________________________ 79 6.3-17 UNITEReadWordArray Description : Lecture d'une table de mots internes (segment 104, octet spécifique 7). Remarque La longueur maximale de la table est de 16 kMots. Syntaxe : HREQ hReq = UNITEReadWordArray (HEQUIP USHORT USHORT PSHORT hEquip, usFirst, usQty, pValue); En entrée : hEquip usFirst usQty : identificateur du destinataire de la requête. : adresse du premier mot de la table. : nombre de mots à lire (inférieur à 16000). En sortie : pValue : adresse du buffer contenant les mots de la table lue. En retour DOS et WINDOWS : • soit OK si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM Le paramètre en entrée hEquip est inférieur à 0. ECONNOTOPEN Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. EBADBUFFER Les buffers internes n'ont pas été alloués. EMEMFULL Il n'y a plus de mémoire libre disponible. EBUILD Erreur à la construction du datagramme. ENOK Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs). Remarque Cette fonction renvoie son code retour après exécution complète. Elle ne nécessite donc pas de demande de réponse UNITEResponse. Le canal associé reste bloqué pendant ce temps. En retour OS/2 : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : PBINITSESSION Contexte de communication non initialisé. MPW_CLIENTNOK Canal de communication non alloué. MPW_REQPENDING Requête en cours sur le canal de communication. MPW_SEQ Problème enchaînement sur serveur. NORESAVAIBLE Pas ou plus de ressource disponible. MPW_REQABORTED Requête abandonnée. PBDRV Problème driver Prise Terminal. RESPREF Code réponse refusée. MPW_ERR_SYSTEM Erreur système. ___________________________________________________________________________ 80 Syntaxe des fonctions 6 6.3-18 UNITEWriteWordArray Description : Ecriture d'une table de mots internes (segment 104, octet spécifique 7). Remarque La longueur maximale de la table est de 16 kMots. Syntaxe : HREQ hReq = UNITEWriteWordArray ( HEQUIP USHORT USHORT PSHORT En entrée : hEquip usFirst usQty pValue hEquip, usFirst, usQty, pValue); : identificateur du destinataire de la requête. : adresse du premier mot de la table. : nombre de mots à écrire (inférieur à 16000). : adresse du buffer des valeurs à écrire. En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM Le paramètre en entrée hEquip est inférieur à 0. ECONNOTOPEN Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. EBADBUFFER Les buffers internes n'ont pas été alloués. EMEMFULL Il n'y a plus de mémoire libre disponible. EBUILD Erreur à la construction du datagramme. ENOK Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs). Remarque Cette fonction renvoie son code retour après exécution complète. Elle ne nécessite donc pas de demande de réponse UNITEResponse. Le canal associé reste bloqué pendant ce temps. En retour OS/2 : • soit un identificateur de requête • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM (>=0) si tout s'est bien passé, Contexte de communication non initialisé. Canal de communication non alloué. Requête en cours sur le canal de communication. Problème enchaînement sur serveur. Pas ou plus de ressource disponible. Requête abandonnée. Problème driver Prise Terminal. Code réponse refusée. Erreur système. ___________________________________________________________________________ 81 6.4 Fonctions : gestion de domaine 6.4-1 UNITETransferTsxPC Description : Déchargement de programme TSX série 40 vers PC. Syntaxe : HREQ hReq = UNITETransferTsxPC (HEQUIP PCHAR hEquip, pchFileName); En entrée : hEquip : identificateur du destinataire de la requête. pchFileName : Nom du fichier application avec extension. En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM ECONNOTOPEN EBADBUFFER EMEMFULL EBUILD ENOK EFICH ELECFICH ENOTSXV4 ETYPTSXDIFF ECOMPATINOK EROMCART ENOVALIDCART EAPIOUTMEM ETSXETATNOK EDATAORDER ESEQ ETSXWRITE EVERIFAPPNOK Le paramètre en entrée hEquip est inférieur à 0. Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. Les buffers internes n'ont pas été alloués. Il n'y a plus de mémoire libre disponible. Erreur à la construction du datagramme. Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs) Erreur à l'ouverture du fichier. Erreur à la lecture du fichier. La version du processeur du TSX est inférieure à V6. Le type de TSX et celui décrit dans le fichier sont différents. Le fichier et le TSX ne sont pas compatibles. La cartouche du TSX est une ROM. La cartouche du TSX n'est pas valide. La taille du fichier dépasse celle de la cartouche. Le TSX n'est pas en état d'opérer des chargement ou déchargements. Erreur de cohérence de données. Erreur de séquencement. Ecriture impossible. Application invalide. Remarque Cette fonction renvoie son code retour après exécution complète. Elle ne nécessite donc pas de demande de réponse UNITEResponse. Le canal associé reste bloqué pendant ce temps. ___________________________________________________________________________ 82 Syntaxe des fonctions 6 En retour OS/2 : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : ERRFICH NOFICHAPP ERRECRFICH ERRLECFICH NAKRESERV NOTSXV4 TYPTSXDIFF TSXETATNOK COMPATINOK APIPROT NOAPI ROMCART NOVALIDCART APIOUTMEM NAKSTOP ERRSEQ ERRTSXWRITE ERRDATAORDER NAKENTRESERV ENDSEQNAK VERIFAPPNOK PBINITSESSION PBSHUTDOWN NORESAVAIBLE NOK PBRECEPTRAME NACK RESPREF PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM Erreur de fichier Le fichier n'est pas un fichier Application Erreur écriture fichier Erreur lecture fichier Réservation TSX impossible Le TSX distant n'est pas de type V4 Les TSX fichier et distant sont différents L'état du TSX est incompatible avec le chargement Problème de compatibilité TSX Application protégée Application inexistante La cartouche est une ROM Cartouche non valide Application trop importante pour TSX distant Impossible de stopper le TSX distant Erreur de séquencement Ecriture du TSX impossible Données incohérentes Erreur entretien réservation Fin de séquence de déchargement refusée Erreur après vérification Appli non valide Contexte de communication non initialisé Problème de fermeture Problème driver Prise Terminal Pas encore de réponse Erreur sur réception Message reçu mais non traité Code réponse refusé reçu Contexte de communication non initialisé Canal de communication non alloué Requête en cours sur le canal de communication Problème enchaînement sur serveur Pas ou plus de ressource disponible Requête abandonnée Problème driver Prise Terminal Code réponse refusé Erreur système ___________________________________________________________________________ 83 6.4-2 UNITETransferPCTsx Description : Chargement de programme TSX série 40 à partir du PC. Syntaxe : HREQ hReq = UNITETransferPcTsx (HEQUIP PCHAR hEquip, pchFileName); En entrée : hEquip : identificateur du destinataire de la requête. pchFileName : Nom du fichier application avec extension. En retour DOS et WINDOWS : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM ECONNOTOPEN EBADBUFFER EMEMFULL EBUILD ENOK EFICH ELECFICH ENOTSXV4 ETYPTSXDIFF ECOMPATINOK EROMCART ENOVALIDCART EAPIOUTMEM ETSXETATNOK EDATAORDER ESEQ ETSXWRITE EVERIFAPPNOK Le paramètre en entrée hEquip est inférieur à 0. Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. Les buffers internes n'ont pas été alloués. Il n'y a plus de mémoire libre disponible. Erreur à la construction du datagramme. Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs) Erreur à l'ouverture du fichier. Erreur à la lecture du fichier. La version du processeur du TSX est inférieure à V6. Le type de TSX et celui décrit dans le fichier sont différents. Le fichier et le TSX ne sont pas compatibles. La cartouche du TSX est une ROM La cartouche du TSX n'est pas valide. La taille du fichier dépasse celle de la cartouche. Le TSX n'est pas en état d'opérer des chargement ou déchargements. Erreur de cohérence de données. Erreur de séquencement. Ecriture impossible. Application invalide. Remarque Cette fonction renvoie son code retour après exécution complète. Elle ne nécessite donc pas de demande de réponse UNITEResponse. Le canal associé reste bloqué pendant ce temps. ___________________________________________________________________________ 84 Syntaxe des fonctions 6 En retour OS/2 : • soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : ERRFICH NOFICHAPP ERRECRFICH ERRLECFICH NAKRESERV NOTSXV4 TYPTSXDIFF TSXETATNOK COMPATINOK APIPROT NOAPI ROMCART NOVALIDCART APIOUTMEM NAKSTOP ERRSEQ ERRTSXWRITE ERRDATAORDER NAKENTRESERV ENDSEQNAK VERIFAPPNOK PBINITSESSION PBSHUTDOWN NORESAVAIBLE NOK PBRECEPTRAME NACK RESPREF PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM Erreur de fichier Le fichier n'est pas un fichier Application Erreur écriture fichier Erreur lecture fichier Réservation TSX impossible Le TSX distant n'est pas de type V4 Les TSX fichier et distant sont différents L'état du TSX est incompatible avec le chargement Problème de compatibilité TSX Application protégée Application inexistante La cartouche est une ROM Cartouche non valide Application trop importante pour TSX distant Impossible de stopper le TSX distant Erreur de séquencement Ecriture du TSX impossible Données incohérentes Erreur entretien réservation Fin de séquence de déchargement refusée Erreur après vérification Appli non valide Contexte de communication non initialisé Problème de fermeture Problème driver Prise Terminal Pas encore de réponse Erreur sur réception Message reçu mais non traité Code réponse refusé reçu Contexte de communication non initialisé Canal de communication non alloué Requête en cours sur le canal de communication Problème enchaînement sur serveur Pas ou plus de ressource disponible Requête abandonnée Problème driver Prise Terminal Code réponse refusé Erreur système Remarque Sous OS/2, cette fonction nécessite une demande de réponse UNITEResponse, le tranfert doit être lancé avec l'automate TSX modèle 40 en Stop. ___________________________________________________________________________ 85 6.5 Fonctions : données non sollicitées 6.5-1 UNITEUnsollicitedData DOS et WINDOWS Description : Réception de données non sollicitées. (Se référer à UNITEOpenUnsollicitedData). Syntaxe : UNITE_RC rc = UNITEUnsollicitedData ( HEQUIP hEquip, PREADUNSOLLICITEDDATA pValue); En entrée : hEquip : identificateur du canal de communication ouvert pour récupérer les données non sollicitées. En sortie : pValue avec typedef struct : buffer de récupération des données. { UCHAR uchBoard UCHAR uchNetwork; : \ UCHAR uchStation; : | adresse émettrice UCHAR uchGate; : | définie dans le UCHAR uchModule; : | protocole XWAY. UCHAR uchDevice; : / UCHAR uchQty : nombre d'octets utiles CHAR chData[LG_MAX_UNSOL]; } READUNSOLLICITEDDATA, * PREADUNSOLLICITEDDATA; #define LG_MAX_UNSOL 126 En retour DOS et WINDOWS : • OK : des donnée non sollicitées sont disponibles dans le buffer de la requête. • sinon, un code d'erreur négatif : EBADPARAM Le paramètre en entrée hEquip est inférieur à 0. ECONNOTOPEN Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. ENOK Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs) PENDING Absence de données non sollicitées. ___________________________________________________________________________ 86 Syntaxe des fonctions 6 6.5-2 UNITEUnsollicitedData OS/2 Description : Réception de données non sollicitées. (Se référer à UNITEOpenUnsollicitedData). Syntaxe : UNITE_RC rc = UNITEUnsollicitedData ( UCHAR uchNumDriver, PREADUNSOLLICITEDDATA pValue); En entrée : uchNumDriver : numéro de driver (0 pour OS/2). En sortie : pValue avec typedef struct : buffer de récupération des données. { UCHAR uchBoard UCHAR uchNetwork; : \ UCHAR uchStation; : | adresse émettrice UCHAR uchGate; : | définie dans le UCHAR uchModule; : | protocole XWAY. UCHAR uchDevice; : / UCHAR uchQty : nombre d'octets utiles CHAR chData[LG_MAX_UNSOL]; } READUNSOLLICITEDDATA, * PREADUNSOLLICITEDDATA; #define LG_MAX_UNSOL 126 En retour OS/2: • OK : des données non sollicitées sont disponibles dans le buffer de la requête. • WAIT : pas de données non sollicitées • sinon, un code d'erreur négatif : PBINITSESSION Contexte de communication non initialisé MPW_CLIENTNOK Canal de communication non alloué. ___________________________________________________________________________ 87 6.6 Fonction : fonction générique 6.6-1 UNITERequest Description : Emission d'une requête générique (tout type de message). Syntaxe : HREQ hReq = UNITERequest ( HEQUIP PREQUESTIN PREQUESTOUT hEquip, pIn, pOut); En entrée : hEquip pIn : identificateur du destinataire de la requête. : pointeur du buffer contenant la requête à émettre. avec typedef struct { UCHAR uchCode; code requête UCHAR uchCat; code catégorie UCHAR uchQty; nombre d'octets de la requête CHAR chData[LG_MAX_PAR-1]; détail des octets. }REQUESTIN, * PREQUESTIN; En sortie pOut : pointeur buffer de récupération de la réponse. avec typedef struct { UCHAR uchCode; code reponse UCHAR uchQty; nombre d'octets de la réponse CHAR chData[LG_MAX_PAR-1]; détail des octets. } REQUESTOUT, * PREQUESTOUT; avec LG_MAX_PAR = 126 En retour DOS et WINDOWS : • Soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : EBADPARAM ECONNOTOPEN EBADBUFFER EMEMFULL EBUILD ENOK Le paramètre en entrée hEquip est inférieur à 0. Le canal de communication spécifié par la valeur de hEquip n'est pas ouvert. Les buffers internes n'ont pas été alloués. Il n'y a plus de mémoire libre disponible. Erreur à la construction du datagramme. Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs). ___________________________________________________________________________ 88 Syntaxe des fonctions 6 En retour OS/2 : • Soit un identificateur de requête (>=0) si tout s'est bien passé, • soit un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM Contexte de communication on initialisé Canal de communication non alloué Requête en cours sur le canal de communication Problème enchaînement sur serveur Pas ou plus de ressource disponible Requête abandonnée Problème driver Prise Terminal Code réponse refusé Erreur système ___________________________________________________________________________ 89 6.7 Fonction : récupération des réponses 6.7-1 UNITEResponse Description : Fonction demande de réponse UNI-TE. Syntaxe : UNITE_RC rc = UNITEResponse ( HREQ hReq, short sMode); En entrée : hReq sMode : identificateur de requête. : mode de fonctionnement. - WAIT - NOWAIT : réponse demandée avec attente infinie. : résultat de la requête demandée sans attente. En retour DOS et WINDOWS : • OK : la réponse est disponible dans le buffer de la requête. • PENDING : pas encore de réponse, à réessayer plus tard. • sinon, un code d'erreur négatif : ENOK Il y a une erreur générale remontée par le driver. Consultez la variable globale usExtinfo pour en connaître la cause. (cf:Tables des erreurs). En retour OS/2 : OK La réponse est disponible dans le buffer de la requête MPW_RETRY Pas encore de réponse, à réessayer plus tard sinon un code d'erreur négatif : PBINITSESSION MPW_CLIENTNOK MPW_REQPENDING MPW_SEQ NORESAVAIBLE MPW_REQABORTED PBDRV RESPREF MPW_ERR_SYSTEM Contexte de communication on initialisé Canal de communication non alloué Requête en cours sur le canal de communication Problème enchaînement sur serveur Pas ou plus de ressource disponible Requête abandonnée Problème driver Prise Terminal Code réponse refusé Erreur système ___________________________________________________________________________ 90 Syntaxe des fonctions 6 6.7-2 UNITEResponseMult (OS/2 uniquement) Description : Fonction demande de compte-rendu sur une liste de requêtes. Syntaxe : UNITE_RC rc = UNITEResponseMult (PHREQ short PUSHORT phRequête, ulMod pusReponse); En entrée : phReq ulMode : pointeur de la liste des identificateurs de requêtes (hReq) dont on demande des réponses. Cette liste doit se terminer par HREQ_NULL (-1). : mode de fonctionnement. - WAIT : réponse demandée avec attente infinie. - ABANDON : abandon des requêtes de la liste. - autre valeur : temps d'attente enveloppe de la réponse (en ms.). En sortie: pusReponse : lorsque la réponse d'une requête est arrivée, pusReponse pointe l'identificateur hReq de la fonction correspondante. Si plusieurs réponses sont arrivées, pusReponse pointera l'identificateur de la première réponse reçue par le serveur. Remarque : l'ordre de réception des réponses par le serveur est indépendant de l'ordre dans lequel les fonctions UNITE_XX ont été appelées. En retour : • OK : une des réponses de la liste des requêtes est arrivée (son indice dans la liste est pointé par pusReponse). Pour obtenir les réponses des autres requêtes, réitérer la demande en enlevant la requête terminée du tableau. • WAIT : pas encore de réponse, à réessayer plus tard. • sinon, un code d'erreur négatif : PBINITSESSION Contexte de communication on initialisé MPW_CLIENTNOK Canal de communication non alloué MPW_REQPENDING Requête en cours sur le canal de communication MPW_SEQ Problème enchaînement sur serveur NORESAVAIBLE Pas ou plus de ressource disponible MPW_REQABORTED Requête abandonnée PBDRV Problème driver Prise Terminal RESPREF Code réponse refusé MPW_ERR_SYSTEM Erreur système ___________________________________________________________________________ 91 ___________________________________________________________________________ 92 Sommaire Sous-chapitre Chapitre Annexes 77 Annexes Page 7.1 Lexique 94 7.2 Liste des codes d'erreur DOS 95 7.2-1 Codes communs à toutes les fonctions 7.2-2 Valeurs relatives aux fonctions de transfert de fichier 7.2-3 Codes d'erreurs liés à la variable usExtinfo 95 96 97 Liste des codes d'erreur OS/2 98 7.3-1 Codes communs à toutes les fonctions 7.3-2 Valeurs relatives aux fonctions de transfert de fichier 98 98 Requêtes UNI-TE 99 7.3 7.4 7.4-1 Lecture d'objets 7.4-2 Ecriture d'objets 7.4-3 Initialisation Application 99 104 107 ___________________________________________________________________________ 93 7.1 Lexique Canal de communication : ressource permettant d'émettre les requêtes (liées à des fonctions) à destination d'un équipement distant. Client UNI-TE : équipement capable d'émettre des requêtes UNI-TE. Couches : Cf "Modèle OSI : modèle de référence structurant toute communication en 7 couches distinctes, communiquant chacune avec leurs voisines. Ces différentes couches ont pour nom et fonction : -7 APPLICATION -6 PRESENTATION -5 CESSION -4 TRANSPORT -3 -2 RESEAU LIAISON -1 PHYSIQUE fenêtre entre des processus d'application dans le but d'échanger des informations significatives représentation d'informations circulant entre des processus d'application organisation et synchronisation du dialogue entre deux processus d'application et gestion de l'organisation de leurs données transfert d'informations entre deux systèmes de manière transparente et fiable routage des informations entre deux équipements transfert d'informations entre deux systèmes adjacents avec détection d'erreurs transmission d'éléments binaires entre deux systèmes via un médium de communication UNI-TE : système de messagerie client-serveur de TELEMECANIQUE. Serveur UNI-TE : équipement répondant aux demandes de services (requêtes) émises par un équipement client. Serveur minimum : équipement ne supportant en serveur que les requêtes UNI-TE obligatoires : Mirror, Identification, Protocol_Version et Status. Transaction : ensemble d'une requête et de sa réponse. ___________________________________________________________________________ 94 Annexes «Txt mod» 7.2 7 Liste des codes d'erreur DOS et WINDOWS Toutes les fonctions de la librairie retournent un code. Cette valeur permet de contrôler l'intégrité de l'échange de bout en bout. Elle est disponible dans le mot status. 7.2-1 Codes communs à toutes les fonctions OK ENOK PENDING EREFUSEDFLAG EBORNES EDRVNOTOPEN EMEMFULL ESRCEADR EDESTADR ECONNOTOPEN EBUILD EBADMODE ERESPREF EMIRROIR ERQTIMEOUT EBADADD ENOMORESOCK ENOTOPENSOCK EDRVAOPEN EBADBUFFER EBADPARAM ECLEPROT EUNSOOPEN ( 0) ( -1) ( -2) ( -3) ( -4) ( -5) ( -6) ( -7) ( -8) ( -9) (-10) (-11) (-12) (-13) (-14) (-15) (-16) (-17) (-18) (-19) (-20) (-21) (-22) : Erreur générale (précision dans usExtinfo) : Attente : Flag invalide : Valeur hors bornes : Le driver n'a pas été ouvert : Il n'y a plus de mémoire libre : Adresse source invalide : Adresse destination invalide : Canal de communication non ouvert : Erreur à la création du datagramme : Erreur sur le paramètre mode : Réponse UNI-TE négative : La requête Mirror s'est mal déroulée : Erreur timeout sur la requête : Erreur mauvaise adresse : Erreur max canal de communication par driver atteint : Erreur canal de communication non alloué : Erreur driver déja ouvert : Erreur buffer pSendRequest non initialisé : Erreur paramètre invalide : Erreur clé non présente : Canal des données non sollicitées déjà ouvert ___________________________________________________________________________ 95 7.2-2 Valeurs relatives aux fonctions de transfert de fichier ENOTSXV4 ETYPTSXDIFF (-30) (-31) ECOMPATINOK (-32) EROMCART ENOVALIDCART EAPIOUTMEM ETSXETATNOK EDATAORDER ESEQ ETSXWRITE EVERIFAPPNOK EFICH ELECFICH ENOFICHAPP ENAKENTRESERV EAPIPROT ENOAPI EECRFICH ETYPEINVAL EPROGEXIST EMANIPMEMCN ESATURMEM EPBFILE ECNNORAZ ESIZE ESTCNINCOMP ETIMEOUTUCCN EFICHFERME ECLE eabortoper EVERIF EENDFILE ECRFICH (-33) (-34) (-35) (-36) (-37) (-38) (-39) (-40) (-41) (-42) (-43) (-44) (-45) (-46) (-47) (-48) (-49) (-50) (-51) (-52 (-53) (-54) (-55) (-56) (-57) (-58) (-59) (-60 (-61) (-62) : L'automate distant n'est pas >= V4 : Le processeur du fichier et celui du distant ne sont pas identiques : L'indice du distant et celui du fichier ne sont pas compatibles : La cartouche dans le TSX est une ROM : La cartouche dans le TSX n'est pas valide : La taille mémoire du TSX est trop petite : Le TSX ne permet pas le téléchargement : Erreur cohérence des données : Erreur de séquencement : Ecriture impossible : Vérification de l'API charge impossible : Erreur à l'ouverture du fichier : Erreur à la lecture du fichier : Le fichier n'est pas un programme TSX : Erreur à l'entretien de réservation : Erreur API protegée : Erreur pas d'API dans l'automate : Erreur écriture du fichier : Erreur type de fichier invalide : Erreur Programme déjà présent : Erreur Manipulation mémoire CN : Erreur Saturation mémoire : Erreur Problème fichier : Erreur Etat CN non en RAZ : Erreur Size incohérente : Erreur Etat CN incompatible : Erreur Time out Coprocessseur : Erreur fichier déja fermé : Erreur de clé ou numéro d'affaire : Séquence interrompue par l'opérateur : Erreur en vérification : Erreur fin de fichier : Erreur à l'écriture du fichier ___________________________________________________________________________ 96 Annexes 7 7.2-3 Codes d'erreurs liés à la variable usExtinfo ENOERROR ENETUNREACH EHDLOUTRANGE ESOCKNOTOPEN ESOCKOUTOFR tes ESOCKNOMORE ESOCKOPENED ESOCKNOEMPTY EPRNOSUPPORT EINVLEN ENOTCONN EFULL EBADFLAG ETIMEOUT ENOASYNCH ESEMOUTOFRANGE EINVALIDMODE EATTEMPTINGLINKUP EBADPARAMETER ELOCALNACK EREMOTENACK EBADVERSION EUNKNOWNERROR ( ( ( ( ( 0) 1) 2) 3) 4) : : : : Driver ou Réseau non accessible Pas de connexion pour le handle Canal de communication non alloué Numero de canal de communication hors limi- ( 5) ( 6) ( 7) ( 8) ( 9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) : : : : : : : : : : : : : : : : : : Pas de canal de communication utilisable Canal de communication déjà réservé Messages en attente sur ce canal de comm. Protocole non supporté par le driver Buffer size invalide Connexion impossible Les buffers du driver sont tous utilisés Mode asynchrone non supporté Timeout dépassé IOCB non alloué en mode asynchrone Adresse d'un sémaphore invalide Mode flag invalide Driver tente de rétablir la communication Mauvais paramètre dans IOCB La carte n'a pas renvoyé d'acquit. L'équipement n'a pas renvoyé d'acquit Réseau et driver incompatibles Erreur inconnue ___________________________________________________________________________ 97 7.3 Liste des codes d'erreur OS/2 Toutes les fonctions de la librairie retournent un code. Cette valeur permet de contrôler l'intégrité de l'échange de bout en bout. Elle est disponible dans le mot status. 7.3-1 Codes communs à toutes les fonctions MPW_OK (0) Tout est OK MPW_NO_OK (-1) Problème liaison MPW_RETRY (-2) La réponse n'est pas encore arrivée TIME_OUT (-3) Dépassement du temps enveloppé pour un évchange. NACK (-4) Le message a été reçu, mais faute de ressources, il n'a pas été traité par le desti nataire. BORNE (-5) Index hors bornes. PBINIT (-6) Driver non initialisé. PBRECEPTRAME (-7) Problème sur réception de message. NORESAVAIBLE (-8) Plus de ressource disponible. PBINITSESSION (-9) Pas de canal initialisé sur cet équipement. PBSHUTDOWN (-10) Problème destruction queue. RESPREF (-11) Code réponse refusée reçu. INITNOK (-12) Code réponse Init refusée. MIRRORNOK (-13) Code réponse Mirror refusée. NOKEY (-14) Clé de protection absente. 7.3-2 Valeurs relatives aux fonctions de transfert de fichier ERRFICH (-20) Ouverture fichier impossible NOFICHAPP (-21) Le fichier n'est pas un fichier Application ERRECRFICH (-22) Erreur écriture fichier ERRLECFICH (-23) Erreur lecture fichier NAKRESERV (-24) Réservation TSX impossible NOTSXV4 (-25) Le TSX distant n'est pas de type V4 TYPTSXDIFF (-26) Les TSX fichier et distant sont différents TSXETATNOK (-27) L'état du TSX est incompatible avec le chargement COMPATINOK (-28) Problème de compatibilité TSX APIPROT (-29) Application protégée NOAPI (-30) Application inexistante ROMCART (-31) La cartouche est une ROM NOVALIDCART (-32) Cartouche non valide APIOUTMEM (-33) Application trop importante pour TSX distant NAKSTOP (-34) Impossible de stopper le TSX distant ERRSEQ (-35) Erreur de séquencement ERRTSXWRITE (-36) Ecriture du TSX impossible ERRDATAORDER (-37) Données incohérentes NAKENTRESERV (-38) Erreur entretien réservation ENDSEQNAK (-39) Fin de séquence de déchargement refusée VERIFAPPNOK (-40) Erreur après vérification Appli non valide ___________________________________________________________________________ 98 Annexes 7.4 7 Requêtes UNI-TE 7.4-1 Lecture d’objets Cette requête permet la lecture d'objets simples (mots ou chaîne de mots...) par la fonction UNITEReadObject. Format de la requête Code requête H/D Code catégorie 36/54 0→7 Segment Segment Adresse de l'objet Nombre d'objets à lire : spécifie le mode d'adressage des objets à lire ainsi que l'espace où ils se trouvent (en hexadécimal). Les segments accessibles par les automates TSX série 7 sont (en hexadécimal) : 10 : 64 : 68 : 69 : 6C : 80 : 81 : 82 : Type d'objet Type d'objet segment des objets communs, segment espaces bits internes, segment espace mots internes, segment espace mots constants, segment des tâches utilisateurs Ctrl, segment des objets système TSX 7 segment des blocs fonctions, segment des modules d'entrées / sorties. : spécifie le type d'objet à lire : 0 1 5 7 8 64 : : : : : : bloc texte ou module en bac, bloc Ctrl, bits internes avec forçage, entier signé 16 bits, entier signé 32 bits, période d'une tâche. Adresse de l'objet : • adresse physique ou logique dans le segment. • numéro d'ordre de l'objet dans le segment : - 0 : date et heure courantes dans le segment commun, - 1 : date et heure sauvegardées dans le segment commun, (dernier passage en Stop) - 2 : date et heure courantes (en hexadécimal) dans le segment commun, ___________________________________________________________________________ 99 Lecture d'objets (suite) Format du compte rendu Compte rendu positif Code réponse H/D Données Type d'objet 66/102 Type d'objet : retourne le type d'objet choisi lors de l'envoi de la question. Compte rendu négatif Code réponse H/D FD/253 Causes de rejet : • • • • • Requête inconnue, Droits d'accès insuffisants, Segment ou objet inconnu, Adresse hors bornes, Nombre d'objets trop important pour le buffer de réception. Exemples de requêtes Lecture mots ou doubles mots Segment : 68 (segment des mots internes), Type d'objet : 7 → Wi ou 8 → DWi, Adresse de l'objet : indice du premier Wi ou DWi à lire, Réponse : tableau de n objets. Lecture mots constants ou doubles mots constants Segment : 69 (segment des mots constants), Type d'objet : 7 → CWi ou 8 → CDWi, Adresse de l'objet : indice du premier CWi ou CDWi à lire. Réponse : tableau de n objets. ___________________________________________________________________________ 100 Annexes 7 Lecture d'objets (suite) Lecture date et heure Segment : 10 (segment des objets communs), Type d'objet : 0 par défaut, Adresse de l'objet : 0 → date et heure courantes, 1 → date et heure sauvegardées, Quantité : 0 par défaut, Réponse : adresse de l'objet = 0 (date et heure courantes) : AAAAMMJJHHMMSS.DN adresse de l'objet = 1 (date et heure sauvegardées) : AAAAMMJJHHMMSS.DP AAAA = année, MM = mois, JJ = jour, HH = heure, MM = minute, SS = seconde, D = dixième de seconde, N = jour de la semaine, P = code de la coupure secteur. Lecture période d'une tâche Segment : 6C (segment des tâches utilisateurs Ctrl), Type d'objet : 64 (période d'une tâche), Adresse de l'objet : 1 → tâche interruption, 2 → tâche rapide, 3 → tâche maître, 4 → tâche auxiliaire 0, 5 → tâche auxiliaire 1, 6 → tâche auxiliaire 2, 7 → tâche auxiliaire 3, Quantité : 0 par défaut, Réponse : période de la tâche codée sur un octet (1 à 255) en respectant les bases de temps de chaque tâche (FAST = 1ms, MAST = 1 ms et AUXi = 10 ms). Pour la tâche IT, la réponse correspond au nombre de cycles d'EXEC déclenchés. Lecture bits internes Segment : 64 (segment des bits internes), Type d'objet : 5 (bits internes avec forçage), Adresse de l'objet : numéro logique du premier bit interne, Quantité : nombre de bits à lire modulo 8, Réponse : tableau de n bits contenant l'état des bits suivi d'un autre tableau de n bits indiquant si le bit correspondant est forcé ou non. ___________________________________________________________________________ 101 Lecture d'objets (suite) Lecture date et heure (en hexadécimal) Segment : 10 (segment des objets communs), Type d'objet : 0 par défaut, Adresse de l'objet : 2 → date et heure courantes en hexadécimal, Quantité : 0 par défaut, Réponse : Tableau de huit mots indiquant : les millisecondes, les secondes, les minutes, l'heure, le jour, le mois, l'année, le numéro du jour dans la semaine. Lecture des paramètres d'un bloc fonction texte Segment : 81 (segment des blocs fonctions), Type d'objet : 0 (bloc texte), Adresse de l'objet : numéro logique du premier bloc texte, Quantité : nombre de blocs texte consécutif à lire, Réponse : tableau de bits et mots indiquant pour chaque bloc texte : TXTi,D : bit (1 = done), TXTi,E : bit (1 = erreur), Indirect : bit (1 = bloc texte indirect), Distant : bit (1 = bloc texte distant), Non défini : 4 bits non significatifs, Type : 0 = TXT, 1 = CPL, 2 = TER, 3 = SYS, 5 = TLG, TXTi, A : mot, TXTi, M : mot, TXTi, T : mot, TXTi, C : mot, TXTi, R : mot, TXTi, S : mot, TXTi, L : mot. Les blocs textes mis à jour dans les tâches IT ou FAST risquent d'être lus avec des valeurs apparemment incohérentes. Ceci est du au fait que cette requête est traitée dans la tâche Maître qui est moins prioritaire que les tâches IT ou FAST. ___________________________________________________________________________ 102 Annexes 7 Lecture d'objets (suite) Lecture d'un bloc CTRL Segment : 81 (segment des blocs fonctions), Type d'objet : 1 (bloc Ctrl), Adresse de l'objet : numéro logique du premier bloc Ctrl, Quantité : nombre de blocs Ctrl consécutifs, Réponse : Tableau d'octets structuré comme suit : Etat tâche non configurée : 0 en STOP : 1 en RUN : 2 point d'arrêt : 3 défaut logiciel : 4 tâche active : Bit 0 = active, Bit 1 à 7 non significatifs, période : 0 à 255. Pour la tâche IT, ce champ correspond au nombre d'activation de cette tâche depuis l'initialisation de l'application. Lecture d'un module d'entrées / sorties en bac Segment : 82 (segment des modules d'entrées / sorties), Type d'objet : 0 (module en bac), Adresse de l'objet : adresse du module définie comme suit : bits 8 à 11 : numéro de station, bits 3 à 6 : numéro de bac, bits 0 à 2 : numéro de module, les autres bits sont non significatifs, Quantité : 1, Réponse : Tableau d'octets structuré comme suit : - octet de défaut : se reporter à la requête lecture de l'image mémoire d'un module d'entrées / sorties, - octet de configuration : se reporter à la requête lecture de l'image mémoire d'un module d'entrées / sorties, - octet indiquant le code d'extension configuré, - octet indiquant l'état physique (bit 0 = erreur d'acquittement, bit 1 = erreur de parité, les autres bits sont non significatifs), - octet indiquant le code d'extension du module physique. ___________________________________________________________________________ 103 7.4-2 Ecriture d’objets Cette requête permet l'écriture d'objets simples (mots ou chaîne de mot...) par la fonction UNITEWriteObject. Format de la requête Code Code Segment réquête catégorie H/D 37/55 Type d'objet Adresse de l'objet Nombre d'objets à écrire Données 0→7 Segment : spécifie le mode et le champ d'adressage (en hexadécimal) : 10 : 64 : 68 : 69 : 6C : Type d'objet segment des objets communs, segment des espaces bits internes, segment des espaces mots internes, segment des espaces mots constants, segment des tâches utilisateurs Ctrl. : spécifie le type d'objet à écrire : 5 7 8 64 Adresse de l'objet : • • : : : : bits internes, entier signé 16 bits entier signé 32 bits, période d'une tâche. adresse physique ou logique dans le segment. numéro d'ordre de l'objet dans le segment : - 0 : date et heure courantes dans le segment commun, - 1 : configuration de la prise terminal dans le segment système. Format du compte rendu Compte rendu positif Code réponse H/D FE/254 ___________________________________________________________________________ 104 Annexes 7 Ecriture d'objets (suite) Compte rendu négatif Code réponse FD/253 Causes de rejet : • Requête inconnue, • Droits d'accès insuffisants, • Objet inconnu, • Adresse du dernier objet hors bornes. Exemples de requêtes Ecriture mots ou doubles mots Segment : 68 (segment des mots internes), Type d'objet : 7 → Wi ou 8 → DWi, Adresse de l'objet : indice du premier Wi ou DWi à écrire, Quantité : nombre, Données : tableau de n objets. Ecriture mots constants ou doubles mots constants Segment : 69 (segment des mots constants), Type d'objet : 7 → CWi ou 8 → CDWi, Adresse de l'objet : indice du premier CWi ou CDWi à écrire. Quantité : nombre, Données : tableau de n objets. Ecriture date et heure Segment : 10 (segment des objets communs), Type d'objet : 0 par défaut, Adresse de l'objet : 0 → date et heure courantes, Quantité : 0 par défaut, Données : 17 caractères ASCII décrivant la date et l'heure : AAAAMMJJHHMMSS.DN, AAAA = année, MM = mois, JJ = jour, HH = heure, MM = minute, SS = seconde, D = dixième de seconde, N = jour de la semaine, ___________________________________________________________________________ 105 Ecriture période d'une tâche Segment : 6C (segment des tâches utilisateurs Ctrl), Type d'objet : 64 (période d'une tâche), Adresse de l'objet : 2 → tâche rapide, 3 → tâche maître, 4 → tâche auxiliaire 0, 5 → tâche auxiliaire 1, 6 → tâche auxiliaire 2, 7 → tâche auxiliaire 3, Quantité : 0 par défaut. Données : nouvelle période de la tâche en respectant les bases de temps de chaque tâche (FAST = 1ms, MAST = 1 ms et AUXi = 10 ms). Lecture bits internes Segment : 64 (segment des bits internes), Type d'objet : 5 (bits internes), Adresse de l'objet : numéro logique du premier bit interne, Quantité : nombre de bits à écrire modulo 8, Données : tableau d'octets contenant l'état des bits, chaque octet représente la valeur de huit bits (le forçage des bits ne peut pas être écrit). ___________________________________________________________________________ 106 Annexes 7 7.4-3 Initialisation application Cette requête permet la commutation vers l'état Stop d'un automate en défaut logiciel par la fonction générique UNITERequest. Format de la requête Code Code requête catégorie H/D EF/239 0 → 7 Attention : Selon le type de produit, la réservation préalable peut être nécessaire. Format du compte rendu Compte rendu positif Code requête H/D FE/254 Compte rendu négatif Code requête H/D FD/253 Causes de rejet : • Requête inconnue, • Droits d'accès insuffisants, • Non réservation. ___________________________________________________________________________ 107 ___________________________________________________________________________ 108