|
|
|
|
@ -320,7 +320,11 @@ public class PLCConnectionExample {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
public synchronized boolean writePlcDataTaskId(String key){
|
|
|
|
|
int value = taskMap.get(key + "-out");
|
|
|
|
|
log.info("写入任务号:" + key);
|
|
|
|
|
for (String key1 : taskMap.keySet()){
|
|
|
|
|
log.info("taskMap key1:" + key1 + " value:" + taskMap.get(key1));
|
|
|
|
|
}
|
|
|
|
|
int value = taskMap.get(key);
|
|
|
|
|
if (value == 0) {
|
|
|
|
|
// 已经写入完成
|
|
|
|
|
return false;
|
|
|
|
|
@ -437,62 +441,23 @@ public class PLCConnectionExample {
|
|
|
|
|
// 分拣线PLC型号是西门子1518,机架号0,插槽1,IP是10.69.105.122。
|
|
|
|
|
//交互数据块地址是DB121
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
// 创建S7Client实例
|
|
|
|
|
S7Client client = new S7Client();
|
|
|
|
|
|
|
|
|
|
// 连接PLC
|
|
|
|
|
client.ConnectTo("10.69.105.122", 0, 1); // IP, Rack, Slot
|
|
|
|
|
|
|
|
|
|
if (client.Connected) {
|
|
|
|
|
log.info("连接成功");
|
|
|
|
|
|
|
|
|
|
// 定义数据块和偏移量
|
|
|
|
|
int dbNumber = 121; // DB121
|
|
|
|
|
int startOffset = 74; // 起始地址
|
|
|
|
|
int sizeToRead = 1; // 读取4个字节
|
|
|
|
|
//
|
|
|
|
|
byte[] buffer = new byte[sizeToRead];
|
|
|
|
|
boolean bitValue = true;
|
|
|
|
|
|
|
|
|
|
// // 读取DB121的数据
|
|
|
|
|
int result = client.ReadArea(S7.S7AreaDB, dbNumber, startOffset, sizeToRead, buffer);
|
|
|
|
|
if (result == 0) {
|
|
|
|
|
log.info("读取成功");
|
|
|
|
|
// 获取指定 bit 的值
|
|
|
|
|
bitValue= S7.GetBitAt(buffer, 0, 1);
|
|
|
|
|
// log.info(bitValue);
|
|
|
|
|
//
|
|
|
|
|
// int i = ((buffer[0] & 0xFF) << 24) |
|
|
|
|
|
// ((buffer[1] & 0xFF) << 16) |
|
|
|
|
|
// ((buffer[2] & 0xFF) << 8) |
|
|
|
|
|
// (buffer[3] & 0xFF);
|
|
|
|
|
System.out.println(bitValue);
|
|
|
|
|
String folderPath = "D:\\PycharmProjects\\yolo\\puer\\train";
|
|
|
|
|
File folder = new File(folderPath);
|
|
|
|
|
|
|
|
|
|
if (folder.exists() && folder.isDirectory()) {
|
|
|
|
|
File[] subFolders = folder.listFiles(File::isDirectory);
|
|
|
|
|
if (subFolders != null && subFolders.length > 0) {
|
|
|
|
|
System.out.println("文件夹: " + folderPath);
|
|
|
|
|
System.out.println("子文件夹列表:");
|
|
|
|
|
for (File subFolder : subFolders) {
|
|
|
|
|
System.out.print("'"+subFolder.getName()+"',");
|
|
|
|
|
}
|
|
|
|
|
System.out.println("共 " + subFolders.length + " 个文件夹");
|
|
|
|
|
} else {
|
|
|
|
|
log.info("读取失败,错误码: " + result);
|
|
|
|
|
System.out.println("该文件夹下没有子文件夹");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 修改第一个字节的第一个位为true(即设置bit 0)
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
// S7.SetDIntAt(buffer,0,3001);
|
|
|
|
|
|
|
|
|
|
// 写回DB121
|
|
|
|
|
S7.SetBitAt(buffer, 0, 1, true);
|
|
|
|
|
//
|
|
|
|
|
// // 写回DB121
|
|
|
|
|
result = client.WriteArea(S7.S7AreaDB, dbNumber,startOffset, sizeToRead, buffer);
|
|
|
|
|
// if (result == 0) {
|
|
|
|
|
// log.info("写入成功位置:"+startOffset+":"+0);
|
|
|
|
|
//// return true;
|
|
|
|
|
// } else {
|
|
|
|
|
//// updateConnection(client);
|
|
|
|
|
// log.info("写入失败,错误码: " + result);
|
|
|
|
|
//// return false;
|
|
|
|
|
// }
|
|
|
|
|
// 断开连接
|
|
|
|
|
client.Disconnect();
|
|
|
|
|
} else {
|
|
|
|
|
log.info("连接失败");
|
|
|
|
|
System.out.println("指定的路径不存在或不是文件夹");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|