Avatar billede cdlarsen Nybegynder
01. februar 2009 - 11:05 Der er 4 kommentarer

Excel og PLC

Jeg har en kode her, som jeg har fundet, men den skal rettes lidt i. Når man starter den, henter den noget data i en plc og lægger værdien ind i et felt, som hedder A1 og opdaterer værdien hele tiden. Jeg kunne godt tænke mig, at hver gang der kommer en ny værdi fra plc'en så skal den ind i et nyt felt, f.eks a1, a2, a3, osv. Og så kunne jeg godt tænke mig, at der kommer tidspunkt ud fra værdien, dvs. når der kommer data i a1, så kommer der tidspunkt i b1 osv. Koden ser sådan ud lige nu:

'
' Excel VBA Example Code: Read single data element using OPC
'
Dim OPCServer1 As OPCServer  'Create references to OPC Server
Dim WithEvents OPCGroup1 As OPCGroup 'and Group objects
Private Sub CommandButton1_Click()
    If OPCServer1 Is Nothing Then
                    'When OPC server doesn't exist ...
        Set OPCServer1 = New OPCServer
                    'Create instance of OPC Server
        OPCServer1.Connect "RSLinx OPC Server" 
                    'Connect to an OPC Server
        Set OPCGroup1 = OPCServer1.OPCGroups.Add("MyOPCData") 
                    'Create an OPC group in the OPC Server
        OPCGroup1.OPCItems.AddItem "[SLC]S:42", 1             
                  'Add an Item to OPC Group & assign ClientHandle
'      OPCGroup1.OPCItems.AddItem "[Topic]Item", ClientHandle
        OPCGroup1.IsSubscribed = True               
                  'Receive data whenever it changes
    End If
End Sub

Private Sub CommandButton2_Click()
    On Error Resume Next
        'Ignore errors if OPC group or server doesn't exist
    Set OPCGroup1 = Nothing
        'Remove Group
    OPCServer1.Disconnect                                 
        'Disconnect from server
    Set OPCServer1 = Nothing         
        'Remove Server
End Sub

Private Sub OPCGroup1_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)
    [A1] = ItemValues(1) 
            'Assign data value to spreadsheet cell
   
'    For x = 1 To NumItems 
            'Another method for handling more than one item
'        Select Case ClientHandles(x)
  'based on the ClientHandle assigned in AddItem method
'            Case 1                      '
'                [A1] = ItemValues(x)
    '-Do this when ClientHandle = 1
'            Case 2                      '
'                         
            '-Do this when ClientHandle = 2
'            Case 3                      '
'                       
              '-Do this when ClientHandle = 3
'        End Select                      '
'    Next x                              '
End Sub

MVH
Claus larsen
Avatar billede stefanfuglsang Juniormester
01. februar 2009 - 12:20 #1
[A1] = ItemValues(1) 
            'Assign data value to spreadsheet cell
Avatar billede stefanfuglsang Juniormester
01. februar 2009 - 12:21 #2
[A1] = ItemValues(1) 
            'Assign data value to spreadsheet cell
skal erstattes af
Range("A1").offset(i)=ItemValues(1)
Range("B1").offset(i)=now()
i=i+1
Avatar billede cdlarsen Nybegynder
01. februar 2009 - 13:22 #3
hej Stefan
Tak for hjælpen, men den bliver ved med at skrive data i det samme felt,nu bare med dato i b1 Jeg vil gerne have den til at beholde værdien i et felt, så den skifter felt hvergang der kommer en ny værdi. a1, a2, a3, a4, osv

MVH
Claus
Avatar billede kabbak Professor
01. februar 2009 - 18:59 #4
Dim RW as long

        Case 1   
              RW = Range("A65536").End(xlUp).Row + 1                  '
'              cells(RW,1) = ItemValues(x)
                cells(Rw,2) = now()
    '-Do this when ClientHandle = 1
'            Case 2                      '

                  '
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester