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 - peewit

Seiten: 1 ... 118 119 [120] 121 122
1786
Modulentwicklung / Re: OSCAT und SQL
« am: 04. August 2009, 17:21:57 »
ich habe schon daran einmal gedacht, das problem ist halt wie immer die zeit
technisch wäre es kein problem (die interne funktionsweise des direkten datenbankzugriffs ist mir bekannt)

es hätte sowieso erst das dann wirklich sinn, wenn die vorhandene oscat-network-lib (referenz-code existiert auf pcworx-basis) auch auf codesys und step7 portiert worden ist.

wir brauchen dazu nähmlich eine hardwareneutrale baustein-basis ,damit der ethernet-zugriff auch auf jeden system gleich funktioniert.
 

1787
Modulentwicklung / Re: OSCAT und SQL
« am: 03. August 2009, 09:23:40 »
die bibliothek gibt es nicht offen, da hier viel arbeit drinnen steckt, und das sonst keiner in dieser form bislang kann.

1788
Bestehende Module / Existing Modules / Re: LTIME_TO_UTC
« am: 03. August 2009, 09:18:02 »
bei der neuen version hat sich auch ein input-parameter geändert, normalerweise reicht es wenn du den baustein neu in dein programm einfügst
oder du machst dir eine LTIME_TO_UTC_2 die du dann verwendest, bis die nächste oscat-release erscheint

neuen baustein "LTIME_TO_UTC_2" anlegen und diesen code verwenden

FUNCTION LTIME_TO_UTC_2 : DT
VAR_INPUT
   LTIME : DT;
   DST_ENABLE : BOOL;
   TIME_ZONE_OFFSET : INT;
END_VAR
VAR
   tmp: INT;
   tmp2: DWORD;
END_VAR

tmp := time_zone_offset * 60;
tmp2 := BOOL_TO_DWORD(DST_ENABLE AND DST(LTIME)) * 3600;
IF tmp < 0 THEN
   tmp := ABS(tmp);
   LTIME_TO_UTC_2 := DWORD_TO_DT(DT_TO_DWORD(Ltime) + INT_TO_DWORD(tmp) - tmp2);
ELSE
   LTIME_TO_UTC_2 := DWORD_TO_DT(DT_TO_DWORD(Ltime) - INT_TO_DWORD(tmp) - tmp2);
END_IF;

1789
Bestehende Module / Existing Modules / Re: LTIME_TO_UTC
« am: 02. August 2009, 20:51:12 »
Hallo Terminator95

Dein Problem mit LTIME_TO_UTC kann ich nachvollziehen !

Ich habe dir eine korrigierte version erstellt !

die alte hat nicht nur falsch gerechnet, sondern hat auch bei "DST" = True , das ganze jahr über die +1 Stunde für Sommerzeit mitgerechnet
die neue version prüft vorher ob bei LTIME überhaupt sommerzeit aktiv ist

und nicht vergessen time_offset wird in minuten angegeben

FUNCTION LTIME_TO_UTC : DT
VAR_INPUT
LTIME : DT;
DST_ENABLE : BOOL;
TIME_ZONE_OFFSET : INT;
END_VAR
VAR
tmp: INT;
tmp2: DWORD;
END_VAR

tmp := time_zone_offset * 60;
tmp2 := BOOL_TO_DWORD(DST_ENABLE AND DST(LTIME)) * 3600;
IF tmp < 0 THEN
tmp := ABS(tmp);
LTIME_TO_UTC := DWORD_TO_DT(DT_TO_DWORD(Ltime) + INT_TO_DWORD(tmp) - tmp2);
ELSE
LTIME_TO_UTC := DWORD_TO_DT(DT_TO_DWORD(Ltime) - INT_TO_DWORD(tmp) - tmp2);
END_IF;

Hallo,

ich hab noch was zum Thema beizurtagen, auch wenn es schon etwas älter ist. Hatte nämlich eben selbiges Problem:

Wozu der Aufwand, den halben Baustein umzuschreiben? Eigentlich hätte es doch gereicht in der ersten Zeile das Minus durch ein Plus zu ersetzen, so dass es so aussieht
Code:

tmp := time_zone_offset * 60 + BOOL_TO_INT(DST)*3600;

Habs gerade ausprobiert, sollte  auch funktionieren. Jetzt werden nämlich im Sommer richtigerweise 2h und im Winter 1h von der Systemzeit abgezogen (wenn man sich in Deutschland befindet).

Wär natürlich klasse, wenn es in der nächsten Release aufgenommen wird. Ich vermute, es ist in der 3.10 schlicht vergessen worden Wink

Gruß
Thomas

1790
Modulentwicklung / Re: OSCAT und SQL
« am: 31. Juli 2009, 21:12:03 »
Dass was du machen möchtest, ist problemlos mit Steuerungen von Phoenix Contact möglich
Hier gibt einen Bibliothek mit der man direkt mit MS-SQL und MySQL kommunizieren kann.

(Siehe File im Anhang)

[gelöscht durch Administrator]

1791
Modulentwicklung / Module Development / Re: TcpIp Kopplung
« am: 31. Juli 2009, 21:05:29 »
hallo

leider haben wir keine passenden fertigen bausteine
eine oscat-network-library ist in arbeit, und die wird dann auch dyndns beherschen, aber
darauf kannst du sicher nicht warten

vielleicht kannst du dir mit hardware abhelfen

z.b. können diverse dsl-router auch selber dyndns

oder du baust dir einen VPN-Tunnel auf und verbindest damit übers internet zwei private netze


1792
Modulentwicklung / Module Development / Re: Bibliothek für St
« am: 12. Juli 2009, 11:53:05 »
hallo r_mhm

ganz habe ich deinen wunsch nicht verstanden

die oscat-lib ist komplett auf allen plattformen für die sie verfügbar ist , in strukturierten text (st) erstellt
oder hast du gemeint das die oscat-lib direkt auf delphi/pascal portiert werden soll

Was meinst du genau ?

gruss peewit

1793
hallo wolfii

danke, deine anregung wurde in die ToDo Liste aufgenommen.

1794
Hallo mg

schau mal unter

Ressource/Arbeitsbereich/Übersetzungsoptionen

dort sollte "Verschachtelte Kommentare" aktiviert sein.

1795
oscat.lib fuer TwinCAT/CoDeSys / Re: Bedienfehler COUNT_BR???
« am: 10. Juni 2009, 16:28:33 »
Hallo AlexR
bei der beschreibung muss ich dir recht geben.....

Aus der oscat-Beschreibung geht nicht eindeutig hervor was bei einen Überlauf passieren soll (in der beispieltabelle fehlt ein über/unterlauf )
fängt dieser wieder bei genau 0 an , oder bei 0 + Überlaufwert

Allerdings funktioniert deine änderung auch nur wenn genau der max wert erreicht wird

wenn z.b. Wert 92 + Schrittweite 10 gezählt wird , fängt dein baustein genauso wenig bei "0" an



kannst du mal eine matrix erstellen , wo alle fall beispiele definiert sind.
dann werde ich gerne das für dich umsetzen......

1796
Hallo NetFritz

Ich habe dir eine neue Variante gebastelt (TONOF2)

Bei Zustandswechsel muss die jeweilige Zeit voll ablaufen um den Zustandswechel zu übernehmen
alles andere triggert die Zeit neu

Schau es dir an, und sag mir ob du es so wolltest

FUNCTION_BLOCK TONOF2
VAR_INPUT
   IN : BOOL;
   T_ON,T_OFF : TIME;
END_VAR
VAR_OUTPUT
   Q : BOOL;
END_VAR
VAR
   X : TON;
   old: BOOL;
   mode: BOOL;
END_VAR

IF IN AND NOT old THEN
  X(IN := FALSE, PT := T_ON);
  mode := TRUE;
ELSIF NOT IN AND old THEN
  X(IN := FALSE, PT := T_OFF);
  mode := FALSE;
END_IF;

X(IN := TRUE);

IF X.Q THEN
  Q := mode;
END_IF;

old := IN;

1797
oscat.lib fuer TwinCAT/CoDeSys / Re: Bedienfehler COUNT_BR???
« am: 05. Juni 2009, 08:17:09 »

Das mein Vorschlag nicht zur Oscat.lib passt, ist klar, denn dafür müsstest du wieder den original count_br nehmen

darum meinte ich auch das du am besten diese version count_br2 nennen solltest, da das verhalten nicht dem cound_br bzw. der Doku entspricht.

deine änderung bewirkt folgendes

UP:= (Variable BOOL)
STEP:= 10
MX:= 100
CNT=> (Variable BYTE)

0, 10, 20, ...90, 100, 0,10,20

das unlogische ist der zählschritt von 100 auf 0 bei schrittweite 10
Wenn du mit deiner letzten änderung für deine anforderungen zufrieden bist, gut so... aber ich kann den Sinn nicht wirklich nachvollziehen.

es gibt nur zwei möglichkeiten entweder mit "0" als zählwert oder ohne

orignal count_br (0 = zählposition)
0,10,20,...90,100,9

meine count_br2 (0 ist keine zählposition, ausser bei programmneustart oder reset oder set auf 0)
0,10,20,...90,100,10,20

wenn n > max wird dann sollte danach eigentlich n = n+step-max sein, und das passiert bei mir auch.


1798
oscat.lib fuer TwinCAT/CoDeSys / Re: Bedienfehler COUNT_BR???
« am: 03. Juni 2009, 19:29:43 »
Hallo AlexR

hier hast du einmal eine vorläufige lösung

ich schlage vor das du für diese provisorische lösung einfach einen neuen baustein anlegst (count_br2)


FUNCTION_BLOCK COUNT_BR2
VAR_INPUT
   SET : BOOL;
   IN : BYTE;
   UP : BOOL;
   DN : BOOL;
   STEP : BYTE := 1;
   MX : BYTE := 255;
   RST : BOOL;
END_VAR
VAR_OUTPUT
   CNT : BYTE;
END_VAR
VAR
   last_up: BOOL;
   last_dn: BOOL;
END_VAR

IF rst THEN
   cnt := 0;
ELSIF set THEN
   cnt := LIMIT(0,in,mx);
ELSIF up AND NOT last_up THEN
   IF STEP > MX - CNT THEN
      CNT := CNT - MX + STEP;
   ELSE
      CNT := CNT + STEP;
   END_IF;
ELSIF dn AND NOT last_dn THEN
   IF STEP > CNT THEN
      CNT := CNT - STEP + MX;
   ELSE
      CNT := CNT - STEP;
   END_IF;
END_IF;
last_up := up;
last_dn := dn;

1799
oscat.lib fuer TwinCAT/CoDeSys / Re: Bedienfehler COUNT_BR???
« am: 02. Juni 2009, 18:28:30 »
Hallo AlexR

Dein festgestelltes Verhalten kann ich nachvollziehen

dabei wird bei einen überlauf die zahl 0 auch als zählposition angesehen, und verursacht diese verschiebung

beispiel:

inc (90,10,100) ergibt 100 (ist noch ok)
inc (100,10,100) ergibt 9

betrifft: count_br und count_dr

wir werden uns das genauer noch ansehen......

danke für den tip 

1800
hi wero

nur ein kleiner tip am rande, das kann man auch so formulieren

CASE IN OF

71..80:
Impuls:=T#5000ms;
50..70:
Impuls:=T#6000ms;
40..49:
Impuls:=T#7000ms;
21..39:
Impuls:=T#8000ms;
0..20:
Impuls:=T#10000ms;
END_CASE

Seiten: 1 ... 118 119 [120] 121 122