BOOL Ausgang am FC gibt falschen Wert aus..

Jochen Kühner

Level-3
Beiträge
4.291
Reaktionspunkte
525
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.

Hier mal meine Problembeschreibung:

Wir haben einen FC welcher uns von einer Bestimten Teigmenge Eine Prozentzahl Ausrechnet. Dazu hat der FC noch einen bool Ausgang zur Mitteilung einer Grenzwertüberschreitung (Ausgngsbit wird im FC nur beschrieben!). Nun haben wir an einer neu etworfenen Anlage folgendes Problem festgestellt: Wir haben Werte am Eingang liegen welche keinen Fehler erzeugen dürfen, FC bringt auch keinen Fehler. Nun haben wir 2 Eingänge auf 1 gestetzt welche eigendlich gar nichts mit dieser Linie zu tun haben, und Plötzlich bringt der FC eine 1 Signal, ohne das sich seine Eingangsignal geändert hat. Nun, egal welches dbx irgendeines dbs welches wir an den ausgang hängen, es kommt immer (also kein fehler durch setzten irgendwo anderst im programm), und wenn wir irgendein merkerbit an den ausgnag hängen, kommt dies aber nicht!

Was tippt ihr was das sein könnte?? Fehlerhafte steuerung??
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ach was...

hab ich ja gemacht... aber eigendlich dürfte er nicht kommen:

der fc ist auch schon etwas älter (noch aus s5 tagen... aber er soll in diesem projekt nicht geändert werden!)

das problem ist halt, die eingangswerte ändern sich nicht, aber der fehler ausgang kommt ab und zu!

poste mal hier den code:

NW1:
Code:
   ON    #Waage_Anf_neuer_Soll
      ON    #Freigabe_Werte_umrechnen
      R     #Stoerung_Sollwerte

      UN    #Waage_Anf_neuer_Soll
      U     #Freigabe_Werte_umrechnen
      R     #Freigabe_neuer_Sollwert
      BEB   
      UN    #Freigabe_Werte_umrechnen
      SPBN  A001
      L     #Sollwert
      T     #Ausgabe_Sollwert
      SET   
      S     #Freigabe_neuer_Sollwert
      BEA   
A001: NOP   0

NW2:
Code:
 L     #Betriebsart
      L     0
      ==I   
      SPB   Proz
      L     #Betriebsart
      L     1
      ==I   
      SPB   Char
      L     #Betriebsart
      L     2
      ==I   
      SPB   Anz
      R     #Freigabe_neuer_Sollwert
      BEA   
Proz: L     #Soll_Prozent_Charge        //Prozent 
      L     #Sollwert                   //Sollwert
      *I    
      L     100                         //durch ganzzahlige Prozentzahl
      /D    
      SPA   Ausg
Char: L     #Soll_Chargenteilmenge      //Soll in kg
      L     1000                        //Faktor 100*0,1kg (Zahlen ohne Komma)
      *I    
      L     #Gesamt_Soll_Charge         //Gesamtmenge
      /D    
      L     #Sollwert                   //Sollwert
      *D    
      L     100                         //durch 100
      /D    
      SPA   Ausg
Anz:  L     #Soll_Anzahl_Teiglinge
      L     #Gewicht_Teigrohling        //in Gramm 
      *I    
      L     L#1000000                   //Wert zu hoch   max Wert 32000 (Wort) *100
      >D    
      SPB   Rech
      TAK   
      L     1000                        //Wert um 1000 multiplizieren
      *D    
      L     #Gesamt_Soll_Charge         //Gesamtmenge kg
      /D    
      L     #Sollwert
      *D    
      L     L#100000                    //auf 0,1kg legen * 1000
      /D    
      SPA   Stoe
Rech: TAK   
      L     10
      *D    
      L     #Gesamt_Soll_Charge         //Gesamtmenge kg
      /D    
      L     #Sollwert
      *D    
      L     1000                        //auf 0,1kg legen
      /D    
Stoe: L     32000                       //Ausgabewert prüfen ob im Rahmen 1 Wort
      >D    
      =     #Stoerung_Sollwerte
      R     #Freigabe_neuer_Sollwert
      BEB   
      TAK   
Ausg: T     #Ausgabe_Sollwert           //Ausgabe Sollwert
      SET   
      S     #Freigabe_neuer_Sollwert
 
Problem

Hallo,

schreibst du den FC-Ausgang auf Merker oder auf Datenbits? Hab mir den Code nicht weiter angesehen.. Aber kann es sein dass es zwischen Zuweisung 0 und 1 eine Grauzone gibt? Das heisst es wird nicht in jedem Zyklus zugewiesen.. Versuch doch mal eins - ändere die Deklaration auf IN/OUT

MfG
André Räppel
 
Hallo Jochen,

ist der entsprechende Ausgang als OUT oder als IN_OUT Parameter defeniert?

Hier ein Ausschnitt einer mail von Siemens an mich:

"Bitte beachten Sie, daß die OUT Parameter bei einem FC per Definition bei jedem Aufruf mit einem aktuellen Wert versorgt werden müssen.
Der Grund ist, daß der FC kein Gedächnis hat und die OUT Paramter Daten über den Lokaldatenstack an den Aufrufer übergeben werden.
Bei IN_OUT Parameter tritt das Verhalten nicht auf, weil diese per
Definition erst gelesen werden und damit einen definierten Wert haben."

Also: OUT Parameter in einem FC nur verwenden, wenn diese bei jeden SPS Zyklus neu beschrieben werden, sonst IN_OUT Parameter verwenden.
(oder einen FB verwenden)


vill Jrööß un fröhliche Weihnaachte un ne jooden Rutsch
(viele Grüße und frohe Weihnachten und einen guten Rutsch)

Peter
 
Zurück
Oben