Handle einer SPS Variablen löschen

In diesem Beispiel wird ein Handle einer SPS Variable geholt und im Anschluss gelöscht:


import de.beckhoff.jni.JNIByteBuffer;
import de.beckhoff.jni.tcads.AdsCallDllFunction;
import de.beckhoff.jni.tcads.AmsAddr;

public class Main {

// Note that in TwinCAT 2 this has to be changed to ".PLCVar"
private static final String PLC_VAR = "MAIN.PLCVar";

public static void main(String[] args) {
    long err;
    AmsAddr addr = new AmsAddr();
    JNIByteBuffer symBuff;
    JNIByteBuffer handleBuff = new JNIByteBuffer(Integer.SIZE / Byte.SIZE);

    try {
     // Open communication    
     AdsCallDllFunction.adsPortOpen();
     err = AdsCallDllFunction.getLocalAddress(addr);
     addr.setPort(851);

     if (err != 0) {
        System.out.println("Error: Open communication: 0x"
            + Long.toHexString(err));
     } else {
        System.out.println("Success: Open communication!");
     }

     // Convert Symbol name to byte buffer
     symBuff = new JNIByteBuffer(PLC_VAR.getBytes());

     // Get handle via symbol name
     err = AdsCallDllFunction.adsSyncReadWriteReq(addr,
         AdsCallDllFunction.ADSIGRP_SYM_HNDBYNAME,
         0,
         handleBuff.getUsedBytesCount(),
         handleBuff,         //buffer for getting handle
         symBuff.getUsedBytesCount(),
         symBuff);         //buffer containg symbol name
    
     if(err!=0) {
        System.out.println("Error: Get Handle: 0x" + Long.toHexString(err));
     } else {
        System.out.println("Success: Get Handle!");
     }
    
     // Release handle
     err = AdsCallDllFunction.adsSyncWriteReq(addr,
         AdsCallDllFunction.ADSIGRP_SYM_RELEASEHND,
         0,
         handleBuff.getUsedBytesCount(),
         handleBuff);
    
     if(err!=0) {
        System.out.println("Error: Release Handle: 0x"
              + Long.toHexString(err));
     } else {
        System.out.println("Success: Handle removed!");
     }

     // Close communication
     err = AdsCallDllFunction.adsPortClose();
     if(err!=0) {
        System.out.println("Error: Close Communication: 0x"
            + Long.toHexString(err));
     }

     System.out.println("Press enter to continue..");
     System.in.read();

    } catch (Exception ex) {
     System.out.println(ex.getMessage());
    }
}
}

Beispielprogramm 'Handle einer SPS Variablen löschen' entpacken.

Um das *.jar Sample ausführen zu können, muss in der Konsole im korrekten Verzeichnis der Befehl 'java -classpath "Sample08.jar;[Pfad zu TcJavaToAds.jar] Main' ausgeführt werden (Beispielpfad: "C:TwinCAT\Ads Api\AdsToJava\*"). Dazu muss Java in den Umgebungsvariablen eingetragen sein.

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende Java-Packages

TwinCAT v3.0 Build 3102, Java

PC or CX (x86)