Script programmierung

Dein Entwurf im Startpost funktioniert eigentlich, Du müsstest lediglich deine PLC-Variablen unter dem selben Namen in WinCC anlegen. (im Tia-Portal zweispaltige Ansicht aktivieren, links eine WinCC-Variablentabelle öffnene, rechts deinen DB, relevante Variablen markieren und Drag&Drop.

Das schaffst Du schon, wenn noch Fehler auftreten, kannst Du ja Screenshots posten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo nochmal :p,

habe alle Daten in WinCC - Variablentabelle eingetragen:

test.jpg

mit folgendem Code bekomme ich zwar keine Fehlermeldung mehr, aber es wird immer eine "0" eingetragen obwohl in der SPS / DB ein anderer Wert eingetragen ist
csv.png

Code:
For i=1 To 30 'Daten in die Tabelle eintragen
    rDsl="AUFTRAG_PROG.DATEN[" + Trim(CStr(i)) + "].ABSCHNITTLÄNGE"
    rDsw1="AUFTRAG_PROG.DATEN[" + Trim(CStr(i)) + "].WINKEL.A1"
    rDsw2="AUFTRAG_PROG.DATEN[" + Trim(CStr(i)) + "].WINKEL.B1"
    ts.WriteLine(i & ";" & SmartTags(rDsl) & ";" & SmartTags(rDsw1) & ";" & SmartTags(rDsw2))
Next




Was kann das noch sein?
 
Zuletzt bearbeitet:
es wird immer eine "0" eingetragen obwohl in der SPS / DB ein anderer Wert eingetragen ist
[...]
Was kann das noch sein?
Dieses Problem habe ich Dir bereits im Beitrag #7 vorhergesagt.

Vielleicht hast Du Dir die ganze Arbeit zum Zusammenbasteln der Variablennamen und der vielen Tags umsonst gemacht. Nur mit Rezepturen (Datensatzvariablen) oder aufwendig selbstprogrammierten Handshakes bekommt man sicher Variablen aus einer CPU gelesen. Alles andere ergibt mehr oder weniger glückliche zufällige Ergebnisse.

Hier war dem Kollege der Arbeitsaufwand für eine Rezeptur zu groß und er hat sich dann für eine anscheinend ausreichend gut funktionierende Ersatzvariante via zweimal Lesen der Variablen entschieden:
https://www.sps-forum.de/hmi/73704-...vieren-aktualisierungszeit-der-variablen.html

Harald
 
Moin Moin,
habe eine neue Erkenntnis: Wenn ich auf diese Art (siehe Code) auf die Daten zugreife dann Funktioniert es, ich kann meine Daten sauber aus dem DB auslesen (siehe Tabelle)

Verstehe aber nicht wiese das indiziert nicht funktioniert, müsste doch eigentlich Funktionieren..:confused:

Code:
'Kopfzeile Datensatz
ts.WriteLine("Datensatz-Nr.:; " & "Länge [mm]; " & "Winkel 1 [°]; " & "Winkel 2 [°]; ")
ts.WriteLine(1 & ";" & SmartTags("AUFTRAG_PROG.DATEN[1].ABSCHNITTLÄNGE") & ";" & _
         SmartTags("AUFTRAG_PROG.DATEN[1].WINKEL.A1") & ";" & _
         SmartTags("AUFTRAG_PROG.DATEN[1].WINKEL.B1"))
ts.WriteLine(2 & ";" & SmartTags("AUFTRAG_PROG.DATEN[2].ABSCHNITTLÄNGE") & ";" & _
         SmartTags("AUFTRAG_PROG.DATEN[2].WINKEL.A1") & ";" & _
         SmartTags("AUFTRAG_PROG.DATEN[2].WINKEL.B1"))          
ts.WriteLine(3 & ";" & SmartTags("AUFTRAG_PROG.DATEN[3].ABSCHNITTLÄNGE") & ";" & _
         SmartTags("AUFTRAG_PROG.DATEN[3].WINKEL.A1") & ";" & _
         SmartTags("AUFTRAG_PROG.DATEN[3].WINKEL.B1"))
ts.WriteLine(4 & ";" & SmartTags("AUFTRAG_PROG.DATEN[4].ABSCHNITTLÄNGE") & ";" & _
         SmartTags("AUFTRAG_PROG.DATEN[4].WINKEL.A1") & ";" & _
         SmartTags("AUFTRAG_PROG.DATEN[4].WINKEL.B1"))
ts.WriteLine(5 & ";" & SmartTags("AUFTRAG_PROG.DATEN[5].ABSCHNITTLÄNGE") & ";" & _
         SmartTags("AUFTRAG_PROG.DATEN[5].WINKEL.A1") & ";" & _
         SmartTags("AUFTRAG_PROG.DATEN[5].WINKEL.B1"))         
ts.WriteLine(6 & ";" & SmartTags("AUFTRAG_PROG.DATEN[6].ABSCHNITTLÄNGE") & ";" & _
         SmartTags("AUFTRAG_PROG.DATEN[6].WINKEL.A1") & ";" & _
         SmartTags("AUFTRAG_PROG.DATEN[6].WINKEL.B1"))

Tabelle:
Test2.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
'nabend.
Sag mal, liest Du eigentlich auch die Antworten und die Links, die Du bekommst?

Wenn Du den kompletten Tagname in Dein Skript schreibst, dann weiß TIA/WinCC.. von der Verwendung und liest die Variablen schon mal beim Bildaufbau, wo der Knopf mit dem Skriptaufruf ist. "sauber auslesen" ist aber was anderes... Ich spare mir jetzt zu fragen, was für einen Aktualisierungszyklus Du hast und welcher Trigger das Skript startet.

Harald
 
Hallo,
bin jetzt an einer anderen Aufgabe dran, und zwar möchte ich auf dem USB-Stick nach allen vorhandenen Dateien mit der Endung *.csv suchen.
Die Namen der Dateien sollen in einer WinCC Textliste eingetragen werden, dafür habe ich eine Textliste in WinCC angelegt. Jede Zeile hat eine Interne variable zugewiesen bekommen.

Habe mir anhand der Vorlage dieses Threads: https://www.sps-forum.de/hmi/30779-dateien-ordner-zaehlen.html folgenden Script erstellt.

Code:
Const MaxAnzahl = 10  'maximale Anzahl zu lesender Dateinamen
Dim fso, result, i, eintrag, auflistung(10), pfad, ordner


pfad = SmartTags("PARAMETER_USB_PFAD") 'F:\
ordner = SmartTags("PARAMETER_ORDNER") 'Auftrag



result = fso.Dir(pfad & ordner & "\" & "*.csv")


Set fso = CreateObject("FileCtl.FileSystem")


eintrag(0) = result
For i = 0 To MaxAnzahl
    If result <> "" Then Exit For
	result = fso.Dir() 
	auflistung(i)=result


Next
	TxlEintrag1=auflistung(1)
	TxlEintrag2=auflistung(2)
	TxlEintrag3=auflistung(3)
	TxlEintrag4=auflistung(4)
	TxlEintrag5=auflistung(5)
	TxlEintrag6=auflistung(6)
	TxlEintrag7=auflistung(7)
	TxlEintrag8=auflistung(8)
	TxlEintrag9=auflistung(9)
	TxlEintrag10=auflistung(10)



Textliste:
textlist.png



Bekomme aber keinen Eintrag in meiner Textliste. Die Variablen werden nicht beschrieben, weiß nicht genau wo dran es liegt.
 
Zurück
Oben