REAL Wert einlesen und speichern

Zuviel Werbung?
-> Hier kostenlos registrieren
hää?:confused:

FUP<>CFC das soll dir klar sein
So dumme bemerkungen braucht man hier nicht. Die kannst du dir irgendwo einstecken

ich sagte ja auch, das CFC nicht FUP ist ... oder was verstehst du an
mööööp - falsch!
nicht?

also immer locker durch die hose atmen, erst alles nochmal lesen und dann losprusten!

so franzmann, was machen wir nu mit dir? baustein schreiben, den du dann in CFC aufrufen kannst?
 
Also,
ich würde es vorschlagen:
1- Einen kleinen FB zu schreiben, bei dem man nur bei Enable=true lesen darf.
(Grobe Darstellung)
Input
Eingang: Dword
Enable: Bool

IN_output

Ausgang: Dword


Netwerk1

Un enable
SPB Tue_Nix
L Eingang
T Ausgang

BEA

Tue_Nix: NOP 1
//*******************************


Nachher kannst du den FB aufrufen

Gruß johnij
 
Zuviel Werbung?
-> Hier kostenlos registrieren
mal abgesehen davon, dass die verwendung von code-tags empfehlenswert ist würde ich einen baustein vorschlagen, der die gesamte funktionalität übernimmt ... also einlesen eines wertes, nach bestimmter zeit zweiten wert einlesen, vergleichen, beide werte ausgeben und vergleichsergebnis bit-codiert ausgeben ...
 
Ho, Ho , Ho ... was ist denn hier los ... Da ist man mal ein paar Minuten absent ...
Müßt ihr euch wegen so etwas kloppen ...?

Zum Thema:
Ich persönlich würde auch die FB-Variante favourisieren ... Da kann man dann auch gleich die Werte schön zwischenspeichern und der Rückgabewert ist danmn das ergebnis der Auswertung ... :p
 
Wenn man das kann ist das bestimmt der Königsweg.
Da stimme ich Dir zu.

Nur leider ist mir diese Fähigkeit bis jetzt nicht gegeben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
und wer nicht bis heut abend warten kann, kann sich ja hier schon mal einlesen:

Code:
*
FUNCTION_BLOCK FB 10
TITLE =alt/neuwert-vergleich
//baustein zum zeitversetzten einlesen und vergleichen eines REAL-wertes
//
//DATE:     17.06.2008
//AUTHOR:   4lagig
//VERSION:  V0.1 BasicVer
AUTHOR : '4lagig'
VERSION : 0.1


VAR_INPUT
  xPlcPulse : BOOL ;    //CPU-Taktmerker z.b. Mx.5 (1Hz)
  xTrigger : BOOL ;    //Startimpuls
  rValue : REAL ;    //Wert
  iTime : INT ;    //Zeitverzug
END_VAR
VAR_OUTPUT
  xActEquOld : BOOL ;    //neuer Wert == alter Wert
  xActBiggerOld : BOOL ;    //neuer Wert > alter Wert
  xActLowerOld : BOOL ;    //neuer Wert < alter Wert
  rValueActOut : REAL ;    
  rValueOldOut : REAL ;    
END_VAR
VAR
  iTimer : INT ;    
  xOnAir : BOOL ;    
  xHelpFlag1 : BOOL ;    
  xHelpFlag2 : BOOL ;    
  rValueAct : REAL ;    
  rValueOld : REAL ;    
END_VAR
BEGIN
NETWORK
TITLE =

      UN    #xOnAir; //noch nicht getriggert
      U     #xTrigger; //und getriggert
      FP    #xHelpFlag1; //nehmen aber nur die flanke
      SPBN  notn; //wenn das nich, dann gucken wir mal ob schon läuft
      L     #rValue; //wenn doch, dann den wert
      T     #rValueAct; //in den aktuellen wert schieben
      R     #xActEquOld; //vergleichsergebnisse 
      R     #xActBiggerOld; //rücksetzen
      R     #xActLowerOld; // 
      S     #xOnAir; //und aufzeichnungsbit setzen

notn: U     #xOnAir; //es wurde getriggert
      U     #xPlcPulse; //und der CPU-takt-merker (z.b. 1s)
      FP    #xHelpFlag2; //davon aber auch nur die flanke
      SPBN  end; 
      L     #iTimer; //macht uns einen timer
      +     1; //den wir inkrementieren
      T     #iTimer; //und speichern

      L     #iTimer; //hat unser timer den
      L     #iTime; //selben wert wie die vorgabe
      ==I   ; 
      SPBN  end; 
      R     #xOnAir; //stoppen wir die aufzeichnung
      L     0; //setzen den
      T     #iTimer; //timer zurück
      L     #rValueAct; //und verschieben den letzten aktuellen wert
      T     #rValueOld; //in den speicherplatz alter wert
      L     #rValue; //und den aktuellen wert
      T     #rValueAct; //in den speicherplatz des aktuellen werts

      L     #rValueAct; //aktueller wert
      L     #rValueOld; //alter wert
      ==R   ; //gleich?
      SPBN  noeq; 
      =     #xActEquOld; //gleich-bit schreiben

noeq: L     #rValueAct; //aktueller wert
      L     #rValueOld; //alter wert
      >R    ; //größer?
      SPBN  nobi; 
      =     #xActBiggerOld; //größer-bit schreiben

nobi: L     #rValueAct; //aktueller wert
      L     #rValueOld; //alter wert
      <R    ; //kleiner
      SPBN  end; 
      =     #xActLowerOld; //kleiner-bit schreiben

end:  L     #rValueAct; //und die werte noch
      T     #rValueActOut; //nach außen schreiben

      L     #rValueOld; //wenn das wirklich
      T     #rValueOldOut; //notwendig sein sollte

      SET   ; //und den baustein
      SAVE  ; //geordnet verlassen

END_FUNCTION_BLOCK
 
Zuletzt bearbeitet:
WOW !
Das ging ja super schnell.

Vom reinen durchlesen ist dies genau das was ich brauche !:D
Auch die einstellbare Zeit ist Klasse und die 3 Ausgänge auch!
(kleiner , grösser und gleich )

Jetzt bräuchte ich jemanden der mir hilft dies in meinen Baustein zu bekommen. *nerv*

Ich habe in meinem Simatic Mangager in der Komponenten_Ansicht unter Bausteine einen neuen leeren Funktionsbaustein FB10 eingefügt.
Nun habe ich den Code hinein kopiert und alles ist rot/ unbekannte Anweisungen
Was koennte ich verkehrt gemacht haben ?

Noch mal vielen Danke hier !
Ihr seid echt SUPER !

:p

Frank
 
über dem bausteinordner müßte es einen ordner quellen geben... rein gehen, neue awl-quelle anlegen, code komplett reinkopieren (das sternchen in der ersten zeile löschen :rolleyes:) und dann übersetzen (Strg+B) ... fertig ist der FB10 :ROFLMAO:
 
Zuletzt bearbeitet:
Ihr seid echt die Besten !

Danke , ich meine ich bekomms jetzt hin !

SUUUUUUUPPPPERRR !

:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D
 
Zuviel Werbung?
-> Hier kostenlos registrieren
kann nicht verstehen, dass ihr da euer ganzes know how einfach so verschenkt!

und bei sovielen danksagungen in wort und schrift wird mir auch schlecht. dafür gibt es da einen button, da steht danke drauf!

änderung/nachtrag:

da johnij da oben in den beitrag wo "nix..." steht, sein projekt kommentarlos gelöscht hat, dieses aber im folgenden zum verständnis des threads von nöten sein könnte, anbei ein screenshot des FB. habe bewußt keine kommentare eingefügt!
wenn wir uns schon streiten, dann doch bitte mit einem grund!
 

Anhänge

  • johnij.jpg
    johnij.jpg
    45,2 KB · Aufrufe: 91
Zuletzt bearbeitet:
Was für ein Wettbewerb, der Franzmann denkt er hat das SPS-Paradies gefunden! Aber der Lerneffekt bleibt fragwürdig...:cool:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was für ein Wettbewerb, der Franzmann denkt er hat das SPS-Paradies gefunden! Aber der Lerneffekt bleibt fragwürdig...:cool:

also das paradies ist es hier schon allein der vielen hilfeleistenden wegen ... das mit dem lerneffekt - ja, das hatten wir schon mehrfach diskutiert und irgendwie ... wer in CFC proggt - egal ... :rolleyes:
 
Zurück
Oben