Vai al contenuto
PLC Forum


Problemi Con Scrittura Di Una Variabile


Messaggi consigliati

Inserito: (modificato)

Salve a tutti,

ho un problema abbastanza strano con wincc e in particolare con gli script VB, non riesco a scrivere i valori delle variabili sul plc.

Le stesse variabili le riesco a leggerle ma no riesco a scriverle.. per esempio una variabile booleana:

If HMIRuntimes.Tags("NomeTagBool").read then

Msgbox("Prova")

HMIRuntimes.Tags("NomeTagBool").write 0

End if

La msgbox si apre ma la variabile non viene resettata...

lo stesso vale

se uso

HMIRuntimes.Tags(NomeTagBool).write false 0

Set HMIRuntimes.Tags(NomeTagBool).write false 0

...

Lo stesso problema l'ho se voglio scrivere su delle variabili interne..

gli altri script utilizzati nell'applicazione sono stati realizzati in C ma sinceramente quel linguaggio non lo conosco proprio minimamente

qualcuno ha idea di cosa può essere?

Grazie

Modificato: da Suabrina

Gianmario Pedrani
Inserita:

io per scrivere dei vaori s delle variabili in vbscrip per wincc flex utilizzavo l'assehnazione

es smarttag(nome_variabile)= valore

mentre se volevo leggerle variabile interna= smarttag(nome_variabile)

prrova e poi fammi sapere ciao

ps sono andato a memoria e non so se è corretto smarttag magari lo scritto sbagliato

Inserita:

mea culpa... il problema l'ho con winCC 6.2!!

Inserita: (modificato)
'VB
Dim my_object
Dim objTag
Dim objTag1

Set my_object = ScreenItems("Control2")  // Control2 is an OCX component

Set objTag = HMIRuntime.Tags("m_Time1")  // m_Time1 is an internal Tag defined
objTag.Read
objTag.Value = my_object.Time50   // write Tag with the value from OCX  Time50
objTag.Write()

Set objTag1 = HMIRuntime.Tags("m_Time3") // m_Time1 is an internal Tag defined
objTag1.Read
objTag1.Value = my_object.Time39 // write Tag with the value from OCX  Time39
objTag1.Write()

--------------------------------------------------------------------------------------------------------

// ANSI C

#define M_Var2 "Trigger1"  // Trigger1 is an internal Tag defined
#define M_Var3 "Trigger"   // Trigger is an internal Tag defined


SetTagBit(M_Var2,1);   //Set Tag  to 1  
SetTagBit(M_Var2,GetTagBit( M_Var3));    //Get Tag Value

Modificato: da Savino
Inserita:

Savino ho seguito il tuo esempio ma.. non funziona..

ti riporto il codice che ho scritto

Dim objtag

Set objtag = HMIRuntime.Tags("VRC_STRB")

objTag.Read

objTag.Value = false

objTag.Write()

ma la variabile non si scrive mai...

Inserita:

La cosa strana è che se anche provo a scrivere su una variabile interna ottengo sempre lo stesso risultato.. cioè nulla cambia..

Inserita:
Savino ho seguito il tuo esempio ma.. non funziona..

ti riporto il codice che ho scritto

Dim objtag

Set objtag = HMIRuntime.Tags("VRC_STRB")

objTag.Read

objTag.Value = false

objTag.Write()

strano! a me funziona... scusa sesono pignolo ma prova a scrivere objtag (come dichiarato) su tutte le statements al posto di objTag

Poi, controlla che il tag "VRC_STRB" sia stato definito come internal Tag

Inserita:

Savino scusami ma con WinCC sono veramente una schiappa... per internal Tag intendi come tag interna a cui non è associato un indirizzo fisico sul plc?

Se si, come faccio poi a scriverla sul plc?

Grazie e scusami ancora

Inserita:

Riporto il codice da me scritto:

Sub LogPesature

On Error Resume Next

Dim objConn, strquery

Dim data

Dim objtag

If HMIRuntime.Tags("PLC1/40AR01/43AP01/S7$Program/VRC_STRBHMI") Then

'MsgBox("Sono in ciclo")

' Apertura connessione con database

Set objConn = CreateObject("ADODB.Connection")

objConn.Open "DSN=ConnLAMSRV"

If objConn.State <> 1 Then

'MsgBox ("Impossibile connettersi")

' Connessione non riuscita

Set objConn = Nothing

Exit Sub

End If

data = Date

' Preparazione query scrittura SQL

strquery = "INSERT INTO Forno (Anno, Mese, Giorno, Ora, Minuti, Peso)"_

& " VALUES (" & Year(data) &", " & Month(data) &", " & Day(data) &", " & Hour(Now) &", " & Minute(Now) & ", " & CDbl(HMIRuntime.Tags("PLC1/40AR01/43AP01/S7$Program/VRC_MSPSBILHMI").read) &")"

objConn.Execute strquery

Set objConn = Nothing

Set objtag = HMIRuntime.Tags("PLC1/40AR01/43AP01/S7$Program/VRC_STRBHMI")

objtag.Read

objtag.Value = 0

objtag.Write()

End If

End Sub

Se tolgo i commenti ai popup vedo che entro nel ciclo, ma la variabile non mi scrive..

Lo stesso mi succede se voglio scrivere un valore di una variabile residente su plc su di una variabile interna :

Sub Aggiorna_FS

Dim objtag

'AGGIORNO FONDOSCALA CORRENTI VARIABILI INTERNE

Set LAM_Bargraph_G01_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G01FSRZIAR")

Set LAM_Bargraph_G02_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G02FSRZIAR")

Set LAM_Bargraph_G03_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G03FSRZIAR")

Set LAM_Bargraph_G04_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G04FSRZIAR")

Set LAM_Bargraph_G05_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G05FSRZIAR")

Set LAM_Bargraph_G06_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G06FSRZIAR")

Set LAM_Bargraph_G07_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G07FSRZIAR")

Set LAM_Bargraph_G08_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G08FSRZIAR")

Set LAM_Bargraph_G09_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G09FSRZIAR")

Set LAM_Bargraph_G10_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G10FSRZIAR")

Set LAM_Bargraph_G11_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G11FSRZIAR")

Set LAM_Bargraph_G12_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G12FSRZIAR")

Set LAM_Bargraph_G13_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G13FSRZIAR")

Set LAM_Bargraph_G14_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G14FSRZIAR")

Set LAM_Bargraph_G15_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G15FSRZIAR")

Set LAM_Bargraph_G16_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G16FSRZIAR")

Set LAM_Bargraph_M17_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_M17FSRZIAR")

Set LAM_Bargraph_TR31_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_TR31FSRZIAR")

Set LAM_Bargraph_TR32_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_TR32FSRZIAR")

Set LAM_Bargraph_CV31_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_CV31FSRZIAR")

Set LAM_Bargraph_CV32_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_CV32FSRZIAR")

Set LAM_Bargraph_TR41_FS_A = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_TR41FSRZIAR")

Set LAM_Bargraph_TR42_FS_A = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_TR42FSRZIAR")

Set LAM_Bargraph_TR51_FS_A = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_TR51FSRZIAR")

Set LAM_Bargraph_TR52_FS_A = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_TR52FSRZIAR")

Set LAM_Bargraph_CV41_FS_A = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_CV41FSRZIAR")

Set LAM_Bargraph_CV42_FS_A = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_CV42FSRZIAR")

Set LAM_Bargraph_FC11_FS_A = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_FC11FSRZIAR")

Set LAM_Bargraph_FC12_FS_A = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_FC12FSRZIAR")

Set LAM_Bargraph_FC21_FS_A = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_FC21FSRZIAR")

Set LAM_Bargraph_FC22_FS_A = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_FC22FSRZIAR")

Set LAM_Bargraph_TR7_FS_A = HMIRuntime.Tags("PLC4/40AR01/45AP01/S7$Program/BAR_CM/BAR_TR7FSRZIAR")

Set LAM_Bargraph_CS5_FS_A = HMIRuntime.Tags("PLC4/40AR01/45AP01/S7$Program/BAR_CM/BAR_CS5FSRZIAR")

Set LAM_Bargraph_PLA_FS_A = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_PLAFSRZIAR")

'AGGIORNO FONDOSCALA GIRI MOTORE VARIABILI INTERNE

Set LAM_Bargraph_G01_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G01FSRZVEL")

Set LAM_Bargraph_G02_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G02FSRZVEL")

Set LAM_Bargraph_G03_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G03FSRZVEL")

Set LAM_Bargraph_G04_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G04FSRZVEL")

Set LAM_Bargraph_G05_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G05FSRZVEL")

Set LAM_Bargraph_G06_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G06FSRZVEL")

Set LAM_Bargraph_G07_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G07FSRZVEL")

Set LAM_Bargraph_G08_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G08FSRZVEL")

Set LAM_Bargraph_G09_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G09FSRZVEL")

Set LAM_Bargraph_G10_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G10FSRZVEL")

Set LAM_Bargraph_G11_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G11FSRZVEL")

Set LAM_Bargraph_G12_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G12FSRZVEL")

Set LAM_Bargraph_G13_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G13FSRZVEL")

Set LAM_Bargraph_G14_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G14FSRZVEL")

Set LAM_Bargraph_G15_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G15FSRZVEL")

Set LAM_Bargraph_G16_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_G16FSRZVEL")

Set LAM_Bargraph_M17_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_M17FSRZVEL")

Set LAM_Bargraph_TR31_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_TR31FSRZVEL")

Set LAM_Bargraph_TR32_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_TR32FSRZVEL")

Set LAM_Bargraph_CV31_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_CV31FSRZVEL")

Set LAM_Bargraph_CV32_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_CV32FSRZVEL")

Set LAM_Bargraph_TR41_FS_rpm = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_TR41FSRZVEL")

Set LAM_Bargraph_TR42_FS_rpm = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_TR42FSRZVEL")

Set LAM_Bargraph_TR51_FS_rpm = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_TR51FSRZVEL")

Set LAM_Bargraph_TR52_FS_rpm = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_TR52FSRZVEL")

Set LAM_Bargraph_CV41_FS_rpm = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_CV41FSRZVEL")

Set LAM_Bargraph_CV42_FS_rpm = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_CV42FSRZVEL")

Set LAM_Bargraph_FC11_FS_rpm = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_FC11FSRZVEL")

Set LAM_Bargraph_FC12_FS_rpm = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_FC12FSRZVEL")

Set LAM_Bargraph_FC21_FS_rpm = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_FC21FSRZVEL")

Set LAM_Bargraph_FC22_FS_rpm = HMIRuntime.Tags("PLC3/40AR01/45AP01/S7$Program/BAR_CM/BAR_FC22FSRZVEL")

Set LAM_Bargraph_TR7_FS_rpm = HMIRuntime.Tags("PLC4/40AR01/45AP01/S7$Program/BAR_CM/BAR_TR7FSRZVEL")

Set LAM_Bargraph_CS5_FS_rpm = HMIRuntime.Tags("PLC4/40AR01/45AP01/S7$Program/BAR_CM/BAR_CS5FSRZVEL")

Set LAM_Bargraph_PLA_FS_rpm = HMIRuntime.Tags("PLC2/40AR01/45AP01/S7$Program/BAR_CM/BAR_PLAFSRZVEL")

End Sub

Ovviamente nel secondo esempio non ho implementato il tuo esempio, o meglio l'ho provato ma ho visto che non funzionava e allora ho cancellato..

Inserita:

Potrebbe creare problemi il fatto che sia un applicazione con un server e pù client?

Inserita:

Ora funziona!!!!

On Error Resume Next

Dim objConn, strquery

Dim data

Dim objtag

Set objtag = HMIRuntime.Tags("PLC1/40AR01/43AP01/S7$Program/VRC_STRBHMI")

' Associo la variabile all'oggetto

objtag.Read

' Leggo la variabile

If objtag.value Then

'MsgBox("Sono in ciclo")

'MsgBox(objtag.value)

' Apertura connessione con database

Set objConn = CreateObject("ADODB.Connection")

objConn.Open "DSN=ConnLAMSRV"

If objConn.State <> 1 Then

'MsgBox ("Impossibile connettersi")

' Connessione non riuscita

Set objConn = Nothing

Exit Sub

End If

data = Date

' Preparazione query scrittura SQL

strquery = "INSERT INTO Forno (Anno, Mese, Giorno, Ora, Minuti, Peso)"_

& " VALUES (" & Year(data) &", " & Month(data) &", " & Day(data) &", " & Hour(Now) &", " & Minute(Now) & ", " & CDbl(HMIRuntime.Tags("PLC1/40AR01/43AP01/S7$Program/VRC_MSPSBILHMI").read) &")"

objConn.Execute strquery

Set objConn = Nothing

objtag.Value = 0

' Resetto il valore dell'oggetto

'MsgBox (objtag.Value)

objtag.Write()

' Scrivo il valore nella variabile

'MsgBox (objtag.Value)

End If

End Sub

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...