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

Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 34

Thema: TIA Portal - DB Zugriff -> nicht eindeutige Adresse

  1. #21
    Registriert seit
    28.02.2006
    Ort
    Ostsee 5 min zum Strand
    Beiträge
    780
    Danke
    92
    Erhielt 110 Danke für 98 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von rs-plc-aa Beitrag anzeigen
    Habe gerade beim Stöbern die SFC "Reset" gefunden...

    Nennt sich "Bereich bitweise zurücksetzen"

    Das passt hierfür genau! Man gibt das erste Bit im gewünschten Bereich an und die Anzahl die zurückgesetzt werden soll, Fertig.

    Code:
    CALL  RESET
             S_BIT :="DB_XYZ".Erstes_Bit
             N     :=32
    Moin,

    ich benötig auch diese Funktion, dass ist aber nur für S7300/400 oder?

    Ich hab hier eine 1214, dort gibt es zwar auch ein Baustein "RESET_BF: Bitfeld rücksetzen"
    Nachteil: Bei einem DB oder einem IDB ein Element eines array[..] of BOOL.

    Was soll denn der Mist. Wieso muss das in einem DB denn ein Array sein?
    An den einzelnen Array-Elementen kann man im DB ja nicht mal ein Kommentar ran schreiben.
    Gruß von der Ostsee

    Nordischerjung
    _____________________

    Wenn man seinem Paßbild ähnlich zu sehen beginnt, sollte man schleunigst Urlaub machen. (Vico Torriani, schw. Entertainer)

    Ich habe eine Diät gemacht und fettem Essen und Alkohol abgeschworen - in zwei Wochen verlor ich 14 Tage. (Joe E. Lewis)

  2. #22
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard

    Sorry, hatte noch nie eine 1200er in den Händen...

    Kannst du da nicht die Startadresse des ersten Bits angeben?
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  3. #23
    Registriert seit
    28.02.2006
    Ort
    Ostsee 5 min zum Strand
    Beiträge
    780
    Danke
    92
    Erhielt 110 Danke für 98 Beiträge

    Standard

    Zitat Zitat von rs-plc-aa Beitrag anzeigen
    Kannst du da nicht die Startadresse des ersten Bits angeben?
    Nur bei Merkern, bei DB MUSS es ein Array of Bool sein

    siehe Bild
    Angehängte Grafiken Angehängte Grafiken
    Gruß von der Ostsee

    Nordischerjung
    _____________________

    Wenn man seinem Paßbild ähnlich zu sehen beginnt, sollte man schleunigst Urlaub machen. (Vico Torriani, schw. Entertainer)

    Ich habe eine Diät gemacht und fettem Essen und Alkohol abgeschworen - in zwei Wochen verlor ich 14 Tage. (Joe E. Lewis)

  4. #24
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    Geht das so nicht?

    P#DB1.dbx10.0

  5. #25
    Registriert seit
    28.02.2006
    Ort
    Ostsee 5 min zum Strand
    Beiträge
    780
    Danke
    92
    Erhielt 110 Danke für 98 Beiträge

    Standard

    Zitat Zitat von Verpolt Beitrag anzeigen
    Geht das so nicht?

    P#DB1.dbx10.0
    Nicht wirklich, ist doch TIA V11 und eine S7-1214
    Gruß von der Ostsee

    Nordischerjung
    _____________________

    Wenn man seinem Paßbild ähnlich zu sehen beginnt, sollte man schleunigst Urlaub machen. (Vico Torriani, schw. Entertainer)

    Ich habe eine Diät gemacht und fettem Essen und Alkohol abgeschworen - in zwei Wochen verlor ich 14 Tage. (Joe E. Lewis)

  6. #26
    Avatar von rs-plc-aa
    rs-plc-aa ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.11.2004
    Beiträge
    697
    Danke
    69
    Erhielt 64 Danke für 48 Beiträge

    Standard

    Tja, was soll man dazu sagen?Die "neuen" Befehle die nun mit der 300/400 eingeführt wurden muss man anscheinend auch "per Zufall" finden - oder habe ich da ein "Was ist neu - Dokument" zu wenig durchgelesen?
    RS (rs-plc-aa)
    ______________________________________________
    Morgen ist Heute Gestern...
    ______________________________________________
    Installierst du noch - oder Arbeitest du schon ?
    ______________________________________________

  7. #27
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    vielleicht:

    SETI -- byteweise setzen
    RESETI-byteweise rücksetzen
    FILL--Bereich füllen

  8. #28
    Registriert seit
    28.03.2009
    Beiträge
    83
    Danke
    16
    Erhielt 4 Danke für 4 Beiträge

    Standard

    ...und wie müsste man es machen, wenn ich 10 von den besagten Strukturen á 16Bits hätte,
    und prüfen wollte, ob einer dieser Bits=true ist?
    Einer eine Idee, wie man das bei einer 1214'er am einfachsten realisieren könnte?

  9. #29
    Registriert seit
    24.04.2013
    Beiträge
    309
    Danke
    23
    Erhielt 160 Danke für 88 Beiträge

    Standard

    Auf der 1500 gibt es in SCL seit neuestem einen Befehl namens Runtime. Damit kann man messen wie lange die Ausführung eines Stückchen Codes dauert. Das muss zwei mal aufgerufen werden, einmal zum Start dann wieder zum Stop und dann bekommt man Sekunden zurück als REAL also mit Nachkommastellen. Die Auflösung dieser Messung liegt bei der 1500 scheinbar -- nee ich müsste offensichtlich -- im µs-Bereich. Das gefällt mir. Viel besser als das was ich früher immer probiert habe. (Mach was 1000 mal und schau die Zykluszeit an -- viel zu viel unbekannte Schwankungen.)
    Mit dem bin ich mal an die verschiedenen Möglichkeiten alte AWL Unsitten und sonstige Tipps und Tricks aus dem Berger Büchern nachzumessen. Dabei komme ich aus dem staunen nicht mehr raus.
    Also klar ist, dass Runtime irgendwie Echtzeitmessungen macht. Wer also außer dem OB1 noch andere Zyklische OB hat, der bekommt heftige Ausreißer. Zum Messen immer nur einen OB verwenden

    Auf der Messe wird gesagt, die 1516 sei so schnell wie eine 317. Das stimmt tendenziell aber das stimmt bei verschiedenen Gelegenheiten überhaupt nicht. Ausgehend von den Zykluszeitmessungen habe ich folgende grobe Erkenntnisse für die 1516 gewonnen.

    Lese-Zugriffe in optimierte DB sind in etwa Faktor 3 schneller als in nicht optimierte DB.
    Schreib-Zugriffe auf einzelne Bool sind in optimierte DB sind in etwa Faktor 6 schneller als in nicht optimierte DB.
    Schreib-Zugriffe auf anderes als Bool sind in optimierte DB sind in etwa Faktor 2-4 schneller als in nicht optimierte DB.
    Zugriffe auf Eingänge Ausgänge und Merker sind genauso langsam wie nicht optimierte DB.

    AWL ist oft langsamer als SCL/KOP/FUP. Wenn man Glück hat, dann ist AWL genauso schnell wie SCL/KOP/FUP. Also Beispiel: Ein KOP-Netz mit einer Multiplikation, wobei zwei Werte aus zwei DB und das Ergebnis in einen dritten DB geschrieben wird sind in allen Sprachen gleich schnell. (Da Runtime nicht im KOP geht -- Hey Siemens warum denn das nun wieder? -- wickelt man das Messobjekt in einen Aufruf ein, und rechnet die ungefähr 4µs für den Bausteinaufruf ab)

    Typische AWL Zugriffe wie die oben beschriebenen, also das Wort mal als Wort und dann wieder als 16 einzelne Bits zu verwenden kann man nur im nicht optimierten Speicher machen. Wenn man also auf die 16 Bits einzeln zugreift, dann dauert das 16*3 = 48 so lange wie der Wortzugriff. Aber hallo!
    Legt man ein 16 Bool Array nun im optimierten Speicher an, dann dauert die SCL-Schleife über die 16 Bools auch 16 mal so lange wie ein Zugriff auf ein Wort. Deutlich besser als 48.

    So kleine SCL-Schleifen sind verglichen mit der 317 rasend schnell. Ich habe keine Ahnung was da auf der 317 für ein AWL dahintersteckt, aber die 1516 brauchte nur ein zehntel der Zeit. (Ich konnte zehn mal soviele Durchläufe machen um auf die gleiche Zykluszeit zu kommen. Vergleichende Messung zwischen 317 und 1516 sind saumäßig schwer.

    Was die 1516 am allerwenigsten mag sind Adressregister. Ich bin noch nicht dahintergestiegen; wann und wie und was. Aber ein migriertes AWL Programm hat zwar funktioniert -- ich geb ja zu, dass ich drei Anläufe gebraucht habe um es zu migrieren -- aber dann hat es funktionert. Die Zykluszeit des Programm war jedoch auf der 1516 deutlich schlechter als bei der 317 Nach einigem suchen (Danke für Runtime) habe ich ein paar AWL Bausteine identifiziert. Dann hab ich mir genau angesehen, was diese AWL Teile eigentlich versuchen. Viel Adressregisterakrobatik, Anypointer zusammensetzen und auseinandernehmen, misteriöse SFC Aufrufe. Ein Baustein fiel besonders aus dem Rahmen, voller AR Verwendung. Die Ganze unsägliche Adressregisterorgie diente dazu einen Arrayzugriff auf das Element i zu bekommen, i wurde errechnet aus verschiedenen Inputs. Mal so, mal so. Also habe ich aus den 70 AWL Zeilen 10 SCL Zeilen gemacht, so mit IF-THEN-ELSE und #feld[ #index ]. Und plötzlich war die Zykluszeit verschwunden ... also für diesen Baustein in abgemagerter Testumgebung kleiner als 1ms. Auf der 317 dauerte es immernoch 58ms die gleiche Anzahl von Calls zu machen. Also zwischen der AWL Version und der SCL Version liegt in diesem Falle der Faktor 70

    Zurück zum Problem: Wie setzt man 16 Bools in einem Array auf FALSE? Man schreibe eine Schleife in SCL.
    Wie setzt man 16 Bools in einer Struktur auf FALSE. Man schreibe "dbname".strukturname.namedeserstenbools := FALSE; "dbname".strukturname.namedeszweitenbools := FALSE; ...
    Kann man in der Sprache seiner Wahl machen, hier gibt es keinen Unterschied zwischen KOP/FUP/SCL/AWL!
    Ja, das ist verdammt viel tippen. Aber es wird auf der 1516 im optimierten DB schneller ausgeführt als das AT auf der 317.

    Das bringt mich zu der Frage. Wer kann das erklären?
    Ich bilde mir ein irgendwo (vielleicht sogar hier) gelesen zu haben, dass die 317 (oder war das die 319) und die 1516 sogar die gleiche Hardwarebasis -- sprich Prozessor -- haben. Weiß einer, was in der 1516 für ein Prozessor drin ist?
    Geändert von HelleBarde (03.05.2013 um 23:40 Uhr)

  10. Folgende 5 Benutzer sagen Danke zu HelleBarde für den nützlichen Beitrag:

    00alex (06.05.2013),Rainer Hönle (06.05.2013),RGerlach (06.05.2013),rostiger Nagel (03.05.2013),Thomas_v2.1 (04.05.2013)

  11. #30
    Registriert seit
    29.03.2004
    Beiträge
    5.793
    Danke
    144
    Erhielt 1.706 Danke für 1.238 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @HelleBarde
    Hast du keine 1500 die du mal aufschrauben kannst? Oder womit testest du?
    Ich könnte mir eher vorstellen dass die Steuerung mehr Ähnlichkeit mit der 1200 hat. Beim Portal V11 habe ich mal etwas in den Programmdateien rumgeforscht, da ist zumindest ein Teil der Codegenerierung des SCL Compilers für die 1200 und 1500 identisch, vielleicht aber auch nur eine Zwischencodeerzeugung. Wobei in V11 die 1500 nur vorbereitet ist, vielleicht hat sich da ja noch das ein oder andere geändert.

    Innenleben der 1200 habe ich schonmal dokumentiert:
    http://www.sps-forum.de/simatic/61862-profinet-s7-1200-a.html#post433059

    Der Code der vom SCL Compiler generiert und in eine 1200 hochgeladen wird habe ich mir auch schonmal angesehen. Ich bin aber noch nicht dahintergekommen ob das auch nur eine Art Zwischencode ist, oder ob der Prozessor das nativ abarbeiten kann.
    Hier ein kleiner Test, den man auch schön mit dem was in eine 1500 hochgeladen wird vergleichen könnte:
    http://www.sps-forum.de/stammtisch/39033-stuxnet-wincc-wurm-kann-industrieanlagen-steuern-14.html#post419596

    Wenn die 1500 den gleichen Code erhält bin ich gespannt wie Siemens ein AWL-Programm in diesen Code umgesetzt hat. Denn was in die 1200 hochgeladen wird ist ja sozusagen ein Drei-Adress Code, AWL ist jedoch ein Zwei-Adress Code. Entweder der Übersetzer müsste prüfen ob er zwei oder mehr AWL-Anweisungen zu einer zusammenfassen kann, oder ggf. überflüssige bzw. nicht optimale Anweisungen erzeugen.

Ähnliche Themen

  1. Zugriff auf einzelne Bit's TIA-Portal
    Von MarkusP im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 03.09.2016, 21:30
  2. Antworten: 0
    Letzter Beitrag: 22.01.2012, 18:59
  3. Antworten: 2
    Letzter Beitrag: 07.11.2011, 12:19
  4. CPU lässt sich nicht einfügen TIA Portal V11
    Von Vauxhall1983 im Forum Simatic
    Antworten: 25
    Letzter Beitrag: 20.10.2011, 21:38
  5. Timer läuft nicht, TIA-Portal
    Von pinolino im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 12.07.2011, 14:51

Lesezeichen

Berechtigungen

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