Comment connaitre le numéro de DB instancié ?

Forum traitant des automates industriels de marque Siemens.
Avatar de l’utilisateur
bipcoyote
Codeur fou
Codeur fou
Messages : 203
Inscription : 16 janv. 2018, 13:19
Localisation : Dunkerque

Comment connaitre le numéro de DB instancié ?

Message par bipcoyote »

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.
Lorent2
Maître du binaire
Maître du binaire
Messages : 484
Inscription : 27 déc. 2015, 08:52

Re: Comment connaitre le numéro de DB instancié ?

Message par Lorent2 »

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 ...
philou77
Mi homme - Mi automate
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é ?

Message par philou77 »

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 !
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Avatar de l’utilisateur
bipcoyote
Codeur fou
Codeur fou
Messages : 203
Inscription : 16 janv. 2018, 13:19
Localisation : Dunkerque

Re: Comment connaitre le numéro de DB instancié ?

Message par bipcoyote »

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]

:D
Lorent2
Maître du binaire
Maître du binaire
Messages : 484
Inscription : 27 déc. 2015, 08:52

Re: Comment connaitre le numéro de DB instancié ?

Message par Lorent2 »

Ça va, j'ai une bonne mémoire alors :mrgreen:
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 ...
philou77
Mi homme - Mi automate
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é ?

Message par philou77 »

Re !

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 ! :D
steph68
Codeur fou
Codeur fou
Messages : 268
Inscription : 21 oct. 2015, 08:23

Re: Comment connaitre le numéro de DB instancié ?

Message par steph68 »

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".

@+
Répondre