Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 31

Thema: Mit welcher Sprache??

  1. #11
    lazyiguana Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Tag die Herren,
    meine Vorlieben sind immer noch:
    KOP fuer die ganze Logik - denn hier kann der Elektriker selber Fehler suchen bzw. ist es bei der Inbetriebnahme einfach besser.
    Alles andere in C (bietet zwar fast keiner an, aber immer noch mein Favorit) oder ST.
    Da ich diese Vorlieben bei sonst keinem gefunden hab, mag es vielleicht an der Weiblichkeit liegen, die in dieser Branche nur sehr schwach besetzt ist !

    Gruß,
    Sonja

  2. #12
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zitat Zitat von lazyiguana
    Da ich diese Vorlieben bei sonst keinem gefunden hab, mag es vielleicht an der Weiblichkeit liegen, die in dieser Branche nur sehr schwach besetzt ist !
    Sonja
    Na, ja oder eben daran, dass es fast keiner anbietet. STEP7 hat ja schon etliche(s) (Unarten) von C übernommen...
    Wenn du SPS in C programmierst, würde es mich interessieren, wie der Zugriff auf einzelne Bits erfolgt. In Standard C bedeutet wird das immer recht umständlich mit ausmaskieren erledigt:
    Code:
    MW=MW &^0x40
    Wenn der Ausdruck länger wird, finde ich es schwer, die Übersicht über die Rangfolge der Operatoren zu behalten und setze lieber überflüssige Klammern.
    Keil hat beim Compiler für den 8051-Mikrocontroller (der kann Maschinenbefehle für einzelne Bits) einen besonderen Datentyp BIT eingeführt.
    Da kann man dann wieder schreiben:
    [code]
    #define blink P0.4
    blink^=blink; // invertiert das Bit
    blink=0; // setzt dieses Bit auf 0
    blink=1; // setzt dieses Bit auf 1
    blink=C & ~ACC.7
    [/quote]
    Poste doch mal ein Beispiel!

  3. #13
    lazyiguana Gast

    Standard

    Hallo,

    hier ein Beispiel fuer das Ansprechen von Bits

    #define BGT_SENDFLG (bgt_next_flg & 0x04) // if ...
    #define S_BGT_SENDFLG bgt_next_flg |= 0x04 // SET
    #define R_BGT_SENDFLG bgt_next_flg &= ~0x04 // RESET

    // CODE
    if (BGT_SENDFLG)
    {
    // tu dies und das

    }




    d.h. fuer jedes ansprechbare Bit wird ein Name vergeben + das Kuerzel fuer Abfrage ob es gesetzt ist bzw. setzen / reset.
    Das ist zwar ziemlich ein Tipperei am Anfang, nur man arbeitet dann mit Namen und kann an 1 Stelle mal die ganzen Bits bei Bedarf verdrehen bzw. sieht ob noch was frei ist.
    Weiters sei noch gesagt, dass ich C sicher nicht ausnuetze. Man koennte ja optimieren bis zum geht nicht mehr, nur mich ist wichtiger, dass ich in 1-2 Jahren das Programm auch noch lesen & verstehen kann. (nur zur Info: seit 2 Jahren programmiere ich mit Keil fuer einen 8051, davor ca. 3 Jahre B&R Automation Studio (das hat C), zwischendurch Siemens, Crouzet und vor vielen Jahren hat es mal mit Assembler, AWL bzw. Structured Text angefangen)
    Gruß,
    Sonja

  4. #14
    Registriert seit
    06.09.2003
    Beiträge
    52
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Hallo Leute, die Diskussion hier hat offensichtlich viel Interesse geweckt, ich möchte deshalb ein paar Anregungen zu dem Thema geben wie ein ordentliches Programm auszusehen hat. Ich hoffe Ihr seht das als freie Meinungsäußerung und nehmt das nicht so persönlich, wie es hier einige Leute machen. Ich habe nie behauptet den Stein der Weisen gefunden zu haben.

    Meiner Meinung nach machen zwei Dinge ein gutes Programm aus:
    1. Eine gute Kommentierung, die auch einem völlig fremden ermöglichen das Programm zu verstehen.
    2. Seine Struktur

  5. #15
    Registriert seit
    06.09.2003
    Beiträge
    52
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Wie man sein Programm kommentieren sollte:

    Ich finde es immer wieder überraschend, warum so viele Programmierer keine Kommentare zu ihren Bausteinen schreiben. Dabei kann man gerade dort oft mit einem einzigen Wort Klarheit schaffen, worum es im Baustein geht. Dadurch kann man auch noch nach Jahren einfach wieder ins Programm finden. Ich finde das ist ein ordentliches Aufwands/Ergebnis Verhältnis, das sich lohnt.

    Noch viel überraschender finde ich, dass so viele Leute den Unterschied zwischen Symbol und Kommentar nicht begreifen wollen und sich so viel unnötige Arbeit machen. Da werden dann ganz tolle Symbole kreiert wie z.B.

    FL_POS_RB011_EIN

    Was hält eigentlich diese Leute davon ab, statt dieser tollen Abkürzung als Symbol, im Kommentar zu schreiben:

    Flanke_Positiv_Rollenbahn011_ein

    Ich finde das Erstaunlich, vor allen Dingen dann, wenn von vornherein feststeht, dass dieses Programm später übersetzt werden muss. Hätten Sie den Kommentar dahin geschrieben wo er hingehört, müsste niemand wie ein Irrer die Symbol übersetzen, einfach eine Übersetzungsdatei generieren, ab zum Übersetzungsbüro und dann wieder einlesen ist offensichtlich viel zu einfach.

    Die Netzwerküberschrift wird auch häufig weggelassen. Warum eigentlich? Auch hier kann man wieder mit wenig Aufwand viel Erreichen. Wenn man das Programm nur grob verstehen möchte um eine kleine Änderung vorzunehmen ist dieser kleine Helfer doch wunderbar.

    Den Netzwerkkommentar blenden sogar viele Programmierer einfach aus. Was ich völlig unverständlich finde. Gerade hier kann man sehr Sinnvolle Sachen rein schreiben, ich persönlich schreibe hier oft rein, was der Kunde so von mir verlangt hatte. Da stehen dann so Sachen drin wie:

    Herr K. von Firma X, möchte das ich nicht auf dem Endschalter warte, sondern gleich mit dem Servo weiterfahren um Taktzeit zu sparen. Herr K. ist sich der Risiken bewusst und übernimmt die Verantwortung. Y-Hausen am XX.YY.ZZ

    Das mag zwar kein Rechtlich geltender Beweis sein, hat aber schon oft meinen Hintern gerettet.

    Der Zeilenkommentar, wenigstens der wird manchmal genutzt, oft genug aber selbst der nicht. Das finde ich auch immer wieder richtig toll. Liebe Mitprogrammierer, wenigstens diesen Kommentar sollte man ordentlich führen. Man sollte doch auch noch nach einem Jahr oder so in der Lage sein, sein eigenes Programm zu verstehen.

    Eine gute Kommentierung des Programms ist das A und O eines guten Programmierstiles. Sicherlich ist es auch mit Arbeit und Zeit verbunden, aber der Aufwand lohnt sich im jeden fall, ohne wenn und aber. Man kann eigentlich nicht zu viele Kommentare schreiben, je mehr desto besser, eine „Überdokumentation“ gibt es meiner Meinung nach nicht.

  6. #16
    Registriert seit
    06.09.2003
    Beiträge
    52
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Wie man sein Programm strukturieren sollte:

    Wenn man sein Programm gut Kommentiert hat kann eigentlich fast nichts mehr schief gehen, außer man programmiert immer noch S5 in eine S7.

    Viele meiner Kollegen haben immer noch ein Problem damit sich an die S7 zu gewöhnen, dabei kann man sich die Sache jetzt viel einfacher machen.

    Das wichtigste ist, dass man in sich geschlossene Bausteine schreibt, vom Merker sollte man sich also verabschieden, von ein paar Ausnahmen mal abgesehen. Sicherlich ist auch das mit etwas Arbeit verbunden, aber auch hier lohnt sich der Aufwand. Die Bausteine lassen sich mehrfach verwenden, es ist möglich sehr flexible Standartbaustein zu schreiben die sich einfach anpassen lassen und bei Programmänderungen kann man sich über die Folgen sicher sein.

    Das hat auch zur folge, dass man sehr gelassen auf Verschiebungen im E/A Bereich reagieren kann, da Absolute Adressen nur an wenigen stellen im Programm vorhanden sind. Und mal ehrlich, die Sache mit der Funktion „Umverdrahten“ hat noch nie perfekt Funktionier, kleine Fehler bei der Bedienung haben oft fatale folgen.

    Den Sinn und Zweck von Datenbausteinen hat offensichtlich auch kaum jemand begriffen. Wie sonst kann man es sonst erklären, das Variablen immer noch im Merkerbreich wild durcheinander hinterlegt werden. Dabei kann man es sich mit einem DB sehr übersichtlich und einfach machen. Am besten, in dem man den Datenbaustein strukturiert und Kommentiert.
    Ich habe allerdings auch schon einen völlig verhunzten DB gesehen, da hat der liebe Kollege einfach einen Array angelegt und seine Daten dann einfach nach belieben rein geschrieben. Wer soll das eigentlich später nachvollziehen?

    Was ich auch immer wieder finde sind selbst geschriebene Bausteine für Standartfunktionen, wie z.B. das Einlesen von Analogwerten. Da werden dann sehr kunstvoll die Bit’s hin und her geschoben und am Ende kommt doch nichts Vernünftiges dabei raus. Warum nutzen den niemand die Standartbausteine aus der Bausteinbibliothek?

    Zum Schluss noch ein andere Sache die ich immer wieder sehe, die passt zwar nicht zum Thema Struktur, ist aber sehr wichtig.
    Warum wird eigentlich immer noch so viel sinnlos online rumprobiert? Dabei entstehen nur wild irgendwelche Programmstände, später hat man dann vier, fünf oder mehr Programmstände, bei jedem passen dann ein paar Bausteine und keiner passt so richtig. Wenn dann die CPU abkackt oder die Batterie schlapp macht ist das Geschrei immer groß und keiner will es gewesen sein.

  7. #17
    Registriert seit
    06.09.2003
    Beiträge
    52
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Nun zum Thema Graph7.
    Wenn ich mich recht entsinne, habe ich geschrieben, dass ich mich nur kurz mit Graph7 auseinandergesetzt habe. Ich bin durchaus lernfähig und währe sehr Dankbar, wenn mir jemand zeigen könnte wie man vernünftig mit Graph7 umgeht. Ich weiß auch nicht immer alles.

    Ich sehe dabei folgende Nachteile von Graph7:

    1. Die Transistionen lassen sich nur in KOP oder FUP programmieren, ich bevorzuge allerdings AWL, daran wird wohn niemand etwas ändern können, ich sehe es aber trotzdem als ernormen Nachteil.
    2. Es reicht oft nicht die Ausgänge in der Schrittkette direkt zu setzen und fertig. Wenn ich jetzt einen Zylinder im speziellen betrachte stellt sich mir folgendes Problem. Ich möchte den Zylinder abschalten wenn er seine Endlage erreicht hat. Wie soll ich das mit Graph7 vernünftig lösen? Meiner Meinung nach muss sich so etwas im Baustein selbst lösen lassen, ohne einen zweiten Baustein und das klappt mit Graph7 nicht, ich weiß jedenfalls nicht wie.
    3. Die Überwachungszeit lässt sich nur auf eine Transistion beziehen, ich weiß dann immer noch nicht warum der Baustein nicht weitermacht, welche Bedingung nicht erfüllt wird. Wenn ich jetzt wieder einen Zylinder betrachte, muss jede Endlage einzeln überwacht werden um eine vernünftige Fehleranalyse möglich zu machen. Sicherlich gibt es die Möglichkeit mit „ProAgent“ da etwas zu machen, aber dann laufen die Kosten völlig weg. Auch dieses Problem ließe sich lösen, wenn eine vernünftige Nachbearbeitung der Signale in Graph7 möglich währe, dass ist es aber nach meinem Wissensstand nicht möglich. Es bliebe nur wieder die Möglichkeit einen zusätzlichen Baustein zu schreiben.

  8. #18
    Registriert seit
    27.01.2004
    Ort
    Ösi-Land
    Beiträge
    302
    Danke
    0
    Erhielt 4 Danke für 2 Beiträge

    Standard

    Zitat Zitat von casius
    Meiner Meinung nach machen zwei Dinge ein gutes Programm aus:
    1. Eine gute Kommentierung, die auch einem völlig fremden ermöglichen das Programm zu verstehen.
    2. Seine Struktur
    3. Seine Funktionalität

    Dabei meine ich nicht das die Anlage im normalen Automatikbetrieb das macht was es soll. Das ist eh minimum. Gute Programme erkennt man auch daran das bei "abnormalen" Zuständen entweder die Steuerung selbst richtig handelt oder das Bedienungspersonal rasch und logisch reagieren kann. Wie oft sehe ich z.B. folgendes:

    Ein Lichtschranken wird versehentlich belegt. Maschine fährt einen "Schwachsinn". Irgendwann kommt dann eine Störung. Personal eilt herbei. "Automatik aus". Das der Handbetrieb nicht mehr funktioniert ist bekannt und wird gar nicht mehr versucht. Hauptschalter Aus. Ein paar Sekunden warten. Hauptschalter Ein. Alle möglichen "Grundstellungen fahren" (natürlich händisch). Alle möglichen Merker zurücksetzen. Die erste Charge dann noch im Handbetrieb fahren und dann nach 20min Produktionsunterbrechung wieder "Automatik ein".

    Auf meine Frage warum man sich mit dem Zufrieden gibt heist es "Das war schon immer so" oder "das geht nicht anders" oder "Maschine wurde so geliefert, hat viel Geld gekostet, das hat schon seine Ordnung"
    Da frage ich mich schon warum ich mich manchmal so plage, wenn man anscheinend mit weniger Aufwand mehr Geld verdienen kann......

  9. #19
    Registriert seit
    06.09.2003
    Beiträge
    52
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Stimmt leider, die Methode Hauptschalter aus bei Störung findet man immer noch viel zu oft. (Meistens bei den Programmen die ohne Kommentare und mit Merkern geschrieben sind)


    Aber auch hier sehe ich meine Aussage nur bestätigt, wenn man eine vernünftige Struktur hat kann man auf solche Anlagenzustände reagieren, macht man die Sache nur irgendwie fertig, klappt es meist nicht.


    In den Meisten fällen wird bei solchen Programmen die Fehlerüberwachung nur durch einen einzigen Timer realisiert, solange die Maschine von einem Schritt zum anderen läuft wird der Timer immer wieder rückgesetzt, wenn er dann doch abgelaufen ist, geht eine rote Lampe an und fertig. Manchmal wird dann auch noch versucht anhand der Sensoren eine Fehlermeldung zu generieren, aber da wird nie etwas vernünftiges angezeigt. Solche Programme kenne ich zur genüge.


    Ich persönlich treibe da sehr viel mehr Aufwand, für jede Endlage gibt es eine separate Störmeldung, mit einem separaten IEC Timer. Klappt eigentlich wunderbar, bloß der Bediener muss dann noch mit der Störmeldung etwas anfangen können und sich zu helfen wissen. Es ist immer dumm wenn man sich viel mühe gegeben hat und der Typ dann doch zu primitiv ist.

  10. #20
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi

    Ihr hab ja recht schlechte Programme gibt es sehr viele und schlechte Programmierer noch viel mehr.
    Wie Smoe schon geschrieben hat der Automatikbetrieb ist bei einem Programm/Anlage eigentlich der einfache Teil.

    Die Methode Hauptschalter aus bei Störungen liegt aber bestimmt nicht am Programm sondern mehr an dem Bediener der wenig Ahnung hat.
    Dann noch eine Frage an Casius!!
    Programm mit Merker schreiben ist das für Dich ein schlechtes Programm???
    Wo liegt eigentlich Dein Schwerpunkt in der Automobilindustrie???

    mfg

    Christian Werner

Ähnliche Themen

  1. Welche Sprache geeignet?
    Von Rebecca im Forum Hochsprachen - OPC
    Antworten: 5
    Letzter Beitrag: 09.05.2011, 14:07
  2. DB von Zebra-Drucker-Sprache in CAB-Sprache
    Von blueColt im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 24.11.2010, 16:19
  3. MP277 Sprache speichern
    Von matchef im Forum HMI
    Antworten: 2
    Letzter Beitrag: 05.03.2010, 15:22
  4. Änderung der Sprache
    Von stephan282 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 16.12.2009, 20:39
  5. Grundsatzfrage: Sprache für Scripte
    Von luker im Forum HMI
    Antworten: 2
    Letzter Beitrag: 04.07.2007, 11:46

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •