Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1672 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  appel de procédure ....

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

appel de procédure ....

n°1398112
dynamique
pour une liaison opc / excel
Posté le 30-06-2006 à 15:26:39  profilanswer
 

en effet j'ai cette instruction : ItemIDs(1) = Range("A" & i).Value  
 
dans une procédure et j'ai ces instruction :  
     
  Range("B" & i).Value = CStr(ItemValues(1))
  Range("C" & i).Value = Hex(Qualities(1))
  Range("D" & i).Value = CStr(TimeStamps(1))
 
dans une autre. Le probleme c'est qu'avec la première que je dois exécuter les autres. Alors comment faire pour relié les (sachant que c'est dans deux différents procédure)  ?
Merci

mood
Publicité
Posté le 30-06-2006 à 15:26:39  profilanswer
 

n°1398114
jpcheck
Pioupiou
Posté le 30-06-2006 à 15:28:13  profilanswer
 

vous pouvez répétez la question ? :pt1cable:

n°1398138
dynamique
pour une liaison opc / excel
Posté le 30-06-2006 à 15:37:32  profilanswer
 

ok, donc voici mon probleme / je travail sur une liaison OPC-Excel, je dois lire des variables automatiquement sur un fichier Excel.
Pour cela j'ai fais un code qui me permet de lire pour un début une seule variable, aprés j'ai essayé de généralisé pour plusieurs variables en faisant l'instruction : ItemIDs(1) = Range("A" & i).Value  
qui sert (suivant la valeur de i) à lire la variable que je saisi dans la case correspondante. Si dans la cellule A1, j'ai var1, alors la valeur que je fais entré (dans le WinCC Runtime) sera affiché automatiquement dans la cellule correspondante et ainsi de suite pour les autres variables.
Le probleme c'est que je dois affecté à chaque fois une valeur à i manuellement pour pouvoir lire une variable dans la case qui correspond.
 
 
NB : WinCC : logiciel de supervision de Siemens (je vous envoi le code)
 
Option Explicit
 
Option Base 1
 
Const ServerName = "OPCServer.WinCC"
 
 
Dim WithEvents MyOPCServer As OpcServer
 
Dim WithEvents MyOPCGroup As OPCGroup
 
Dim MyOPCGroupColl As OPCGroups
 
Dim MyOPCItemColl As OPCItems
 
Dim MyOPCItems As OPCItems
 
Dim MyOPCItem As OPCItem
 
 
 
Dim ClientHandles(1) As Long
 
Dim ServerHandles() As Long
 
Dim Values(1) As Variant
 
Dim Errors() As Long
 
Dim ItemIDs(1) As String
 
Dim GroupName As String
 
Dim NodeName As String
 
Dim i As Integer
 
 
'--------------------------------------------------------------------
 
' Sub StartClient()
 
' Purpose: Connect to OPC_server, create group and add item
 
'-------------------------------------------------------------------
 
 
 
Sub StartClient()
 
  ' On Error GoTo ErrorHandler
 
  '----------- We freely can choose a ClientHandle and GroupName
 
  ClientHandles(1) = 1
 
  GroupName = "MyGroup"
 
  '----------- Get the ItemID from cell "A1"
 
  NodeName = Range("A1" ).Value
   
   
  For i = 2 To 5
   ItemIDs(1) = Range("A" & i).Value
   
   
   
  '----------- Get an instance of the OPC-Server
 
  Set MyOPCServer = New OpcServer
 
  MyOPCServer.Connect ServerName, NodeName
 
 
 
  Set MyOPCGroupColl = MyOPCServer.OPCGroups
 
  '----------- Set the default active state for adding groups
 
  MyOPCGroupColl.DefaultGroupIsActive = True
 
  '----------- Add our group to the Collection
 
  Set MyOPCGroup = MyOPCGroupColl.Add(GroupName)
 
 
 
  Set MyOPCItemColl = MyOPCGroup.OPCItems
 
  '----------- Add one item, ServerHandles are returned
 
  MyOPCItemColl.AddItems 1, ItemIDs, ClientHandles, ServerHandles, Errors
 
  '----------- A group that is subscribed receives asynchronous notifications
 
  MyOPCGroup.IsSubscribed = True
 
  Exit Sub
 
 
 
ErrorHandler:
 
  MsgBox "Error: " & Err.Description, vbCritical, "ERROR"
 
End Sub
 
 
 
'--------------------------------------------------------------------
 
' Sub StopClient()
 
' Purpose: Release the objects and disconnect from the server
 
'--------------------------------------------------------------------
 
Sub StopClient()
 
  '----------- Release the Group and Server objects
 
  MyOPCGroupColl.RemoveAll
 
  '----------- Disconnect from the server and clean up
 
  MyOPCServer.Disconnect
 
  Set MyOPCItemColl = Nothing
 
  Set MyOPCGroup = Nothing
 
  Set MyOPCGroupColl = Nothing
 
  Set MyOPCServer = Nothing
 
End Sub
 
 
 
'--------------------------------------------------------------------
 
' Sub MyOPCGroup_DataChange()
 
' Purpose: This event is fired when a value, quality or timestamp in our Group has changed
 
'--------------------------------------------------------------------
 
'----------- If OPC-DA Automation 2.1 is installed, use:
 
Private Sub MyOPCGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)
 
 '----------- Set the spreadsheet cell values to the values read
 
 
 
   
  Range("B" & i).Value = CStr(ItemValues(1))
  Range("C" & i).Value = Hex(Qualities(1))
  Range("D" & i).Value = CStr(TimeStamps(1))
   
 
 
End Sub
 
 
 
'--------------------------------------------------------------------
 
' Sub worksheet_change()
 
' Purpose: This event is fired when our worksheet changes, so we can write a new value
 
'---------------------------------------------------------------------
 
'Private Sub worksheet_change(ByVal Selection As Range)
 
  '----------- Only if cell "B3" changes, write this value
 
  'If Selection <> Range("B3" ) Then Exit Sub
 
  'Values(1) = Selection.Cells.Value
 
  '----------- Write the new value in synchronous mode
 
  'MyOPCGroup.SyncWrite 1, ServerHandles, Values, Errors
 
'End Sub

n°1398141
dynamique
pour une liaison opc / excel
Posté le 30-06-2006 à 15:39:32  profilanswer
 

la premiere instruction qui est : ItemIDs(1) = Range("A" & i).Value
dans la procédure : Sub StartClient(), et les autres :  
  Range("B" & i).Value = CStr(ItemValues(1))
  Range("C" & i).Value = Hex(Qualities(1))
  Range("D" & i).Value = CStr(TimeStamps(1))
 
dans : Private Sub MyOPCGroup_DataChange (....)
 

n°1398157
dynamique
pour une liaison opc / excel
Posté le 30-06-2006 à 15:51:48  profilanswer
 

NB,  si je résume  
 
Disant mon probleme actuel est le suivant:
j'ai trouvé un astuce qui est le suivant :   i = 2 (par ex)
                                                   ItemIDs(1) = Range("A" & i).Value
 
puis en bas du programme : Range("B" & i).Value = CStr(ItemValues(1))
                                      Range("C" & i).Value = Hex(Qualities(1))
                                     Range("D" & i).Value = CStr(TimeStamps(1))  
 
le probleme, c'est que je dois faire entré à chaque fois une nouvelle valeur de i comme vous le savez, pour pouvoir lire les variables, ce qui n'est pas trop pratique.
Donc j'essaye de faire, soit un tableau du genre :  
                                            For i = 2 To 5
                                            ItemIDs(1) = Range("A" & i).Value  
                                            tableau(i) = ItemIDs(1)
                                            Next i
                                            End
pour pouvoir stocker les variables dans un tableau, puis les ramené en bas du code pour pouvoir lire les différentes lignes du tableau une par une, ou bien je laisse ma première instruction mais avec une modification du genre :  
                           for i = 2 to 1 milliard  
                           ItemIDs(1) = Range("A" & i).Value
                           et là, j'appel par exemple la fonction privé  Private Sub MyOPCGroup_DataChange (blabla.....)
                            next i  
                            end  
mais ici, je ne sais pas comment faire appel à la fonction privé Private Sub MyOPCGroup_DataChange(blabla.....) !!!!! afin d'exécuter pour chaque valeur de i les 3 lignes suivante :                                
                                   Range("B" & i).Value = CStr(ItemValues(1))
                                   Range("C" & i).Value = Hex(Qualities(1))
                                   Range("D" & i).Value = CStr(TimeStamps(1))  
Merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  appel de procédure ....

 

Sujets relatifs
[VBA] Appel dynamique à une procédureAppel d'une procedure stockée
VB6.0 Appel d'une procedure public à partir d'une frmAppel Procédure Stockée Access depuis WinForm VB .Net en OLEDB
[HTML] appel der procedure de LogOffappel de procédure externe en Ada
Appel de procédureappel procedure ac tableau
Appel procedure stockee avec websphereAppel d'une procédure située dans un autre frm
Plus de sujets relatifs à : appel de procédure ....


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR