TIA Anfängerfrage DB+String+HMI

Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

Sein Eingangsdoppelwort sind ja schon ASCII-Zeichen:
42303330 -> "*030"

jetzt verstehe ich es etwas besser.

Dann muss man in der SPS ein bisschen konvertieren.
Eingangsadresse am besten in DWORD deklarieren.


Pseudocode:

Code:
VAR_TEMP
    chrFolge : array[0..3] of char;
END_VAR



BEGIN

    chrFolge[0] := %ID200.%B0;
    chrFolge[1] := %ID200.%B1;
    chrFolge[2] := %ID200.%B2;
    chrFolge[3] := %ID200.%B3;

    Chars_TO_Strg(Chars := chrFolge,
              pChars := 0,
              Cnt := 4,
              Strg => "TEST_DW".strngVAL); // wobei strngVAL : string[4]

END_FUNCTION

Dann strngVAL im HMI anzeigen lassen.

VG

MFreiberger
 
Da es handelt um lernen SPS Steuerungen zu programmieren....

Die erste wichtige Lektion ist, um eine Aufgabe zu lösen (ein Problem selbst zu beheben oder das Problem anderen zu vermitteln) muss man die Aufgabe zunächst klar und eindeutig definieren. (Diesen Schritt fehlt noch)

Die andere Lektion ist, wenn man ein STRING darstellen will, dann arbeite am einfachsten den ganze Zeit mit STRINGs.
 
Ok. Ich versuche es noch einmal. Eigentlich komme ich aus dem praktischen Teil. Meine letzten SPS Erfahrungen sind aus der Schule vor rund 20Jahren. Die letzten 4 Jahre habe ich mich nebenbei mit Labview beschäftigt. Für dieses Jahr habe ich das (berufliche) Ziel mich mit den Grundlagen von SPS zu beschäftigen. Kundenprojekte wird es niemals geben. Es sind ausschließlich interne, epxerimentelle Verwendungen. Zur Verfügung steht eine S7 1200 und das KT700 Basic panel. Die einzige berufliche Bedingung, die ich habe, ist die Einbindung eines Profibusgerätes(Pumpe).
Meine Idee dazu war es, die ganzen Ein-und Ausgangswörter aus der GSD Datei einzeln zu testen/vorzuführen.
Mit Hilfe von Buttons und Flipflops habe ich es geschafft, die Pumpe ein-und auszuschalten, mir den Durchfluß umgerechnet anzeigen zu lassen.
Weiterhin wird auch die Softwareversion übertragen (nummerisch). Diese zeigt es mir normal im HMI an (eingebunden als lokale Variable). Weiterhin möchte ich mir die Softwareversion dauerhaft oder per Button anzeigen lassen.
Dies ist in dem Fall das Eingangsdoppelwort 104. Der Inhalt ist bereits ASCII. Jedoch kann ich im HMI nur HEX Werte anzeigen lassen.
Mein bisherige Recherche führte mich bisher zu DB und auch HTA. Nur verstanden hab ich es nicht.
Vorsorglich hatte ich den DB angelegt. Inhalt ist einmal der Rohwert D104, definiert als DWord.
Ich hoffe, das ist jetzt verständlicher.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin Hulk,

ich habe gerade mal auf ein TP900 com geschaut. Da kann ich als Variablen Array[0..n] of char angeben. Wstring geht auch; string wohl nicht.

Vielleicht ist es am einfachsten ein Array[0..3] of char zu definieren, in dem Du die Stellen einträgst? Dann auf dem HMI für jede Stelle ein Ausgabefeld.
Oder weiter in wstring konvertieren und wstring an das HMI übergeben.

Auf jeden Fall müsstest Du die Eingangsvariable in der SPS bearbeiten.

VG

MFreiberger
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielleicht ist es am einfachsten ein Array[0..3] of char zu definieren, in dem Du die Stellen einträgst? Dann auf dem HMI für jede Stelle ein Ausgabefeld.
Oder weiter in wstring konvertieren und wstring an das HMI übergeben.
Man kann die Darstellung String wählen, und mit ein Variabel von ARRAY of CHAR verlinken. Habe ich nie probiert, ich gehe davon aus das WinCC hantiert es.

Auf jeden Fall müsstest Du die Eingangsvariable in der SPS bearbeiten.
Am einfachsten ein Datentyp "type_4chars" erstellen, bestehend von ein ARRAY[0..3] OF CHAR.
Anstatt %ID100 als DWORD, deklariere %I100.0 mit die Name "pumpentyp_4chars" als TYPE "type_4chars"
Dann sind die Daten von Anfang ab ein Array von CHAR, und man braucht keine Konvertierung o.Ä.
Übertrage "pumpentyp_4chars" in "IX_profibus".pumpentyp_4chars und verlinke das KTP700 Ausgabefled mit diese Variabel.
 
Doch nochmal :)
Am einfachsten ein Datentyp "type_4chars" erstellen, bestehend von ein ARRAY[0..3] OF CHAR.
Das habe ich im DB gemacht.

Anstatt %ID100 als DWORD, deklariere %I100.0 mit die Name "pumpentyp_4chars" als TYPE "type_4chars"
Den Satz verstehe ich nicht. Ich habe Doch ein DWord was vom Bus kommt?

Übertrage "pumpentyp_4chars" in "IX_profibus".pumpentyp_4chars und verlinke das KTP700 Ausgabefled mit diese Variabel.
Das verstehe ich wieder :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe mich mal weiter mit dem Problem beschäftigt. Ob das der korrekte Weg ist, weiß ich nicht. Für mich erscheint es etwas umständlich, jeden Buchstaben einzeln zu lesen.

char.jpgdb1.jpg
 
Viele Wege führen nach Rom. Deine Lösung ist genau das was z.B. in Beitrag #21 vorgeschlagen wurde, nur halt mit alles globalen Variablenzugriffen.

Harald
 
Zurück
Oben