Temperaturen loggen mit BK9000 (in Excel)

Zuviel Werbung?
-> Hier kostenlos registrieren
Ich kann's gerade nicht testen, aber ich denke, ich habs verstanden:
1. du nimmst also die Variable Var1 und wandelst sie in string1
2. dann fügst Du min CONCAT ein Semikolon ';' zu string1 hinzu
(kurze Frage: wann verwendet man diese einfachen Anführungszeichen ' ' immer?)
3. dann fügst du Var3 zu string 1 hinzu
4. wieder ein ';'
usw.
zum Schluss (nach 20 Variablen) hängst Du ebenfalls mit CONCAT ein '$n' an, um in die nächste Zeile im Textfile zu springen

Und ich darf in string1 max. 80 Zeichen "verpacken", d.h., wenn ich Temperaturen habe unter 100°C dann sollten es nicht mehr wie 16 Variablen sein mit je 5 Zeichen (Beispiel: 18.56°C) oder muss ich die Semikolon auch dazuzählen?
Könnte man hier auch einen T_MaxString verwenden?
edit: ... ihr wart hier schneller mit der Antwort als ich mit der Frage...

Nochmals vielen Dank
Oli
 
Zuletzt bearbeitet:
Zu den Anführungszeichen. Ich würde immer die einfachen benutzen. Würde behaupten, dass TwinCAT die doppelten überhaupt nicht nimmt.

Zu 3)
Du meintest Var2 oder?

Zum String:

Der String darf maximal 255 Zeichen lang sein. Dazu musst du allerdings die max. Länge bei der Deklaration angeben.
Zu diesen 255 Zeichen zählen alle. Auch ;, ,, °, C, $, n. Wenn du also als Beispiel Werte mit folgendem Format hast "18.56°C", dann hast du bei 20 Werten insgesamt 140 Zeichen für die Werte, 19 Zeichen für die ";" als Trennzeichen und 2 Zeichen für das Return "$n", also zusammen 161 Zeichen. Du hättest also noch Platz für 94 Zeichen. Du könntest also deine Werte noch um 4 Zeichen erweitern.
 
Mir war/ist nicht so ganz klar, wann man diese ' ' überhaupt verwendet. Hier z.B.:

FB_FILEPUTS_Example.gif

sind diese ' ' bei sNetID, oder hier bei 'Put this line!$L'?

und ja, bei 3. meinte ich Var2
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die ' bedeuten den Anfang oder das Ende eines Strings. In den beiden von dir genannten Beispielen werden dem FB einfach zwei Strings übergeben, die nicht als Variable deklariert sind.

Edit:
Du könntest natürlich auch zwei String-Variablen mit dem selben Inhalt deklarieren und diese dann dem FB übergeben.
 
Zuletzt bearbeitet:
Soweit alles prima!
Nur noch eine Kleinigkeit: die Real OUT_TEMP1...20 Variablen müssten auf 2 Stellen hinter dem Komma gerundet werden. Bei Schreiben werden teilweise 14 Stellen hinter dem Komma angezeigt. Ich hänge mein Testprojekt mal mit an. Das sollte wahrscheinlich am besten in meinem TEMP_FB gemacht werden, oder?
Vielen Dank
edit: wobei nur im String die vielen Stellen hinterm Komma auftauchen und nicht in der REAL Zahl
 

Anhänge

Zuletzt bearbeitet:
Hab dir im Anhang mal ne Lib, die du bei dir einbinden kannst. Darin enthalten ist der Baustein, um die 20 Werte zu einem String zusammenzufügen. Gleichzeitig wird aber auch jeder Wert, der mehr als 2 Nachkommstellen besitzt auf die 2. Stelle gerundet.
Kannst dir ja wenn du willst auch mal den Code des Bausteins anschauen. Dazu gehst du einfach in PLC Control, dann auf Öffnen und wählst als Dateityp "Bibliothek".
 

Anhänge

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Cerberus,
vielen Dank für die Lib, das ist echt super!
Ich habe den Baustein mal verwendet, dabei sieht es so aus, als würde auf 3 Stellen hinterm Komma gerundet: aus 3276.699951... wird 3276.610(?) Im screenshot kannst Du es sehen.
Das soll natürlich keine Kritik sein ;-), wollte es nur bemerken.
Nochmals vielen Dank kfür Deine Hilfe!
Oli
 

Anhänge

  • Zwischenablage01.jpg
    Zwischenablage01.jpg
    124,9 KB · Aufrufe: 43
Es wird eigentlich immer noch auf zwei Stellen gerundet. Nur ist jetzt die zweite Stelle eine zehn, da sie vorher neun war und durch die dritte Stelle um eins erhöht wurde. Werd's mal kurz verbessern.
 
Ist doch eine größere Angelegenheit als ich dachte. Wird noch ne Weile dauern. Hoff aber dass es spätestens bis morgen früh fertig ist.
 
Hallo Cerberus,

habe diesen Thread in der Suche gefunden, und möchte ihn nun noch einmal aufgreifen, da ich das gleiche Problem habe.

Bei negativen Werten hatte ich in der Lib die Du am 01.04.2009 09:40 angehängt hattest, das Problem, das negative Zahlen um 0 herum als exponentielle Zahlen im String erschienen, obwohl ich die Rundung bereits vorher in den eingegebenen Real-Werten vorgenommen hatte.

Das mit dem Runden scheint aber schon nicht zu funktionieren. Wie runde ich so, dass aus -0,0045 einfach nur -0,00 wird? und nicht 0.E000

Bei der lib, die Du am 01.04.2009 16:13 angehängt hast, scheint irgendwas nicht so gut zu funktionieren. (Siehe Anhang.)


Leider ist der Code in der Lib die Du geschribeen hast nicht auskommentiert, so dass ich überhaupt nicht nachvollziehen kann, was Du tust.

Kannst Du mir dazu mal etwas mehr erzählen?

Lernen will.
 

Anhänge

Also erstmal sorry dass cih die Lib nicht kommentiert hab. Muss ich echt noch ändern.

Ich werds mir mal anschauen und dir dann hoffentlich weiterhelfen können.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mann bist Du schnell...

Wohnst Du hier im Forum??

:ROFLMAO:

Das wäre total klasse. Denn die Lib an sich ist ne super Sache.


Ich muss allerdings ca. 40 Werte plus Timestamp ausgeben.

Das werde ich aber wegen der 255-Zeichen-Beschränkung in mehreren Bausteinen abhandeln.
 
Hallo,

Strings kann man sehr wohl größer als 255 deklarieren, nur die klassischen Stringfunktionen arbeiten nur bis 255. Denkbar wäre aber ein String(1000) der per memcpy zusammengesetzt wird.

Viele Grüße
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Strings kann man sehr wohl größer als 255 deklarieren, nur die klassischen Stringfunktionen arbeiten nur bis 255. Denkbar wäre aber ein String(1000) der per memcpy zusammengesetzt wird.

Viele Grüße

TwinCAT lässt nur Strings mit einer maximalen Länge von 255 Zeichen zu.
 
@ MCNugget

Also jetzt mal folgende Diagnose auf die Schnelle:

Wenn ich z.B. -0.0045 eingebe, dann kommt bei mir als Ergebnis -4.5 raus. Laut deinem Pdf bei dir auch. Das Ganze kommt daher, dass TwinCAT intern aus dem -0.0045 ein -4.5e-003 macht. Um das in der Lib noch abzufangen müsste ich mich mal noch ein paar Stunden dransetzen. Kann dir leider aber nicht versprechen dass ich dazu diese Woche noch komme. Versuche es aber sobals als möglich zu erledigen. Falls du nichts mehr von mir hören solltest, mich einfach nochmal dran erinnern.

Gruß Cerberus
 
Zurück
Oben