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.


Themen - hugo

Seiten: 1 2 3 [4] 5 6 ... 9
46
Ankündigungen / Announcements / Release 3.02 verfügbar
« am: 15. November 2008, 12:44:46 »
Das Releasae 3.02 der OSCAT Lib steht zum Download bereit.

Die 3.02 ist ein Maintenance Release mit insgesamt 26 updates.

- Neues Modul zur Berechnung der Tagesmitteltemperatur
- Überarbeitete Integrator und Filter Funktionen
- Neues Modul CLICK_MODE zur Auswertung von verschiedenen Tastendrücken
- Neues Modul BUFFER_COMP zum vergleich von Puffer Inhalten
- ONTIME Auflösung erhöht auf Millisekunden
- verbesserte Skalierungsfunktionen

47
Anwendungsbeispiele / Application Examples / Random Bausteine
« am: 08. November 2008, 19:42:09 »
Die in der OSCAT LIB enthaltenen Random Bausteine sind wie folgt anzuwenden:

RDM(0) ergibt eine Random Zahl von 0 <= X < 1 (DIe 0 ist enthalten, 1 aber nicht).

RDM liest beim Aufruf den SPS internen Timer und generiert daraus und aus der Eingangzahl die Zufallszahl.
wird nun RDM() mehrmals innerhalb der selben Millisekunde des SPS Tiers aufgerufen so generiert RDM natürlich dieselbe Zahl.
Dies kann man umgehen indem Man beim Aufruf die loetzte erzeugte Random Zahl übergibt: RDM(last_RDM)
gleichfalls kann wenn RDM innerhalb einber Schleife aufgerufen wird der Schleifenzähler hierzu benutzt werden: RDM(i)

Zu beachten ist weiterhin das schnelle SPS durchaus Zykluszeiten < 1 ms haben und dadurch sich der Timer beim nächsten Aufruf unter Umständen noch nicht geändert hat.
auch in diesem Fall kann man dieselben Methoden anwenden.

dasselbe gilt für alle Random generatoren in der oSCAT LIB.

48
Anwendungsbeispiele / Application Examples / TIMER_EXT
« am: 06. November 2008, 22:43:37 »
anbei ein Beispiel wie TIMER_EXT verwendet wird.

Der Manuelle Betrieb von Timer_ext mit ON und OFF ist per default FALSE und deshalb aus. Nur so läuft der automatische Modus.
am Eingang ist ein optionaler Schalter angebracht der jederzeit das licht aus und einschalten kann.

Holiday und suntime berechnen die entsprechenden Tageswerte für Feiertag, Sonnen Aufgang udn Untergang.

Ein Schaltereignis bekommt man nut wenn die SWetup Werte des Bausteins (erreichbar über einen Doppelklick auf den Baustein gesetzt sind)
alle Zeiten die auf 0 stehen haben keinen effekt.

in unserem Beipiel wird das licht 1 Stunde vor Sonnenaufgang eingeschaltet und 1 Stunde danach wieder aus.
desselbe gilt für Sonnenuntergang.
ein und auschalten zu festen Tageszeiten bleibt aus weil diese zeiten nicht gesetzt sind.


[gelöscht durch Administrator]

49
Ankündigungen / Announcements / Release 3.01 verfügbar
« am: 05. November 2008, 12:32:18 »
Mit der ersten Release 3 hat OSCAT die Bibliothek in weiten Teilen runderneuert und überarbeitet.
Mit 172 Änderungen ist die 3.01 das bisher mächtigste Release in der 3 jährigen OSCAT Historie.
Auch strukturell wurde OSCAT überarbeitet und bietet in der Release 3 bessere Kompatibilität zu
anderen Bibliotheken und weiteren Systemen.
Neben verbesserter Kompatibilität wurde auch die Performance nochmals deutlich gesteigert.

Die wesentlichen Neuerungen sind:
- strukturierte Konstanten anstelle der alten globalen Konstanten
- verbesserte Genauigkeit bei mathematischen Modulen wie Gamma und ERF
- weitere Statistik und mathematische Funktionen
- neues Modul zur Pin Code Auswertung
- überarbeitete Rampenfunktionen
- Einführung eines neuen strukturierten Kalenderformates
- neue Listen Bearbeitungsfunktionen Sort und Retrieve
- erweiterter Funktionsumfang des Dimmers
- Bitmanipulationsfunktionen Toggle und Load für Bit Range

50
viele SPS haben keine floating point unit und benötigen zur Gleitpunkt Multiplikation und Division beträchtliche Zeit.
Eine optimierung ist hier aber leicht möglich wenn man folgende Dinge beachtet:

eine Messung an einer Wago841 (32 Bit ARM CPU) ergint dabei folgende Werte

REAL#X * 2 6,3us
REAL#X / 2 8,7us
daraus ergibt sich: eine division durch konstanten kann einfach durch Multiplikation ersetzt werden. z.B: /2 wird ersetzt mit *0.5
dies spart 40% ausführungszeit ! und ergibt keinen Nachteil bei CPUs mit Gleitkommaeinheit.

wer programmierfest ist kann noch weiter optimieren:
mittels pointer und bitoperation kann eine multiply by 2,4,8,... durch eine simple addition ersetzt werden
und eine division durch 2,4,8,... durch eine subtraktion.
hier ist allerdings vorsicht mit pointern angebracht.

Beispiel:
ptx := pointer to dword; (eingangswert X)
pty := pointer to dword; (ausgangswert Y)

pty := adr(Y);
ptx := adr(X);

pty^ := ptx^ + 8388608;  (* dieses statement multipliziert den wert von X mit 2 durch addition im exponenten *)
pty^ := ptx^ - 8388608;  (* dieses statement dividiert den wert von X mit 2 durch subtraktion im exponenten *)

innerhalb der OSCAT LIB verwenden wir bereits wo möglich diese optimierungen um beste performance zu gewährleisten

Ein Beispiel für den Einsatz dieser Technik findet Ihr im Baustein TEMP_PT

51
Anwendungsbeispiele / Application Examples / Modulo operation
« am: 31. Oktober 2008, 11:46:20 »
in der programmierung wird sehr häufig die modulo operation a mod m eingesetzt.
allerdings sind hierbei ein paar dinge zu beachten um überraschungen zu vermeiden.

die Modulo funktion ist ist einheitlich definiert !!!
ein guter artikel hierzu findet sich in der englischen wickipedia unter: http://en.wikipedia.org/wiki/Modulo_operation

1. nicht immer ist gewährleistet das a mod 0 auch funktioniert und eine 0 liefert.
2. es gibt unterschiedliche Implementationen für negative Argumente der MOD funktion.

Im falle von Codesys ergibt sich :
a mod 0 = 0
0 mod m = 0
-a mod m ergibt -r
-a mod -m ergibt -r
a mod m ergibt +r
a mod -m ergibt +r

damit folgt codesys einer üblichen Implementation a mod m = a - n * floor(a/m)
aber selbst hier ist äusserste Vorsicht geboten!
das auch codesys für verschiedenen Targets unterschiedlichen Code linkt ist nicht sichergestellt das dies auch mit allen taregts so funktioniert.

ein ausweg aus diesem Dilemma ist wie folgt:
die mod funktion nur für positive argumente a und m anwenden, sonst ist nicht sichergestellt das beim targetwechsel oder von simulation zu target immer dasselbe ergebnis herauskommt.

Wer zwingend auf negative argumente der modulo funktion angewiesen ist kann die modulo funktion ersetzen durch:
a mod m = n * floor2(a/m), floor2 ist in der oscat lib bereits enthalten.

52
unten ist ein Beispiel für die Anwendung von ONTIME und die dazugehörige deklaration der variablen als retain und persistent

die möglichkeiten retain und persistent sind im 2ten anhang beschrieben.

man kann auch FBs als retain und oder persistent deklarieren, aber dies hat den Nachteil das dann der ganze FB im retain speicher abgelegt wird.
dies ist der Fall auch wenn nur eine einzige Variable des FB als Retain deklariert wurde.
Da der Retain Speicher meist begrenzt und vor allem sehr langsam im Zugriff ist ist es nicht Sinnvoll ganze FBs als Retain zu deklarieren.

Im Beispiel wird für ontime nur die beiden nötigen vars zyklen und laufzeit als RETAIN PERSISTENT deklariert.

[gelöscht durch Administrator]

53
Ankündigungen / Announcements / Konflikte mit Konstanten
« am: 30. Oktober 2008, 11:41:15 »
Anwedner von OSCAT haben immer wieder von Konflikten mit anderen Bibliotheken gemeldet.
Die meisten dieser Namenskonflikte waren aus dem Bereich der globalen Konstanten.
viele Bibliotheken definieren z.B. ein PI oder andere Konstanten, wenn Namen doppelt verwendet werden gibt dies beim kompilieren einen Konflikt.

In OSCAT ab Release 3.xx haben wir ein komplett neue Methode für die Konstanten eingeführt die solche Konflikte in Zukunft minimieren wird.

Unsere Konstanten sind in Zukunft innerhalb von Strukturen definiert, wie z.B: constants_math.
im Bereich der globalen Variablen wird dann lediglich eine strukturierte variable vom typ constants_math definiert.
in unserem Falle ist das math : constants.math;
benutzt man nun beim programmieren diese konstanten tippt man lediglich math. und beim tippen des punktes gibt codesys / twincat eine drop down liste der zur verfügung stehenden konstanten aus. Man wählt die entsprechende Konstante mit der Maus und drückt enter.
es wird in zukunft die bereiche math, phys, setup, language, location als strukturen für diese konstanten geben.

die referenz math.pi zeigt dann auf die konstante PI ( 3.1415..)
oder wie folgt:
Y := math.pi * X;

54
Anwendungsbeispiele / Application Examples / Aktionen in Codesys
« am: 30. Oktober 2008, 11:32:37 »
In Codesys kann man auf jeden FB sogenannte Aktionen generieren.

mittels aktionen kann man sehr übersichtlich und mittels abgegrenztem code FBs ausprogrammieren.

Als Beispiel habe ich mal einen NCOUNT definiert der verschiedene Methoden beinhaltet.
im Body vom NCOUNT ist der code der nötig wäre wenn man keine Methoden definiert.

Man kann sehr schön erkennen wie die lästigen und auch CPU Zeit vernichtenden IF then nötig sind.
diese IF then fallen bei methoden ersatzlos weg.

auch die aufrufe werden lesbarer und einfacher.

z.B. normale Methode:
counter(rst := true);
counter.rst := false;

aufruf mit aktionen:
counter.rst;

lesbarerer, sicherer und auch performanter.


[gelöscht durch Administrator]

55
Anwendungsbeispiele / Application Examples / Whirlpool Steuerung
« am: 30. Oktober 2008, 08:44:34 »
Anbei eine Whirlpoolsteuerung



[gelöscht durch Administrator]

56
Anbei ein Beispiel für die Dekodierung des IRTRANS Infrarot Empfänger

IRTRANS_DECODE
IRTRANS_8
UDP_SERVER



[gelöscht durch Administrator]

57
Anwendungsbeispiele / Application Examples / Verwendung dieser Rubrik
« am: 28. Oktober 2008, 00:44:49 »
In dieser Rubrik können alle Anwender Ihre Anwendungsbeisiele oder sonstige programmierbeispiele posten
und mit den Usern dieses Forums diskutieren.
Immer mehr Anwender werden erkennen das ein öffentlicher code nicht der verlust von IP bedeutet, sondern vielmehr einer erweiterung und vermehrung des IPs darstellt.
denn versteckter code trägt nicht dazu bei Ihn zu verbessern, aber öffentlicher code wird viele Anregungen und Verbesserungsvorschläge bringen und trägt damit bei sein eigenes IP zu verbessern.
Firmen die dies bereits begriffen haben glänzen heute mit besserem IP als diejenigen die dies nicht tun.
Übrigends ein weit verbreiteter Irrglaube ist das open source etwas mit kostenlos zu tun hat.
Open Source hat primär nichts mit Lizensierung zu tun und muss völlig separat betrachtet werden.

Als postet auch ganze Projekte und alles was Ihr zur Diskussion stellen wollt.

Bitte beachtet folgende Regeln.

1. unter Betreff tragt Bitte einen stichhaltigen Begriff um was es sich ahndelt ein.
   z.B. Bausteinnamen wenn es um ein Beispiel für einen Baustein geht oder Lösungsname wenn es um ein Anwendungsbeispiel geht.

2. bitte tragt im text die namen der wesentlichen bausteine ein damit diese gesucht und gefunden werden koennen.

3. unter erweiterte optionen bitte die files anhängen, entweder projekte, screenshots oder pdf .

4. jedes Beispiel bitte als neues Thema eintragen.
innerhalb des Themas kann dann das Beispiel entsprechend diskutiert werden.

Viel Spass beim posten

58
Ankündigungen / Announcements / private messages
« am: 22. Oktober 2008, 22:58:39 »
private mmessages

unser board unterstützt private messages, allerdings kann man auf private messages nicht direkt antworten.

was geht:
user anklicken, auf private message senden gehen und dann die message intippen

das geht wunderbar.
was nicht gehr ist ein direkter reply

59
Ankündigungen / Announcements / Release 3
« am: 21. Oktober 2008, 00:32:19 »
bereits im November wird es das Release 3.0 der OSCAT Library geben.

die Library wird im moment gerande komplett überarbeiet und noch strukturierter werden.
der einsatz der Module wird intuitiver und selbsterklärend sein.
Der Bereich Globale Konstanten wird durch strukturierte Konstanten ersetzt.
gerade die Globalen Konstanten waren oft ein anstoß für unverträglichkeit mit anderen libs.

Die OSCAT LIB wird deutlich kompatibler und besser strukturiert sein.
mit der 3.0 wird auch die Basisarbeit gemacht um dann zügig Netzwerkfunktionalität wie TCPIP, SNTP und vieles mehr aufzunehmen.

bitte helfen Sie auch weiterhin mit durch Anregungen, und Rückmeldungen die LIB zu verbessern

60
Ankündigungen / Announcements / Release 2.77
« am: 19. Oktober 2008, 13:37:52 »
Nach einer kleinen Sommerpause ist das neue Release 2.77 online gegangen.

Die 2.77 ist ein Release mit einer Fülle von Updates:

- DT_SIMU simuliert Tageszeit und Datumsabläufe in beliebiger Geschwindigkeit (zum Debuggen und Testen)
- ein neuer Sprachen Setup in den globalen Variablen lässt das einfache Umschalten von Sprachen und auch Erweiterungen ohne Codeänderung zu
- eine Reihe von neuen Funktionen dient der formatierten Konvertierung von Datum und Zeiten zu String sowie zurück
- Scheduler Funktionen erlauben das Zeit oder Zyklusgesteuerte Aufrufen von Programmteilen
- neue Module für Sinal Filterung und Entprellen
- neue Module für Increment und Decrement mit rollover zu 0
- insgesamt über 70 Module wurden verbessert oder optimiert.

Bedanken möchten wir uns vor allen bei den zahlreichen Anwendern die uns mit Ihren Inputs helfen die LIB laufend zu verbessern

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