Beiträge anzeigen

Diese Sektion erlaubt es ihnen alle Beiträge dieses Mitglieds zu sehen. Beachten sie, dass sie nur solche Beiträge sehen können, zu denen sie auch Zugriffsrechte haben.


Nachrichten - mg

Seiten: 1 [2] 3 4 ... 9
16
oscat.lib fuer CoDeSys 3 / Re: SysSockClose Raspberry PI
« am: 02. Juni 2016, 16:18:15 »
Hallo,

Ich habe mich an den Codesys Support gewendet und der hat mir den Tip gegeben an den Baustein eine "FB_Exit"-Methode anzuhängen.
Ich habe daraufhin den Inhalt von "C_CLOSE" in diese FB_Exit Methode kopiert und jetzt funktioniert es.

danke

17
oscat.lib fuer CoDeSys 3 / SysSockClose Raspberry PI
« am: 01. Juni 2016, 10:22:02 »
Hallo,

Ich verwende derzeti Oscat Network 130 mit Codesys auf einem Raspberry pi. Ich versuche mit dem Baustein IP_Control einen UDP server zu erstellen (Mode 3).
Nach einem Komplettdownload funktioniert es nicht mehr. mit "netstat -a" seh ich, dass der Ports bereit geöffnet ist. Ich vermute, dass der Baustein IP_Control versucht einen bereits geöffneten Port mit "SysSockOpen" zu öffnen. "SysSockOpen" liefert noch einen korrekten Wert zurück. Erst bei SysSockBind kommt der Fehler 519 -> Provided address already in use.

Danach Rutscht Ip_Controler in C_Close und versucht besagten Port zu schließen. Aber anscheinend haut auch das nicht hin.


Ich bin mir nicht Sicher ob es sich um einen Codesys/Oscat oder Anwenderproblem handelt. Leider wird der Port auch nicht geschlossen wenn ich über längere Zeit das "c_enable" auf false setze. Erst beim Reboot oder beim kill des Codesys Tasks wird der Port geschlossen..

Weiß jemand weiter ?

Danke
mg

18
Wenns eine 31x CPU ist, unbedingt die Hinweise zu STIME und CLKPRG lesen!!!

19
oscat.lib fuer Step 7 / Re: Problem mit Meter und Meter_Stat
« am: 04. Dezember 2015, 10:48:47 »
siehe letzter Eintrag zum CLK_PRG

20
oscat.lib fuer Step 7 / Re: Problem mit Meter und Meter_Stat
« am: 27. November 2015, 05:17:42 »
suche link: S_TIME misere und CLK_PRG. Vielleicht hilfts

21
oscat.lib fuer TwinCAT/CoDeSys / Re: PID Regler - CTRL_PID
« am: 27. August 2015, 10:11:33 »
Stoßfrei wäre schon schön.
Das Codesys startet grundsätzlich bei 0. Wenn man die Limits auf -0.5 bis +0.5 stellt und hinterher wieder 0.5 dazuzählt startet die Konstruktion in der Mitte.

22
...

Wir haben das mal kurz mit dem "Oscat für die SO-Machine" angetestet und es hat funktioniert. siehe hier andere LIB.
ABER ...
Ob wirklich alle Funktionen gehen weiß ich nicht. Es scheint zumindest zu funktionieren.

Trotzdem ist das e!cockpit bei Weitem nicht so weit, dass man es verwenden kann. Wir haben das im Moment wieder ad acta gelegt. Ich mache es dzt so daß ich das Progi mit dem 750-8202 unter Codesys 2.3 mache und als Visu möchte ich ein Raspberry unter Codesys V3.5 verwenden. Die ersten Tests waren zumindest aussichtsreich.


23
Bestehende Module / Existing Modules / Re: FB253 Flow_Meter BUG?
« am: 18. Juli 2015, 10:44:31 »
siehe STIME im Siemens Forum

24
Codesys 2 / Re: MY_SQL: Codesys2 / 750-8202
« am: 13. Juli 2015, 07:04:43 »
Hallo Peewit

oscat_netlib130_de

... sieht aktuell aus IST ES ABER NICHT ....
im Baustein selbst hat es folgende Änderung gegeben

ks   14. oct. 2013   rev 1.1
   DNS_CLIENT Fehler durch zugriffskonflikt zwischen dns_client und mySQL auf S_BUF

... naja dann gibt es wohl was neueres.

anscheindend ist die aktuelle Nr. die 1.32
oscat_version returns the version number in dword format
132 is library version 1.32
if IN = true, the release date will be returned

Danke Mg

25
Codesys 2 / Re: MY_SQL: Codesys2 / 750-8202
« am: 08. Juli 2015, 14:55:44 »
Hallo Peewit

...  wie soll ich wissen ob ich nur ein Symtom bekämpfe oder ob es ein Fehler ist. ...
Leider fehlt bei vielen Variablen die Beschreibung und dann ist es halt ein bisserl kompliziert.

TROTZDEM ... glaube ich eher an einen Fehler aus folgendem Grund:
Ich hatte die selben DLOG_REAL mit RRD probiert. FUNKTIONIERTE !!!
Danach habe ich das Ganze mit MYSQL gemacht. Der Baustein hat nicht aufgehört zu senden (4 Meldungen pro sec auf die Datenbank)
Danach habe ich erkannt, daß das Problem im Baustein liegen muss und bin der ganzen Sache nachgegangen und habe erkannt daß X.ADD_DATA_REQ immer auf TRUE ist.
Jetzt habe ich den RRD mit dem SQL verglichen und gesehen, daß am Ende des Sendens beim RRD das Flag X.ADD_DATA_REQ auf FALSE gesetzt wird. Beim SQL nicht. Dann habe ich es dort auch reingeschrieben und es funktionierte.

Mg

26
oscat.lib fuer Step 7 / Re: ONTIME TIA V13 S7-1517F
« am: 07. Juli 2015, 14:38:34 »
On 1511 and 1513 it works.
But I have a Problem when I make a firmware-update or complete Download.

All my hours are away.

So as long you do not reset you PLC it works fine.
Take attention at: www.oscat.de/community/index.php/topic,2244.0.html when you have other PLC's (eg. 300)
Mg

27
Codesys 2 / MY_SQL: Codesys2 / 750-8202
« am: 06. Juli 2015, 08:29:04 »
Hallo Leute

Habe MY_SQL mit dem 750-8202 Codesys 2 aufprobiert.
Zumindest ab und zu ging es, aber irgendwann kam der Status:
COM.SQL_RCV_STATE = 0 zurück.
Dann hängte der MYSQL_CONTROL im Step 199 fest. Soweit ist das logisch.
Aber was hat das Byte  COM.SQL_RCV_STATE für eine Funktion?

... und noch was:
Für eine korrekte Funktion fehlt folgende Zeile ... siehe Code
(*████████████████████████ DIESE ZEILE FEHLT ████████████████████████*) X.ADD_DATA_REQ:=FALSE;


X.DTI := DTI; (* Datum / Zeit eintragen *)
X.CLOCK_TRIG := DTI <> dti_last;
dti_last := DTI;
trig_auto := FALSE;
IF X.CLOCK_TRIG THEN (* Impuls in jeder Sekunde *)
del_start := DT_TO_UDINT(DTI) - del_dt > AUTO_DELETE AND AUTO_DELETE > UDINT#0;
IF TRIG_T >= T#1000ms THEN (* automatischer Trigger *)
trig_auto := DT_TO_UDINT(DTI) MOD (TIME_TO_UDINT(TRIG_T) / UDINT#1000) = UDINT#0;
END_IF;
END_IF;
X.ADD_COM := 00;

CASE step OF

00: IF ENABLE AND enable_last = FALSE THEN
COM.SQL_URL := URL;
COM.TIMEOUT := TIMEOUT;
COM.DNS_IP4 := DNS_IP4;
COM.SQL_CON := TRUE;

X.UCB.D_MODE := 99; (* Buffer reset - Alles löschen *)
UCB(DATA:=X.UCB);

X.ID_MAX := USINT#00;
X.STORE_TYPE := BYTE#5; (* MySQL-Modus *)
X.ADD_COM := 01; (* ADD INFO *)

step := 05;
END_IF;

05: X.ADD_COM := 02; (* ADD HEADER *)
step := 10;

10: IF SQL_INFO.SQL_CONNECTED THEN
sql_command := BYTE#3; (* CREATE DATABASE IF NOT EXISTS `db_name` *)
snd_text :=  CONCAT('CREATE DATABASE IF NOT EXISTS `' ,DB_NAME);
snd_text :=  CONCAT(snd_text, '`');
next_step := 20;
END_IF;

20: sql_command := BYTE#2; (* 0x02 COM_INIT_DB mysql_select_db *)
snd_text := DB_NAME;
next_step := 30;

30: (* CREATE TABLE IF NOT EXISTS tb_name (Timestamp TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, n1,n2) *)
sql_command := BYTE#0;
idx := 5;
n := USINT#0;
WHILE sql_command = BYTE#0 DO
IF n = USINT#0 THEN
snd_text := CONCAT('CREATE TABLE IF NOT EXISTS `', TB_NAME);
snd_text := CONCAT(snd_text,'` (`ID` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,');
snd_text := CONCAT(snd_text,' store_timestamp TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP');
ELSIF n <= X.ID_MAX THEN
X.UCB.D_MODE := 12; (* Element lesen und löschen *)
UCB(DATA:=X.UCB);
snd_text := CONCAT(', `',X.UCB.D_STRING);
CASE WORD_TO_INT(SHR(X.UCB.D_HEAD,8)) OF
02: snd_text := CONCAT(snd_text, '` FLOAT'); (* REAL *)
06: snd_text := CONCAT(snd_text, '` BOOL'); (* BOOL *)
08: snd_text := CONCAT(snd_text, '` INT'); (* DINT *)
13: snd_text := CONCAT(snd_text, '` DATETIME'); (* DT *)
ELSE
snd_text := CONCAT(snd_text, '` VARCHAR(80)'); (* STRING(80) *)
END_CASE;
ELSE
snd_text := ')';
sql_command := BYTE#3;
snd_size := idx + LEN(snd_text);
next_step := 40;
END_IF;
_STRING_TO_BUFFER(str:=snd_text,pos:=idx,pt:=ADR(COM.S_BUF.BUFFER),size:=SIZEOF(COM.S_BUF.BUFFER)); (* String in puffer kopieren *)
idx := idx + LEN(snd_text);
n := n + USINT#1;

(*####################  DEBUG-MESSAGE  ###################################*)
(*IF _debug_enable THEN
LOG_CL.NEW_MSG := 'dlog_mysql: create >~1<';
LOG_CL.PRINTF[1] := snd_text;
LOG_MSG();
END_IF;*)
(*########################################################################*)
END_WHILE;

40: IF del_start THEN
del_start := FALSE;
sql_command := BYTE#3; (* DELETE FROM `tb_name` WHERE TIMESTAMPDIFF(SECOND, Timestamp, NOW()) > xxx *)
snd_text := CONCAT('DELETE FROM `', TB_NAME);
snd_text := CONCAT(snd_text, '` WHERE TIMESTAMPDIFF(SECOND, store_timestamp, NOW()) > ');
snd_text := CONCAT(snd_text, UDINT_TO_STRING(AUTO_DELETE));
next_step := 40;
del_dt := DT_TO_UDINT(DTI);
(*####################  DEBUG-MESSAGE  ###################################*)
(*IF _debug_enable THEN
LOG_CL.NEW_MSG := 'dlog_mysql: # delete time:~1 >~2<';
LOG_CL.PRINTF[1] := UDINT_TO_STRING(AUTO_DELETE);
LOG_CL.PRINTF[2] := snd_text;
LOG_MSG();
END_IF;*)
(*########################################################################*)

         (* INSERT INTO `tb_name` VALUES (CURRENT_TIMESTAMP,  "n1","n2") *)
ELSIF X.UCB.BUF_COUNT >= USINT_TO_INT(X.ID_MAX) AND step > 0 THEN (* Neue Datenreihe(n) vorhanden *)
idx := 5;
n := USINT#0;
sql_command := BYTE#0;
WHILE sql_command = BYTE#0 DO
IF n = USINT#0 THEN
snd_text := CONCAT('INSERT INTO `', TB_NAME);
snd_text := CONCAT(snd_text,'` VALUES (NULL, CURRENT_TIMESTAMP');
ELSIF n <= X.ID_MAX THEN
X.UCB.D_MODE := 12; (* Element lesen und löschen *)
UCB(DATA:=X.UCB);
snd_text := CONCAT(', "',X.UCB.D_STRING);
snd_text := CONCAT(snd_text, '"');
ELSE
snd_text := ')';
sql_command := BYTE#3;
snd_size := idx + LEN(snd_text);
next_step := 40;
END_IF;
_STRING_TO_BUFFER(str:=snd_text,pos:=idx,pt:=ADR(COM.S_BUF.BUFFER),size:=SIZEOF(COM.S_BUF.BUFFER)); (* String in puffer kopieren *)
idx := idx + LEN(snd_text);
n := n + USINT#1;

(*####################  DEBUG-MESSAGE  ###################################*)
(*IF _debug_enable THEN
LOG_CL.NEW_MSG := 'dlog_mysql: insert >~1<';
LOG_CL.PRINTF[1] := snd_text;
LOG_MSG();
END_IF;*)
(*########################################################################*)
END_WHILE;
END_IF;

IF ENABLE THEN (* LOG-Trigger verarbeiten *)
trig_tmp := (TRIG_M AND NOT trig_m_last) OR trig_auto OR X.ADD_DATA_REQ;

IF trig_tmp THEN (* manueller, automatischer oder externer Trigger *)
X.ADD_COM := 03; (* ADD DATA *)
(* ---------------- Debug-Message -----------------------*)
(*IF _debug_enable THEN
LOG_CL.NEW_MSG := 'dlog_mysql: Trigger: DATE [~2]';
LOG_CL.PRINTF[2] := DT_TO_STRING(DTI);
LOG_MSG();
END_IF;*)
(* -----------------------------------------------------------------*)
ELSE
X.ADD_COM := 04; (* ADD DATA REQ *)
END_IF;
ELSE
COM.SQL_CON := FALSE; (* MySQL Verbindung beenden *)
step := 0;
END_IF;
(*████████████████████████ DIESE ZEILE FEHLT ████████████████████████*) X.ADD_DATA_REQ:=FALSE;
(* ~~~~~~~~~~~~~~~~~~~~~~ *)

199:IF COM.SQL_RCV_STATE = BYTE#1 THEN (* OK *)
step := next_step;
ELSIF COM.SQL_RCV_STATE = BYTE#2 THEN  (* FEHLER *)
step := 0;
END_IF;

END_CASE;

(* ########################## *)
(* SQL-Kommando ausführen *)
IF sql_command > BYTE#0 THEN
IF snd_size > 0 THEN
COM.S_BUF.SIZE := INT_TO_UINT(snd_size);
snd_size := 0;
ELSE
_STRING_TO_BUFFER(str:=snd_text,pos:=5,pt:=ADR(COM.S_BUF.BUFFER),size:=SIZEOF(COM.S_BUF.BUFFER)); (* String in puffer kopieren *)
COM.S_BUF.SIZE := INT_TO_UINT(5 + LEN(snd_text));
snd_text := '';
END_IF;

i2 := UINT_TO_INT(COM.S_BUF.SIZE) - 1; (* alle " zeichen mit ' ersetzen *)
FOR i1 := 5 TO i2 DO
IF COM.S_BUF.BUFFER[i1] = BYTE#34 THEN
COM.S_BUF.BUFFER[i1] := BYTE#39;
END_IF;
END_FOR;

COM.S_BUF.BUFFER[4] := sql_command;
COM.SQL_PACKET_NO := BYTE#255;
sql_command := BYTE#0;
step := 199;
END_IF;

(* ########################## *)

MYSQL_CONTROL(COM:= COM, INFO:=SQL_INFO);
ERROR_C := COM.ERROR_C;
ERROR_T := COM.ERROR_T;

IF COM.ERROR_T > BYTE#0 THEN  (* FEHLER *)
step := 0;
END_IF;

(* ########################## *)

trig_m_last := TRIG_M;
enable_last := ENABLE;
run := step > 0;

(* revision history
ks 20. apr. 2012 rev 1.0
original version

*)

Mg

28
oscat.lib fuer Step 7 / Re: Die STime Misere
« am: 15. Juni 2015, 04:10:25 »
Wäre schön wenn ich auch mal was vom OSCAT-TEAM zu diesem Thema höre. Das betrifft ja einen Großteil aller Bausteine!!!

Mg

29
oscat.lib fuer Step 7 / Re: Die STime Misere
« am: 15. Juni 2015, 04:08:50 »
Hallo Psyche

Ich habe seit ein paar Tagen die neue STime V1.6 bei einer 315 DP/PN (neueste FW) am laufen. (die STime 1.5 war untragbar ... hatte immer wieder Fehler, aber ich war lange nicht mehr vorort so hat sich das Ganze hinausgezögert)
Die Anlage bezeichne ich als SEHR kritisch.
Es sind massenhaft Regelbausteine drinnen und ich sollte in 1-2 Monaten eine Rückmeldung erhalten.

Mg

(hatte den diesen Kommentar ursprünglich bei http://www.oscat.de/community/index.php/topic,2195.0.html platziert ... nun korrigiert)
allerdings ACHTUNG: Es betrifft zumindest den Originalen CLK-PRG auch

30
... eine GAAAANNNNZ späte Antwort:

schau mal unter: http://www.oscat.de/community/index.php/topic,1016.msg8469.html#msg8469

Das Gateway schreibt die Befehle ohne Umwandlung direkt auf das Enocean. Das Ganze sollte ohne großen Aufwand adaptierbar sein

Mario

Seiten: 1 [2] 3 4 ... 9