Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Automation
Automation Forum d'entraide sur l'automatisme, la robotique et l'informatique industrielle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/07/2007, 15h26   #1
Nouveau Membre du Club
 
Inscription : juillet 2007
Messages : 69
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 69
Points : 36
Points : 36
Par défaut [WinCC-VBScript] lecture de bit

Bonjour a tous...

bon voila mon problème,je viens lire un mot (word) que je voudrais eclater en bit pour pouvoir par la suite venir en lire 5, le script bloque dans la boucle

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Function Text_Trigger(Byval Item)
Dim texte
Dim MON_INDEX,i
Dim Mon_Int
Dim Bit(16)mes bits
Set Mon_Int = HMIRuntime.Tags("Mon_Int")Mon mot 
Set MON_INDEX = HMIRuntime.Tags("MON_INDEX")
Set texte = ScreenItems("Mon_Text")
MsgBox "je suis la "
For i = 1 To 16
MsgBox "je suis lala "

	Bit(1) = Mon_Int & 2^i  'C est la que ca bloque au niveau du masque
	MsgBox "bit"
	
	If Bit(i) Then
		b = HMIRuntime.Tags("MON_INDEX").Read 
		texte.text TextFileReadLine("C:\Ma_list.txt",b)
	End If
Next 
MsgBox "out"

Merci a tous
End Function
ren973 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2007, 18h10   #2
Rédacteur
 
Avatar de omen999
 
Inscription : février 2006
Messages : 789
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 789
Points : 1 984
Points : 1 984
bonjour,
cette ligne:
Code :
Set Mon_Int = HMIRuntime.Tags("Mon_Int")
signifie que tu instancies un objet dénommé Mon_Int dont tu ne précises pas la nature
donc: peut très bien n'avoir aucun sens

si c'est du wincc, regarde ici: http://www.eng-tips.com/viewthread.cfm?qid=70365
__________________
nomen omen, nemo non omen
le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
pas de questions techniques par mp
omen999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2007, 20h04   #3
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 779
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 779
Points : 16 855
Points : 16 855
Envoyer un message via Skype™ à bbil
en vb le & est l'opérateur de concaténation de chaines de caractéres .. pour faire un ET logique entre deux mots utilise AND ...

tiens un script pour t'en persuader :
Code :
1
2
3
MsgBox 12 & 21
MsgBox 12 AND 21
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 16h13   #4
Nouveau Membre du Club
 
Inscription : juillet 2007
Messages : 69
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 69
Points : 36
Points : 36
Merci a tous les deux pour vos conseils mais ca marche toujours pas...et oui il s'agit bien de vbs pour WinCC

Je vais essayer de vous détailler plus ce que je veux faire avec ce script....

1) Je recupere un WORD de 16 bits depuis un automate
Code :
Set Mon_Int = HMIRuntime.Tags("Mon_Int")
2) Je dois l'eclaté ( Masquer ) pour pourvoir lire le mot bit a bit (J'ai en faite besoin de lire le bit 12,11,2,1,0

Code :
1
2
3
4
5
6
For i = 1 To 16
MsgBox "je suis lala "

	Bit(1) = Mon_Int & 2^i  'C est la que ca bloque au niveau du masque
	MsgBox "bit"
	Next

Mais a ce niveau ca bloque Je ne peut donc pas faire mes testes sur mes bits
Jai aussi essayer avec AND mais le resultat est identique.
C'est un script qui marche parfaitement en C
Code :
1
2
3
4
5
6
BOOL Bit[16]
for (i=0;i<16;i++) 
{
Bit[i]=((WORD)value>>i)&0x1;
}
En faite c est ce code en c que je veux faire en VBS

Merci
ren973 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 19h34   #5
Rédacteur
 
Avatar de omen999
 
Inscription : février 2006
Messages : 789
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 789
Points : 1 984
Points : 1 984
Citation:
Je recupere un WORD de 16 bits depuis un automate
justement ... non
Mon_Int n'est très vraisemblablement pas une valeur de sous-type vbInteger
mais plutôt un objet avec ses propriétés et ses méthodes que ton éditeur de script intégré doit te fournir
donc rien d'étonnant à ce que tu n'arrives pas à concaténer un entier long avec un objet
__________________
nomen omen, nemo non omen
le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
pas de questions techniques par mp
omen999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 20h48   #6
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 779
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 779
Points : 16 855
Points : 16 855
Envoyer un message via Skype™ à bbil
en fait tu cumule 2 problèmes... essai de séparer en deux ton instructions.. commence à placer MonInt dans une variable integer.. pas un objet avec set...

voici un extrait de la documentation Wincc ("WinCC V6.0
Documentation de base
") sur la lecture d'un entier :
Code :
1
2
3
4
Dim lngValue
Set objTag1 = HMIRuntime.Tags("Tag1")
lngValue = objTag1.Read
adapte ce code à ton cas puis utilise le AND...

Code :
Bit(1) = lngValue AND 2^i
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2007, 08h46   #7
Nouveau Membre du Club
 
Inscription : juillet 2007
Messages : 69
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 69
Points : 36
Points : 36
je teste ca dans la journée et je vous tiens au courant
Merci
ren973 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2007, 16h07   #8
Nouveau Membre du Club
 
Inscription : juillet 2007
Messages : 69
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 69
Points : 36
Points : 36
Bon bah merci a tous c'etait bien comme ca qu il fallait faire...
ren973 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h30.


 
 
 
 
Partenaires

Hébergement Web