programm spinnt

Benni89

Level-1
Beiträge
153
Reaktionspunkte
8
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

habe etwas festgestellt und erst meine mitazubis in verdacht gehabt


Nun habe ich einen FC2 erstellt, wo meine umrechnungen etc. reinsollen: Int in real

Schreibe ich im OB1 netzwerk 4 "call fc2" spinnt das programm und zwar wird im FC10 NW1 der Startmerker von mir über anlage EIN gesetzt aber sofort wieder rückgesetzt??? obwohl keine Reset bedingung erfüllt ist

nehme ich das Call FC2 wieder aus dem OB1 raus geht wieder alles!

füge ich Call FC2 nun aber im FC10 ein funktioniert alles tadelos

nun würde ich gerne wissen, wieso das so ist (will nun nicht hören dann mach es doch einfach im FC10) finde so nämlich keinen fehler :-(

Vielen Dank schonmal im vorraus :)

hier das programm:

OB1
Code:
Netzwerk1

      L     PEW  256
      T     DB1.DBW    0

// Kanal 1 -> Datenbaustein
      L     PEW  258
      T     DB1.DBW    2

// Kanal 2 -> Datenbaustein
      L     PEW  260
      T     DB1.DBW    4

// Kanal 3 -> Datenbaustein
      L     PEW  262
      T     DB1.DBW    6

// Kanal 4 -> Datenbaustein
      L     PEW  264
      T     DB1.DBW    8

// Kanal 5 -> Datenbaustein
      L     PEW  266
      T     DB1.DBW   10

// Kanal 6 -> Datenbaustein
      L     PEW  268
      T     DB1.DBW   12

// Kanal 7 -> Datenbaustein
      L     PEW  270
      T     DB1.DBW   14


Netzwerk2

      CALL  FC     1
       RawValue     :=DB1.DBW0
       Factor       :=1.000000e-001
       Offset       :=0.000000e+000
       OverFlow     :=14501
       OverRange    :=12010
       UnderRange   :=-2101
       UnderFlow    :=-2101
       MeasuredValue:=DB2.DBD0
       Status       :=MW10

// Kanal 2 : Thermoelement Typ J

      CALL  FC     1
       RawValue     :=DB1.DBW2
       Factor       :=1.000000e-001
       Offset       :=0.000000e+000
       OverFlow     :=14501
       OverRange    :=12010
       UnderRange   :=-2101
       UnderFlow    :=-2101
       MeasuredValue:=DB2.DBD4
       Status       :=MW20

Netzwerk3

      CALL  "Programm"             FC10
       ZeitBacke1:=S5T#1S300MS
       ZeitBacke2:=S5T#1S300MS
       Zykluszeit:=S5T#2S
FC1
Code:
Netzwerk1

      L     #RawValue
      ITD   
      DTR   
      L     #Factor
      *R    
      L     #Offset
      +R    
      T     #MeasuredValue

Netzwerk2

 L     W#16#0
      T     #Status


      L     #RawValue
      L     #OverFlow
      >=I   
      SPB   m_of

      L     #RawValue
      L     #OverRange
      >=I   
      SPB   m_or

      L     #RawValue
      L     #UnderFlow
      <=I   
      SPB   m_uf

      L     #RawValue
      L     #UnderRange
      <=I   
      SPB   m_ur

      SPA   end

m_of: L     W#16#800
      T     #Status
      SPA   end

m_or: L     W#16#400
      T     #Status
      SPA   end

m_uf: L     W#16#200
      T     #Status
      SPA   end

m_ur: L     W#16#100
      T     #Status
      SPA   end




end:  NOP   0
FC10
Code:
 Netzwerk1
      U     "Siegelstation Ein"
      U     "Schaltschrank EIN"
      S     #StartMerker
      U(    
      ON    "Siegelstation Aus"
      O     "Not-Aus ausgelöst"
      )     
      R     #StartMerker
      NOP   0

Netzwerk2
      U(    
      U(    
      U     "Druckwächter"
      U     "Zylinder M1 hinten"
      U     "Zylinder M2 hinten"
      U     #StartMerker
      U     "Zylinder M3 hinten"
      S     #BereitMerker
      U(    
      ON    "Druckwächter"
      ON    "Siegelstation Aus"
      O     "Not-Aus ausgelöst"
      )     
      R     #BereitMerker
      U     #BereitMerker
      )     
      L     S5T#2S
      SE    T      1
      U(    
      ON    "Druckwächter"
      ON    "Siegelstation Aus"
      O     "Not-Aus ausgelöst"
      )     
      R     T      1
      NOP   0
      NOP   0
      U     T      1
      )     
      S     #AN
      U(    
      O     T      5
      ON    "Siegelstation Aus"
      )     
      R     #AN
      U     #AN
      =     "Anlage bereit"

Netzwerk3
      U     #StartMerker
      S     #DruckEIN
      U(    
      ON    "Druckwächter"
      O     "Not-Aus ausgelöst"
      )     
      R     #DruckEIN
      U     #DruckEIN
      =     "Druckluft Ein"

Netzwerk4
 U(    
      U     #BereitMerker
      L     S5T#1S
      SE    T      2
      U(    
      ON    "Druckwächter"
      ON    "Siegelstation Aus"
      O     "Not-Aus ausgelöst"
      )     
      R     T      2
      NOP   0
      NOP   0
      U     T      2
      )     
      S     #ZylinderM3
      U(    
      ON    "Druckwächter"
      ON    "Siegelstation Aus"
      O     "Not-Aus ausgelöst"
      )     
      R     #ZylinderM3
      U     #ZylinderM3
      =     "Zylinder M3 vor"

Netzwerk5
      U(    
      U     #AN
      L     S5T#50MS
      SE    T      6
      NOP   0
      NOP   0
      NOP   0
      U     T      6
      )     
      U     "Zylinder M2 hinten"
      U     "Zyklus Start"
      U     "Zylinder M1 hinten"
      U     #ZylinderM3
      U     #BereitMerker
      S     #Zyklusfahrt
      U(    
      O(    
      U     "Zyklus Start"
      U     #ZylinderM2
      U     #ZylinderM1
      L     #Zykluszeit
      SA    T      5
      NOP   0
      NOP   0
      NOP   0
      U     T      5
      )     
      ON    "Siegelstation Aus"
      O     "Not-Aus ausgelöst"
      ON    "Druckwächter"
      )     
      R     #Zyklusfahrt
      NOP   0

Netzwerk6
      U     #Zyklusfahrt
      S     #ZylinderM1
      U(    
      ON    "Druckwächter"
      O(    
      U     "Zylinder M1 vorn"
      L     #ZeitBacke1
      SE    T      3
      U(    
      ON    "Druckwächter"
      ON    "Siegelstation Aus"
      O     "Not-Aus ausgelöst"
      )     
      R     T      3
      NOP   0
      NOP   0
      U     T      3
      )     
      ON    "Siegelstation Aus"
      O     "Not-Aus ausgelöst"
      )     
      R     #ZylinderM1
      U     #ZylinderM1
      =     "Zylinder M1 vor"

Netzwerk7
      U     #Zyklusfahrt
      S     #ZylinderM2
      U(    
      ON    "Druckwächter"
      O(    
      U     "Zylinder M2 vorn"
      L     #ZeitBacke2
      SE    T      4
      U(    
      ON    "Druckwächter"
      ON    "Siegelstation Aus"
      O     "Not-Aus ausgelöst"
      )     
      R     T      4
      NOP   0
      NOP   0
      U     T      4
      )     
      ON    "Siegelstation Aus"
      O     "Not-Aus ausgelöst"
      )     
      R     #ZylinderM2
      U     #ZylinderM2
      =     "Zylinder M2 vor"

Netzwerk8
      U     #Zyklusfahrt
      S     #LeuchtmelderZyklus
      UN    #ZylinderM1
      U     "Zylinder M1 hinten"
      UN    #Zyklusfahrt
      UN    #ZylinderM2
      U     "Zylinder M2 hinten"
      R     #LeuchtmelderZyklus
      U     #LeuchtmelderZyklus
      =     "Zyklusfahrt"
FC2
Code:
Netzwerk1
   L     "Touch_Panel".Temp_1
      ITD   
      DTR   
      T     "Touch_Panel".Temp_1_REAL

Netzwerk2
      L     "Touch_Panel".Temp_2
      ITD   
      DTR   
      T     "Touch_Panel".Temp_2_REAL
 
Ja ist eine locale variable unter Temp zu finden

PS: soll das programm nur anpassen touchpanel etc einbinden programmiert hat das ein azubi der nun fertig ist und leider nichtmehr an unserem standort
 
Ja ist eine locale variable unter Temp zu finden

PS: soll das programm nur anpassen touchpanel etc einbinden programmiert hat das ein azubi der nun fertig ist und leider nichtmehr an unserem standort

Zum Speichern von Werten über den Baustein hinaus ist eine tempVariable nicht so dolle.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
naja das programm läuft ja

nur sobald im ob 1 halt noch ein anderer baustein gecallt wird spinnt das rum

wieso ist das so änder doch in dem sinne nicht am fc10 oder denke ich da falsch?
 
naja das programm läuft ja

nur sobald im ob 1 halt noch ein anderer baustein gecallt wird spinnt das rum

wieso ist das so änder doch in dem sinne nicht am fc10 oder denke ich da falsch?

Das darf dir jetzt Kollege 4lagig erklären. Wenn ich anfange, muss ich mir den Satzbau und die zu übermittelnde Information erst von 4 Kollegen bestätigen lassen, bevor ich wieder einen Riffel kassiere :ROFLMAO:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
suche mal nach temporäre Variablen hier im Forum,
dort findest du eine Menge, u.a. vom Kollegen Ralle aus diesem Fred Beitrag #3

Der Speicherbereich für Temp-Var wird von allen Bausteinen in der SPS genutzt. Am Ende eines Bausteines werden die Temp-Var wieder frei, d.h. der nächste Baustein nutzt diesen Bereich für seine eigenen Temp-Var, so er welche hat. Wenn du also nur einen Baustein in der SPS hast, wird das evtl. sogar gehen, da ja kein anderer Baustein den Temp-Var-Bereich für sich nutzt und überschreibt. Die Informationen darauf würden unverändert bleiben und wären beim nächsten Bausteinaufruf noch da. Aber das kann man natürlich nicht voraussetzen, denn schon ein weiterer Baustein kann seine Temp-Var auch dort ablegen und verändert dann den Speicherinhalt.
 
Zuletzt bearbeitet:
achso also läuft es so ab

ob 1 rattert los........klack FC10 abruf ....wird bearbeitet (startmerker gesetzt)..........fertig.....fc2 wird aufgerufen....Temp ist leer.... also wird startmerker wieder auf "0" gesetzt


heißt ich müsste aus dem temp einfach in out deklarieren?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
aber wieso passiert das denn nicht wenn der fc10 den fc2 callt theoretisch ist es doch das gleiche in grün oder nicht?

wobei es ja anders laufen muss sonnst würde ja der gleiche fehler auftauchen
 
aber wieso passiert das denn nicht wenn der fc10 den fc2 callt theoretisch ist es doch das gleiche in grün oder nicht?

wobei es ja anders laufen muss sonnst würde ja der gleiche fehler auftauchen

ohne jetzt die genaue hierarchie der aufrufe zu betrachten verweise ich auf das "möglicherweise 0" ... kann genauso auch "möglicherweise 1" sein...
 
Zurück
Oben