Vai al contenuto
PLC Forum


Script Per Movicon


Colonial

Messaggi consigliati

Salve a tutti

Sto lavorando su di una supervisione Movicon, dove a suo tempo avevo fatto scrivere uno script da un collega, che estraeva dei data da un database ricetta e li appoggiava su delle variabili; Ora devo rivedere questo script, ma ho delle perplessita' su di alcune istruzioni di cui non so come e dove trovarne la descrizione, non so neppure se appartengono a VBA oppure al linguaggio dei database; di seguito il segmento in questione;

Dim Nome() As String

Dim Posizione() As Integer

Public Sub SynopticLoading()

CARICA_COMPONENTI_RICETTA_SX

End Sub

Private Sub CARICA_COMPONENTI_RICETTA_SX

Dim cnn As ADODB.Connection

Dim rs As ADODB.Recordset

Dim i As Integer

ReDim Preserve Nome(0)

ReDim Preserve Posizione(0)

Set cnn = New ADODB.Connection

cnn.ConnectionString = GetDataLoggerRecipe("Component").GetADOConn

cnn.Open

Set rs = New ADODB.Recordset

query = "SELECT * FROM Component"

i = 0

rs.Open query,cnn,adOpenDynamic,adLockOptimistic

If Not rs.EOF Then

While Not rs.EOF

Nome(i) = rs("ComponentString").Value

Posizione(i) = rs("ComponentCode").Value

i = i + 1

rs.MoveNext

ReDim Preserve Nome(i)

ReDim Preserve Posizione(i)

Wend

End If

rs.Close

Set rs = Nothing

cnn.Close

Set cnn = Nothing

End Sub

'INIZIO COMPONENTI RICETTA

Public Sub OnVar1Changed(value As Variant)

For i = 0 To UBound(Nome)

If Nome(i)= Var1 Then Exit For

Next i

CodeVar1 = Posizione(i)

End Sub

Quello che mi interessa e' "Public Sub OnVar1Changed(value As Variant)" dove Var1 e' una variabile della supervisione.

Grazie anticipatamente a chi avra' la pazienza di rispondermi.

Link al commento
Condividi su altri siti


Dovresti spiegare meglio, cosa intendi con "rivedere lo script": non funziona oppure devi modificarne il funzionamento? In questo caso cosa vorresti ottenere?

La subroutine CARICA_COMPONENTI_RICETTA, non fà altro che recuperare da un DB un set di dati. Hai 2 vettori Nome e Posizione, il primo contiene le descrizioni dei componenti ed il secondo il codice di ciascun componenente, a quanto sembra.

La seconda subroutine viene eseguita quando si ha un cambiamento del valore di Var1. Abbiamo un ciclo FOR per fare una scansione degli elementi del vettore Nome contenente le stringhe di descrizione. ad ogni iterazione viene fatto un confronto tra l'elemento ì-esimo del vettore e Var1: se sono uguali, esco dal ciclo di scansione e vado a scrivere nella variabile CodeVar1 l'elemento corrispondente i-esimo del vettore Posizione, che contiene i codici componenti.

Esempio, se trovo che è il 3 elemento del vettore Nome ad essere uguale a Var1, dentro CodeVar1 vado a scrivere il terzo elemento del vettore Posizione.

Quello che non mi sembra giusto in questa subroutine, è che nel caso in cui non trovo nessun elemento in Nome corrispondente a Var1, comunque una volta che termina il ciclo FOR di scansione. dentro CodeVar1 verrà scritto il valore dell'ultimo elemento del vettore Posizione.

Esempio, se ho un vettore Nome di 5 elementi (gli indici vanno da 0 a 4), e nessuno di questi elementi coincide con Var1, alla fine mi ritroverò comunque che dentro CodeVar1 vado a scrivere il valore in Posizione(4); devi sapere tu se è giusta questa gestione o si tratta di un errore.

Link al commento
Condividi su altri siti

Ti ringrazio

In effetti stavo cercando di capire come questa routine funzionava per effettuare alcune modifiche; Quello che non trovavo e' appunto la funzione OnVarChanged che non capivo bene che facesse e da dove provenisse; probabilemnte stavo cercando nel posto sbagliato, in effetti sui manuali movicon ho trovato qualcoda: ONTEXTCHANGED, che appunto lavora sulle stringhe, io cercavo sulle variabili "numeriche"; comunque mi hai spiegato lo script in maniera molto esauriente e te ne ringrazio.

Ciao

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...