Neueste Beiträge

#1
Modulentwicklung / CODESYS V3 FTP_CLIENT Verbindu...
Letzter Beitrag von renner-electric - 10. Juni 2025, 15:41:41
Hallo zusammen,

es hatten schon ein paar ein ähnliches Problem aber nicht so spefisch wie ich.

Ich verwende in CODESYS V3.5.18.2 den Baustein FTP_Client von der Bibliothek NETWORK V1.3.5.

Ich möchte mehrere Dateien (Auf einmal, aber natürlich nacheinander) auf einen FTP-Server ablegen.

Die 1. Datei wird schneller geschrieben als alle anderen Dateien danach.
Bei einer Zykluszeit von 100 ms (zyklisch) benötigt die 1. Datei ca. 7 Sekunden und die Dateien danach 2m10s.
Bei einem freilaufenden Zyklus benötigt die 1. Datei ca. 0,7 Sekunden und die Dateien danach 9s.

Beim debuggen ist mir aufgefallen, dass die Case step immer zwischen 200 und 210 springt, da der FSD.OFFSET 0 ist und somit nicht in den Schritt 300 springt.

Wir haben nicht herausgefunden, warum der FSD.OFFSET bei der 1. Datei die Größe von S_BUF2.SIZE annimmt, aber bei den Versuchen danach nicht.
Wir haben es mit der gleichen Datei versucht, aber auch mit 3 verschiedenen vom Filename her.

An was könnte dieses Verhalten liegen.
#2
Modulentwicklung / Aw: Umstieg von Codesys 2.3 au...
Letzter Beitrag von mg - 03. Juni 2025, 12:38:05
... leider gibt es die Network derzeit das nur für die 32 Bit Controller. Für 64 Bit dzt anscheinend nicht funktionsfähig. Vielleicht reicht es wenn man nur die syslibfile32 gegen die syslibfile ersetzt und die syslibsocket32 gegen die syslibsocket. Aber das weiß ich nicht. Wäre schön wenn Pewit oder Hugo Mal was dazu sagen. (zB
Wago PFC 200 geht, Wago PFC 300 geht nicht.)
#3
Modulentwicklung / Aw: HTTP_GET - mit Authorizati...
Letzter Beitrag von peewit - 18. Februar 2025, 19:00:23
nein, was fertiges gibt es nicht aber das prinzip ist relativ klar

der HTTP_GET Baustein arbeitet nur mit dem HEADER und URL PARAMETER und benutzt keinen BODY
und ein HTTP_POST Baustein hat keine URL PARAMETER aber HEADER und BODY DATEN

Dein Ablauf erfordert folgende Schritte

1. Mittels HTTP_POST Abfrage bekommst du einen SESSION-COOKIE als Antwort
   Nachdem die SPS Bausteine keinen Browser nachbilden werden die SESSION-COOKIE auch nicht automatisch
   verwaltet. Somit ist es deine Aufgabe aus der Antwort den SESSION-COOKIE zu sichern.

2. Mit HTTP_GET und dem SESSION-COOKIE kann du dann eine REQUEST_ID abfragen

3. Mit HTTP_POST kannst du dann mit SESSION-COOKIE und REQUEST-ID und SMS Daten den SMS Versand starten.

den HTTP_POST Baustein gibt es noch nicht aber im Prinzip relativ einfach aufgebaut.
Aber das ist trotzdem für ungeübte relativ kompliziert.

Ein möglicher Schritt wäre die Befehle zuerst manuell mittels CURL auszuführen und gleichezeitig den Datenverkehr mit Wireshark aufzuzeichnen. Dann kann man sehr schön analysieren welche Daten und in welcher Form die DAten ausgetauscht werden.


Das Modem bietet aber auch alternative Protokolle die einfache umzusetzen wären.
Wie z.b. eine klassische Telnet Verbindung.
Damit wirst du vermutlich eher zurecht kommen.

LG peewit


#4
Modulentwicklung / Aw: HTTP_GET - mit Authorizati...
Letzter Beitrag von peter.haider - 13. Februar 2025, 10:43:26
Einen schönen Tag,
10 Jahre später erfordert die HTTP_GET Kommunikation nun eine Session-ID.

Gibt es eine Version des Baustein, die das kann?
Hier der Kommunikationsablauf.
https://download.bellequip.at/HTTP_API_ab_Firmware_5.3.1.pdf


Besten Dank im Voraus
#5
SPS-Programmierung / Aw: Wer kann mir was programmi...
Letzter Beitrag von hugo - 22. Januar 2025, 16:56:37
Beschreib doch mal hier einen Baustein, denke damit können mehr Leute was anfangen als mit einer fiktiven anfrage
#6
SPS-Programmierung / Wer kann mir was programmieren...
Letzter Beitrag von martin.k - 03. Januar 2025, 22:21:23
Ich suche jemanden der mir einige Oscat-Bausteine in Codesys3 zusammensetzt, damit ich sie auf einer Wago PFC200 laufen lassen kann.

Ich habe eine konkrete Aufgabenstellung incl. Visualisierung, die ich zwar Niederschreiben, aber nicht programmieren kann. :-(

Wenn jemand interesse hat, würde ich es hier mal veröffentlichen.
DANKE

Gruß
Martin
#7
Modulentwicklung / Aw: Neuer Baustein zum Parsen ...
Letzter Beitrag von jensen17 - 20. November 2024, 18:53:52
Hallo, nutze schon lange Oscat Bausteine, danke dafür erstmal. Ich bräuchte Unterstützung um den obigen Code des Json Parsers in PCWORX umzuschreiben. Gerade bei der Pointer-Geschichte komme ich nicht weiter.
Möchte eine Panasonic Wärmepumpe über Heishamon mit Http auslesen und bekomme ein Json zurück.
Danke
#8
Bestehende Module / Existing Modules / Aw: Streckenabhängige Baustein...
Letzter Beitrag von hugo - 08. November 2024, 10:37:05
Ich schlage vor wir bauen einen Baustein wie folgt:

Eingänge:
Start: Eingang Bool, wenn aktiviert, startet mit einem Strich, indem intern ein Offset auf den Wert von Run gesetzt wird. Wir starten also immer mit dem Strich!
on: Strichlänge in Meter
off: Lücke in Meter
run: die Lauflänge in Meter
out: True, wenn der Strich aufgetragen wird.

Code:
if start and not active then // steigende Flanke am start erkannt
   offset := run; // offset wird auf run gesetzt, damit wir bei 0 beginnen
endif

active := start; // active merkt sich den Zusatnd für die Flankenerkennung

if (active and ((off + on) >= 0)) then // wir müssen division durch 0 verhindern
   out := ((run - offset) mod (off + on) <= on; // die eigentliche Funktion die den Ausgang steuert
else out := false;
endif



#9
Ankündigungen / Announcements / Aw: Update of Forum Software
Letzter Beitrag von tobias - 08. November 2024, 10:00:01
Das Forum wurde auf SMF 2.1.4 geupdated.
the forum software has been updated to 2.1.4.
#10
du hast selbstverständlich recht.

ein IF, um dann einen Bool zu setzen ist immer nutzlos:

um bei meiner Implementierung zu bleiben wäre es so:
dein Code ist im Prinzip fast das gleiche.

Ob man mit Strich oder Lücke anfängt ist eine Frage ja.
eine andere wird dann: wenn der Baustein nur ein IEC 61499 Event für jeden Strich Anfang liefern soll. das muss ich noch austüfteln.


ALGORITHM REQ

DIST_REMAINDER := (DIST_IN + DIST_OFF) MOD (DIST_HIGH + DIST_LOW);

Q := (DIST_REMAINDER >= DIST_HIGH);

END_ALGORITHM