-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

#1831
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
#1832
hi Belacqua

beispiel:

VAR
   ar6 : ARRAY[0..6] OF REAL := 3,2,4,7,1,6,-2;
   X: REAL;
END_VAR

X := ARRAY_AVG(ADR(ar6),SIZEOF(ar6));

die summe der 7 real zahlen ergibt 21 und geteilt durch 7 ergibt 3, und genau das gibt die Function auch als ergebnis zurück.
Hast du bei size auch die SIZEOF verwendet !


stop := SHR(size,2)-1;
array_avg := pt^[0];
FOR i := 1 TO stop DO
   array_avg := array_avg + pt^;
END_FOR;
array_avg := array_avg / (stop + 1);

Zur Erklärung
stop := SHR(size,2)-1;

ein REAL wert belegt 4 Bytes und 7 Werte ergeben einen size von 28
damit man die Anzahl der Reals im buffer bestimmen kann, wird die buffersize durch 4 dividiert (SHR x,2) und -1 weil mit index 0 begonnen wird.

#1833
Das Problem ist mir bekannt, bislang aber keine zeit gehabt es auf die wunschliste zu bringen
Das betrifft AIN als auch AOUT

Bei Phoenix Contact gibt es auch 12Bit Module wo Bit 0-2 andere bedeutungen haben (AI und AO Module )

Das einfachste wäre wenn wir beim AIN bzw AOUT Baustein noch einen zusätzlichen parameter integrieren der die bitposition angibt.

Beispiel von Phoenix contact Modulen

15 14 13 12 111 10 09 08 07 06 05 04 03 02  01 00
VZ --------------Analogwert ----------- MB DB BÜ

VZ Vorzeichen
MB Messbereich 0 oder 4-20ma
DB Drahtbruch
BÜ Bereichsüberschreitung

oder

Beispiel:

15 14 13 12 111 10 09 08 07 06 05 04 03 02  01 00
VZ --------------Analogwert ----------- XX XX XX

VZ Vorzeichen
xx nicht relevante bits
#1834
Hallo Friedrich-Alexander

Im Prinzip ist jede Bibliothek bei Multiprog einfach nur ein echtes Projekt das in kompilierter Form vorliegt, und in einem anderes Projekt als Bibliothek eingebunden wird. Das Problem ist, das so ein Bibliothek-Projekt vor der ersten Nutzung kompiliert werden muss, und somit wird es Versionsabhängig gemacht. Um diesem Problem mit den Versionen vorab aus dem Weg zu gehen, werden die Bausteine als MULTIPROG IEC 61131 Export zur Verfügung gestellt. Damit sie auch auf deinem System sicher eingebunden werden können.

In der Multiprog-Oscat-Lib ist eine kleine PDF-Datei angehängt, in der erklärt wird wie man aus den einzelnen Bausteinen wieder eine Bibliothek macht (es sind die letzten Kapitel in der Beschreibung). Da ich die PRPOMASTER von Baumüller nicht direkt kenne, diese aber auf MULTIPROG aussetzt, solltest du auch im Menü "Datei" einen "Import"  -> "IEC 61131 Import" haben. Somit kannst du nach Anleitung vorgehen !

Wenn du willst kann ich dir auch die fertige Bibliothek aus Basis MULTIPROG 3.3 mailen , die du dann normalerweise auf deinem System öffnen, kompilieren musst, um sie danach als LIB einbinden zu können (vorausgesetzt das deine MULTIPROG Basis keine niedrigere Version aufweist).

Es ist natürlich auch möglich die einzelnen Bausteine direkt in ein Projekt zu importien, was aber nicht unbedingt von Vorteil ist.


Hier noch einmal ein Auszug aus der Beschreibung
--------------------------------------------------------------------------------------------------------------------------

OSCAT LIB erstellen

Um die OSCAT-Bausteine bzw. OSCAT-LIB in möglichst vielen verschiedenen MULTIPROG Plattformen einbinden und verwenden zu können, wird der Plattform und Versions neutrale IEC 61131 Import von MULTIPROG verwendet.

MULTIPROG (PC WorX oder sonstige MULTIPROG Plattform) starten.
Menü: Datei -> neues Projekt und eine passende Projektvorlage verwenden
Lösche alle Bausteine die sich in ââ,¬Å¾Logische POEââ,¬â,,¢sââ,¬Å" befinden.
Lösche die ââ,¬Å¾sys_flag_typesââ,¬Å" unter DATENTYPEN.
Lösche die Configuration in Hardwarestruktur.
Anwählen des Ordners ââ,¬Å¾Datentypenââ,¬Å" im Projektbaum Menü: Datei -> Import -> Erweiterter IEC 61131 Import Datentype ââ,¬Å¾oscatââ,¬Å" importieren
Anwählen des Ordners ââ,¬Å¾Logische POEââ,¬â,,¢sââ,¬Å" im Projektbaum Menü: Datei -> Import -> Erweiterter IEC 61131 Import Alle Bausteine zum Import markieren und übernehmen.
Menü: Projekt -> Bibliothek einfügen -> Firmwarebibliothek Bibliothek ââ,¬Å¾Bit_UTIL.fwlââ,¬Å" einbinden
Menü: Code -> Make ausführen (Projekt wird compiliert)
Menü: Datei -> Projekt speichern unter Projekt (LIB) mit beliebigen Namen an einen beliebigen Ort speichern

OSCAT-Lib in ein anderes Projekt einbinden

Neues Projekt anlegen bzw. bestehendes öffnen Menü: Projekt -> Bibliothek einfügen -> Anwenderbibliothek. Die zuvor erstellte LIB durch Anwahl des Laufwerk-Pfades anwählen Nun stehen alle OSCAT-LIB Bausteine im Projekt zur Verfügung. Wenn an diversen OSCAT-Bausteinen Anpassungen gemacht werden müssen so sollten die Bausteine nicht über eine kompilierte LIB, sondern als einzelne Bausteine ins selbige Projekt eingebunden werden (ansonsten können sie nicht editiert werden). Oder man ändert die Bausteine bevor man die OSCAT-LIB erstellt.

Mfg Peewit