OSCAT Forum

oscat.lib => oscat.lib fuer Step 7 => Thema gestartet von: frankie am 26. Februar 2016, 18:25:29

Titel: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: frankie am 26. Februar 2016, 18:25:29
Hi Freunde!
Ich habe nun also die Library Bibliothek_OSCAT_Basic_332__S1200_V13_V13_SP1.zal13
und
Bibliothek_OSCAT_building_100_S1200_V13_V13_SP1.zal13

in TIA 13 SP1 up7 laden können.
 
Ich möchte nur meine Rolos und Jalousien im Haus steuern.
Bisher mach ich das mit einfachen Netzwerken, ohne Sunset und Automatismen.
Ich möchte aber mehr komfort, Timer usw..  was halt oscat alles bietet.

Ich hab also die Building und die Basic als Globale Bibliothek geöffnet.
Ich hab dann also den BLIND_CONTROL_S in den OB1 gezogen und verdrahtet.

Es gibt dann ja den FB248, der lässt sich aber nicht übersetzen. 
Die Fehler sind dann: Ungültiger Datentyp. im SCL ist dann immer #rmp  gehilightet.

Ich hab dann diverse Bausteine hinzugefügt und hänge jetzt beim Operand "FirstScan", der nicht definiert ist.

Weis jemand, wo ich den FirstScan finde, bzw. wie ich den definiere?

//#ERR := RD_SINFO (TOP_SI => #TOP_SI, START_UP_SI => #START_UP_SI);

(* read system time *)
#tx := DINT_TO_TIME(DWORD_TO_DINT("T_PLC_MS"()));

(* reset last_time on system startup *)
IF "FirstScan" THEN
  #last := #tx;
END_IF;

(* check inputs and start state machine *)
 
  IF #UP  AND NOT #DN THEN
    (*  manual UP *)
    #rmp.IN := 255;

Da oben wird der Firstscan verwendet.

Kann ja nicht viel sein. Vielen dank schonmal.
.
.
Hab weiter gesucht ..  der Operand "FirstScan" ist nicht definiert.
Der Fehler kommt von "STIME", "_RMP_B" und "BLIND_CONTROL_S".
Nebenbei werden diverse Parameter möglicherweise nicht initialisiert.
..
Ok.. Hab "FirstScan" Global definiert.   (Hab mehrer Versuche gebraucht..   Man sollte zumindest richtig tippen können  :-\)
Jetzt Fehlt in "STIME" "SYS_TIMER", da lässt sich aber nichts machen..  und der Operand "TIME" istn icht definiert.
Zitat
PLC_1,,2,5,10:42:07
Programmbausteine,,2,5,10:42:07
STIME (FB64),,2,0,10:42:07
42,"SYS_TIMER" ist nicht bekannt.,,,10:42:07
42,Der Operand "TIME" ist nicht definiert.,,,10:42:07
_RMP_B (FB93),Baustein wurde erfolgreich übersetzt.,,,10:42:07

Hier die Stelle in "STIME"
(* read the system timer *)
#tx := DINT_TO_DWORD("SYS_TIMER"."TIME");

(* stuff the highest bit into the timer value *)
#at_tx[7] := #bit31;

Ich arbeite mit den Quellen von DOD666

Aus diesem Beitrag:
http://www.oscat.de/community/index.php/topic,2475.msg12831.html#msg12831 (http://www.oscat.de/community/index.php/topic,2475.msg12831.html#msg12831)




BB

Frankie



Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: frankie am 01. März 2016, 20:28:31
Ich hab mal bisserl geschaut..

Im OSCAT Step7 Baustein STIME   wird die 32 bit Systemzeit auf 31 bit umgesetzt. Weild as eine Siemenseigenheit ist.

Das schöne ist, das die 1200er CPU sowas nicht hat, selbst die Alternative TIME_TCK gibt es nicht.

Ich denke man kann das aber ectl. mit RTM nachbauen.
Die Funktion scheint für alle Timer in OSCAT Building nötig zu sein.

Kann man den STIME irgendwie umbauen, das alles wieder läuft?
hier mal der SCL Code komlpett:

(*

this function block makes sure that the timer of a siemens sps counts from 0 - 2^32-1.

*)

(* this FB is only necessary for siemens sps
the siemens sps timer counts from 0 to 2^31-1 and starts at 0 sfter overrun.
this means that the bit 31 (the highest bit ) will never be used and therefore
a problem arises when t2 - t1 is checked.
t2 - t1 is always valid also in an timer overrun situation where the time t1 is very high and t2 is very low.
the result of the subtraction t2 - t1 however is still valid.
this calculation does not work for soiemens because the highest bit is not used.

this module stores the highest bit, changes the highest bit at every overrun occurence and stuffs ther highest bit in the output.
the output is then used by t_plc_us and t_plc_ms.

the correction needs and fb and not a function because the value of the highest bit has to be stored.

do never use this function block in a codesys environment. the timer in codesys is correct and runs from 0 to 2^32-1
*)
 
(* read actual startup info *)
(* OB1_SCAN_1  BYTE  -  B#16#01: Abschluss des Neustarts (Warmstarts)
                     -  B#16#02: Abschluss des Wiederanlaufs
                     -  B#16#03: Abschluss des freien Zyklus
                     -  B#16#04: Abschluss des Kaltstarts
                     -  B#16#05: Erster OB 1-Zyklus der neuen Master-CPU nach
                                 Master-Reserve-Umschaltung und STOP des
                                 bisherigen Masters *)

//#ERR := RD_SINFO (TOP_SI => #TOP_SI, START_UP_SI => #START_UP_SI);

(* reset last_time on system startup *)
IF "FirstScan" OR NOT #init THEN
    #last_time := 0;
    #bit31 := false;
    #init := true;
END_IF;
 
(* read the system timer *)
//  Original:  #tx := DINT_TO_DWORD("SYS_TIMER"."TIME");
//  #tx := DINT_TO_DWORD("TIME_TCK"."TIME");   funzt mit 1200er nicht
#tx := DINT_TO_DWORD("SYS_TIMER"."TIME");   // hier ist SYS_TIMER und TIME nicht definiert

(* stuff the highest bit into the timer value *)
#at_tx[7] := #bit31;

(* check for overrun *)
IF DWORD_TO_DINT(#tx) < DWORD_TO_DINT(#last_time) THEN
    (* an overrun has occured, change the value of the highest bit *)
    #bit31 := NOT #bit31;
END_IF;

(* stuff the highest bit into the timer value *)
#at_tx[7] := #bit31;
 
(* remember the last system time for the next overrun check *)
#last_time := #tx;
 

(* revision history
DA  14.9.2007 rev 1.0
  original version

DA  24.2.2008 rev 1.1
  added self reset on system startup

DA   2.5.2008 rev 1.2
  correct a problem running under OB35

DA  12.3.2009 rev 1.3
  correct a problem run on different CPUs

DA  22.12.2009 rev 1.4
  correct a problem on startup

DA  19.09.2011 rev 1.5
  correct a error in code
*)

Hier in paar posts zu der Problematik:
http://www.oscat.de/community/index.php/topic,164.0.html (http://www.oscat.de/community/index.php/topic,164.0.html)
http://www.oscat.de/community/index.php/topic,624.0.html (http://www.oscat.de/community/index.php/topic,624.0.html)
Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: DOD666 am 14. März 2016, 16:00:39
Hallo Frankie,

anbei mal ein link zu einem Post von mir mit meiner angepassten Bibliothek.

http://www.oscat.de/community/index.php/topic,2475.msg12834.html#msg12834 (http://www.oscat.de/community/index.php/topic,2475.msg12834.html#msg12834)

Habe mir selber einen Systemzeitzähler gemacht mittels eines Interrupt OB.

Gruß

Jens
Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: frankie am 14. März 2016, 19:38:36
Danke DOD666!

Wie ich in meinem ersten Post in den ersten 3 Zeilen schreibe, verwende ich ja genau deine Bibliothek.
Wie heisste die modifizierter Baustein?
Den STIME finde ich mehmals..
Ich würde ja gerne einfach den BLIND_CONTROL_S verwenden, aber es klemmt am schluss an STIME aus dem Ordner Jalousie

Danke

BB

Frankie

Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: DOD666 am 14. März 2016, 20:33:43
Ich schaue morgen mal dann zeige ich dir wie ich es gelöst habe.

MFG

Jens
Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: DOD666 am 15. März 2016, 08:15:01
Hallo Frankie,

SYS_TIMER.TIME ist ein DB.
den Wert in SYS_TIMER.TIME setze ich im OB100 auf 0.
In einem Interrupt OB mit 1 ms addiere ich immer 1 auf den Wert von SYS_TIMER.TIME.

Dies nutze ich um TIME_TCK nachzubilden.

MFG

Jens



Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: frankie am 15. März 2016, 19:23:14
Hi Jens..
Danke für deine Hilfe irgendwann wird das schon laufen bei mir..

Ich hab es jetzt geschaft BLIND_CONTROL_S mit allen HIlfsbausteinen usw. zu übersetzen und ind die CPU zu laden.
Ich hab den Baustein in OB1 verdrahtet. Ich kann mit meinen Tasttern das Rolo nun hoch und runter fahren, ohne das es zur eingestellten Zeit stehen bleibt. Ich schätze ich hab das mit deinem Hinweis auf den DB SYS_TIMER.TIME noch fehlerhaft umgesetzt.
DAs hochzählen in  OB30 mit 1.ms schient jedenfalls zu klappen.
Ich setzte SYS_TIMER wie folgt:
(http://intelligenzallergie.de/img/SYS_TIMER.png)

in OB 30 zähle ich ihn wie hier hoch:

(http://intelligenzallergie.de/img/OB30.png)


IN DB25 lege ich ja den Startwert als 0 fest.
Welchen Datentyp sollte ich verwenden?

Leider scheint es noch nicht ganz zu klappen.

Das nächste Thema ist dann BLIND_INPUT mit BLIND_CONTROL_S zu kombinieren, weil ich ja nur Taster im Haus verwende. Einfach die Aus- und Eingänge per ziehen der Pins zu verknüpfen bekomm ich nicht hin, vermutlich muss ich da merker zwischen den Funktionen verwenden?


Danke für die Hilfe..   Leider scheinen die 1200er CPUS nicht so die Erste Wahl für solche Projekte..  :-(

Schönen Abend!

Frankie


Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: DOD666 am 16. März 2016, 10:22:23
Hallo Frankie,

anbei ein Bild wie ich die Rollos verschaltet habe.
Diese Anordnung ist in einem FB den ich dann pro Rollo aufrufe.

Das mit dem ziehen geht nicht das kommt aus CoDeSys da scheint so was zu gehen.
Ich nutze temporäre Variablen.

Gruß

Jens

[gelöscht durch Administrator]
Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: frankie am 16. März 2016, 22:11:41
Danke Jens!

Es klappt..   mit Blind Input  und der richtigen einstellung funzen erstmal die Rolos im OG..

Ich dann morgen mal die Jalousien im EG..

Auch die Laufzeiten passen, das mit SYS_TIME   funktioniert also auch..

Wenns an den Sunsetcalender geht..  melde ich mich wieder    ::) ???

Danke!


Frankie
Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: DOD666 am 17. März 2016, 07:10:14
Hallo Frankie,

schön das es klappt.

Ist das eine Drohung  ;D

Gruß

Jens
Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: koni8259 am 20. April 2016, 12:58:47
Hallo Frankie,
ich hänge da auch irgendwie am SYS_TIMER. der läuft zwar im Interupt und zählt fleißig hoch aber der BLIND_CONTROL funzt nicht Richtig.
Der Zähler für die Position PO läuft immer von 255 auf 0 sobald ich das Rollo einmal händisch betätige.
Kannst du mir bitte Aufzeigen wie du das jetzt gelöst hast. Scheint ja bei dir zu laufen :)
An den CALENDAR hab ich mich noch gar nicht getraut :(

mfG Koni
Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: DOD666 am 20. April 2016, 15:01:56
Er hat auch Rollos also die Bausteine für Rollos verwendet.
Du hast doch jalousien oder?
Denke da liegt das Problem.

Gruß

Jens
Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: koni8259 am 21. April 2016, 07:11:33
Hallo
Ja es liegt an dem Baustein BLIND CONTROL. Da ich eben Jalousien habe. Schade den wenn ich die OSCAT Anleitung lese wäre das genau das gewesen was ich gebraucht hätte.

mfG Koni
Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: koni8259 am 17. Juni 2016, 09:09:22
Lösung: OSCAT runter und alles selber schreiben! ;) Dann funktioniert's auch bei selben Arbeitsaufwand :) 8)
Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: Timmerx am 21. Juni 2016, 13:01:15
Hallo Zusammen,

ich bin bereits seit einiger Zeit hier im Forum als Gast am mitlesen.
Ich bin sehr an den BLIND Bausteinen aus der OSCAT Bibliothek interessiert.

Ich habe gelesen das der BLIND_INPUT und BLIND_CONTROL_S für das TIA Portal übersetzt wurde.
Wurde auch der BLIND_CONTROL übersetzt.

Koni8259 hat geschrieben, dass er Oscat runter geworfen hat und ALLES selber geschrieben hat.
Würdest du das hier zur Verfügung stellen.

MfG Tim
   
Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: Trexer am 09. August 2016, 10:39:28
Hallo zusammen,

ich nutze TIA v13 und eine 1500er S7 und habe festgestellt das die RD_SINFO und die TOP_SI abfrage anscheinend nicht mehr funktioniert um die Variablen zu initialisieren. Weder der <> TOP_SI.EV_NUM = 3 noch die OR Abfragen auf 1, 2, 4 scheinen zu funktionieren.

Über diesen Beitrag und die 1200er Bib bin ich dann auf den "FirstScan" im OB 100 gestoßen. Ist das die einzige funktionierende Möglichkeit in der TIA Welt den ersten Zyklus/SPS start mitzubekommen und für solche Initialisierungen zu benutzten?

Danke!
Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: HopeITworks am 20. September 2016, 05:55:32
@ DOD666 : Kannst du vielleicht deinen Screenshot wo du gezeigt hast wie du die Rollos & Jalousieen verschaltet hast, nochmal hochladen? Leider ist das Bild nicht mehr verfügbar.

Noch besser wäre natürlich wenn du mir das Programm geben könntest damit ich mir das ansehen kann wie du die ganzen Verschaltungen gelöst hast :) Ich gehe unter in Datenbausteinen und Merkern :D Es muss ja einen Weg geben das im TIA mit weniger Merkern und Datenbausteinen zu lösen. Ich habe 20 Schalter und 24 Jalousieen & Rollläden :-/

Btw. danke für deine zig Thread´s hier im Forum! Die haben mir schon viel weiter geholfen ;-)
Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: DOD666 am 21. September 2016, 17:43:27
Hi,

Habe mit der 1500 noch nicht viel gemacht aber es müsste ähnliche abfragen wie für die S7-300 geben.
Ich hoffe man muss es nicht wie bei der S7-1200 machen.

Schau mal bei Siemens dort gibt es eine  Baustein Vergleichsliste.

Gruß

Jens
Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: HopeITworks am 03. Oktober 2016, 12:06:10
Hallo Frankie,
ich hänge da auch irgendwie am SYS_TIMER. der läuft zwar im Interupt und zählt fleißig hoch aber der BLIND_CONTROL funzt nicht Richtig.
Der Zähler für die Position PO läuft immer von 255 auf 0 sobald ich das Rollo einmal händisch betätige.
Kannst du mir bitte Aufzeigen wie du das jetzt gelöst hast. Scheint ja bei dir zu laufen :)
An den CALENDAR hab ich mich noch gar nicht getraut :(

mfG Koni

Vor diesem Problem stehe ich leider auch im Moment. Bei dem BLIND_CONTROL_S für die Rollläden funktioniert der POS hervorragend. Aber beim BLIND_CONTROL läuft der Zähler nach einer Hand Fahrt immer gegen 00. Der Zähler läuft auch nicht weg, wenn ich die Jalousieen starte, der läuft erst weg, wenn ich die Jalousieen stoppe.

Weiß einer vielleicht wo es da hacken könnte?
Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: DOD666 am 20. Oktober 2016, 21:10:45
Hallo,

habe mir den BLIND_CONTROL noch einmal angesehen und ein Problem gefunden.
Das Problem liegt in BLIND_ACTUATOR da stimmen 2 Aufrufe nicht.
Denke das ist bein Import in TIA passiert.

Lösung:

(* ramp up or down to simulate the angle position of the blind slats *)
#angle(E:=#lock.Q1 OR #lock.Q2,UP:= #lock.Q1, PT := #T_Angle);
#position(E := #lock.Q1 AND #angle.HIGH OR #lock.Q2 AND #angle.LOW, UP := #lock.Q1, PT := #T_UD);

Bitte den Code hierdurch ersetzen und testen.

Gruß

Jens
Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: HopeITworks am 29. Oktober 2016, 13:50:10
Ich habe den Code soeben getestet und jetzt laufen die Zeiten korrekt  :)

Vielen Dank DOD666 für die Lösung  ;) Du bist wirklich auf zack :)



Allerdings sieht es so aus als ob die Jalousiereferrenzfahrten bei CPU Neustart noch nicht klappen. Die Rollläden fahren problemlos Refferenz bei CPU Neustart, sprich auf 00 komplett auf.
Titel: Re: OSCAT auf S7-1200 CPU 1214C DCDCDC TIA 13SP1 Up7
Beitrag von: SvenSchulte am 22. Mai 2018, 21:24:16
Hallo zusammen,

ich möchte gerne ebenfalls den FB Blind_Control_S für meine S7 1200 Rollo Steuerung benutzen, leider hapert es bei mir aber beim SYS_TIMER und TIME.

Was genau muss ich in die DB SYS_TIMER.Time für Variablen deklarieren.

Wäre cool wenn da jemand einen Screenshot hätte.

Vielen Dank schon mal

Sven