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

#1816
beim pcworx brauchst du keine proconos.fwl einbinden, denn die sps-spezifischen bausteine auch die der proconos.fwl stehen automatisch
zur verfügung.

das aktuellste pcworx ist ein v5.20 sp4.45, aber das hat nichts mit deinem problem zu tun.

wer sagt dir das die proconos.fwl fehlt ?


mach eine bildschirmhardcopy von deinen problem , oder stelle dein problemprojekt online
#1817
hallo peterH

diese bibliothek hast du normalerweise sowieso auf deinem System zur verfügung.
du must sie nur unter bibliotheken einbinden !

einbinden der proconos.fwl:

im projektbaumfenster gibt es den ordner 'bibliothek' -> rechte maustaste -> einfügen 'firmware-bibliothek'
dann musst du im dateimanager den passenden sps-hardware-ordner anwählen und die proconos.fwl übernehmen

wenn du trotzdem nicht zurecht kommst, dann sag mir bitte
was für eine SPS und welche Programmiersoftware verwendest du ?
welche rs485 bibliothek hast du gekommen ?
#1818
Hallo Vaninger

Die List_Bausteine benutzen als Speicher einen ganz normalen String. Die maximale Stringlänge ist jedoch auf den meisten systemen sowieso auf ca 255 zeichen beschränkt. bei pcworx würden zwar auch uber 32000 zeichen in strings gehen, das wäre aber ein totaler performancekiller.

deine real_strings kannst du ganz einfach mit 'concat' auch zusammenhängen, und bei erreichen der string-grenze in die datei schreiben (neue daten werden an das ende der datei angehängt)

die groessere aufgabe hierbei ist sowieso das file-handling

csv-format:
wert1;wert2;wert3;wert4<CR><LF>
wert1;wert2;wert3;wert4<CR><LF>

#1819
das beispiel funktioniert auch in der simulation

dein problem ist beim DT_TO_STRF das der Formatierungsstring "FMT" bei dir nicht in ordnung ist.

du hast bei FMT '#n:#r:#t' angegeben, diese parameter gibt es aber nicht !

bitte alles so wie in Doku anwenden

FMT '#N:#R:#T'   <--- das funktioniert dann auch ...

#1820
für so einem zweck passt der Baustein DT_TO_STRF perfekt !
das ausgabe-format kannst du beliebig zusammenstellen

Siehe Beispiel-Grafik (Anhang)


[gelöscht durch Administrator]
#1821
Hallo Ilja

hier hat sich tatsächlich bei der letzten codeoptimierung ein fehler eingeschlichen

TO_UPPER := in AND NOT 16#20

dein vorschlag lässt sich noch kürzen

TO_UPPER := in AND 16#DF

Danke..
--------

IF in > 96 AND in < 123 THEN
   TO_UPPER := in AND 16#DF;
ELSIF in > 223 AND in <> 247 AND in <> 255 AND setup.EXTENDED_ASCII THEN
   TO_UPPER := in AND 16#DF;
ELSE
   TO_UPPER := in;
END_IF;
#1822
woduch kann diese fehlermeldung verursacht , bzw wie behoben werden.

das bibliotheks-projekt muss nach dem entpacken einmalig auf den aktuellen programmiersystem fehlerfrei kompiliert werden, damit dieses
benutzt werden kann.

ein möglicher fehler ist dass man nach dem kompilieren der lib nocheinmal  "speichern unter" macht, dann ist
das projekt wieder "nicht kompiliert", und man  kommt genau zu dem genannten fehler !

also immer zuerst die lib "speichern unter" und zum schluss immer kompilieren !



Nochmals schritt für schritt für multiprog user

1. multiprog starten
2. Menü: Datei -> projekt öffnen -> Datei "oscat_???.zwt"       (? steht für beliebige versionsnummer)
3. Menü: Datei -> projekt speichern unter (beliebiger pfad für die lib)
4. projekt kompilieren
5. wenn danach einige fehler gemeldet werden , muss noch unter bibliothek .../plc/fw_lib/proconos/proconos.fwl
   eingebunden werden (nicht vergessen im dateidialog den dateityp "firmware bibliothek" vorwählen
   und projekt nochmals kompilieren
6. wenn nach kompilieren keine fehler gemeldet werden, dann ist die oscat_lib betriebsbereit !


dann die oscat_lib in beliebigem (eigenem) projekt einfach unter "bibliothek einfügen" einbinden

--------------------------------------------------------------------------------------------------

mfg peewit
#1823
Hallo bert

beschreibe doch bitte mal dein system

hersteller, name ... usw... eventuell weiterführende internet-links

hugo hat recht das höchstwahrscheinlich multiprog/pcworx deiner plattform am ehesten entspricht...

#1824
wir werden eine network-lib herauszubringen, die auf pcworx, s7 und codesys laufen wird (soweit der plan)
das wird leider noch einige zeit benötigen, bis die lib für alle plattformen verfügbar sein wird (derzeit gibt es nur für pcworx lauffähige bausteine)
dazu werden wir einen wrapper baustein einsetzen, der eine plattformneutrale ethernet-schnittstelle zur verfügung stellt.

weiters arbeite ich gerade auch an modbus tcp/udp client/server bausteinen
das besondere daran wird sein das virtuelle adressräume unterstützt werden

den modbus tcp/udp server baustein habe ich schon am laufen (für pcworx jedoch)


das heisst sowas wird für oscat kommen, jedoch werdet ihr noch eine weile warten müssen

#1825
Hallo

bei DEG_TO_DIR kann ich es mir noch gar nicht erklären

aber die bausteine
FIFO_16
FIFO_32
FILTER_MAV_DW
FILTER_MAV_W
FILTER_WAV
MESSAGE_4R

haben eines gemeinsam das sie intern die neue function "_INC1" benutzen

hier könnte sich dein system daran stören das in der function kein functionergenis-wert zugewiesen wird , bzw. das die function aufgerufen wird ohne das ein rückgabewert weiterverarbeitet wird,oder was eher unwahrscheinlich ist das du in einer function kein IN_OUT verarbeiten kannst

folgendes könntest du testweise beim _INC1 ändern

FUNCTION _INC1 : INT
VAR_INPUT
   N : UINT;
   X : INT;
END_VAR
VAR
END_VAR

_INC1 := (x + 1) MOD N;

in weiterer folge gehört in den bausteinen

FIFO_16
FIFO_32
FILTER_MAV_DW
FILTER_MAV_W
FILTER_WAV
MESSAGE_4R

der aufruf von _inc1 abgeändert


bespiel für stack_16

IF rst THEN
   (* asynchronous reset for the fifo *)
   NW := NR := 0;
   Dout := 0;
   empty := TRUE;
   full := FALSE;
ELSIF WR AND E AND NOT full THEN
   (* write action *)
   fifo[NW] := Din;
   NW := _INC1(16, NW);
   full := NW = NR;
   empty := FALSE;
ELSIF NOT WR AND E AND NOT empty THEN
   (* read from stack *)
   Dout := fifo[NR];
   NR := _INC1(16, NR);
   empty := NR = NW;
   full := FALSE;
END_IF;


#1826
Ja hier ist leider auch der gleiche Fehler mit drinnen
wird auch mit der release 2.77 behoben

danke..
#1827
oscat.lib fuer PC WorX/MULTIPROG / Re: LINEAR_INT
01. Oktober 2008, 21:15:03
hallo ggw11

da hast du als anfänger mit dem baustein "LINEAR_INT" gleich einen glücksgriff gemacht.

bei pcworx funktioniert so manches ein wenig anders als bei codesys (als wie in der doku beschrieben)

1. die datenstruktur für parameter "XY" ist vom typ "OSCAT_XY" und im beispiel als var "XXX" angelegt.

2. In pcworx kannst du nicht ein array of ...  anlegen und gleichzeitig mit initialwerten vorbelegen.

3. die Datenstruktur musst du im sps-programm erst zur Laufzeit mit sinnvollen daten füllen.

4. dazu kommt das es bei pcWorx keine mehrdimensionalen Arrays gibt , sondern nur verschachtelte arrays
    dass heißt der zugriff erfolgt nicht über array[x],[y].zzz sondern array[x][y].zzz

siehe bild im anhang


[gelöscht durch Administrator]
#1828
Hallo

Problem mit  _CLEAR_BUFFER

Du meinst wohl die Function _BUFFER_CLEAR von OSCAT oder ?


Beispiel: _BUFFER_CLEAR(ADR(bigarray), SIZEOF(bigarray))
#1829
Ankündigungen / Announcements / Re: bibliothek teilen
29. September 2008, 15:50:06
hallo Rockcrunsher

schau einmal bei deinem system unter "Ressourcen" - > "Zieleinstellungen" -> "Speicheraufteilung"
dort gibst du bei "Maximale Anzahl von Bausteinen" die Zahl 1024 ein.

dann sollte auch die komplette LIB laufen !


#1830
bei den baustein kannst du bis zu max 20 koordinatenwerte angeben
die genaue anzahl ist mittels parameter PTS : INT (Anzahl der Wertepaare) einstellbar

der fehlermeldung nach, hast du koordinaten mit den wert 0 in verwendung

üeberprüfe ob für die vorhandene anzahl an koordinaten auch die richtige anzahl uebergeben wird

der division/0 error kann hier entstehen (wenn nullwerte eingetragen sind wird durch diese dividiert !)
LINEAR_INT := ((XY[i][1] - XY[i2][1]) * X - XY[i][1] * XY[i2][0] + XY[i2][1] * XY[i][0]) / (XY[i][0] - XY[i2][0]);

solltest du den fehler trotzdem nicht entdecken, dann poste bitte dein aktuelles projekt, und ich werde mir dein problem ansehen !

mfg peewit