neue Reihe in CSV Datei mit SysLibFile und Codesys ?

moumie

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Bitte Ich möchte nach einer neuer Reihe gehen wann myCount modulo ist 0.

Beispiel:

1 2 3 4 5 6 ... 10
11 .. 20
21 ... 30
..
41 50

Wie kann ich mein Program ändern ?

Code:
VAR
    myTON            :TON;
    SysFileOpenNum    :DWORD;
    FileName        :STRING := 'demo.csv';
    FileMode        :STRING := 'w';
    WriteBuffer     : STRING;
    DwWritten         : DWORD;
    myCount            :INT;
    myValue            :INT;
END_VAR

myTON(IN:=NOT myTON.Q, PT:=t#1s); (* second *)
IF myTON.Q THEN
   myValue := myCount;
   CASE myCount OF
    0:        SysFileOpenNum := SysFileOpen(FileName,FileMode);
    1..50:
            IF ((myCount MOD 10)=0) THEN
                WriteBuffer := CONCAT(WriteBuffer, '\n');
            ELSE
             WriteBuffer := '';
             WriteBuffer := INT_TO_STRING(myValue);
             WriteBuffer := CONCAT(WriteBuffer, ';');
            DwWritten := SysFileWrite(SysFileOpenNum, ADR(WriteBuffer), LEN(WriteBuffer));
            END_IF
    51:    SysFileClose(SysFileOpenNum);
    END_CASE
    IF myCount < 52 THEN
        myCount := myCount + 1;
    END_IF;
END_IF
 
Zuletzt bearbeitet:
Bitte Ich möchte nach einer neuer Reihe gehen wann myCount modulo ist 0.

Beispiel:

1 2 3 4 5 6 ... 10
11 .. 20
21 ... 30
..
41 50

Wie kann ich mein Program ändern ?

Code:
VAR
    myTON            :TON;
    SysFileOpenNum    :DWORD;
    FileName        :STRING := 'demo.csv';
    FileMode        :STRING := 'w';
    WriteBuffer     : STRING;
    DwWritten         : DWORD;
    myCount            :INT;
    myValue            :INT;
END_VAR

myTON(IN:=NOT myTON.Q, PT:=t#1s); (* second *)
IF myTON.Q THEN
   myValue := myCount;
   CASE myCount OF
    0:        SysFileOpenNum := SysFileOpen(FileName,FileMode);
    1..50:
            IF ((myCount MOD 10)=0) THEN
                WriteBuffer := CONCAT(WriteBuffer, '\n');
            ELSE
             WriteBuffer := '';
             WriteBuffer := INT_TO_STRING(myValue);
             WriteBuffer := CONCAT(WriteBuffer, ';');
            DwWritten := SysFileWrite(SysFileOpenNum, ADR(WriteBuffer), LEN(WriteBuffer));
            END_IF
    51:    SysFileClose(SysFileOpenNum);
    END_CASE
    IF myCount < 52 THEN
        myCount := myCount + 1;
    END_IF;
END_IF

Ich habe schön das gemacht mit :D :

Code:
[
IF ((myCount MOD 10)=0) THEN
                WriteBuffer := INT_TO_STRING(myValue);
             WriteBuffer := CONCAT(WriteBuffer, ';');
                WriteBuffer := CONCAT(WriteBuffer, '$R$N');
                DwWritten := SysFileWrite(SysFileOpenNum, ADR(WriteBuffer), LEN(WriteBuffer));
            ELSE
             WriteBuffer := '';
             WriteBuffer := INT_TO_STRING(myValue);
             WriteBuffer := CONCAT(WriteBuffer, ';');
                DwWritten := SysFileWrite(SysFileOpenNum, ADR(WriteBuffer), LEN(WriteBuffer));
            END_IF
/CODE]
 
Zurück
Oben