-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

#1801
Hallo mg

schau mal unter

Ressource/Arbeitsbereich/Übersetzungsoptionen

dort sollte "Verschachtelte Kommentare" aktiviert sein.
#1802
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......
#1803
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;
#1804

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.

#1805
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;
#1806
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 
#1807
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
#1808
Tja , der baustein hat wirklich gefehlt

im anhang findest du den baustein zum nachrüsten
in der nächsten release (in kürze) wird der baustein dann natürlich schon drinnen sein.


import des blind_night in das projekt


1. im projektbaumfenster "logische poe" anwählen
2. Menü Datei -> Import -> Import erweiterter IEC61131-3 import
3. poe anwählen
4. baustein anwählen und übernehmen



[gelöscht durch Administrator]
#1809
hallo martin.k

hast du dir schon die _buffer_search function angesehen


Richtig Super wäre natürlich wenn man die XML-Ketten direkt angeben könnte und man den Wert zurückbekommt  :-)

so wie es aussieht möchtest du vom "weatherchannel.com" die xml wetterdaten auswerten

mit den klassischen steuerungen ist es nicht möglich xml zu parsen

aber dann kam oscat.....

wir arbeiten seit längerer zeit an einer plattformneutralen ethernet-blbiothek
der referenzcode ist auch soweit fertig, und darin befindet sich auch ein XML-PARSER Baustein
damit ist es nun wirklich möglich beliebige XML-Elemente auszuwerten !

dazu gibt es auch einen YAHOO_WEATHER Baustein der genai diese Wetterdaten in einen Datenarray fertig ausgewertet ablegt.


da du wahrscheinlich ein codesys-anwender bist, gibt es das problem noch das "hugo" noch keine zeit hatte diese bibliothek zu portieren

ich kann dir den referenzcode zukommen lassen, und du passt ihn dir selber an......

ich habe dir die doku als file angehängt

[gelöscht durch Administrator]
#1810
hallo "vaninger"

leider gibt es bei multiprog und pcworx keine Datum und Uhrzeit Datentypen (DT,TOD usw... fehlen)
weiters ist kein alias von datentypen erlaubt, und die einzige datentype die von der datenbreite alles aufnehmen und womit man auch rechnen kann ist leider nur der Datentyp "UDINT"
darum verwenden alle bausteine für datum und Uhrzeit Funktionen den Datentyp UDINT, ansonsten sind alle eigenschaften und ergebnisse gleich

Bei Phoenix Steuerungen gibt es folgende globale Variablen

RTC_HOURS   INT   VAR_GLOBAL   Systemzeit (Stunden)
RTC_MINUTES   INT   VAR_GLOBAL   Systemzeit (Minuten)      
RTC_SECONDS   INT   VAR_GLOBAL   Systemzeit (Sekunden)      
RTC_DAY                INT   VAR_GLOBAL   Systemzeit (Tag)      
RTC_MONTH   INT   VAR_GLOBAL   Systemzeit (Monat)      
RTC_YEAR   INT   VAR_GLOBAL   Systemzeit (Jahr)            

für meter_stat kannst du zb. mit baustein SET_DATE dir einen passenden Input "DI" basteln
#1811
die feiertage sind als globale variablen in form einer Datenstruktur angelegt

zugriff über

location.holiday[ Sprache , feiertags index 0..29 ].NAME usw...

du kannst di schon vordefinierten einträge in deinen programm überschreiben / ändern oder erweitern ....

siehe grafik

[gelöscht durch Administrator]
#1812
in der 3.04 ist die Holiday-Daten und "Datentypen" -> CONSTANTS_LOCATIONS -> HOLIDAY zu finden


[gelöscht durch Administrator]
#1813
wie hugo schon sagte , den baustein delay musst du auch noch exportieren

achtung !

der baustein 'delay' benötigt wiederum noch extra die datentype 'oscat_delay_buf' 

TYPE
  oscat_delay_buf             : ARRAY [0..31]   OF REAL;
END_TYPE

entweder von hand einfügen , oder die exportierst die kompletten oscat-Datentypen der lib
#1814
die bacl_basic_vxx verwendet unter anderen den baustein S_BIT_IN_BYTE, der wiederum aus der 'bit_util.fwl' kommt, und nicht aus der proconos.fwl , somit muss man im eigenen projekt nochmals die 'bit_util' einbinden !

du hast anscheinend die bacl_basic_v0.10 bekommen, die ist eigentlich für ein pcworx3.xx gedacht.
weiters ist dort noch direkt die 'proconos.fwl' eingebunden, was dir dann noch zusätzliche probleme bereitet.

in meinem demoprojekt habe ich die bacl_basic_v0.12 eingebunden die schon für pcworx 5.xx geignet ist.

siehe test.zwt projekt im anhang
da ich das testprojekt mit dem neuesten pcworx erzeugt habe , solltest du dir das servicepack 4 installieren !

https://eshop.phoenixcontact.de/phoenix/treeViewClick.do?UID=2985738
dort findest du unter downloads das sp4 zum download

mfg peewit

[gelöscht durch Administrator]
#1815
ich werde dir ein projekt in ein paar minuten schicken .....