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

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

Thema: Upload von Block zur S7

  1. #11
    Registriert seit
    04.07.2015
    Beiträge
    3
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Sorry für die verspätete Antwort!
    Hier meine JAVA Experimente zum Lesen/Anallysieren einer *.wld der 1 S7 Baustein beeinhaltet:

    package WLD;

    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.util.Calendar;

    public class WLD {
    public static void main(String arg[]) {
    final String fileName = "fb5.wld";
    try {
    RandomAccessFile wldStream = new RandomAccessFile(fileName, "r");
    Long fileLen = wldStream.length();
    System.out.println("Length of File: " + fileLen+ " Bytes");
    // Read 36 Byte Header
    final int headLen = 36;
    wldStream.seek(0); // Byte 0..1 = 0x7070 Sync
    if (wldStream.readUnsignedShort() != 0x7070) {
    System.out.println("No Sync at BlockStart");
    }
    wldStream.seek(; // Byte 8..11 = LoadMemory
    int loadMemLen = wldStream.readInt(); // Load Memory
    System.out.println("Length of Load Memory: " + loadMemLen + " Bytes");
    String s7BlockLang;
    wldStream.seek(4); // Byte 4 = BlockLanguage "AWL,KOP,FUP,SCL,DB,SDB"
    switch (wldStream.readByte()) {
    case 0x01: // AWL
    s7BlockLang= "AWL";
    break;
    case 0x02: // KOP
    s7BlockLang= "KOP";
    break;
    case 0x03: // FUP
    s7BlockLang= "FUP";
    break;
    case 0x04: // SCL
    s7BlockLang= "SCL";
    break;
    case 0x05: // DB
    s7BlockLang= "DB";
    break;
    case 0x06: // GRAPH
    s7BlockLang= "GRAPH";
    break;
    case 0x07: // SDB
    s7BlockLang= "SDB";
    break;
    default:
    s7BlockLang = "Unknown";
    }
    System.out.println(s7BlockLang);
    wldStream.seek(5); // Byte 5 = Block Type ID "DB,FC,FB,SDB"
    byte s7BlockType = wldStream.readByte();
    String s7BlockTypeS;
    switch (s7BlockType) {
    case 0x08: // OB
    s7BlockTypeS = "OB";
    break;
    case 0x0A: // DB
    s7BlockTypeS = "DB";
    break;
    case 0x0B: // SDB
    s7BlockTypeS = "SDB";
    break;
    case 0x0C: // FC
    s7BlockTypeS = "FC";
    break;
    case 0x0D: // SFC
    s7BlockTypeS = "SFC";
    break;
    case 0x0E: // FB
    s7BlockTypeS = "FB";
    break;
    case 0x0F: // SFB
    s7BlockTypeS = "SFB";
    break;
    default:
    s7BlockTypeS = "Unknown";
    }
    wldStream.seek(6); // Byte 6..7 = BlockNumber
    int blockNo = wldStream.readUnsignedShort();
    System.out.println(s7BlockTypeS+" "+blockNo);
    wldStream.seek(15); //
    boolean knowHowProtect = (wldStream.readByte() == 3);
    System.out.println("KnowHowProtected: " + Boolean.toString(knowHowProtect));
    // ---------------------------------
    Calendar calTimeStampChanged = Calendar.getInstance();
    calTimeStampChanged.set(Calendar.YEAR, 1984);
    calTimeStampChanged.set(Calendar.MONTH, 0); // 0 = Januar!
    calTimeStampChanged.set(Calendar.DAY_OF_MONTH, 1);
    calTimeStampChanged.set(Calendar.HOUR_OF_DAY, 0);
    calTimeStampChanged.set(Calendar.MINUTE, 0);
    calTimeStampChanged.set(Calendar.SECOND, 0);
    calTimeStampChanged.set(Calendar.MILLISECOND, 0);
    wldStream.seek(16); // TimeStamp Changed Byte 16-21
    int msSinceMidnight = wldStream.readInt();
    wldStream.seek(20); // TimeStamp Changed Byte 20-21
    int days1184 = wldStream.readUnsignedShort(); // Days since
    // 1.Jan.1984
    calTimeStampChanged.add(Calendar.DAY_OF_YEAR, days1184);
    calTimeStampChanged.add(Calendar.MILLISECOND, msSinceMidnight);
    System.out.printf("Changed: ");
    System.out.printf("%tD", calTimeStampChanged); // 01/01/84
    System.out.printf(" ");
    System.out.printf("%tT%n", calTimeStampChanged);
    // wldStream.seek(22); // TimeStamp Schnittstellen Änderung Byte
    // 22-27
    Calendar calTimeStampIfChanged = Calendar.getInstance();
    calTimeStampIfChanged.set(Calendar.YEAR, 1984);
    calTimeStampIfChanged.set(Calendar.MONTH, 0); // 0 = Januar!
    calTimeStampIfChanged.set(Calendar.DAY_OF_MONTH, 1);
    calTimeStampIfChanged.set(Calendar.HOUR_OF_DAY, 0);
    calTimeStampIfChanged.set(Calendar.MINUTE, 0);
    calTimeStampIfChanged.set(Calendar.SECOND, 0);
    calTimeStampIfChanged.set(Calendar.MILLISECOND, 0);
    wldStream.seek(22); // TimeStamp Changed Byte 22-25 Millisecond
    // since Mindnight 0:00:00
    int msIfSinceMidnight = wldStream.readInt();
    wldStream.seek(26); // TimeStamp Changed Byte 26-27 Days since
    // 1.Jan.1984
    int daysIf1184 = wldStream.readUnsignedShort();
    calTimeStampIfChanged.add(Calendar.DAY_OF_YEAR, daysIf1184);
    calTimeStampIfChanged.add(Calendar.MILLISECOND, msIfSinceMidnight);
    System.out.printf("IF Changed : ");
    System.out.printf("%tD", calTimeStampIfChanged);
    System.out.printf(" ");
    System.out.printf("%tT%n", calTimeStampIfChanged);
    wldStream.seek(2; // Len of Structure Datas [Bytes]
    int structDataLen = wldStream.readUnsignedShort();
    System.out.println("Length of Structure Datas: " + structDataLen + " Bytes");
    wldStream.seek(30); // Len of Sdb Datas [Bytes]
    int sdbDataLen = wldStream.readUnsignedShort();
    System.out.println("Length of SDB Datas: " + sdbDataLen + " Bytes");
    wldStream.seek(34); // Len of Working Memory Datas [Bytes]
    int workMemLen = wldStream.readUnsignedShort();
    System.out.println("Length of Working Memory without Header: " + workMemLen + " Bytes");
    System.out.println("Length of Working Memory: " + (workMemLen + headLen) + " Bytes");
    // Reading Working Memory Datas, Starting at Byte 36 (= headLen)
    // wldStream.seek(headLen);
    // Reading Structure Datas, Starting at Byte headLen+workMemLen
    if (s7BlockTypeS=="DB"){
    wldStream.seek(headLen + workMemLen + 1);// Blocknumber in Structure, Datas are in Big Endian!
    int blockNoStruct = wldStream.readUnsignedByte() | (wldStream.readUnsignedByte() << ;
    if( blockNoStruct != blockNo){
    System.out.println("Unequal DB Number in Struct Data! :" + blockNoStruct);
    }
    wldStream.seek(3); // Byte 3 = Retain / Linked
    byte retainLinked = wldStream.readByte();
    boolean linked = (retainLinked & 0x01) == 0x01;
    boolean nonRetain = (retainLinked & 0x20) == 0x20;
    System.out.println("Linked: " + Boolean.toString(linked));
    System.out.println("Non-Retain: " + Boolean.toString(nonRetain));
    wldStream.seek(33); // ReadOnly
    boolean readOnly = (wldStream.readByte() & 0x1) == 0x1;
    System.out.println("ReadOnly: " + Boolean.toString(readOnly));
    }
    if (s7BlockTypeS=="FC" || s7BlockTypeS=="FB"){
    wldStream.seek(32); // Local Memory need
    int locMemLen = wldStream.readUnsignedShort();
    System.out.println("Length of Local Memory: " + locMemLen + " Bytes");
    }
    byte[] bufferChar = new byte[8];
    wldStream.seek(headLen + workMemLen + sdbDataLen + structDataLen); // Read 8 Byte Author
    wldStream.readFully(bufferChar);
    String author = new String(bufferChar, "UTF-8");
    System.out.println("Author: " + author);
    wldStream.seek(headLen + workMemLen + sdbDataLen + structDataLen + ; // Read 8 Byte Family
    wldStream.readFully(bufferChar);
    String family = new String(bufferChar, "UTF-8");
    System.out.println("Familie: " + family);
    wldStream.seek(headLen + workMemLen + sdbDataLen + structDataLen + 16); // Read 8 Byte Name (Header)
    wldStream.readFully(bufferChar);
    String name = new String(bufferChar, "UTF-8");
    System.out.println("Name: " + name);
    wldStream.seek(headLen + workMemLen + sdbDataLen + structDataLen + 24);// Read 1 Byte Version Number
    byte versionNumber = wldStream.readByte();
    System.out.println("Version Number: "+ ((versionNumber & 0xF0) >> 4) + "." + (versionNumber & 0xF));
    wldStream.seek(headLen + workMemLen + sdbDataLen + structDataLen + 26);// Read 2 Byte Checksum
    int checkSum = wldStream.readUnsignedShort();
    System.out.println("Checksum: 0x" + Integer.toHexString(checkSum));
    // CRC Calculation
    wldStream.seek(headLen-2); // Len MC7 Code + MC7 Code
    int crc = 0x0000;
    int polynomial = 0x9003;
    byte b;
    b = s7BlockType;
    for (int i = 0; i < 8; i++) {
    boolean bit = ((b >> (7-i) & 1) == 1);
    boolean c15 = ((crc >> 15 & 1) == 1);
    crc <<= 1;
    if (c15 ^ bit) crc ^= polynomial;
    }
    for (int count = 0; count < workMemLen+2; count++) {
    b = wldStream.readByte();
    for (int i = 0; i < 8; i++) {
    boolean bit = ((b >> (7-i) & 1) == 1);
    boolean c15 = ((crc >> 15 & 1) == 1);
    crc <<= 1;
    if (c15 ^ bit) crc ^= polynomial;
    }
    }
    crc &=0xFFFF;
    System.out.println("Checksum Calculated: 0x" + Integer.toHexString(crc));
    // End of CRC Calculation
    wldStream.close();
    } catch (FileNotFoundException ex) {
    System.out.println("Unable to open file '" + fileName + "'");
    } catch (IOException ex) {
    System.out.println("Error reading file '" + fileName + "'");
    // Or we could just do this:
    // ex.printStackTrace();
    }
    } // End Main
    } // End Class

  2. #12
    Registriert seit
    29.03.2004
    Beiträge
    5.077
    Danke
    128
    Erhielt 1.477 Danke für 1.088 Beiträge

    Standard

    Mach doch bitte mal code-Tags um deine Funktion, dann verschwinden auch die Smilies.
    Die Genialität einer Konstruktion liegt in ihrer Einfachheit – Kompliziert bauen kann jeder.

    (Sergei Pawlowitsch Koroljow, sowjetischer Konstrukteur von Raketen und Weltraumpionier)

  3. #13
    Registriert seit
    04.07.2015
    Beiträge
    3
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Ja die Smiley's, sind mir dann doch auch aufgefallen!
    Code:
    package WLD;
    
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.util.Calendar;
    
    public class WLD {
        public static void main(String arg[]) {
            final String fileName = "fb5.wld";
            try {
                RandomAccessFile wldStream = new RandomAccessFile(fileName, "r");
                Long fileLen = wldStream.length();
                System.out.println("Length of File: " + fileLen+ " Bytes");
                // Read 36 Byte Header
                final int headLen = 36;
                wldStream.seek(0); // Byte 0..1 = 0x7070 Sync
                if (wldStream.readUnsignedShort() != 0x7070) {
                    System.out.println("No Sync at BlockStart");
                }
                wldStream.seek(8); // Byte 8..11 = LoadMemory
                int loadMemLen = wldStream.readInt(); // Load Memory
                System.out.println("Length of Load Memory: " + loadMemLen + " Bytes");
                String s7BlockLang;
                wldStream.seek(4); // Byte 4 = BlockLanguage "AWL,KOP,FUP,SCL,DB,SDB"
                switch (wldStream.readByte()) {
                case 0x01: // AWL
                    s7BlockLang= "AWL";
                    break;
                case 0x02: // KOP
                    s7BlockLang= "KOP";
                    break;
                case 0x03: // FUP
                    s7BlockLang= "FUP";
                    break;
                case 0x04: // SCL
                    s7BlockLang= "SCL";
                    break;
                case 0x05: // DB
                    s7BlockLang= "DB";
                    break;
                case 0x06: // GRAPH
                    s7BlockLang= "GRAPH";
                    break;
                case 0x07: // SDB
                    s7BlockLang= "SDB";
                    break;
                default:
                    s7BlockLang = "Unknown";
                }
                System.out.println(s7BlockLang);
                wldStream.seek(5); // Byte 5 = Block Type ID "DB,FC,FB,SDB"
                byte s7BlockType = wldStream.readByte();
                String s7BlockTypeS;
                switch (s7BlockType) {
                case 0x08: // OB
                    s7BlockTypeS = "OB";
                    break;
                case 0x0A: // DB
                    s7BlockTypeS = "DB";
                    break;
                case 0x0B: // SDB
                    s7BlockTypeS = "SDB";
                    break;
                case 0x0C: // FC
                    s7BlockTypeS = "FC";
                    break;
                case 0x0D: // SFC
                    s7BlockTypeS = "SFC";
                    break;
                case 0x0E: // FB 
                    s7BlockTypeS = "FB";
                    break;
                case 0x0F: // SFB
                    s7BlockTypeS = "SFB";
                    break;
                default:
                    s7BlockTypeS = "Unknown";
                }
                wldStream.seek(6); // Byte 6..7 = BlockNumber
                int blockNo = wldStream.readUnsignedShort();
                System.out.println(s7BlockTypeS+" "+blockNo);
                wldStream.seek(15); //
                boolean knowHowProtect = (wldStream.readByte() == 3);
                System.out.println("KnowHowProtected: " + Boolean.toString(knowHowProtect));
                // ---------------------------------
                Calendar calTimeStampChanged = Calendar.getInstance();
                calTimeStampChanged.set(Calendar.YEAR, 1984);
                calTimeStampChanged.set(Calendar.MONTH, 0); // 0 = Januar!
                calTimeStampChanged.set(Calendar.DAY_OF_MONTH, 1);
                calTimeStampChanged.set(Calendar.HOUR_OF_DAY, 0);
                calTimeStampChanged.set(Calendar.MINUTE, 0);
                calTimeStampChanged.set(Calendar.SECOND, 0);
                calTimeStampChanged.set(Calendar.MILLISECOND, 0);
                wldStream.seek(16); // TimeStamp Changed Byte 16-21
                int msSinceMidnight = wldStream.readInt();
                wldStream.seek(20); // TimeStamp Changed Byte 20-21
                int days1184 = wldStream.readUnsignedShort(); // Days since
                                                                // 1.Jan.1984
                calTimeStampChanged.add(Calendar.DAY_OF_YEAR, days1184);
                calTimeStampChanged.add(Calendar.MILLISECOND, msSinceMidnight);
                System.out.printf("Changed: ");
                System.out.printf("%tD", calTimeStampChanged); // 01/01/84
                System.out.printf(" ");
                System.out.printf("%tT%n", calTimeStampChanged);
                // wldStream.seek(22); // TimeStamp Schnittstellen Änderung Byte
                // 22-27
                Calendar calTimeStampIfChanged = Calendar.getInstance();
                calTimeStampIfChanged.set(Calendar.YEAR, 1984);
                calTimeStampIfChanged.set(Calendar.MONTH, 0); // 0 = Januar!
                calTimeStampIfChanged.set(Calendar.DAY_OF_MONTH, 1);
                calTimeStampIfChanged.set(Calendar.HOUR_OF_DAY, 0);
                calTimeStampIfChanged.set(Calendar.MINUTE, 0);
                calTimeStampIfChanged.set(Calendar.SECOND, 0);
                calTimeStampIfChanged.set(Calendar.MILLISECOND, 0);
                wldStream.seek(22); // TimeStamp Changed Byte 22-25 Millisecond
                                    // since Mindnight 0:00:00
                int msIfSinceMidnight = wldStream.readInt();
                wldStream.seek(26); // TimeStamp Changed Byte 26-27 Days since
                                    // 1.Jan.1984
                int daysIf1184 = wldStream.readUnsignedShort();
                calTimeStampIfChanged.add(Calendar.DAY_OF_YEAR, daysIf1184);
                calTimeStampIfChanged.add(Calendar.MILLISECOND, msIfSinceMidnight);
                System.out.printf("IF Changed : ");
                System.out.printf("%tD", calTimeStampIfChanged);
                System.out.printf(" ");
                System.out.printf("%tT%n", calTimeStampIfChanged);
                wldStream.seek(28); // Len of Structure Datas [Bytes]
                int structDataLen = wldStream.readUnsignedShort();
                System.out.println("Length of Structure Datas: " + structDataLen + " Bytes");
                wldStream.seek(30); // Len of Sdb Datas [Bytes]
                int sdbDataLen = wldStream.readUnsignedShort();
                System.out.println("Length of SDB Datas: " + sdbDataLen + " Bytes");
                wldStream.seek(34); // Len of Working Memory Datas [Bytes]
                int workMemLen = wldStream.readUnsignedShort();
                System.out.println("Length of Working Memory without Header: " + workMemLen + " Bytes");
                System.out.println("Length of Working Memory: " + (workMemLen + headLen) + " Bytes");
                // Reading Working Memory Datas, Starting at Byte 36 (= headLen)
                // wldStream.seek(headLen);
                // Reading Structure Datas, Starting at Byte headLen+workMemLen
                if (s7BlockTypeS=="DB"){
                 wldStream.seek(headLen + workMemLen + 1);// Blocknumber in Structure, Datas are in Big Endian!
                int blockNoStruct = wldStream.readUnsignedByte() | (wldStream.readUnsignedByte() << 8);
                if( blockNoStruct != blockNo){
                    System.out.println("Unequal DB Number in Struct Data! :" + blockNoStruct);
                }
                  wldStream.seek(3); // Byte 3 = Retain / Linked
                byte retainLinked = wldStream.readByte();
                boolean linked = (retainLinked & 0x01) == 0x01;
                boolean nonRetain = (retainLinked & 0x20) == 0x20;
                System.out.println("Linked: " + Boolean.toString(linked));
                System.out.println("Non-Retain: " + Boolean.toString(nonRetain));
                wldStream.seek(33); // ReadOnly
                boolean readOnly = (wldStream.readByte() & 0x1) == 0x1;
                System.out.println("ReadOnly: " + Boolean.toString(readOnly));
                }
                if (s7BlockTypeS=="FC" || s7BlockTypeS=="FB"){
                    wldStream.seek(32); // Local Memory need
                    int locMemLen = wldStream.readUnsignedShort();
                    System.out.println("Length of Local Memory: " + locMemLen + " Bytes");
                }
                byte[] bufferChar = new byte[8];
                wldStream.seek(headLen + workMemLen + sdbDataLen + structDataLen); // Read 8 Byte Author
                wldStream.readFully(bufferChar);
                String author = new String(bufferChar, "UTF-8");
                System.out.println("Author: " + author);
                wldStream.seek(headLen + workMemLen + sdbDataLen + structDataLen + 8); // Read 8 Byte Family
                wldStream.readFully(bufferChar);
                String family = new String(bufferChar, "UTF-8");
                System.out.println("Familie: " + family);
                wldStream.seek(headLen + workMemLen + sdbDataLen + structDataLen + 16); // Read 8 Byte Name (Header)
                wldStream.readFully(bufferChar);
                String name = new String(bufferChar, "UTF-8");
                System.out.println("Name: " + name);
                wldStream.seek(headLen + workMemLen + sdbDataLen + structDataLen + 24);// Read 1 Byte Version Number
                byte versionNumber = wldStream.readByte();
                System.out.println("Version Number: "+ ((versionNumber & 0xF0) >> 4) + "." + (versionNumber & 0xF));
                wldStream.seek(headLen + workMemLen + sdbDataLen + structDataLen + 26);// Read 2 Byte Checksum
                int checkSum = wldStream.readUnsignedShort();
                System.out.println("Checksum: 0x" + Integer.toHexString(checkSum));
                // CRC Calculation
                wldStream.seek(headLen-2); // Len MC7 Code + MC7 Code
                int crc = 0x0000;
                int polynomial = 0x9003;
                byte b;
                b = s7BlockType;
                for (int i = 0; i < 8; i++) {
                    boolean bit = ((b >> (7-i) & 1) == 1);
                    boolean c15 = ((crc >> 15    & 1) == 1);
                    crc <<= 1;
                    if (c15 ^ bit) crc ^= polynomial;
                }        
                for (int count = 0; count < workMemLen+2; count++) {
                b = wldStream.readByte();
                    for (int i = 0; i < 8; i++) {
                        boolean bit = ((b >> (7-i) & 1) == 1);
                        boolean c15 = ((crc >> 15    & 1) == 1);
                        crc <<= 1;
                        if (c15 ^ bit) crc ^= polynomial;
                     }
                }
                crc &=0xFFFF;
                System.out.println("Checksum Calculated: 0x" + Integer.toHexString(crc));
                // End of CRC Calculation
                wldStream.close();
            } catch (FileNotFoundException ex) {
                System.out.println("Unable to open file '" + fileName + "'");
            } catch (IOException ex) {
                System.out.println("Error reading file '" + fileName + "'");
                // Or we could just do this:
                // ex.printStackTrace();
            }
        } // End Main
    } // End Class

  4. Folgender Benutzer sagt Danke zu Georgi für den nützlichen Beitrag:

    Bernd_Otter (07.10.2016)

  5. #14
    Registriert seit
    03.10.2014
    Beiträge
    12
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Georgi,

    erstmal vielen Dank für die Infos. Ich versuche gerade die CRC-Summe für einen kurzen FC nach Deinen Angaben zu berechnen, komme jedoch nicht auf das Ergebnis was für diesen FC in der SUBBLK.DBF abgelegt ist. Um herauszufinden wo der Fehler liegt oder ob die Berechnung der CRC in der SUBBLK.DBF anders erfolgt hier mein Vorgehen.

    1. Um möglichst die gleichen Voraussetzungen zu haben wie Du habe ich meinen FC in eine wld-Datei exportiert und die folgenden Bytes für die Generierung der Prüfsumme identifiziert:
      Byte 5 = 0x0C [da ein FC vorliegt]
      Byte 34, 35 = 0x00 0x0E [da der MC7code 14 Byte lang ist]
      Byte 36 bis 36+14-1 = 0xC0 0x00 0xC1 0x00 0xC3 0x00 0xC4 0x00 0xC5 0x00 0xD8 0x80 0x65 0x00 [MC7code]
      Zusammen = 0x0C 0x00 0x0E 0xC0 0x00 0xC1 0x00 0xC3 0x00 0xC4 0x00 0xC5 0x00 0xD8 0x80 0x65 0x00
    2. Jetzt habe ich Deine Parameter und die in Punkt 1 zusammengefügten Eingangsdaten für die CRC-Berechnung in folgende Webseite eingegeben http://www.sunshine2k.de/coding/java...rc/crc_js.html.
      Unbenannt.PNG


    Das Ergebnis lautet 0x7822 was 30754 entspricht. In der SUBBLK.DBF sind jedoch 8824 angegeben was 0x2278 entspricht. Habe ich bei der Berechnung einen Fehler gemacht?


    Viele Grüße

    Otter

  6. #15
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.645
    Danke
    208
    Erhielt 409 Danke für 328 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Vlt. musst du die bytes noch drehen, endianess

Ähnliche Themen

  1. Block DB/FC/FB
    Von mariob im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 04.10.2010, 12:30
  2. ProTool Projekt Upload
    Von manas im Forum HMI
    Antworten: 3
    Letzter Beitrag: 30.03.2010, 12:01
  3. Upload von OP Progs.
    Von marc core im Forum HMI
    Antworten: 1
    Letzter Beitrag: 28.02.2006, 17:05
  4. phpBB Upload...
    Von Jochen Kühner im Forum Stammtisch
    Antworten: 2
    Letzter Beitrag: 04.11.2004, 11:00
  5. Read-Only: Upload von Bausteinen
    Von volker im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 22.09.2003, 21:38

Lesezeichen

Berechtigungen

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