Schneider Electric TP Unite, librairie sur prise terminal Mode d'emploi

Ajouter à Mes manuels
108 Des pages
Schneider Electric TP Unite, librairie sur prise terminal Mode d'emploi | Fixfr
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

Manuels associés