Samples: TcJavaToAds 6.2 Access by variable name The following program accesses a PLC variable that does not have an address. Access must therefore be made by the variable name. Unpack the sample program 'Access by Variable Name': https://infosys.beckhoff.com/content/1033/ tcjavatoads/Resources/12475091595/.zip. To execute the *.jar sample, the command 'java -classpath "Sample02.jar;[path to TcJavaToAds.jar] Main' must be executed in the console in the correct directory (example path: "C:TwinCAT\Ads Api\AdsToJava\*"). For this, java must be entered in the environment variables.
import de.beckhoff.jni.Convert; import de.beckhoff.jni.JNIByteBuffer; import de.beckhoff.jni.tcads.AmsAddr; import de.beckhoff.jni.tcads.AdsCallDllFunction; public class Main { public static void main(String[] args) { long err; AmsAddr addr = new AmsAddr(); JNIByteBuffer handleBuff = new JNIByteBuffer(Integer.SIZE / Byte.SIZE); JNIByteBuffer symbolBuff = new JNIByteBuffer( Convert.StringToByteArr("MAIN.PLCVar",true)); JNIByteBuffer dataBuff = new JNIByteBuffer(Integer.SIZE / Byte.SIZE); // Open communication AdsCallDllFunction.adsPortOpen(); err = AdsCallDllFunction.getLocalAddress(addr); addr.setPort(AdsCallDllFunction.AMSPORT_R0_PLC_RTS1); if (err != 0) { System.out.println("Error:
Open communication: 0x" + Long.toHexString(err)); } else { System.out.println("Success: Open communication!"); } // Get handle by symbol name err = AdsCallDllFunction.adsSyncReadWriteReq(addr, AdsCallDllFunction.ADSIGRP_SYM_HNDBYNAME, 0x0, handleBuff.getUsedBytesCount(), handleBuff, symbolBuff.getUsedBytesCount(), symbolBuff); if(err!=0) { System.out.println("Error: Get handle: 0x" + Long.toHexString(err)); } else { System.out.println("Success: Get handle!"); } // Handle:
byte[] to int int hdlBuffToInt = Convert.ByteArrToInt(handleBuff.getByteArray()); // Read value by handle err = AdsCallDllFunction.adsSyncReadReq(addr, AdsCallDllFunction.ADSIGRP_SYM_VALBYHND, hdlBuffToInt, 0x4, dataBuff); if(err!=0) { System.out.println("Error: Read by handle: 0x" + Long.toHexString(err)); } else { // Data: byte[] to int int intVal = Convert.ByteArrToInt(dataBuff.getByteArray()); System.out.println("Success: PLCVar value: " + intVal); } // Release handle err = AdsCallDllFunction.adsSyncWriteReq(addr, TX1000 32 Version: 1.1