Hilfe bei USB-Datenlogging mit X20CP0483 – ASUSB + FileIO + VC4

Hallo zusammen,

ich arbeite aktuell mit einer X20CP0483 SPS und möchte Prozessdaten auf einen USB-Stick im CSV-Format loggen.
Ich bin neu im SPS-Programmieren, habe aber Erfahrung in anderen Programmiersprachen. Die Visualisierung (VC4) funktioniert bereits, und ich möchte das Logging über einen Button starten und stoppen.

Ich programmiere in Structured Text und verwende derzeit die ASUSB und FileIO Bibliotheken.

Ich arbeite mit Automation Studio Version 4.12.6.106.


Was funktioniert bisher:

  • Das Beispielprojekt aus dem GitHub-Repository habe ich erfolgreich eingebunden:
    :backhand_index_pointing_right: https://github.com/br-automation-community/AS-USB

  • Ich erkenne erfolgreich, ob ein USB-Stick eingesteckt oder entfernt wurde (z. B. über Digital Output).

  • Das Beispielprojekt “FileHandling” aus der FileIO-Bibliothek habe ich ebenfalls eingebunden.


Wo ich nicht weiterkomme:

:red_question_mark: 1. Wie finde ich mit ASUSB heraus, wie mein USB-Stick heißt (also z. B. USB_DEVICE, USB1, etc.)?

:red_question_mark: 2. Wie kann ich diesen Gerätenamen dann an FileIO weitergeben, damit ich mit FileOpen, FileWrite, etc. arbeiten kann?


Ich bin für jeden Hinweis, Beispielcode oder konkrete Tipps dankbar, die mir helfen, den nächsten Schritt zu machen.
Ziel ist es, einen einfachen CSV-Datenlogger zu bauen, der über einen Button in der Visualisierung gesteuert wird.

Vielen Dank im Voraus!

Viele Grüße

Dominik

Hello,

Hi,

über USB.PAR.is_connected[idx] findest du, welcher index verbunden ist - und dieser ist dann USB_DEVICE<idx>

device_name := ''; (* Clear for next run *)
FOR i := 0 TO SIZEOF(USB.PAR.is_connected) / SIZEOF(USB.PAR.is_connected[0]) DO
    IF USB.PAR.is_connected[i] THEN
        brsstrcpy(ADR(device_name), ADR('USB_DEVICE'));
		brsitoa(idx, ADR(tmpSTR));
		brsstrcat(ADR(device_name), ADR(tmpSTR));
    END_IF
END_FOR

IF LEN(device_name) = 0 THEN
    // no logging, exit early
    EXIT
END_IF

(* Add your logging code here *)

Von der Verwendung der FileIO rate ich an der Stelle ab und empfehle mappData - das kann CSV schon und du musst dich um das Dateihandling nicht mehr selbst kümmern

Hoffe das hilft

Edit: @pavel.vavra he is already using a task that does the detection and linking, so this does not apply :slight_smile:

1 Like

Vielen Dank für eure Antworten! :slight_smile:

@michael_w mappData habe ich mir noch nicht angesehen - danke für den Tipp.
Brauche ich dafür eine spezielle Lizenz?

Wie kann ich die mappData Bibliothek in Automation Studio hinzufügen?

Bzgl Lizenz: Das habe ich nicht bedacht. Da bräuchtest du tatsächlich eine: B&R Online Help

Verwendung: B&R Online Help

Bei der FileIO zu bleiben, ist also auch eine Option. Mein Codesnippet oben gilt ohnehin für beide Fälle :slight_smile:

Hi @Dominik_Novak and @michael_w, I’m too lazy to translate it. If the question is answered, can you mark the reply with solutions? Thanks