Bonjour,
J'ai crée un FB1000 instancié, d'ou un numéro de DB1000 lors de l'appel dans OB1 (par exemple).
Dans ce FB crée, c'est un programme d'enregistrement avec l'utilisation de pointeur.
Par contre, si je veux écrire dans le DB instancié, la solution la plus simple pour la localisation du DB c'est AUF DB1000,
OU
Mettre en Patte IN du FB, le numéro du DB.
MAIS
Comment connaitre le numéro de DB instancié du FB sans faire les 2 solutions ?
AUF DB[valeur de l'instance]
En attente de vous lire.
Merci.
Comment connaitre le numéro de DB instancié ?
Re: Comment connaitre le numéro de DB instancié ?
De mémoire, il suffit de lire le DIX y.z ou le DIWzz ou le DIDzz.
Si quelquefois tu te sens petit, inutile, démoralisé ou dépressif, n'oublies jamais que tu as été un jour le plus rapide et le meilleur spermatozoïde de ta bande ...
-
- Mi homme - Mi automate
- Messages : 2076
- Inscription : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: Comment connaitre le numéro de DB instancié ?
Salut !
Sur les anciennes générations d'automates on écrivait dans le dernier DB ouvert si on ne faisait pas de nouvelle déclaration d'ouverture.
De même qu'un DB restait ouvert jusqu'au BE du bloc qui avait provoqué son ouverture !
Il y avait une pile de DB ...
Partant de là, si ton bloc instancié n'ouvre pas d'autre DB (AUF Dbxx) , toute écriture dans un DB devrait se faire dans son DB d'instance !
A voir ici une petite explication.
https://support.industry.siemens.com/cs ... 0&lc=fr-FR
Et c'est donc si difficile de voir quel DB est ouvert, qu'ils préconisent une écriture DBxx.DBByyy afin d'être sûr d'écrire ou lire dans le bon DB.
A voir si dans les blocs systèmes , il y aurait pas un bloc qui te permette de lire la pile des blocs DB !
Sur les anciennes générations d'automates on écrivait dans le dernier DB ouvert si on ne faisait pas de nouvelle déclaration d'ouverture.
De même qu'un DB restait ouvert jusqu'au BE du bloc qui avait provoqué son ouverture !
Il y avait une pile de DB ...
Partant de là, si ton bloc instancié n'ouvre pas d'autre DB (AUF Dbxx) , toute écriture dans un DB devrait se faire dans son DB d'instance !
A voir ici une petite explication.
https://support.industry.siemens.com/cs ... 0&lc=fr-FR
Et c'est donc si difficile de voir quel DB est ouvert, qu'ils préconisent une écriture DBxx.DBByyy afin d'être sûr d'écrire ou lire dans le bon DB.
A voir si dans les blocs systèmes , il y aurait pas un bloc qui te permette de lire la pile des blocs DB !
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part !
Re: Comment connaitre le numéro de DB instancié ?
Merci,
Mon bloc d'enregistrement de données événementiel fonctionne.
//Indexage date et heure
L #Pointeur
SLD 3
LAR1
L DID 32
T DID [AR1,P#0.0]
L DID 36
T DID [AR1,P#4.0]
//Données
L #D_R_0
T DID [AR1,P#8.0]
L #D_R_1
T DID [AR1,P#12.0]
L #D_R_2
T DID [AR1,P#16.0]
L #D_R_3
T DID [AR1,P#20.0]
Mon bloc d'enregistrement de données événementiel fonctionne.
//Indexage date et heure
L #Pointeur
SLD 3
LAR1
L DID 32
T DID [AR1,P#0.0]
L DID 36
T DID [AR1,P#4.0]
//Données
L #D_R_0
T DID [AR1,P#8.0]
L #D_R_1
T DID [AR1,P#12.0]
L #D_R_2
T DID [AR1,P#16.0]
L #D_R_3
T DID [AR1,P#20.0]
Re: Comment connaitre le numéro de DB instancié ?
Ça va, j'ai une bonne mémoire alors
Si quelquefois tu te sens petit, inutile, démoralisé ou dépressif, n'oublies jamais que tu as été un jour le plus rapide et le meilleur spermatozoïde de ta bande ...
-
- Mi homme - Mi automate
- Messages : 2076
- Inscription : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: Comment connaitre le numéro de DB instancié ?
Re !
Oups ai fait une knaki... suis passé à côté d'une chose simple !
Oups ai fait une knaki... suis passé à côté d'une chose simple !
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part !
Re: Comment connaitre le numéro de DB instancié ?
Salut,
Le registre AR2 contient l'offset du FB en cours dans le DB d'instance.
Et le DB d'instance est indexé par le registre DI et donc les fonctions d'indexage DIX, DIB, DIW, DID ...
Il ne faut pas oublier que les FB peuvent s'imbriquer les uns dans les autres, d'où l'offset AR2.
Si tu utilises un pointeur sur une variable statique de ton FB, ce pointeur sera le décalage par rapport au couple DI / AR2.
Tu devrais pouvoir faire de l'indexage en pure "symbolique".
@+
Le registre AR2 contient l'offset du FB en cours dans le DB d'instance.
Et le DB d'instance est indexé par le registre DI et donc les fonctions d'indexage DIX, DIB, DIW, DID ...
Il ne faut pas oublier que les FB peuvent s'imbriquer les uns dans les autres, d'où l'offset AR2.
Si tu utilises un pointeur sur une variable statique de ton FB, ce pointeur sera le décalage par rapport au couple DI / AR2.
Tu devrais pouvoir faire de l'indexage en pure "symbolique".
@+