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

Ergebnis 1 bis 6 von 6

Thema: Adressierung mit :P

  1. #1
    Registriert seit
    10.07.2014
    Beiträge
    366
    Danke
    137
    Erhielt 11 Danke für 11 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,
    als Anfänger habe ich mal wieder ein kleines Problem, welches ich nicht mit eigenen Unterlagen lösen kann.

    Ich habe in einem FC einmal die Ausgabe %A3.3 und gleich dahinter %A3.3:P.
    Was bedeutet nun das :P? Hat das was mit positiver Flanke zu tun?

    Vielen Dank
    Zitieren Zitieren Adressierung mit :P  

  2. #2
    Registriert seit
    30.04.2005
    Beiträge
    908
    Danke
    58
    Erhielt 161 Danke für 147 Beiträge

    Standard

    Das :P bedeutet direkten Peripheriezugriff, damit umgeht man das Prozessabbild.
    Krieg ist Gottes Art den Amerikanern Geographie beizubringen

  3. Folgender Benutzer sagt Danke zu centipede für den nützlichen Beitrag:

    Credofire (08.01.2015)

  4. #3
    Credofire ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    10.07.2014
    Beiträge
    366
    Danke
    137
    Erhielt 11 Danke für 11 Beiträge

    Standard

    Ich verstehe gerade nicht den Sinn dahinter. Einmal beschreibe ich den Ausgang mittels des Programmablaufes und beschreibe es im Anschluss direkt und umgehe damit quasi mein Programm? Welchen Zweck könnte das erfüllen?
    Hatte gerade noch was dazu gefunden, dass man bei analogen Verarbeitungen den direkten Zugriff nutzt um quasi den gerade aktuellsten Wert zu bekommen.

  5. #4
    Registriert seit
    30.04.2005
    Beiträge
    908
    Danke
    58
    Erhielt 161 Danke für 147 Beiträge

    Standard

    Ob das Sinn macht, kann man aus den Angaben schwer sagen.
    Dein Programm umgehst du damit nicht, nur der Ausgang wird sofort beschrieben und nicht erst am Zyklusende.
    Krieg ist Gottes Art den Amerikanern Geographie beizubringen

  6. Folgende 2 Benutzer sagen Danke zu centipede für den nützlichen Beitrag:

    Credofire (08.01.2015),infopc (08.01.2015)

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

    Standard

    Zitat Zitat von centipede Beitrag anzeigen
    Ob das Sinn macht, kann man aus den Angaben schwer sagen.
    Dein Programm umgehst du damit nicht, nur der Ausgang wird sofort beschrieben und nicht erst am Zyklusende.
    Hi

    stimmt.

    Lesen von / Schreiben auf die Peripherie dauert wesentlich länger wie aus dem / in das Prozessabbild. Lesen von der Peripherie bedeutet, dass die CPU über den Rückwandbus mit der Baugruppe redet und das dauert einfach tausende mal länger als aus dem RAM ein paar Bytes zu holen. Beim Schreiben ist das ganz ähnlich. Und dabei ist es jetzt total egal, ob wir von einer SPS oder einem 40 Jahre alten PC oder einem top modernen Gamer-PC reden. Je weiter weg vom ACCU1 / EAX du kommst, desto länger dauert es. Und im Lauf der letzten Dekaden sind die Prozessoren zwar um den Faktor 1000 schneller getaktet worden, aber andererseits sind immer mehr Stufen / Caches / Bussysteme dazwischen.

    Wozu das Ganze?

    Früher, als Speicher noch knapp und teuer war -- jetzt ist er bei Siemens nur noch teuer -- gab es CPUen, die konnten mehr Peripherie stecken als sie E und A hatten. Noch früher, durfte bestimme Peripherie nur auf Adressen "gesteckt" werden die kein Prozessabbild hatten. Also diese ururalten Analogdigitalwandler zu Zeiten von Step5 -- frühe 90 -- waren so langsam, dass sie für eine Wandlung mehrere hundert Zyklen (ca 100ms) verbraten haben. Deswegen wäre es unvorteilhaft für das Gesamtsystem, wenn in jedem Zyklus versucht wird einen Wert zu holen. Man hätte ja doch nur immer den alten bekommen. Also hat man damals ein einzelnes BUSY Flag direkt von der Peripherie gelesen und erst wenn dieses weg ging, dann hat man den Wandlerwert dirket von der Peripherie gelesen. Diese Aufrufe steckte man dann noch in eine Zyklische Ablaufebene, die nur alle 100ms dran kam, und somit war das System insgesamt schneller, weil es keine nutzlosen Arbeiten gemacht hat.

    Die Zeiten sind vorbei (jetzt lassen wir die Systeme nur noch nutzlose Arbeiten machen). Der komplette Adressraum einer 1200/1500er CPU ist vom Prozessabbild abgedeckt. Die AD-Wandler sind zwar deutlich schneller als früher, aber sie sind (siehe oben) immer noch deutlich weiter weg vom Prozessorregister als das RAM. Ein Peripheriezugriff ist somit um Faktor 10-1000 langsamer als der in E, A, M oder einen DB.
    Zum Beginn des Zyklus werden die konfigurierten Baugruppen gelesen. Dann wird die Ablaufebene ausgeführt. Am Ende des Zyklus werden die konfigurierten Baugruppen geschrieben.
    Da sich kaum einer die Mühe macht Baugruppen kein Abbild mehr zu geben (geht das überhaupt noch -- muss ich morgen mal ausprobieren), kostet es die Kommunikationzeit am Rückwandbus sowieso. Aus diesem Blickwinkel: Peripheriezugriff ist sinnlos.

    Aber wenn du jetzt einen kleine 314 hast, dann kann es eben sein, dass du eben doch mehr Peripherie hast wie E und A. Damit wird diese Peripherie aber nicht durch den Zyklusbeginn entsorgt / Zyklusende versorgt. D.h. hier musst du einen Peripheriezugriff verwenden, den anderen gibt es nicht.

    Und dritter Fall: Angenommen dein OB1 hat eine Zykluszeit von 600ms. Du musst aber einen Ausgang eine Folge von 10 Impulsen zu 200µs herausschießen lassen. Wenn du jetzt in einer Schleife 10 mal auf den A3.3 := TRUE; A3.3 := FALSE; schreibst, dann passiert am Ausgang gar nichts, denn der wird ja erst am Zyklusende den Wert des letzten Schreibens ausgeben. Aber mit A3.3:P := TRUE; A3.3:P := FALSE; bekommst du das hin, musst allerdings Vorkehrungen treffen, dass die Impulse/Pausen die richtige Länge haben (ziemlich schwierig das).


    Fazit: Normalerweise braucht man keinen Peripheriezugriff. Aber irgendwer hat ein Problem, das sich damit lösen lässt.


    'n schön' Tach auch
    HB
    Geändert von HelleBarde (11.01.2015 um 20:24 Uhr)

  8. Folgender Benutzer sagt Danke zu HelleBarde für den nützlichen Beitrag:

    Credofire (12.01.2015)

  9. #6
    Registriert seit
    12.03.2009
    Beiträge
    178
    Danke
    0
    Erhielt 39 Danke für 27 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich nutze generell die :P auf der 1200 um Onboard Ausgänge sehr schnell ansprechen zu können....

    Probiert mal ohne eine doppelte Sieben Segment anzeige zu Multiplexen.

    Das Gute Siemens KP8 kann man auch schön mit :P ansprechen dann kann es noch mehr Farben als im Datenblatt angegeben

    Grüße

    Owler

  10. Folgender Benutzer sagt Danke zu OWLer für den nützlichen Beitrag:

    Credofire (12.01.2015)

Ähnliche Themen

  1. TIA Probleme mit symbolischer Adressierung
    Von CaptainB im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 01.04.2014, 14:52
  2. Step 7 Schleife mit indirekter Adressierung
    Von Tschigi im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 28.10.2013, 10:41
  3. TIA MOVE mit indirekter adressierung ...?
    Von MaMoe2909 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 02.09.2013, 15:16
  4. Datenbausteinhandling mit indirekter Adressierung
    Von CW-D im Forum Programmierstrategien
    Antworten: 1
    Letzter Beitrag: 23.12.2011, 12:39
  5. Indirekte Adressierung mit S5!!
    Von Anonymous im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 20.10.2004, 15:15

Lesezeichen

Berechtigungen

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