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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 19 von 19

Thema: Ausgabe auf com1 - Ascii-Salat

  1. #11
    Registriert seit
    16.07.2004
    Beiträge
    42
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    >> simultaneous RCV XMT operation.
    musst mal im Diagnosepuffer nachschaun. Da steht dann irgendwas von leichter FEhler 007 XMT und RCV gleichzeitig aktiv.

    Das ist quasi das 'Echo' was am Terminal ankommt weil Sender und Empfänger gleichzeitig aktiv auf dem Bus einen Kurzschluss ('break') verursachen. Die Wechselsprechkommunikation funktioniert nur wenn das vorher sauber umgeschaltet wird. Dafür muss in einem der SMBs (187.7) das Empfangsfreigabebit jedesmal explizit umgelegt werden.
    Wie das genau ging habe ich momentan nicht vorrätig, notfalls helfen die Tips&Tricks (52a -- Drucker) und dortiger Zustandsautomat weiter.

  2. #12
    Anonymous Gast

    Standard

    Tritt das Problem den bei Port_0 nicht auf ?

    Zur Fehlerlokalisierung solltest du bei Sendeanstoss bzw. RCV (Ende)Interrupt jeweils die zugehörigen Sondemerker zwischenspeichern
    und auswerten.
    Dazu gehören SMB186, SMB4 (speziell SM4.6), ferner die ersten empfangenen Zeichen und die empfangene Zeichenanzahl
    (vielleicht empfängst du die Zeichen bereits falsch).

    Versuche mal auch folgendes Tesprogramm
    (Als AWL Datei importieren).

    Code:
    ORGANIZATION_BLOCK MAIN:OB1
    TITLE=*****************************************************************
    // *******							 ********
    // ******* Dies ist ein Übungsprogramm für den Freeportmodus********
    // *******							 ********
    // *****************************************************************
    //  Wenn Programm Start und im Hyperterminal alle Einstellungen eingestellt
    //  sind startet man dort die Verbindung mittel des "Telefon"-Symbols
    //  Dann wird bei drücken von A=Ausgan A0.1 gesetzt,bei B=Ausgang A0.1
    //  zurückgesetzt,bei C=blinklick auf A0.2 aktiviert das mit B zurückgesetzt
    //  wird. Alle anderen Tasten haben keine Funktion.
    //  Wird E0.1(Flanke) gesetzt wird der Meldungsempfang aktiviert und die
    //  vorgehnden Funktionen außer Kraft gesetzt.
    //  Der Meldungsempfang(einzelner Zeichen,Anzahl in VB500,einzelne Zeichen
    //  Byteweise ab VB501)wird solange fortgesetzt biß die max. Anzahl der Zeichen
    //  erreicht ist(SMB94=10) oder die Tatste X gedrückt wird,was als Ende des
    //  Meldungsempfangs gewertet wird(SMB89= X).
    //  Mittels der Flanke auf E0.1 wird der Meldungsempfang wieder zurückgesetzt
    //  und dadurch der Empfang einzelner Zeichen aktiviert (A,B,C) bis wieder
    //  Flanke aud E0.0 den Meldungempfang wieder aktiviert wird.
    // *****************************************************************
    // 			Initialisierung Freeport
    // *****************************************************************
    // 
    BEGIN
    Network 1 
    LD     SM0.1                       // Im ersten Zyklus Schnittst. paramet
    MOVB   9, SMB30                    // 5 für 19200 Baud 9 für 9600 Baud, keine Parität,8Bits,Stopbit=1,Protokoll=keon
    ATCH   INT0, 8                     // Zeichenempfang auf INT 0 
    ENI                                // Interrupt freigeben
    
    //*****************************************************************
    //		Meldung senden das Ausgang gesetzt wurde
    //*****************************************************************
    Network 2 
    LD     E0.0
    EU
    MOVB   16#B0, SMB87
    MOVB   'X', SMB89                  //Ende Zeichen
    MOVW   +5, SMW90
    MOVB   5, SMB94                    //Maximal 100 Zeichen
    ATCH   INT1, 23
    RCV    VB500, 0                    //Anzahl plus Zeichen bei VB500 ablegen
    Network 3 // RCV ausschalten um wieder Senden zu können
    LD     E0.1
    EU
    R      A0.5, 1
    R      SM87.7, 1                   //Meldungsempfang sperren
    RCV    VB500, 0                    //RCV SM neu lesen
    Network 4 
    LD     A0.1                        // Bei aufsteigender Flanke von 
    EU                                 // Ausgang 0.1
    S      M0.0, 1                     // Setze Merker 0.0
    Network 5 
    LD     M0.0                        // Wenn Merker 0.0 gesetzt
    TON    T32, +1                     // Starte eine Millisekunde Zeit
    Network 6 
    LD     T32                         // Wenn Zeit abgelaufen
    XMT    VB100, 0                    // Versende Zeichen und
    R      M0.0, 1                     // setze Merker 0.0 zurück
    
    //****************************************************************
    //		Meldung senden das Ausgang zurückgesetzt wurde
    //*****************************************************************
    Network 7 
    LD     A0.1                        // Bei abfallender Flanke von
    O      M1.0                        // Merker 1.0 oder Ausgang 0.1
    ED                                 // 
    S      M0.1, 1                     // Setze Merker 0.1
    Network 8 
    LD     M0.1                        // Wenn Merker 0.1 gesetzt
    TON    T33, +1                     // Starte zehn Millisekunden Zeit
    Network 9 
    LD     T33                         // Wenn Zeit abgelaufen
    XMT    VB200, 0                    // Versende Zeichen und
    R      M0.1, 1                     // setze Merker 0.1 zurück
    
    //*****************************************************************
    //		Meldung das Blinklicht aktiviert wurde
    //*****************************************************************
    Network 10 
    LD     M1.0                        // Bei aufsteigender Flanke von 
    EU                                 // Merker 1.0
    S      M0.2, 1                     // Setze Merker 0.2
    Network 11 
    LD     M0.2                        // Wenn Merker 0.2 gesetzt
    TON    T34, +1                     // Starte zehn Millisekunden Zeit
    Network 12 
    LD     T34                         // Wenn Zeit abgelaufen
    XMT    VB300, 0                    // Versende Zeichen und
    R      M0.2, 1                     // setze Merker 0.2 zurück
    
    //*****************************************************************
    //			Blinklicht verknüpfen
    //*****************************************************************
    LD     M1.0                        // Wenn empf. Zeichen = "C"
    U      SM0.5                       // und Sekundentaktmerker = "1"
    =      A0.2                        // = Ausgang 0.2
    
    //*****************************************************************
    Network 13 
    //  MEND   			// Ende Hauptprogramm
    // 
    END_ORGANIZATION_BLOCK
    INTERRUPT_BLOCK INT_0:INT0
    TITLE=*****************************************************************
    // 		Interruptprogramm für Zeichenempfang
    // *****************************************************************
    // 
    BEGIN
    Network 1 //  Interruptprogramm für 
    //  INT    0			// Zeichenempfang
    // 
    Network 2 
    LDB=   SMB2, 16#41                 // Wenn empfangenes Zeichen ein
    S      A0.1, 1                     // A ist dann setze Ausgang 0.1
    Network 3 
    LDB=   SMB2, 16#42                 // Wenn empfangenes Zeichen ein
    R      A0.1, 1                     // B ist dann setze Ausgang 0.1
    R      M1.0, 1                     // zurück
    Network 4 
    LDB=   SMB2, 16#43                 // Wenn empfangenes Zeichen ein
    S      M1.0, 1                     // C ist dann setze Merker 1.0
    Network 5 
    //  RETI   			// Ende Interruptprogramm
    // 
    END_INTERRUPT_BLOCK
    INTERRUPT_BLOCK INT_1:INT1
    TITLE=
    BEGIN
    Network 1 
    LD     SM0.0
    S      A0.5, 1
    END_INTERRUPT_BLOCK

  3. #13
    Anonymous Gast

    Standard

    @Fritz: wo finde ich den Diagnosepuffer? Und diese Angabe mit den Tips&Tricks worauf bezieht sich die? Im Handbuch find ich nix.

    @Gast: Danke werde ich probieren.

  4. #14
    Registriert seit
    16.12.2004
    Ort
    Schleswig-Holstein
    Beiträge
    400
    Danke
    21
    Erhielt 23 Danke für 20 Beiträge

    Standard

    wo finde ich den Diagnosepuffer?
    In Simatic Manger CPU markieren dann:

    Zielsystem -> Diagnose/Einstellung -> Baugruppenzustand

  5. #15
    Registriert seit
    16.07.2004
    Beiträge
    42
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    >>> Tricks & Tipps
    In MicroWin /Hilfe/S7 im Web befindet sich ein Link. Auf diesem PC verweist der jedoch nur ins Nirwana (altes SPK).
    Das ist eine CD bzw. Download aus dem KnowledgeSupport der Simatic Webseite. Da musst du mal suchen, sind vier Beispiele zur S7-200 AsCII Kommu drin. Eines davon Interruptgesteiert.

    >>> mini DiagnoseStack ( im Prinzip)
    Das findet sich unter MicroWin/ Zielsystem/ Informationen. Musst bei verbundener AG starten dann zeigts Fehler, Zykluszeit etc. an.

  6. #16
    Anonymous Gast

    Standard

    ..was ihr mit Diagnose Stack meint, meinte ich schon mit dem Info-Fenster

    Nach einigem hin- und her-gefummele und teilweiser Umstrukturierung meines Programmes nach dem Vorbild von Gasts Demoprog hat es geklappt!

    Ich kann leider nicht genau sagen, woran mein Problem lag. Eigentlich habe ich nur in IRs auf die Schnittstelle zugegriffen und diese Zugriffe entsprechend verzögert. Habe nun lediglich die Logik aus Unterprogrammen ins Hauptprogramm verlegt und mit Merken getriggert, anstatt sie aus der IR aufzurufen. Der Verdacht läge nahe, dass durch diese Aurufe die IR nicht richtig beendet wurde...ich weiß es nicht im Diagnose Fenster war keine entsprechende Fehlermeldung.

    Ich danke auf alle Fälle allen die mir geholfen haben!

    MfG

    Arne

  7. #17
    Registriert seit
    28.04.2005
    Beiträge
    85
    Danke
    11
    Erhielt 8 Danke für 8 Beiträge

    Standard

    Hi,

    mit 200ter habe ich bis jetzt noch nichts gemacht, aber wenn der Speicher wie bei der 300ter und 400ter CPU Word-Orientiert ist würde ich mal eben die Hi- und Lowbytes in jedem ASCII-Zeichen miteinander tauschen bevor ich die Daten seriell(zum PC) übertrage.

    Bei der S7-300/400 heisst der Befehl TAW (damit werden die Bytes im rechten Datenwort des Akku 1 miteinander getauscht).

    Falls die Gegenseite kein PC ist, sondern eine S7 - brauchst du diese Konvertierung natürlich nicht.

    Gruss
    ANo

  8. #18
    Anonymous Gast

    Standard

    Das klappt mittlerweile ja alles problemlos, aber Danke.

    Aber ein Problem hab ich noch, das mich von der Perfektion trennt .
    Undzwar würde ich gern meinen Empfang nicht per Interrupt beenden oder zumindest nicht nur, sondern mit einem Endzeichen. soweit so gut, denn das ist ja mit dem Byte 189 festlegbar und mit Bit 187.5 aktivierbar. Allerdings funktioniert das leider nicht, wenn ich das Bit 186.5 abfrage, wird dies niemals 1.

    @Gast in deinem Demoprogramm steht zwar was davon, dass der Zeichenempfang mit einem Endzeichen enden kann, aber du fragst den Empfang des Zeichens nie ab!?

  9. #19
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ...ok hab auch das Problem gelöst , die max. Zeichenzahl hat manchmal reingefunkt.

Ähnliche Themen

  1. Step5 WIN XP COM1
    Von SINUMERIK im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 27.09.2011, 21:05
  2. Twincat COM1
    Von Senator42 im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 03.10.2010, 13:54
  3. keine COm1 mehr
    Von Walter71 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 21.09.2009, 20:36
  4. DB-Salat - Dressing gesucht
    Von Frustrated im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 09.03.2007, 15:03
  5. V.24/TTY Wandler an COM1 für S5
    Von Anonymous im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 04.02.2006, 17:03

Lesezeichen

Berechtigungen

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