Ecrire dans String
Ecrire dans String
Bonjour ,
Je suis en train de faire un système d'envoi de sms suivant des alarmes sur un S7 300 , en V5.5.
Mon message actif est stocké dans un DB1 , format string [160 ]
J'aimerai pouvoir stocker tt mes messages dans un autre DB2 , et aller "piocher "dedans suivant condition .
Comment déplacer un string de mon DB2 vers mon DB1 ?
Ils ont tous la même longueur .
Merci d 'avance ,
Yann
Je suis en train de faire un système d'envoi de sms suivant des alarmes sur un S7 300 , en V5.5.
Mon message actif est stocké dans un DB1 , format string [160 ]
J'aimerai pouvoir stocker tt mes messages dans un autre DB2 , et aller "piocher "dedans suivant condition .
Comment déplacer un string de mon DB2 vers mon DB1 ?
Ils ont tous la même longueur .
Merci d 'avance ,
Yann
- djé
- Dieu du process
- Messages : 796
- Enregistré le : 20 oct. 2015, 09:55
- Localisation : Bretagne, Pays de la Loire, Nantes
Re: Ecrire dans String
Salut,
utilises le SFC20 "BLKMOV" en prenant soin d'utiliser, de préférence pour l'adressage des string, la manière "symbolique".
utilises le SFC20 "BLKMOV" en prenant soin d'utiliser, de préférence pour l'adressage des string, la manière "symbolique".
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 ...
- JC87
- Mi homme - Mi automate
- Messages : 1952
- Enregistré le : 20 oct. 2015, 13:00
- Localisation : Nouvelle Aquitaine
Re: Ecrire dans String
Bonjour,
Ou alors la méthode gros bourricot :
L DB2.DBDx
T DB1.DBDx
.
.
L DB2.DBDz
T DB1.DBDz
Bon c'est clair que le bloc move c'est quand même autrement plus élégant
JC
Ou alors la méthode gros bourricot :
L DB2.DBDx
T DB1.DBDx
.
.
L DB2.DBDz
T DB1.DBDz
Bon c'est clair que le bloc move c'est quand même autrement plus élégant
![M. Vert :mrgreen:](./images/smilies/icon_mrgreen.gif)
JC
"On veut faire du zéro défaut mais on a zéro bonhomme et zéro budget, et bien à la fin on a zéro résultat..."
- djé
- Dieu du process
- Messages : 796
- Enregistré le : 20 oct. 2015, 09:55
- Localisation : Bretagne, Pays de la Loire, Nantes
Re: Ecrire dans String
ou pour faire complet:
Transfert d'un message issu d'une table (DB2 "DB_SRC", MESSAGES : ARRAY [0 .. 20 ] OF STRING [160 ] - 21 messages au total) dans la destination DB1 "DB_DEST" (Message_txt : STRING [160 ])
MW100= numéro de message à envoyer (0à20)
Déclaration Local (Temp)
Source: ANY
Pointeur:DWORD
Rézo1: Contrôle (bornage num message)
Rézo2: Création du décalage (pointeur) en fonction du num message
Rézo3: Construction du pointeur ANY source
Rézo4: transfert via SFC20
Transfert d'un message issu d'une table (DB2 "DB_SRC", MESSAGES : ARRAY [0 .. 20 ] OF STRING [160 ] - 21 messages au total) dans la destination DB1 "DB_DEST" (Message_txt : STRING [160 ])
MW100= numéro de message à envoyer (0à20)
Déclaration Local (Temp)
Source: ANY
Pointeur:DWORD
Rézo1: Contrôle (bornage num message)
Code : Tout sélectionner
L MW 100
L 0
<I // test <0
SPB S000
L MW 100
L 20 // test >20
>I
SPB S001
SPA s003
S000: L 0
T MW 100
SPA s003
S001: L 20
T MW 100
s003: NOP 0
Code : Tout sélectionner
L MW 100
L 162
*I
SLD 3 // mise au format Pointeur
L P#DBX 0.0 // on part de zéro dans la DB2
+D
T #Pointeur
Code : Tout sélectionner
LAR1 P##Source
L B#16#10 // 10h pour S7
T LB [AR1,P#0.0]
L B#16#2 // type de données : BYTE= 2h
T LB [AR1,P#1.0]
L 162 // Taille 162 octets
T LW [AR1,P#2.0]
L 2 // Num DB=2 (DB2)
T LW [AR1,P#4.0]
L #Pointeur // décalage
T LD [AR1,P#6.0]
Code : Tout sélectionner
CALL "BLKMOV"
SRCBLK :=#Source
RET_VAL:=#TEMP_ret
DSTBLK :="DB_DEST".Message_txt
NOP 0
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: Ecrire dans String
Bonjour !!
plus simplement en SCL
FUNCTION_BLOCK FB83
title='';
"DB2".MESSAGE[1]:="DB1".MESSAGE[1];
"DB2".MESSAGE[2]:="DB1".MESSAGE[2];
"DB2".MESSAGE[3]:="DB1".MESSAGE[10];
END_FUNCTION_BLOCK
plus simplement en SCL
FUNCTION_BLOCK FB83
title='';
"DB2".MESSAGE[1]:="DB1".MESSAGE[1];
"DB2".MESSAGE[2]:="DB1".MESSAGE[2];
"DB2".MESSAGE[3]:="DB1".MESSAGE[10];
END_FUNCTION_BLOCK
- djé
- Dieu du process
- Messages : 796
- Enregistré le : 20 oct. 2015, 09:55
- Localisation : Bretagne, Pays de la Loire, Nantes
Re: Ecrire dans String
Bonjour,
Effectivement le SCL facilite grandement la programmation en rendant transparent tous une tas d'opération assez barbare (construction du pointeur ANY, utilisation du SCF20):
En SCL on peut ainsi directement affecter à la variable de destination un élément du tableau source:
Malheureusement tout le monde ne dispose pas du SCL et il est toujours intéressant, voire nécessaire de connaitre et comprendre les mécanismes qui sous-tendent au SCL.
Effectivement le SCL facilite grandement la programmation en rendant transparent tous une tas d'opération assez barbare (construction du pointeur ANY, utilisation du SCF20):
En SCL on peut ainsi directement affecter à la variable de destination un élément du tableau source:
Code : Tout sélectionner
FUNCTION FC100 : void
VAR_input
Idx:INT;
END_VAR
BEGIN
"DB_DEST".Message_txt:="DB_SRC".MESSAGES[Idx];
END_FUNCTION
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: Ecrire dans String
Bonjour,
Merci à tous !
Merci à tous !