LED-Anzeige + Maske

MatthiasH24

Level-1
Beiträge
132
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi

muss im mom grad eigentlich einen ziemlich einfach Sache bauen. Aber komm nicht mehr drauf ob und wenn ja wie ich das mit einer Maske realisirenen kann.

Aufgabe über eine Visu kann man jeweils eingeben ob man ein Eingangsbyte, Ausgangsbyte, Merkerbyte anschauen will. Diese wird dann auf die LED -Anzeige die auch 1 byte als 8 LEDs hat angezeigt.

Mein Problem ist jetzt nur wie ich das schön hinbekomme

Hier mal ein einfaches Bsp. nur das mir jetzt wenn ich 10 eingebe die Zahl 10 eingeben wird und nicht dr aktuelle Wert der Ausgangsadresse 10

Code:
      L     "P_Systemdaten".Anl_Diag_LED.Diag_LED_E 
               //variable als DINT deklariert
               T     MD 10  // asl DINT deklariert
               U     A [MD 10]
               T     AB     2 //LED Anzeieg

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Na zeiger ist nicht so unbedinggt mein Fall und in der Firma auch nicht gerne gesehen.

Aber ich versuche es mal. bis jetzt geht die CPU auf Stop...

So geht es schon mal nicht

Code:
 L     "P_Systemdaten".Anl_Diag_LED.Diag_LED_E
      SLD   3
      LAR1  
      L     EB [AR1,P#0.0]
      T     AW     2
 
Hallo Matthias,

also der Code sieht eigendlich ok aus. Nur das AW würde ich gegen ein AB tauschen.
Was steht denn in Deinem "P_Systemdaten".Anl_Diag_LED.Diag_LED_E drin?

@VL:
Wieso nicht über Pointer? Der Programmieraufwand ist m.E. bei beiden Ansätzen gleich.
Nur, dass man bei Pointern mit z.Bsp. L EB[AR1,p#0.0] beim ersten hinsehen weiss, was gelesen wird.

Grüße
Gebs
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sorry aber aus der Anleitung werde ich nicht schlauer und weiß auch nicht ob mir das in meinem Fall bringt. ich will ja nur eine Variable Byte Adresse auf ein Ausgangsbyte ausgeben und nichts kopieren oder so

@gebs

Naja kein kommentar wieso das ich da AW geschrieben..:confused: Aber vielen Dank das du es gesehen hast. So geht das jetzt auch und denke das esfür die anforderung auch so reicht.
 
Zuletzt bearbeitet:
@VL:
Wieso nicht über Pointer? Der Programmieraufwand ist m.E. bei beiden Ansätzen gleich.

och macht doch was ihr wollt *sicheingeschnapptwegdreht* :ROFLMAO:

der vorteil beim ANY liegt darin, dass man die abfrage nur einmal implementieren muß und alle bereiche abfragen kann. man hat quasi einmal das zusammenbauen des ANY-zeigers, das packt man in einen FC. als IN-parameter den speicherbereich als nummer und als OUT den wert, der in der adressierten variable steht.

kann aber auch sein, dass ich die aufgabenstellung falsch verstanden habe ... aber da steht, dass eingänge, ausgänge und merker angezegt werden sollen und dafür ist mein oben beschriebener FC IMHO die schönste lösung
 
Also ich schreibe jetzt zuerstmal hier weiter.

habe grad von nem Kollegen erfahren das er die Eingabe in der VISU nicht abfängt das heipt der bediener kann wenn er will eine Adresse eingeben dei es gar nicht gibt. Ergo geht dann die SPS in Stop so das darf natürlich wegen der LED-Anzeige absoult nicht sein.

habe mal nachgelesen und gesehen das dafür der Ob 122 zuständig ist nur weiß ich nicht so wirklich wie man den Programmieren muss. Kennst sich mit dem jemand aus?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
einfach den OB122 erstellen und in die CPU laden, darf leer sein, verhindert so nur den stop der CPU ... natürlich kannst du da auch code reinpacken, z.b. den pneumatikzylinder ansteuern, der dem bediener eine verpasst und du kannst da auch die ungültige adresse in einen gültigen bereich bringen ...

zusätztlich würd ich OB121 auch noch mit reinschubsen
 
Also so wie ich es mit bekommen habe würde es nicht reichen nur den Ob122 leer reinzuspielen bzw nützt er mir auch nichts leer da dieser ja rückgabe werte besitzt die ich dann wieder weiter auswerten kann, wenn ich es den hinbekomme denn zu programmieren...

Ob121 ist sowieso schon drin.
 
da auch code reinpacken, z.b. den pneumatikzylinder ansteuern, der dem bediener eine verpasst und du

Das wäre natürlich nicht schlecht :D

kurze Überlegung wenn er eine falsche Adresse eingibt wird automatisch ja der Ob122 aufgerufen falls vorhand also kann ich da ja dann eigentlich reinschreiben was ich will und die rückgabe werte nutzen

Zusätzlich aus der SiemensHilfe:
Der OB 122 läuft in derselben Prioritätsklasse wie der unterbrochene Baustein. Ist der OB 122 nicht programmiert, dann wechselt die CPU den Betriebszustand von RUN nach STOP
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Matthias,

habe grad von nem Kollegen erfahren das er die Eingabe in der VISU nicht abfängt das heipt der bediener kann wenn er will eine Adresse eingeben dei es gar nicht gibt. Ergo geht dann die SPS in Stop so das darf natürlich wegen der LED-Anzeige absoult nicht sein.


Du kannst auch hingehen und in der VISU Grenzwerte eingeben. Liegt der eingegebene Wert
nicht innerhalb der Grenzwerte, wird keine Aktion ausgeführt und/oder es erfolgt eine
Fehlermeldung.
Unschön hierbei ist natürlich, dass die VISU bei jeder Änderung der Perepherie auch
geändert werden muss. Und es funktioniert auch nur, wenn die Perepherie zusammenhängend,
d.h. ohne freie Adressen, ist.
Vorteil: Über eine Fehlermeldung weiss der Bediener sofort, was er falsch gemacht hat.

Grüße
Gebs
 
Hi also das in der Visu geht normalerweise ohne Probleme aber in diesem Fall nun mal nicht. Deswegen muss ich das anderster machen eben mit dem OB 122
 
Hi

also nun aktueller Stand OB122 leer eingespielt eine Adresse eingegeben die es nicht gibt. Und CPU geht wie gewünscht dank dem OB122 nicht in Stop selber habe ich nichts mehr dazugeschrieben.

Danke für eure hilfe
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi

also nun aktueller Stand OB122 leer eingespielt eine Adresse eingegeben die es nicht gibt. Und CPU geht wie gewünscht dank dem OB122 nicht in Stop selber habe ich nichts mehr dazugeschrieben.

Danke für eure hilfe

Das ist jetzt aber kein Beheben, sondern nur ein Umgehen des Problems. Der Bediener sollte wenigstens erfahren dass er etwas falsch eingegeben hat.
 
Das ist jetzt aber kein Beheben, sondern nur ein Umgehen des Problems. Der Bediener sollte wenigstens erfahren dass er etwas falsch eingegeben hat.
*ACK*

Du solltest zumindest die falsch eingetragenen Werte ablöschen, sonst wird der OB in jedem Zyklus durchlaufen und die EXTF-LED brennt die ganze Zeit.
Ausserdem wird Dein Diagnosepuffer mit der Fehlermeldung zugemüllt.

Grüße
Gebs
 
Zurück
Oben