Bonjour, j'ai créé avec un ami qui s'y connait en list un FC me permettant de récupérer les valeurs d'un DB(DB3023) en fonction de l'adresse du Bit mais il se trouve qu'au dessus d'une certaine adresse l'automate se met en stop( je suis en mode simulation) .
je sais pas a quoi c'est du etant donné que je m'y connais pas trop en list .
je vous met en images des captures d'écran de mes tests , le code et aussi le message d'erreur de l'automate.
La variable dentrée est MW23.
La sortie est MB100 .
j'aimerais donc avoir votre aide pour résoudre ce problème (mon ami étant absent ;( ) .
Cordialement
Adressage Programme en list
- djé
- Dieu du process
- Messages : 776
- Inscription : 20 oct. 2015, 09:55
- Localisation : Bretagne, Pays de la Loire, Nantes
Re: Adressage Programme en list
Salut,
La CPU plante car le code va chercher une adresse dans la DB qui n'existe pas. Si par exemple ta DB est composée de 1000 mots de 16 bits et que tu cherche à récupérer le 1001 éme mots, on est d'accord que ce mot n'existe pas, la CPU plante.
Pour éviter cela tu peux insérér l'OB121 (de mémoire) dans la CPU pour qu'elle ne passe passe pas en STOP.
L'OB121 est appellée en cas d'erreur de programmation et évite le passage en STOP de la CPU.
Il faut tout de même gérer dans le code les dépassements d'adresse.
La CPU plante car le code va chercher une adresse dans la DB qui n'existe pas. Si par exemple ta DB est composée de 1000 mots de 16 bits et que tu cherche à récupérer le 1001 éme mots, on est d'accord que ce mot n'existe pas, la CPU plante.
Pour éviter cela tu peux insérér l'OB121 (de mémoire) dans la CPU pour qu'elle ne passe passe pas en STOP.
L'OB121 est appellée en cas d'erreur de programmation et évite le passage en STOP de la CPU.
Il faut tout de même gérer dans le code les dépassements d'adresse.
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.
Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Re: Adressage Programme en list
Merci pour ta réponse , Pourtant 'adresse existe dans mon DB3023 mais rien à faire ça marche pas.
eux effectivement j'avais créé l'OB 121 pour évité le stop mais vue que sa résous pas mon problème jel'ai enlevé pour avoir l'automate en stop et savoir que ya un defaut.
eux effectivement j'avais créé l'OB 121 pour évité le stop mais vue que sa résous pas mon problème jel'ai enlevé pour avoir l'automate en stop et savoir que ya un defaut.
Re: Adressage Programme en list
Salut,
DB_Number_W n'est pas égal à 0 ? Donc il va taper dans le DB 0 ?
EDIT : j'avais pas vu le début du code.
Sinon je suis pas fan des LAR1 etc...
Au réseau 6 j'aurai fais :
AUF DB [#DB_Number_W]
L Byte_adr
ITD
SLD 3
T Byte_Pointeur // Créer cette variable en DINT
L DBB[Byte_Pointeur]
T Value
Sinon envoie ton projet ça sera plus facile...
DB_Number_W n'est pas égal à 0 ? Donc il va taper dans le DB 0 ?
EDIT : j'avais pas vu le début du code.
Sinon je suis pas fan des LAR1 etc...
Au réseau 6 j'aurai fais :
AUF DB [#DB_Number_W]
L Byte_adr
ITD
SLD 3
T Byte_Pointeur // Créer cette variable en DINT
L DBB[Byte_Pointeur]
T Value
Sinon envoie ton projet ça sera plus facile...
Re: Adressage Programme en list
Salut ,J'ai tester ta solution ce matin à tête reposé et sa marche du tonner .
Merci Infiniment .
Petite dernière question .Peut tu commenter l'instruction afin que je sache exactement ce que sa fait et comprendre d'ou venait l'erreur ?
Cordialement
Merci Infiniment .
Petite dernière question .Peut tu commenter l'instruction afin que je sache exactement ce que sa fait et comprendre d'ou venait l'erreur ?
Cordialement