Quantcast
Channel: SPS-Forum - Automatisierung und Elektrotechnik
Viewing all 50268 articles
Browse latest View live

Parameterlisten

$
0
0
Hallo.

Ich habe eine Frage bezüglich Parameterlisten in Wago e!Cockpit. Ich habe eine Library geschrieben, in welcher ich ein globales Array verwende. Die Größe des Arrays ist Projektspezifisch. Ich sollte also die Größe des Arrays in jedem Projekt, in welches ich die Library einbinde, dynamisch anpassen können. Dafür verwende ich die Parameterliste und ich definiere dort eine globale Konstante, welche die Größe des Arrays angibt. Wenn ich nun die Library in das Projekt einbinde, lässt sich die Konstante nicht editieren. In der Tabelle ist die Spalte der Werte auch als "not editable" gekennzeichnet. Im Library Manager steht außerdem rechts neben der Library ein Hinweis "Parameter lists are not editable for pool libraries. To edit them, first move the library to a device librarymanager". Dieser Hinweis hilft mir allerdings nicht weiter und ich kann auch Online keine Information dazu finden.

Mir ist außerdem aufgefallen, dass ich Parameterlisten anderer Libraries ebenfalls nicht editieren kann. Kann es sein, dass es dazu eine spezielle Einstellung in e!Cockpit gibt? Oder kann dies eventuell damit zusammenhängen, dass ich derzeit noch mit der Gratis Testversion von e!Cockpit arbeite und dadurch eingeschränkt bin?

Könnt ihr mir da weiterhelfen? Ich bin für jeden Hinweis dankbar.

Danke im Voraus und schöne Grüße,

Andi

Sichere Fernwartung für Ihre Maschinen

$
0
0
Neue Webinar-Reihe rund um #Fernwartung, #Cybersecurity und Industrial #IoT für Anwender aus #Maschinenbau und #Produktion.

Am Donnerstag, 2. April 2020 um 10:00 Uhr starten wir mit dem Thema "Plug and Play Fernwartungslösung für Ihre Maschine".

200330_Webinar_Plug_Play_DE_Social_1.jpg

Sie möchten Router ins Maschinennetz einbinden? Wir zeigen Ihnen wie Sie mit dem mbCONNECT24 Fernwartungs-Ökosystem schnell, sicher und komfortabel durchstarten. Nutzen Sie dieses kostenlose Webinar als ersten Einstieg – und als Vorbereitung für eine individuelle Beratung per Telefon oder als private Webkonferenz.

Bitte melden Sie sich hier an: Link

Angehängte Grafiken

Corona - Kostenlose EN Normen zum Downloade

Step 7 Profibus Diagnose mit SFC51

$
0
0
Hi zusammen,

ich müsste für ein älteres Projekt den Profibus erweitern.

Im gleichen Zug soll noch eine Diagnose für den Bus eingeführt werden.

Nun hab ich das ganze so gemacht wie auf dem Screenshot 1 angezeigt
Baustein.PNG
Die Hardwarekonfig dazu sieht folgendermaßen aus
Hardware.jpg

Leider funktioniert das nicht so wie gewollt.
Wenn ein Teilnehmer ausfällt wird das Triggerbit im OB gesetzt, aber nicht wieder zurückgesetzt, wenn der SFC51 fertig ist mit seiner Abfrage.
Zusätzlich erfahre ich nicht welcher Teilnehmer ausgefallen ist. Alle Bits im Datensatz sind weiterhin falsch.

Wenn der Trigger kommt, wechselt der Ausgang auf 0. Ist der Trigger False steht er auf 7000.

Wenn ich die selbe Abfrage im Profinet mache, habe ich dort die SZL_ID 694 und Index 64 für Profinet-IO System (100). Dort funktioniert das und ich erfahre welcher Teilnehmer ausgefallen ist.

Danke
Angehängte Grafiken

Verständnisprobleme mit LOGO!Soft Comfort Online-Hilfe

$
0
0
Hallo,

ich bin neu hier, aber nicht neu im Geschäft mit Steuerungen - ganz alter Hase beginnend mit S5 in den 80ern.
Auf die LOGO hab' ich eigentlich immer etwas verächtlich herabgesehen, das scheint sich jetzt zu rächen.
Jetzt, da ich im privaten Bereich eine LOGO einsetzen möchte, stolpere ich über Begrifflichkeiten in der LOGO!Soft Comfort Online-Hilfe.

Speziell bei dem "Analogen Schwellwertschalter" finde ich die folgende Textstelle

Zitat:

Die Zeitvorgabe für die Parameter On und Off kann auch ein Aktualwert einer bereits programmierten anderen Funktion sein. Sie können die Aktualwerte folgender Funktionen verwenden:
unverständlich. Die Parameter On und Off sind doch vom Grundsatz her im Kontext zu der Eingangsgröße Ax zu sehen, wenn Ax für ein Eingangssignal im Wertebereich von 0...1000 anzusehen ist und das Eingangssignal z.B. von einem Prozesssensor für Kraft in Newton generiert wird, wieso habe habe ich bei den Schwellwert-Parametern On und Off einen zeitlichen Bezug?

Meine Verwirrung wird noch größer, wenn ich in der o.g. Textstelle der Online-Hilfe lese, dass Aktualwerte einiger Funktionen angeblich verwendbar wären! Wie sollte das gehen? Es wäre ja wirklich schön, wenn ich die Werte für ON und OFF vorher extern berechnen könnte, um sie dann auf die Parameter zu verdrahten - was aber offensichtlich nicht geht. Vielleicht bin ich zu blöd dazu oder sehe vor lauter Bäumen den Wald nicht mehr.

Ich brauche Hilfe!

LG Batacuda

Ausgabe Bacnet Variablen

$
0
0
Hallo zusamme

Bin bei den ersten geheversuchen mit Bacnet/IP.
Leider habe ich noch folgendes Problem, dass es mir die Variablem beim Automapping nicht übernimmt, siehe Foto.

Hat jemand eine Erklärung dafür?
Ich verwende Twincat 3, kann es sein das die Bezeichnungen für die Deklaration anders sind wie bein Twincat2?


Bacnet1.jpgBacnet2.jpgBacnet3.jpg
Angehängte Grafiken

ecockpit Text in Visuvorlage

$
0
0
Hallo,

ich habe eine Visuvorlage erstellt auf dem sich Buttons und ein Textfeld befinden.
Dazu habe ich einen FB mit Inputs und Outputs erstellt, den ich mehrmals aufrufen kann.
Das funktioniert auch wunderbar, bis auf den Text der auf der jeweiligen Frame erscheinen soll.
Die Eingangsvariable, die sich an dem FB als Input befindet ist ein String.
Leider wird der Text nicht an die Frame weitergeleitet.

Gebe ich den Text so ein, erscheint es auf dem Frame:
Tasterlement_Lampe:xLichttasterelement:=(Tastertext:='Deckenlampe_WZ');

Gebe ich es so ein, erscheint der Text leider nicht auf dem Frame:
Tasterlement_Lampe:xLichttasterelement:=(Tastertext:=iTastertext);
iTastertext ist die Eingangsvariable an dem FB.

Ich bekomme auch keinen Fehler angezeigt und weiß nicht weiter.

Für eine Lösung wäre ich sehr dankbar.

Gruß
Ossi64

WinCC Projektdaten konvertieren aktivieren

$
0
0
Hallo,
Ein WinCC-Projekt ist mit V7.2 erstellt worden und jetzt soll ein Upgrade auf V7.5 erfolgen. Die Projektübertragung erfolgt mit Step7, was auch soweit alles normal funktioniert.
Nach einer kompletten Projektübertragung auf Server 1, welcher OS zugeordnet ist, kommt bei der Anforderung das WinCC-Projekt zu öffnen, folgende Mitteilung sinngemäß: „Das WinCC-Projekt ist mit dem Simatic Manager angelegt. Um ein eigenständiges WinCC-Projekt zu machen, muss das Projekt konvertiert und neu gespeichert werden.“ Diese anschließende Konvertierung findet nur beim OS (Server 1) statt, aber nicht nach dem Laden des OS-Standby (Server 2).
Das Projekt ist mit dem Projekt Migrator auf die Kompatibilität geprüft worden, und als Ergebnis der Prüfung wurde mitgeteilt, dass das Projekt nicht migriert werden braucht.
Jetzt wollte ich im WinCC Explorer unter Extras „Projektdaten konvertieren“ das Projekt nochmal prüfen lassen, jedoch diese Anwahl ist ausgegraut. Warum?
Die Lizenzen WinCC Server und WinCC RC (8192) jeweils V7.5 ist auf Laufwerk C vorhanden.
Wie ist es möglich, „Projektdaten konvertieren“ zu aktivieren?
Danke für jeden Beitrag.

Geschwindigkeitsreglung mit externem Geber am MOVIDRIVE B

$
0
0
Hallo,


ich versuche mich gerade an an einem Projekt mit einem SEW Antrieb.


Die Herausforderung vor der ich gerade stehe ist, dass ich die Geschwindigkeit einer Walze regeln möchte (ähnlich wie bei einem Wickler).
Die Sollwertvorgabe der Drehzahl soll sich also auf die Walze beziehen und nicht auf den Motor selber.
Ein externer Geber (Messrad) läuft auf der Walze mit und soll die Geschwindigkeit ermitteln.


Der eingesetzte FU ist ein SEW MOVIDRIVE B (MDX61B) inklusive Geberkarte DEH11B und Feldbuskarte DFB21B.
Der Motorgeber ist auf X15 angeschlossen und das Messrad auf X14.


Ich verstehe nicht, wie ich den Antrieb im MotionStudio nun so konfiguriere, dass sich die Geschwindigkeitsreglung auf die Daten des externen Gebers beziehen.


Ich habe es schon mit dem Applikationsmodul "Zentralwickler" probiert was dem schon recht nahe kam. Allerdings ist das für meine Anwendung ein bisschen zu umfangreich.


Gibt es im MotionStudio eine Möglichkeit den Antrieb entsprechend meinen Vorstellungen zu konfigurieren (Sollwertvorgabe Drehzahl der Walze und Start)?


Ich bin leider noch recht neu in der SEW-Welt und kämpfe mich gerade noch durch entsprechende Handbücher usw. aber vielleicht hat hier jemand ja schon mal einen Tipp für mich :D


Viele Grüße

TIA Antriebsregelung mit Kamerasystem

$
0
0
Ich steh gerade ein wenig auf dem Schlauch und würde mal den Input von Euch benötigen :)

Es geht darum, ein Werkstoff wird von zwei Walzen (oben und unten, Werkstoff ist in der Mitte eingeklemmt) gezogen. Dieser kann vor den Walzen mit einem Antrieb nach links und rechts bewegt werden. Der Werkstoff hat auf der rechten Seite keine gerade Kante, diese kann nach beiden Richtungen verlaufen (z.B.: eine langgezogene S-Form). Jedoch soll der Werkstoff immer mit der rechten Kante richtig auf eine fixe Position ausgerichtet werden, bevor dieser zu den Walzen kommt.
Die Ausrichtung wird mittels Industriekamera gemessen und der Abstand an die SPS übermittelt. Mit diesen Messwerten soll der Antrieb angesteuert werden, der den Werkstoff je nach Position richtig ausrichtet.

Ich hab eine kleine Skizze angehängt, damit man sich ein wenig ein Bild machen kann.
2020-03-31 17_17_02-Start.jpg
Also meine Grundidee ist, den gemessenen Abstand in einen PID Regler schicken, das Stellsignal skalieren und dem Antrieb übergeben. Dieser Antrieb fungiert hier als reine Drehzahlachse.
Der Setpoint vom Regler wäre ein fixer Wert, der den gewünschten Abstand entspricht. Somit sollte der Regler die Abweichung immer ausgleichen und den Motor mittels Drehzahl so lange ansteuern, bis das Werkstück im richtigen Abstand steht.

Das Knifflige dabei, die Walzen "ziehen" das Werkstück mit einer variablen aber hohen Geschwindigkeit durch und dabei muss die Ausrichtung schnell genug und vorallem genau sein +-1mm.
Das ganze ist relativ klein gehalten, der Antrieb muss das Werkstück maximal +-30mm verschieben.

Geschwindigkeiten:
Walzenantriebe: variabel 7,5 - 50mm/s
Ausricht Antrieb: max 400mm/s

Da hier die Zeit ein wichtiger Faktor ist, einmal ein paar details zu den Zykluszeiten:
Abtastung Kamera: 8-12ms
Abtastung Regelbaustein SPS: 2ms
Profinetzykluszeit zum Antrieb: 2ms
CPU Siemens 1518F

Zuerst habe ich das Stellsignal vom Regler linear skaliert, jedoch hatte ich hier das Problem, dass der Antrieb entweder genau oder schnell war, jedoch nicht beides. Die lineare skalierung habe ich gegen eine kubische funktion getauscht. Diese Regelung läuft schon besser, jedoch läuft das ganze nur bei einer langsamen Geschwindigkeit.
Habe einen selbstgeschriebenen PID Regler und ebenfalls den Siemens PID_Compact versucht.
Der Siemens Regler springt nach dem Autotune extrem und ist sehr unruhig.

Wie würdet Ihr diese Aufgabe angehen?
Wie könnte ich den Regler etwas "sanfter" einstellen?
Vielleicht anstatt auf Drehzahl regeln, direkt positionieren (Positionsdifferenz errechnen und den Antrieb positionieren)?
Von Seiten der Zykluszeiten bin ich ja insgesammt recht schnell unterwegs.

Bin dankbar für jede Idee!
Angehängte Grafiken

ecockpit Text in Visuvorlage 2

$
0
0
Hallo,

ich habe eine Visuvorlage erstellt auf dem sich Buttons und ein Textfeld befinden.
Dazu habe ich einen FB mit Inputs und Outputs erstellt, den ich mehrmals aufrufen kann.
Das funktioniert auch wunderbar, bis auf den Text der auf der jeweiligen Frame erscheinen soll.
Die Eingangsvariable, die sich an dem FB als Input befindet ist ein String.
Leider wird der Text nicht an die Frame weitergeleitet.

Gebe ich den Text so ein, erscheint es auf dem Frame:
Code:

Tastelement_Lampe_WZ:xLichttasterelement:=(Tastertext:='Deckenlampe WZ');
Gebe ich es so ein, erscheint der Text leider nicht auf dem Frame:
Code:

Tasterlement_Lampe:xLichttasterelement:=(Tastertext:=iTastertext);
iTastertext ist die Eingangsvariable an dem FB.

Ich bekomme auch keinen Fehler angezeigt und weiß nicht weiter.

Für eine Lösung wäre ich sehr dankbar.

Gruß
Ossi64

ecockpit Text in Visuvorlage 3

$
0
0
Hallo,

ich habe eine Visuvorlage erstellt auf dem sich Buttons und ein Textfeld befinden.
Dazu habe ich einen FB mit Inputs und Outputs erstellt, den ich mehrmals aufrufen kann.
Das funktioniert auch wunderbar, bis auf den Text der auf der jeweiligen Frame erscheinen soll.
Die Eingangsvariable, die sich an dem FB als Input befindet ist ein String.
Leider wird der Text nicht an die Frame weitergeleitet.

Gebe ich den Text so ein, erscheint es auf dem Frame:
Code:

Tastelement_Lampe_WZ:xLichttasterelement:=(Tastertext:='Deckenlampe WZ');
Gebe ich es so ein, erscheint der Text leider nicht auf dem Frame:
Code:

Tasterlement_Lampe:xLichttasterelement:=(Tastertext:=iTastertext);
iTastertext ist die Eingangsvariable an dem FB.

Ich bekomme auch keinen Fehler angezeigt und weiß nicht weiter.

Für eine Lösung wäre ich sehr dankbar.

Gruß
Ossi64

Omron Anfänger - Umstieg von Siemens

$
0
0
Hallo zusammen,

Wir im Titel schon erwähnt arbeite ich hauptsächlich mit SPS der Firma Siemens.

Nun hat sich aber ein Projekt im privaten Umfeld aufgetan, bei einer Omron CPU (CP1L) einige Änderungen zu erledigen.
Der der die Steuerung + Software einmal erstellt hat keinen Kontakt mehr hierzu, daher muss ich mich jetzt wohl oder übel damit befassen.

Ich habe mir de CX Programmer installiert und war auch schon auf der CPU online um das Projekt zu sichern. Soweit alles kein Problem. Das Omron Beispiel aus deren Handbuch (Rolltorsteuerung) habe ich soweit mal angeschaut und verstanden.

Nun mein Problem. Und zwar die Adressierungen.

Ich habe ja die Work Bits? Sind das meine Alt bekannten Merker? also einfach bits welche ich Programmweit beschreiben und lesen kann?
Meine Eingänge bekommen das Präfix I
Meine Ausgänge das Präfix Q

Stimmt das soweit?

Und noch was, Ich hab hier im Projekt der Steuerung auch Variablen die Unbeschriftet sind. also einfach 52.11 dort stehen ohne Präfix. Was für ein Bit ist das dann?

Liebe Grüße und schonmal vielen Dank
Lukas

Step 7 Uhr Programmieren mit ADD_I !!!

$
0
0
Ich Habe versucht ein Normale Uhr Programmieren mit ADD_I, also Sekunden, Minuten und Stunden. Da habe ich DB mit FB genommen und In : Takt, start, reset
INOUT: sekunden, minuten, stunden uns Stat: pf0, pf1, pf2 genommen.


Also wenn ich die Zeit starte mit Taktmerker muss Sekunden zählen bis 59. Sekunden dann muss 1. Minuten anzeigen.
Wenn 59. Minuten kommt 1. Stunden anzeigen.

Leider mein Versuche sind gescheitert, da habe ich auch die Vergleichen genommen aber da ist auch nicht Funktioniert.

Wenn euch mich helft freue mich sehr.

vielen Grüßen

Ersoy_78

Einordnung und Beschreibung der Universalregelung UVR16x2 und des Programms TAPPS2

$
0
0
Guten Abend zusammen,

für eine wissenschaftliche Arbeit an der Hochschule München möchte ich gerne die Universalregelung UVR16x2 und das Programm Tapps einordnen und beschreiben. Ich bin zwar Elektriker für Energie und Gebäudetechnik, dennoch bin ich in diesem Bereich nicht wirklich fit. Entschuldigt bitte falsche Formulierungen und verbessert mich bitte wenn ich falsche Begriffe verwende. Meine Fragen sind:

Ist die Universalregelung UVR16x2 eine Speicherprogrammierbar Steuerung? Wenn nein, welcher Begriff ist richtig?

https://wiki.ta.co.at/UVR16x2

Das Programm TAPPS2 ist ein vektorbasiertes Zeichenprogramm. In diesem Programm kann man aus einer Bibliothek Makrobausteine (Objekte) einzeichnen, welche parametrisiert werden können. Über Linien können Eingänge und Ausgänge (auch Baustein) mit den Makrobausteinen verbunden werden. Manche der Bausteine sind z.B. UND- und ODER-Verknüpfungen. Die Programmiersprache ist wirklich sehr einfach und ähnelt sich nur mit den Sprachen nach EN 61131-3 Teil 3 (z.B. KOP und FBS). Dann habe ich über die Programmiersprache "Continous Function Chart" gelesen und weist nicht ob ich damit richtig liege.

Wie würdet ihr die Programmiersprache in dem Programm TAPPS2 zuordnen? Wie würdet ihr die Programmiersprache beschreiben?

https://wiki.ta.co.at/TAPPS2

Vielen Dank im Vorraus. Bleibt gesund

Liebe Grüße
Domi

Step 7 Aus Any Pointer DB-Nr und StartAdresse weiter nutzen

$
0
0
Hallo,

Mit diesem Code werden über ein Array-Index (int) Werte in eine DB geschrieben.

Code:

      U    e30.0

      SPBN  M001

      L    #Ist_Punkt                  // Byte
      +    -1
      L    4                          // Doppelwortzugriff
      *D   
      L    #Array_Index                // int
      +D   
      SLD  3                          // Pointerformat erstellen
      LAR1 

      AUF  #DB_Nr                      // DB Aufrufen Block_DB
      L    #ID                              // DWord
      T    DBD [AR1,P#0.0]            //Wert in den DB übertragen

M001: NOP  0


Ich möchte gerne die beiden Inputs #DB_Nr(Block_DB) und #Array_Index(int)
gegen einen Any-Pointer austauschen.


Folgenden Code-Schnipsel habe ich im I-Net gefunden, mit meinem Any-Pointer parametriert
und im Simulator ausprobiert.

So weit so gut.

Code:

      L    P##Startadr                //Adresse des IN-Parameters (Any)
      LAR1                              // Any-Pointer laden

      L    B [AR1,P#0.0]              //Prüfen ANY:S7-ANY-Kennung muß 16#10 sein!
      L    B#16#10
      <>I 
      SPB  err                        //Fehler: Aktualoperand ist kein ANY!

      L    B [AR1,P#1.0]              //ANY:Datentyp, z.B. 16#05 für INT
      T    #Typ                        // (TEMP, Int)
      L    W [AR1,P#2.0]              //ANY:Wiederholfaktor
      T    #Anzahl                    // (TEMP, Int)
      L    W [AR1,P#4.0]              //ANY:DB-Nummer
      T    #QuellDB                    // (TEMP, Word)
      L    D [AR1,P#6.0]              //ANY:Bereichsadresse mit Bereichskennung, muß auf .0 enden!
      T    #QuellAdr                  // (TEMP, DWord)


err:  NOP  0

Was ich jetzt nicht weiß wie ich in AWL #QuellAdr (DWord) zu meinem #Array_Index(int)
und #QuellDB (Word) zu meiner #DB_Nr(Block_DB) um wandeln kann.

Kann mir einer von Euch sagen wie ich die beiden Codeschnipsel zusammen bekomme?

Wäre Super und vielen Dank im vorraus.

Mfg Tommylik

Drehmoment und Mindestdrehzahl Asynchronmotor

$
0
0
Hallo,

ich habe einen Asynchronmotor mit 0,55kW und möchte diesen per Frequenzumrichter ansteuern.
Wie verhält sich das Drehmoment des Motors über bzw. unterhalb der Nennfrequenz von 50Hz.
Gibt es eine Mindest- bzw. Maximumfrequenz für Asynchronmotoren?

Gruß
Anger

CoDeSys 3.5, Beckhoff KL6301 EIB mit Raspberry Pi

$
0
0
Hallo zusammen,

seit längerer Zeit nutze ich bei uns im Haus eine Beckhoff CX1100 mit diversen Klemmen zur Erfassung von Temperaturen, Verbräuchen etc.
Nun gibt es ja mit dem CoDeSys 3.5 und dem Raspberry Pi auch ganz nette Möglichkeiten. Also wollte ich den Weg auch mal testen.

So weit, so gut. Die Hardware habe ich so weit zum laufen bekommen. Nun treibt mich das Problem mit der Bibliothek um. Vermute ich richtig, dass es keine Lösung dafür gibt die entsprechenden Bausteine und Strukturen aus der TcEIB.lib in die CoDeSys 3.5 zu bekommen? Gibt es andere Möglichkeiten die KL6301 zu nutzen?
HardwareConfig.JPG

Viele Grüße
Sven
Angehängte Grafiken

TIA HTTP Request über Comfort Panel absetzen

$
0
0
Hallo Leute,

ich möchte einen HTTP Request (GET und wenn möglich auch POST) über ein VB-Skript von einem Comfort Panel aus absetzen.
Ich habe schon diverse Sachen getestet und auch einige Suchanfragen gestartet, leider bisher ohne den gewünschten Erfolg.
Gibt es auf den Panels diese Möglichkeit überhaupt?
Wenn ja was wäre die richtige Methode für das CreateObject()?
Wenn nein, kann man die Funktionalität irgendwie nachträglich auf dem Panel hinzufügen?

Step 7 Bereichslängenfehler AR2

$
0
0
Hallo,

habe ein Problem mit der Nutzung AR1/AR2 bei der indirekten Adressierung. Ich habe Testweise den Zähler auf 1 gesetzt. Tausch ich am Transferbefehl AR2 gegen AR1 kommt kein Fehler. Ansonsten kommt immer Bereichslängenfehler schreiben Adresse 540.
Der Datenbaustein geht bis DBB 558.
(CPU ist eine relativ alte 313-C FW 2.0.8)


Code:

// Pointer auf Quelle
      L    "DB 4 HMI System".Bildnummer.Ausgewaehlte_Typdaten
      T    #tTyp
      ITD 
      L    L#1                        // Adressbereich startet bei 0.0 => 17.0
      -D   
      L    L#18                        // Länge Datenbereich
      *D   
      SLD  3
      LAR1 
// Pointer auf Ziel
      L    L#540
      SLD  3
      LAR2 

// Zähler initialisieren
      L    1
aa:  T    #tcount

      L    DBB [AR1,P#0.0]
      T    DBB [AR2,P#0.0]
      +AR1  P#1.0
      +AR2  P#1.0

      L    #tcount
      LOOP  aa
end:  NOP  0

Viewing all 50268 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>