afk
Level-1
- Beiträge
- 883
- Reaktionspunkte
- 97
-> Hier kostenlos registrieren
Da trügt Dich bestimmt Deine Erinnerung ...in C# habe ich andere erfahrungen gemacht *grübel*
Gruß Axel
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: This feature may not be available in some browsers.
Da trügt Dich bestimmt Deine Erinnerung ...in C# habe ich andere erfahrungen gemacht *grübel*
Ich philosophiere nicht, ich korrigiere nur eine falsche Aussage, die man IMHO so nicht stehen lassen kann.@afk und 4L :
Es ist schön, wie ihr hier philosophiert ... das hat nur leider (aus miener Sicht) gar nichts mit dem "Fehler" zu tun.
Da bin ich ganz Deiner Meinung, nur daß ich aufgrund Jespers Beschreibung einen anderen Grund für das Problem vermute als Du, wie ich hier auch zusammen mit einem mir bekannten Lösungsweg zu dem Problem aufgezeigt habe, wobei ich leider nicht weiß, ob das unter WinCC-Flexible auch funktioniert.Es ist auch kein Fehler sondern eher ein Ablauf-Problem. Das Script ist ja gar nicht fehlerhaft sondern es tritt eine Art Stau im Scripte-Stapel auf. Dieser rührt aus meiner Sicht von einer Überlastung die ursächlich aus dem Variablen-aktualsieren kommt.
*ACK*, ich bin auch auf die Auflösung gespannt ...In diesem Sinne ...
Das war sehr hilfreiche Informationen.Ich kenne WinCC-flex zwar überhaupt nicht, aber bei den ADO-Komponenten gibt es normalerweise jeweils eine Eigenschaft für den Connection-Timeout (beim Connection-Object, per Default 15 Sek.) und für den Command-Timeout (beim Recordset-Object und Command-Object, per Default 30 Sek.). Beide Timeouts werden in Sekunden angegeben, und besonders bei Verbindungen zu einer Datenbank auf dem gleichen PC oder im LAN kann man den Connect-Timeout meist problemlos verkürzen. Der Command-Timeout muß aber lange genug sein, damit die Abfrage innerhalb dieser Zeit auch in jedem Fall von der Datenbank verarbeitet werden kann.
Hallo Jesper,
gibt es bei dir neue Erkenntnisse ...?
Da ich ein ähnliches Problem habe würden mich deine Ergebnisse natürlich brennend interessieren.
Ja, es gibt tags mit 0.4 sek aktualisierungs takt.Mein Augenmerk hier besonders die 0,4s-Tags.
Gern geschehen.Danke an LL und AFK !
dim strTarget, strPingResults, biPingDone
On Error Resume Next
strTarget = "10.1.0.7" 'IP address or hostname of server
Set objShell = CreateObject("WScript.Shell")
IF NOT biPingDone THEN
Set objExec = objShell.Exec("ping -n 2 -w 1000 " & strTarget)
strPingResults = LCase(objExec.StdOut.ReadAll)
IF NOT InStr(strPingResults, "reply from") THEN
ShowSystemAlarm("There is no LAN connection to the database server !")
END IF
biPingDone = TRUE
END IF
' en: The script reads the indicated data record
'Declaration of local tags
Dim conn, rst, SQL_Table, strNameOfDatabase, strDSN, strNameOfTable, strConnect
If SmartTags("ODBC\for_test_block_ODBC") Then Exit Sub
If SmartTags("ODBC\strTableName_readDB") = "" Then SmartTags("ODBC\strTableName_readDB") = "disa.mw_cdr_mold_info" End If
If SmartTags("ODBC\strDSN_connect") = "" Then SmartTags("ODBC\strDSN_connect") = "Driver={Microsoft ODBC for Oracle};Server=MWE1_MSYS;UID=DISA;PWD=DISA" End If
On Error Resume Next
Set conn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
'Open data source
conn.Open SmartTags("ODBC\strDSN_connect")
If SmartTags("ODBC\debug_message_on") Then ShowSystemAlarm "conn.open " & SmartTags("ODBC\strDSN_connect")
If Err.Number <> 0 Then
ShowSystemAlarm "Error #" & Err.Number & " " & Err.Description
Err.Clear
Exit Sub
End If
SQL_Table = "SELECT * FROM " & SmartTags("ODBC\strTableName_readDB")
'Reads the data records of the SQL table
If SmartTags("ODBC\debug_message_on") Then ShowSystemAlarm SQL_Table
Set rst = conn.Execute(SQL_Table)
'Error routine
If Err.Number <> 0 Then
ShowSystemAlarm "Error #" & Err.Number & " " & Err.Description
Err.Clear
Exit Sub
End If
If SmartTags("ODBC\debug_message_on") Then ShowSystemAlarm SQL_Table
If Not (rst.EOF And rst.BOF) Then
'Compare if "End of File" or "Begin of File" exists, if not the pointer will be reset to the first entry
rst.MoveFirst 'reset to 1st entry
'read from DB values into HMI tags
SmartTags("ODBC\FromDB\cdr_type") = rst.Fields(0).Value
SmartTags("ODBC\FromDB\shift_date") = rst.Fields(1).Value
SmartTags("ODBC\FromDB\mold_no") = rst.Fields(2).Value
SmartTags("ODBC\FromDB\cool_time") = rst.Fields(3).Value
SmartTags("ODBC\FromDB\into_frm_wt") = rst.Fields(4).Value
SmartTags("ODBC\FromDB\into_sand_wt") = rst.Fields(5).Value
SmartTags("ODBC\FromDB\flow_temp") = rst.Fields(6).Value
SmartTags("ODBC\FromDB\frame_stat") = rst.Fields(7).Value
SmartTags("ODBC\FromDB\updown_rate") = rst.Fields(8).Value
'read from DB values into PLC tags
SmartTags("ODBC\FromDB\arrayToCDR")(0) = rst.Fields(0).Value
SmartTags("ODBC\FromDB\arrayToCDR")(1) = rst.Fields(1).Value
SmartTags("ODBC\FromDB\arrayToCDR")(2) = rst.Fields(2).Value
SmartTags("ODBC\FromDB\arrayToCDR")(3) = rst.Fields(3).Value
SmartTags("ODBC\FromDB\arrayToCDR")(4) = rst.Fields(4).Value
SmartTags("ODBC\FromDB\arrayToCDR")(5) = rst.Fields(5).Value
SmartTags("ODBC\FromDB\arrayToCDR")(6) = rst.Fields(6).Value
SmartTags("ODBC\FromDB\arrayToCDR")(7) = rst.Fields(7).Value
SmartTags("ODBC\FromDB\arrayToCDR")(8) = rst.Fields(8).Value
rst.close
Else
ShowSystemAlarm "Dat_No. is not available"
End If
'Close data source
conn.close
Set rst = Nothing
Set conn = Nothing
' en: The script wirtes the indicated data record into a table
Dim conn, rst, SQL_Table, chDecPoint, strNameOfDatabase, strDSN, strNameOfTable
If SmartTags("ODBC\for_test_block_ODBC") Then Exit Sub
If SmartTags("ODBC\strTableName_writeDB") = "" Then SmartTags("ODBC\strTableName_writeDB") = "disa.mw_cdr_jnl" End If
If SmartTags("ODBC\strDSN_connect") = "" Then SmartTags("ODBC\strDSN_connect") = "Driver={Microsoft ODBC for Oracle};Server=MWE1_MSYS;UID=DISA;PWD=DISA" End If
On Error Resume Next
chDecPoint = Mid(CStr(8.1), 2, 1)
If SmartTags("ODBC\debug_message_on") And Not chDecPoint = "." Then ShowSystemAlarm "Decimal separator is wrong. Set to '.' in Windows Control Panel .. Regional settings."
Set conn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
'Open data source
conn.Open SmartTags("ODBC\strDSN_connect")
If SmartTags("ODBC\debug_message_on") Then ShowSystemAlarm "conn.open " & SmartTags("ODBC\strDSN_connect")
'conn.Open "Provider=MSDASQL;Initial Catalog=" & strNameOfDatabase & ";" & strDSN
If Err.Number <> 0 Then
ShowSystemAlarm "Error #" & Err.Number & " " & Err.Description
Err.Clear
Exit Sub
End If
SQL_Table = "SELECT * FROM " & SmartTags("ODBC\strTableName_writeDB") 'no WHERE because there is only 1 record.
'Writes a data record into a table
Set rst = conn.Execute(SQL_Table)
'Error routine - Fehler Routine
If Err.Number <> 0 Then
ShowSystemAlarm "Error #" & Err.Number & " " & Err.Description
Err.Clear
Exit Sub
End If
If Not (rst.EOF And rst.BOF) Then
'Compare if "End of File" or "Begin of File" exists, if not the pointer will be reset to the first entry
'Definition of data record
SQL_Table = "INSERT INTO " & SmartTags("ODBC\strTableName_writeDB") & " (" & _
"shift_date, " & _
"mold_no, " & _
"setpoint_vol_of_water, " & _
"vol_of_water, " & _
"mold_temp, " & _
"sand_temp, " & _
"cdr_stat1, " & _
"cdr_stat2, " & _
"cdr_stat3 " & ") VALUES (" & _
SmartTags("ODBC\ToDB\arrayFromCDR")(0) & ", " & _
SmartTags("ODBC\ToDB\arrayFromCDR")(1) & ", " & _
SmartTags("ODBC\ToDB\arrayFromCDR")(2) & ", " & _
SmartTags("ODBC\ToDB\arrayFromCDR")(3) & ", " & _
SmartTags("ODBC\ToDB\arrayFromCDR")(4) & ", " & _
SmartTags("ODBC\ToDB\arrayFromCDR")(5) & ", " & _
SmartTags("ODBC\ToDB\arrayFromCDR")(6) & ", " & _
SmartTags("ODBC\ToDB\arrayFromCDR")(7) & ", " & _
SmartTags("ODBC\ToDB\arrayFromCDR")(8) & ")"
If SmartTags("ODBC\debug_message_on") Then ShowSystemAlarm SQL_Table
'Insert the data reacord of the table
Set rst = conn.Execute(SQL_Table)
End If
'Close data source
conn.close
Set rst = Nothing
Set conn = Nothing
was ist wenn man die verbindung offen läßt? kommt das nicht aufs selbe?
Set conn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
[U]conn.connectionTimeout=5
conn.commandTimeout=5[/U]
conn.Open SmartTags("ODBC\strDSN_connect")
If SmartTags("ODBC\debug_message_on") Then ShowSystemAlarm "conn.open " & SmartTags("ODBC\strDSN_connect")
If Err.Number <> 0 Then
ShowSystemAlarm "Error #" & Err.Number & " " & Err.Description
Err.Clear
[U]Exit Sub[/U]
End If
(usw..)
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Siehe weitere Informationen und konfiguriere deine Einstellungen