DotNetSimaticDatabaseProtokoller

Zuviel Werbung?
-> Hier kostenlos registrieren
Jochen eine Frage habe ich nochmal. Ist zwar nicht so wichtig aber kannst ja mal schauen bei gelegenheit.
Und zwar wenn ich die erstellt Datei geöffnet habe loggt der Protokoller nicht mehr. Dieser loggt erst weiter wenn die erstellte Datei geschlossen ist.
Ich lagere die Datei jetzt mit einer batch Datei automatisch aus um diese nicht zu öffnen

mfg shainax
 
Jochen eine Frage habe ich nochmal. Ist zwar nicht so wichtig aber kannst ja mal schauen bei gelegenheit.
Und zwar wenn ich die erstellt Datei geöffnet habe loggt der Protokoller nicht mehr. Dieser loggt erst weiter wenn die erstellte Datei geschlossen ist.
Ich lagere die Datei jetzt mit einer batch Datei automatisch aus um diese nicht zu öffnen

mfg shainax

Wahrscheinlich öffnet excel die datei exklusiv und sperrt sie, und da ich die datei nicht offen halte, sondern nur beim schreiben öffne...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen Jochen,

sag mal ist es möglich noch einen Triggerungstyp einzubinden in dein Programm?
Solange ein Merker gesetzt is das der Protokoller im Zeittakt(einstellbar) aufnimmt?
Damit könnte man die Fehler aus der SPS auslesen. Bei einem Fehlerereignis wird ein Merker gesetzt und bleibt gesetzt bis ein quittieren erfolgt. Wenn ich auf handshake gehe nimmt der Protokoller nur einmal auf. Ich wollte das mit eine Flanke realisieren in der SPS aber leider schaft der Protokoller nicht die Flanke (wahrscheinlich zu schnell). Jetzt dachte ich mir da ich sowieso einen Fehlerausgang in jeder SPS habe könnte ich wenn diese gesetzt ist z.B. jede Sekunde einen Wert aufnehmen.

Meinst du man kann das realisieren?

Achso noch etwas festgestellt.
Wenn ich zwei oder mehr Tabellen auf eine StorageDatei legen möchte wird nichts geschrieben.

Ich mach das nur mit csv.

mfg shainax
 
Wieso erweiterst du nicht einfach die S7 Bausteine?
Dann hättest du auch noch einen zwischen Buffer ;)


Ich wollte es ja so machen, dass wenn ein fehler kommt eine Flanke auf den Protokoller wirkt. Jedoch nimmt der Protokoller die Flanke nicht. Er verschluckt diese. Deshalb dachte ich es ist zu schnell das Ganze. Ich möchte auch nicht für jeden Fehler eine extra Datei anlegen( würde gehen). Ich möchte ein Ereignis aufnehmen Flanken getriggert. Protokoller nimmt erst auf wenn der merker etwas länger(zeit weis ich nicht) gesetzt ist. da kann ich die bausteine erweitern wie ich will.
entweder ich setze mir ein merker beim fehler und der Protokoller macht eine Aufnahme oder ich mache mir eine Flanke die bekommt der nicht mit.

mfg shainax
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wieso erweiterst du nicht einfach die S7 Bausteine?
Dann hättest du auch noch einen zwischen Buffer :wink:

). Ich möchte ein Ereignis aufnehmen Flanken getriggert. Protokoller nimmt erst auf wenn der merker etwas länger(zeit weis ich nicht) gesetzt ist. da kann ich die bausteine erweitern wie ich will.
entweder ich setze mir ein merker beim fehler und der Protokoller macht eine Aufnahme oder ich mache mir eine Flanke die bekommt der nicht mit.

mfg shainax


vielleicht meinen wir nicht das gleiche aber ich mache es so.


wenn ein Fehler kommt dann starte ich eine Zeit.
wenn dann der Fehler geht übergebe ich den Wert an den "FC_PROTOKOLL" (der Speichert sie auf der SPS in eine Buffer)
Mein Server holt sich dann den(die) Wert(e) über die Handshake Bits vom Buffer der SPS

so ähnlich sollte es doch auch gehen,Oder?
 
Guten Morgen Jochen,

sag mal ist es möglich noch einen Triggerungstyp einzubinden in dein Programm?
Solange ein Merker gesetzt is das der Protokoller im Zeittakt(einstellbar) aufnimmt?
Von diesem Trigger sehe Ich den Sinn nicht wirklich...

Achso noch etwas festgestellt.
Wenn ich zwei oder mehr Tabellen auf eine StorageDatei legen möchte wird nichts geschrieben.

Ich mach das nur mit csv.

mfg shainax

Danach werde ich schauen...
 
Achso, hatte überlese das du nur CSv machst! Willst du 2 datensätze in eine CSV datei schreiben? Das geht natürlich nicht, in eine CSV kann nur ein Datensatz!
 
Moin moin Jochen,

erstmal danke fuer die Implementation einer "Precision" ... hatte das ganze schon angefangen, aber konnte es noch nicht komplett zu Ende verfolgen (mein Ansatz war ganz anders :) )

Habe heute das komplett aktuelle source-paket rel 88261 runtergeladen, da fehlt in der ProtokollerLibrary ein Verzeichnis Remoting ...

Wenn ich das Remoting aus der Projektmappe rausnehme sowie das using in ProtokollerInstance.cs kann man das ganze jedoch wieder einwandfrei uebersetzen ...

Gruss,
nekron
 
Moin moin Jochen,

erstmal danke fuer die Implementation einer "Precision" ... hatte das ganze schon angefangen, aber konnte es noch nicht komplett zu Ende verfolgen (mein Ansatz war ganz anders :) )

Habe heute das komplett aktuelle source-paket rel 88261 runtergeladen, da fehlt in der ProtokollerLibrary ein Verzeichnis Remoting ...

Wenn ich das Remoting aus der Projektmappe rausnehme sowie das using in ProtokollerInstance.cs kann man das ganze jedoch wieder einwandfrei uebersetzen ...

Gruss,
nekron

Hab das was vergessen zu comitten, was noch nicht ganz fertig ist... Sollt nun wieder gehen!
 
Moin moin ...

Hier ein quick'n'dirty Hack, um in ein CSV-File einen TimeStamp zu protokollieren ...

1) Er kommt an erster Stelle (bei uns historisch bedingt :) )
2) Er bekommt im Header das DatabaseField aus der Konfiguration als Kommentar

ansonnsten hab ich Versucht deinen Stil beizubehalten :)

Falls Du einfach das komplette File haben möchtest, sag bescheid ...

Gruss,
michael

diff .\siemensplctoolboxlib-88784\DotNetDatenbankProtokollerV2\ProtokollerLibrary\Databases\CSVFile\CSVStorage.cs

25d24
< private string dateFieldName;
80,90d78
<
< dateFieldName = datasetConfig.DateTimeDatabaseField;
<
< if (!string.IsNullOrEmpty(datasetConfig.DateTimeDatabaseField))
< {
< if (myConfig.UseQuotes)
< zeile += "\"" + datasetConfig.DateTimeDatabaseField + "\"";
< else
< zeile += datasetConfig.DateTimeDatabaseField;
< }
<
181,191d168
<
< if (!string.IsNullOrEmpty(dateFieldName))
< {
< string akV = "";
<
< akV = DateTime.Now.ToString("yyyy.MM.dd-HH:mm:ss");
< if (myConfig.UseQuotes)
< zeile += "\"" + akV + "\"";
< else
< zeile += akV;
< }
 
Der Code sieht doch ganz gut aus! ;-)
Habs, genau so übernommen eingebaut und eingecheckt.

Ne neue Exe hier für den Thread hab Ich jetzt aber noch nicht gemacht!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Freut mich :)

Wobei ich das Datumsformat noch ganz gern konfigurierbar machen würde :)

Ein paar weitere Ideen haette ich auch noch, vielleicht schick ich dir noch ein paar Fetzen wenn ich sie ausgearbeitet habe ...

Gruß
Michael
 
Freut mich :)

Wobei ich das Datumsformat noch ganz gern konfigurierbar machen würde :)

Ein paar weitere Ideen haette ich auch noch, vielleicht schick ich dir noch ein paar Fetzen wenn ich sie ausgearbeitet habe ...

Gruß
Michael

Hab die Idee mit dem Konfigurierbar schon umgesetzt ;-) Einchecken kann Ichs aber erst später (Installier grad VS11), da ich erst noch testen muss...
Wirkt sich (im Moment) natürlich nur bei CSV aus, da in den richtigen Datenbanken der Feldtyp normalerweise DateTime ist, und der Wert als SQL Parameter übergeben wird
 
Moin moin ...

Kleiner fehler in PostgreSQLStorage.cs ...

gruss,
michael

public bool _internal_Write()
....
if (myDBConn.State != System.Data.ConnectionState.Open)
{
Logging.LogText("Error ReConnecting to Database! Dataset:" + datasetConfig.Name, Logging.LogLevel.Error);
*** myConfig.Name ist da wohl gemeint nehme ich an oder ?
return false;
}
 
Zurück
Oben