-Menü

Beiträge anzeigen

Dieser Abschnitt erlaubt es Ihnen, alle Beiträge anzusehen, die von diesem Mitglied geschrieben wurden. Beachten Sie, dass Sie nur Beiträge sehen können, die in Teilen des Forums geschrieben wurden, auf die Sie aktuell Zugriff haben.

Beiträge anzeigen-Menü

Beiträge - grauerwolf

#1
oscat.lib fuer CoDeSys 3 / Re: Codesys 3.5 SP16
15. August 2020, 10:18:07
Hallo,nicht nur #RCD steht vor dem Problem. Ich nutze OSCAT, habe aber keine Ahnung, wie ich Datentypen in einer Lib ändern kann. Wäre schön, wenn einer der Gurus hier das einem weniger versiertem User erklären kann.
Viele Grüße
#2
Hallo,
danke für die Antwort, aber unter dem Link finde ich nur Downloads zu Codesys 2.3 (glaube ich jedenfalls).Für Codesys 3.5 gibt es keine LIB 1.35?
Viele GrüßeThomas
#3
Hallo,ich habe bisher den FTP-Client aus netwok 1.21 benutzt. Nun bin ich dabei eine MQTT-Verbindung zu bauen und nutze dazu ein Programm. das seinerseits network 1.30 verlangt. Solange ich in einer relativ einfachen Testumgebung arbeite, geht alles relativ gut. Die MQTT-Verbindung steht.Wenn ich nun den MQTT-Programmteil in das "echte" Programm einbaue und die network 1.3 hinzufüge, kann ich zunächst alles im Zusammenhang des FTP-Clients nicht mehr compilieren. es treten Compilierfehler-Fehler. Diese nach eigenem Ermessen wegzubringen (einfach aus IP_CONTROL  mal IP_CONTROL_V2 zu machen, ließ die Compilierung durchlaufen, das Programm crashte aber mit stehendem Prozessor ziemlich rigoros.
Nun ist mein Vorgehen etwas übermutig gewesen. Aber wo bekomme ich denn ein neues FTP-Beispielprogramm her, wo die Änderungen im FTP-Client eben schon drin sind.
Überhaupt ist die network 1.3 ff nicht im download-Bereich. Auch eine Beschreibung suche ich vergebens. Ist was damit ??
Für ein paar Hinweise wäre ich sehr dankbar.
MfgThomas
#4
Hallo peewit,

meine erste vermutung -> zykluszeit kontrollieren

war schon richtig. Aber gibt es nicht schon Erfahrungen, wie groß(eher klein) die Zykluszeit für vernünftiges kopieren (was immer der Einzelne unter "vernünftig" versteht...) sein müsste. Es wird ja wohl so sein, das irgendeine Blockgröße pro Zyklus transportiert wird. Und damit sollte man sofort abschätzen können, das man irgendwas falsch eingestellt hat., wenn es zu lange dauert.  Das kann u.U. dem einen oder anderen helfen, so eine Information.

Ich habe den FTP_Client dahingehend ergänzt, das ich das locale File mit "append" an das remote File auf dem Server anhängen kann. Wenn das nicht schon drin ist (und ich es übersehen habe) könnte das durchaus noch standardmäßig rein kommen. So als Hinweis...

Viele Grüße
Thomas
#5
Hallo,
mein FTP-Problem hat sich in Wohlgefallen aufgelöst. Jetzt kann ich so schnell Daten übertragen, wie ich es nervlich ausgalten kann. Das Problem lag an einer viel zu langen Zykluszeit (150ms). Ich berauschte mich an den echten Zyklus-Nutzzeiten (siehe weiter oben), erkannte aber erst jetzt, das FTP offensichtlich immer mal wieder die CPU benötigt und nicht nur Früh und Abends.
Ich habe das ganze FTP-Gerödel in eine extra TASK gelegt und dort mit 1ms Zykluszeit regelrechte Übertargungsrekorde erreicht (Dauer im 500ms-Bereich für 20-60 KB).
Allerdings habe ich dann auch bemerkt, das im LINUX FTP tatsächlich mit seinem Task so 10-20% CPU-Zeit sich krallt.

15479 root     -70   0   27680  18904   2296 S  0,0  2,0   0:00.00 CAAEventTask
23913 root     -67   0   27680  18904   2296 R 11,8  2,0   2:03.11 FTP_TAsk
23914 root     -67   0   27680  18904   2296 S  0,7  2,0   0:06.70 MainTask


Jetzt nutze ich 5ms und der FTP-Prozess holt sich ca. 1-3 % CPU-Zeit. Und die Geschwindigkeit ist auch zu ertragen.
Wer hätte das gedacht...
Viele Grüße
Thomas

#6
Modulentwicklung / Re: FTP dauert ewig
06. Dezember 2016, 10:38:52
Hallo peewit,

Danke für Deine Antwort. Ich werde mal versuchen, alles das zu beantworten, was Du mir aufgetragen hast - ausser das mit wireshark, da muss ich noch üben!

1. System: Raspberry 2 mit Codesys 3.5.9
2. Oscat network.lib  1.2.1.0
3. FTP-Baustein läuft im  Main-Task bei Zykluszeiten um 1ms (das sollte eigntlich schnell genug sein, deshalb habe ich FTP nicht in einen extra Task geschoben).

Task             letzte Zykluszeit        Durchschnittl. Zykluszeit        Max. Zykl.zeit        Min. Zykluszeit       Max. Jitter
MainTask                 1025                             909                                     7219                       604                  329  alles µs

Dann habe ich mal im FTP-Client ein bissel geloggt:
2016.12.06 10:19:46 :   Logfile via FTP durch Handstart zu NAS senden                           
2016.12.06 10:19:46 : Activate !! FTP-Step 0                                                           
2016.12.06 10:19:46 : DNS_CLIENT.DONE !! FTP-Step 20                                             
2016.12.06 10:19:46 : FTP Steuerkanal eingerichtet !! FTP-Step 20                                   
2016.12.06 10:20:02 :  >>>  FTP-Step 210                                                           
2016.12.06 10:20:03 : FTP-Step 200                                                                 
2016.12.06 10:20:03 :  >>>  FTP-Step 210                                                           
2016.12.06 10:20:03 : FTP-Step 200                                                                 
2016.12.06 10:20:04 :  >>>  FTP-Step 210                                             
2016.12.06 10:20:04 : FTP-Step 200                                                                   
2016.12.06 10:20:04 :  >>>  FTP-Step 210                                                             
2016.12.06 10:20:05 : FTP-Step 200                                                           
2016.12.06 10:20:05 :  >>>  FTP-Step 210                                                       
2016.12.06 10:20:05 : FTP-Step 200                                                             
2016.12.06 10:20:05 :  >>>  FTP-Step 210                                                   
2016.12.06 10:20:06 : FTP-Step 200                                                         
2016.12.06 10:20:06 :  >>>  FTP-Step 210                                                 
2016.12.06 10:20:06 : FTP-Step 200                                                         
2016.12.06 10:20:07 :  >>>  FTP-Step 210                                                           
2016.12.06 10:20:07 : FTP-Step 200                                                                 
2016.12.06 10:20:07 :  >>>  FTP-Step 210                                                     
2016.12.06 10:20:08 : FTP-Step 200                                                       
2016.12.06 10:20:08 :  >>>  FTP-Step 210                                             
2016.12.06 10:20:08 : FTP-Step 200                                                                 
2016.12.06 10:20:08 :  >>>  FTP-Step 210                                                           
2016.12.06 10:20:09 : FTP-Step 200                                                                   
2016.12.06 10:20:09 :  >>>  FTP-Step 210                                                             
2016.12.06 10:20:09 : FTP-Step 200                                                                                                 
2016.12.06 10:20:10 :  >>>  FTP-Step 210                                                                                 
2016.12.06 10:20:10 : FTP-Step 200                                                                                                       
2016.12.06 10:20:10 : warten bis gesendet, FTP-Step 300                                                   
2016.12.06 10:20:11 : Service closing control ...FTP-Step 320                                       
2016.12.06 10:20:12 : Done ...FTP-Step 900                                                         
2016.12.06 10:20:12 : Logfile zum NAS gesendet in T#26s398ms  Größe:9600           


Aus meiner Sicht liegt es wirklich nur am Zyklus, wo wahrscheinlich gesendet wird.

Vielleicht kannst Du aus diesen Hinweisen was herausfinden, was mir hilft oder wo ich noch suchen sollte ??
Vielen Dank
Thomas


#7
Hallo,
ich sammle Daten auf dem Raspberry mit Codesys und schicke, wenn das Array voll ist, die Daten (zwischenzeitlich geschrieben in ein lokales File) per FTP zu einem NAS. Das Ganze logge ich und stelle fest (auch in der Visualisierung) das der FTP-Schreibvorgang über 1Minute dauern kann bei 1200 Byte Filegröße.
2016.12.02 12:51:53 : Logfile zum NAS gesendet in T#1m36s98ms

Ist etwas über so ein Problem bekannt ??
Übrigens geht die Übertragung immer erfolgreich zu Ende.

Viele Grüße
Thomas

#8
Hallo,
damit das Thema auch ein vernünftiges ENDE findet:  Der Aufruf mit "oscat_basic" vorn dran ist die Lösung. Damit funktioniert alles wie gewünscht.

   ...   oscat_basic.REAL_TO_STRF(r_Gas_Tagesmenge,3,'.')    ...        :)

Vielen Dank an alle !!!

Grüße
Thomas
#9
Danke,
ich hatte ja schon gesagt, ich werde das Ganze überarbeiten - vielleicht auch mit calender_calc.
Allerdings werde ich mir auch die Umrechnerei mit UTC_to_LTIME zur Brust nehmen. Ich habe nämlich eine innere Wut  >:(, wenn ich weiß, daß es funktionieren müsste, es aber nicht tut. Deine Hinweise sind da sehr hilfreich, denn die Manuals setzen oft voraus, das man schon Experte ist.

Also auf ein Neues ...

Viele Grüße
Thomas
#10
Hallo,
vielen Dank für die schnelle Antwort. Ja , ich bin langsam auch verwirrt und werde die ganze Rechnerei für mein Projekt noch mal neu bauen. Ich bin nur auf die vielen Zeitumrechnungen (UTC, LTime usw.) gekommen, weil einfach kein Unterschied zwischen Winterzeit und Sommerzeit entstehen will.
Vielleicht hat es gar nichts mit SUN_TIME zu tun, sondern eher mit UTC_TO_LTIME. Es muss doch einen Unterschied beim Sonnenuntergang geben zwischen Sommer- und Winterzeit.
Wenn die Umrechnung UTC_TO_LTIME noch nicht funktioniert , hilft mir auch nicht, wenn die SPS auf UTC ohne Sommerzeit läuft (siehe Bildchen).

Viele Grüße
Thomas

[gelöscht durch Administrator]
#11
Hallo,
nach Wechsel auf die Sommerzeit bleibt der Sonnenaufgang und der Sonnenuntergang in der gleichen schönen Folge wie in den letzten Tagen der Winterzeit:

Log-Werte:
25.03.2016  00:00:00: Neuberechnung: Sonnenuntergang:  1849
26.03.2016  00:00:00: Neuberechnung: Sonnenuntergang:  1851
27.03.2016  00:00:00: Neuberechnung: Sonnenuntergang:  1853
28.03.2016  00:00:00: Neuberechnung: Sonnenuntergang:  1854
28.03.2016  09:48:03: Neuberechnung: Sonnenuntergang:  1856
    hier sollte spätestens 1956 stehen (oder?)

Das Programm:
var
SONNENSTAND: SUN_TIME;
   Time_Zone_Verschiebung:WORD:=60;   (*  60 Minuten Verschiebung ist der Unterschied von Greenwich-Time zu Berliner Zeit (Zeitzone) ,
                                       nur so stimmen Sonnenauf und Untergang  mit der Praxis bei Winterzeit überein *)
   DT_Sonnenuntergang:DT;
   DT_Sonnenaufgang:DT;
   DT_Sonnenuntergang_DST:DT;
   DT_Sonnenaufgang_DST:DT;
   heute:DATE;   (*Local time *)
   heute_utc: DT;  (* Weltzeit *)
end_var

....
heute:=DT_TO_DATE(ActDateAndTime);  (* ActDateAndTime wird in  PLC_DaylightSaving  (extra Task) ermittelt *)
heute_utc:=LTIME_TO_UTC(LTIME:=ActDateAndTime,DST:=Sommerzeit,TIME_ZONE_OFFSET:=60);

SONNENSTAND( H:=hoehe, Latitude:=50.7, Longitude:=12.58, UTC:=DT_TO_DATE(heute_utc) );

(* Nachfolgend bringt   DST_ENABLE  keinen Unterschied ob true oder false eingestellt,   wohl aber der   Time_Zone_Offset *)
DT_Sonnenuntergang:=DATE_TO_DT(heute)  +  DT_TO_TIME(UTC_TO_LTIME
       (UTC:=TOD_TO_DT(SONNENSTAND.SUN_SET),DST_ENABLE:=FALSE,Time_Zone_Offset:=Time_Zone_Verschiebung));
DT_Sonnenaufgang   := DATE_TO_DT(heute)  +  DT_TO_TIME(UTC_TO_LTIME
      (UTC:=TOD_TO_DT(SONNENSTAND.SUN_RISE),DST_ENABLE:=FALSE,Time_Zone_Offset:=Time_Zone_Verschiebung));


(* Nachfolgend bringt   DST_ENABLE  keinen Unterschied ob true oder false eingestellt (Sommerzeit zur Zeit TRUE),   
    wohl aber der   Time_Zone_Offset   *)
DT_Sonnenuntergang_DST:=DATE_TO_DT(heute)  +  DT_TO_TIME(UTC_TO_LTIME
        (UTC:=TOD_TO_DT(SONNENSTAND.SUN_SET),DST_ENABLE:=Sommerzeit,Time_Zone_Offset:=Time_Zone_Verschiebung));
DT_Sonnenaufgang_DST   := DATE_TO_DT(heute)  +  DT_TO_TIME(UTC_TO_LTIME
        (UTC:=TOD_TO_DT(SONNENSTAND.SUN_RISE),DST_ENABLE:=Sommerzeit,Time_Zone_Offset:=Time_Zone_Verschiebung));

Die Sommerzeit ist der Umrechnung DT_TO_TIME vollkommen egal (siehe Anhang).


Hat jemand eine Idee ??
Viele Grüße
Thomas


[gelöscht durch Administrator]
#12
Hallo kiar,
ist mir auch noch aufgefallen - natürlich erst, als ich den Beitrag schon abgedrückt habe...

Aber auch nach Änderung bleibt dem Codesys die Funktion Real_To_Strf unbekannt. Habe alles bereinigt, alles neu übersetzt. Es interessiert nicht.

Grüße
Thomas
#13
oscat.lib fuer CoDeSys 3 / Anfängerthema nochmal
27. Dezember 2015, 18:35:26
Hallo,
leider ist das "Anfängerthema" schon geschlossen, sonst hätte ich dort meine Frage angehängt.

Ich kann mit der Lösung dort nicht viel anfangen. Ich habe ebenfalls die Oscat-Library ins Projekt gebracht, kann dadrin die Funktionen sehen, aber nicht aufrufen.
Der Unterschied von Codesys 2.3 zu 3.5 ist im Handling schon sehr verschieden.

In einem PRG habe ich ganz simpel aufgerufen:
VAR
   xx : REAL;
....

....
xx:=REAL_TO_STRF(3.14159,4,'.');
....

REAL_TO_STRF ist schon rot unterstrichen und bringt einen Fehler.
Was mache ich da so falsch...

Viele Grüße
Thomas

[gelöscht durch Administrator]