![]() |
|
|||||||
| Automation Studio Programmiersoftware von B&R, Bernecker + Rainer Industrie Elektronik Ges.m.b.H. |
![]() |
|
|
Themen-Optionen | Thema durchsuchen |
|
#1
|
|||
|
|||
|
hallo zusammen,
ich muss zugeben ich bin gerade überglücklich nach stundenlanger suche endlich eine seite und ein forum zum thema SPS gefunden zu haben. ich hoffe ihr könnt mir helfen ![]() ich poste mein problem einfach mal in dieses forum ich hoffe es ist halbwegs richtig gewählt, weil ich nicht Step7 benutze sondern Automation Studio von B&R. ich bin derzeit schüler und wir haben von unserem lehrer nur eine recht kurze einführung in das thema programmieren eines SPS bekommen. programmiersprache war Anweisungsliste. um genau zu sein kennen wir die funktionen der befehle: LD, ST und die logischen verknüpfungen AND, OR usw. was vermutlich nich sehr viel ist. jetzt hab ich ein projekt bekommen indem ich eine heizanlage steuern soll, realisiert in Anweisungsliste. die heizanlage ist relativ einfach aufgebaut, aber wenn man keine beispielaufgaben zu Anweisungsliste hat gestaltet sich das doch ein wenig schwierig. die heizanlage hat 3 tasten als eingang: S1 für einen allgemeinen "EIN-Schalter" der auch gleichzeitig als Not-Aus gedacht ist, S2 um die temperatur zu erhöhen und S3 um die temperatur herab zusetzen. der einfachheit halber soll die temperaturregelung nur durch pulsartiges ein und ausschalten der heizung erfolgen. es sollen 4 ausgänge (Y1, Y2, Y3 und Y4) vorhanden sein die jeweils einen eigenen zustand darstellen: Y1 soll der "Aus-Zustand" sein. Y2 soll die heizung auf teillast laufen, d.h. die heizung soll 15 sekunden an sein sich dann abschalten und 15 sekunden aus bleiben. dann beginnt das spiel wieder von vorne, also pulsartiges ein- und ausschalten in 15 sekunden rhytmus. Y3 soll halblast darstellen, ebenfalls pulsartig 30 sekunden an, 30 sekunden aus. Y4 soll die heizung dauerhaft aktiv sein. sobald also die taste S1 gedrückt ist, ist die heizung in der lage mit dem heizen zu beginnen. der startzustand soll also bei Y1 (Aus) sein. mit einem druck auf die taste S2 für wärmer werden die Ausgänge der reihe nach durchgeschaltet, von Y1 bis Y4, wobei immer nur 1 ausgang aktiv sein soll. sprich wenn ich einmal auf S2 drücke bin ich im teillast zustand, dann soll nur ausgang Y2 aktiv sein und pulsartig ein und ausgeschaltet werden wie oben beschrieben, die 3 anderen ausgänge sollen nicht aktiv sein. mein problem ist jetzt ich muss erkennen welcher ausgang gerade aktiv ist und bei einem druck auf S2 sollen dann dementsprechend die ausgänge "hochgeschaltet" werden bis hin zu Y4. bei einem druck auf S3 soll dann ebenfalls der aktuelle ausgang erkannt werden und "heruntergeschaltet" werden bis zu Y1. mein ansatz bisher war das ich die die 4 heizzustände (Aus, Teillast, Halblast, An) mithilfe von markern realisiert hab, also als unterprogramme. zum aufrufen der unterprogramme hab ich JMP benutzt. der sprung soll nur bei einer aktiven flanke an S2 oder S3 gemacht werden. im unterprogramm selbst hab ich einen weiteren JMP benutz um zum Hauptprogramm zurück zukommen. theoretisch funktioniert dieser ansatz aber praktisch sieht es so aus das Y1 auf Aus ist, was er ja sein soll, und die 3 anderen Y2 bis Y4 sind aktiv und gehen im 15 sekunden takt bzw 30 sekunden takt an und aus, und Y4 is dauerhaft aktiv. ich hab also alle 4 ausgänge gleichzeit angesprochen. ich hoffe ich habe das alles halbwegs verständlich erklärt und ihr könnt mir weiterhelfen ich hab nämlich keine ahnung wie ich jetzt weitermachen soll ![]() |
|
#2
|
|||
|
|||
|
Hallo hawky,
dein S1 schaltet die Heizung ein, mit S2 schaltest du die Heizung auf Teillast (Y2 ist gesetzt). Ein weiteres drücken von S2 "setzt" dann Y2 zurück und setzt Y3 (Halblast). Nochmaliges drücken von S2 "setzt" Y3 zurück und setzt Y4 (Volllast). Wurde S1 gedrückt (Teillast, Y2 gesetzt) und wird dann S3 gedrückt, dann setzt dies Y2 zurück. Läuft die Heizung auf Halblast (Y3 ist gesetzt) und wird dann S3 gedrückt, wird Y3 dadurch zurückgesetzt und Y2 wird wieder gesetzt. Ist Y4 gesetzt (Volllast) und wird S3 gedrückt, dann setzt dies Y4 zurück und Y3 wird dadurch gesetzt. S1 setzt das alles in Gang und ein weiterer Druck auf S1 setzt dies wieder zurück. So, nun viel Spass beim Programmieren.... Jens |
|
#3
|
|||
|
|||
|
das is ein echt interessanter ansatz, danke
![]() werd mal versuchen ob ich jetzt auch die entsprechenden befehle dafür zusammen bekomm |
|
#4
|
|||
|
|||
|
hallo nochmal,
ich hab versucht deinen ansatz umzusetzen Jens. ich kann die ausgänge auch "setzen", aber dann kann ich die ausgänge Y2 und Y3 nicht mehr pulsieren lassen. das "hoch- oder runterschalten" funktioniert auch nicht so richtig. hochschalten würde funktionieren aber dann kann ich nicht mehr runterschalten. kann man das mit Funktionen aus den Libraries einfacher realisieren? |
|
#5
|
|||
|
|||
|
Ich kenne die Librarys von Automation Studio nicht. Du hast die Ausgänge wahrscheinlich direkt gesetzt. Das setzen der Teillast z.B. sollte aber nur den 15 sec Impuls in Gang setzen und wenn die Teillast läuft dürfen die anderen Lasten nicht laufen können (gegenseitige Verriegelung). Ich habe dir nur einen Denkanstoss gegeben wie du die Aufgabe lösen kannst und nicht eine Komplettlösung geliefert. Ich habe also das Grundprinzip des Programmablaufes der Heizung beschrieben um deiner Lösungsfindung etwas auf die Beine zu helfen.
Jens |