Mehrfach Blinken mit step7

Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, plcsim...

Ich lade aus dem Bausteine Ordner immer die Systemdaten hoch.

Wenn ich dann Sven_HH's OB1, FB und DB hochlade funktionierts auch.
Nur Mein reduzierter OB1 (nur noch mit dem Call des FBs), FB und DB und es
geht nix mehr...Ich versteh das nicht.

Ich habe alle benötigten Bausteine im Bausteine Ordner des verfügbaren
Teilnehmers gesehen. (OB1,FB,DB,SFB4 und noch viele mehr)

Habe ich ggf. beim Anlegen des Instanz Datenbausteins etwas falsch gemacht ?
Ich habe einen Datenbaustein angelegt, dort auf Instanz-DB gewechselt
und den FB ausgewählt, noch nen Symbol Namen vergeben und das war's.
(muß da sonst noch was gemacht werden ?)

Sorry, will Euch nicht zu lange mit diesem Problem belasten, kann verstehen
wenn Ihr da nicht weiter machen wollt...
 
generier den datenbaustein mal anders.

im prog einfach den aufruf: call fbxy,dbxy eingeben, enter und generieren lassen (glaub zwar nicht das es daran liegt, aber ein versuch ist es wert...)
 
die fehler sind immer noch die selben?
welche plcsim version?

ersetze in meinem baustein mal den code durch den hier:

Code:
*

//----------- init ------------//

      U     #xOn                        //if enable
      FP    #xHelpFlagOn                //new
      SPBN  none
      S     #xHelpFlagAll               //init
      S     #xOut                       //all
      L     L#0                         //functions
      T     #dOnDelayPulse              //of
      T     #dOffDelayPulse             //the
      T     #dOnDelayAll                //pulse generator
      T     #dOffDelayAll               //2 vari

none: UN    #xOn                        //if enable false
      R     #xOut                       //reset output
      SPB   end                         //end leave

//---------- pulse ------------//

      U     #xPlcPulse                  //with every pulse
      FP    #xHelpFlagPlcPulse          //the function will be worked
      SPBN  end

//---------- on all -----------//

      U     #xHelpFlagAll               //if "all" on
      SPBN  off1

      L     #dOnDelayAll                //increment
      L     L#1
      +D    
      T     #dOnDelayAll                //the time

      L     #dOnDelayAll                //until
      L     #dOnTimeAll                 //on_delay equal time
      >=D   
      SPBN  new
      R     #xHelpFlagAll               //then "all" off
      R     #xOut
      L     L#0                         //and reset
      T     #dOnDelayAll                //the timer
      T     #dOnDelayPulse
      T     #dOffDelayPulse
      SPA   end

//---------- off all ----------//

off1: L     #dOffDelayAll               //"all" is off
      L     L#1                         //increment
      +D    
      T     #dOffDelayAll               //the delay

      L     #dOffDelayAll               //until
      L     #dOffTimeAll                //off_delay equal time
      >=D   
      SPBN  end
      S     #xHelpFlagAll               //then "all" on
      S     #xOut

      L     L#0                         //and reset
      T     #dOffDelayAll               //the timer

//--- pulse on while all on ---//

new:  U     #xHelpFlagAll               //if "all" on
      SPBN  end

      U     #xOut                       //and out also on
      SPBN  off

      L     #dOnDelayPulse              //increment
      L     L#1
      +D    
      T     #dOnDelayPulse              //the delay

      L     #dOnDelayPulse
      L     #dOnTimePulse
      >=D   
      SPBN  end
      R     #xOut

      L     L#0
      T     #dOnDelayPulse
      SPA   end

//--- pulse off while all on ---//

off:  L     #dOffDelayPulse             //out is off
      L     L#1                         //increment
      +D    
      T     #dOffDelayPulse             //the delay

      L     #dOffDelayPulse
      L     #dOffTimePulse
      >=D   
      SPBN  end
      S     #xOut                       //to set the out

      L     L#0
      T     #dOffDelayPulse

//-------- EN0 handling --------//

end:  SET   
      SAVE  
      BEA
 
Hi vierlagig,

ich habe den Code ersetzt und den Baustein neu importiert.
Wenn ich den FB dann im OB1 alleine ausführe, man glaubt es kaum, funktioniert er !
Wenn ich den FB dann in meinen vollständigen OB1 einbaue tut er's
nicht...sprich es kommt wieder dieser Fehler.
Meine plcsim version ist 5.3
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich den FB dann im OB1 alleine ausführe, man glaubt es kaum, funktioniert er !

pah, ich hätte nichts anderes erwartet ;)

Wenn ich den FB dann in meinen vollständigen OB1 einbaue tut er's
nicht...sprich es kommt wieder dieser Fehler.

wo machst du den aufruf im OB1, mittendrin, am anfang, am ende?

Meine plcsim version ist 5.3
pack dir mal das SP1 drauf
 
...glaube mich zu erinnern das die PLCSIM 5.3 Probleme mit dem SFB4 macht... ob diese mit SP´s oder Hotfix behoben werden können weiss ich leider nicht ...


Gru?
Sven_HH
 
@vierlagig
Der FB Call ist im oberen Viertel

@sven_HH
wollte später mal "mutig" sein und es am "lebenden" Objekt probieren...

Vielleicht ist die reale Hardware ja doch besser ;-)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
reale hardware ist immer besser!

welcher baustein funktioniert jetzt eigentlich nicht???
funktioniert das programm ohne die neuen bausteine im plcsim?
pack den aufruf mal ans ende...
 
Ich habe gerade mal in ein bestehendes Projeckt (315 2DP mit ettlichen FB´s DB´s UDT´s SFB´s usw.)meinen FB eingebunden und im OB1 im letzten NW aufgerufen. Habe dann alles in PLCSIM 5.4 geladen und mit Erfolg getestet.


Vorgehensweise:
  • In meinem geposten Projekt den FB1 kopiert
  • Bestehendes Projekt geöffnet und den FB1 eingefügt
  • OB1 geöffnet neues NW eingefügt
  • Dort den FB1 wie folgt aufgerufen "call fb1, db10"
  • Dann die Parameter an den Aufruf übergeben
  • Alles gespeichrt, PLCSIM gestartet und das Projekt geladen
Den SFB4 brauchte ich nicht mit kopieren wurde automatisch erzeugt. ebeso wird der DB10 beim Aufruf des FB1 automatisch generiert.

Gruß
Sven_HH
 
Tja meine Herren,

ich verstehe nicht warum es so ist aber :confused:
nachdem ich den Blinker von vierlagig einfach mal so,
ohne viel zu tun, ganz nach unten verschoben habe
läufts :D

Wenn mir das jetzt jemand erklären kann wäre ich hoch
erfreut ! Was sind da die technischen Hintergründe ?

Achja, nochmals BESTEN DANK ! für die Tips und FB's.

Kleiner Nachtrag: Habe gerade noch Sven_HH's FB ans Ende
verschoben und auch sein FB läuft :D
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
ich vermute, du öffnest irgendwo einen datenbaustein, der in den netzwerken vor dem aufruf und auch in den netzwerken nach den aufrufen funktionieren soll ... da die bausteine den letzten geöffneten db nicht sichern und wiederherstellen kann es passieren, dass dein programm durcheinander kommt ...
 
Hi vierlagig,

Deine Vermutung stimmt, zu Beginn des OB1
öffne ich einen Datenbaustein mit Allgemeinen
"Merkern" auf die fast alle Netzwerke im OB1 zugreifen.
Dann könnte das zu den von Dir vermuteten
Problemen führen.
 
das heißt auch, dass in deinem programm keine FBs verwendet werden bzw. nur FBs die den offenen DB sichern und am ende wieder herstellen:

also am anfang des FBs:

Code:
*
      L     DBNO; // letzten offenen Globaldatenbaustein ...
      T     #wDbnoSave; // ... sichern
und am ende:

Code:
*
       AUF   DB [#wDbnoSave]; // letzten Globaldatenbaustein öffnen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Na ja, viel wichtiger wäre vielleicht, keine unqualifizierten Zugriffe alá T DBW10, sondern nur noch qualifizierte Zugriffe, wie T DB1.DBW10 verwenden.
 
Hallo zusammen,

@vierlagig
Stimmt ich verwende keine FBs nur FCs.
Muß ich denn auch in den FCs den letzen globalen
Baustein sichern ?

@Ralle
obwohl ich den DB am Anfang öffne greife ich nur
mit qualifizierten Zugriffen darauf zu
 
> nicht, wenn du da keinen DB aufmachst

Nun in meinen FC's mach ich schon DB's auf und
zwar die deren Nummer ich als Parameter übergebe.


> das halt ich für ein gerücht

Ernsthaft, kein Gerücht ! Verstehe ich Deinen Zweifel richtig.
Ich muß den DB garnicht mit AUF öffnen wenn ich ohnehin
qualifiziert darauf zugreife ?

Logische Konsequenz: Mein OB1 funktioniert nur gerade
deshalb weil ich qualifiziert auf den DB zugreife, da ich in den
FC's ja andere DB's öffne !? Richtig ?
(Wie gesagt SPS Anfänger)
 
ja, richtig, du kannst des AUF DBxy rauslassen, wenn du qualifiziert zugreifst

wenn du immer qualifiziert zugreifst dürfte es nicht zu einem solchen fehler kommen.
 
Zurück
Oben