From 6b8cb1b9d271260b0d7d19334aa9e9ac24d4ae3c Mon Sep 17 00:00:00 2001 From: 严智鑫 <test> Date: 星期一, 07 四月 2025 17:57:53 +0800 Subject: [PATCH] 通讯方式更改 --- nglib/src/ng/devices/ModbusService.java | 104 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 94 insertions(+), 10 deletions(-) diff --git a/nglib/src/ng/devices/ModbusService.java b/nglib/src/ng/devices/ModbusService.java index 897a45a..a183c95 100644 --- a/nglib/src/ng/devices/ModbusService.java +++ b/nglib/src/ng/devices/ModbusService.java @@ -1,6 +1,9 @@ package ng.devices; +import java.sql.CallableStatement; +import java.sql.Connection; import java.sql.SQLException; +import java.util.List; import builder.S7control; import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType; @@ -10,6 +13,7 @@ public abstract class ModbusService implements Runnable { + //modbus瀹㈡埛绔� protected ModbusClient client; @@ -28,6 +32,7 @@ protected String ip; //璁惧绔彛 protected int port; + protected String remarks; //绾跨▼ java.lang.Thread thread; //缂撳啿鍖猴紙鏈嶅姟鍏佽鍙戦�佽秴杩囧崗璁姹傜殑鏁版嵁锛屾墍浠ョ紦鍐插尯鏇村ぇ锛� @@ -43,7 +48,7 @@ } //杩愯 - public void Run(int MachineID,String ip,int port,byte state,int ReadOffset,int ReadSize,int timeout,byte FunctionType){ + public void Run(int MachineID,String ip,int port,byte state,int ReadOffset,int ReadSize,int timeout,byte FunctionType,String remarks){ //璁剧疆鍙傛暟 this.machineID=MachineID; this.ip=ip; @@ -51,6 +56,7 @@ this.readOffset=ReadOffset; this.readSize=ReadSize; this.functionType= FunctionType; + this.remarks= remarks; //鍚姩绾跨▼ if(this.port==102){ @@ -98,6 +104,92 @@ } return msg; } + //涓�娆7璇诲彇琛屼负 + String onceS7(){ + try { + DBSession sn=null; + String result=null; + String flag=null; + String messsage="000000000000000000"; + EPlcType ePlcType=null; + if(this.machineID==78){ + ePlcType=EPlcType.S1500; + }else{ + ePlcType=EPlcType.S1200; + } + S7control s7=new S7control(ePlcType, ip, port, 0, 0); + //List<Integer> word=s7.readWord("DB34.122", 1); + List<Integer> listWord=s7.readWord(this.remarks,(this.readSize/2)); + if(listWord==null){ + System.out.println("notread"); + return ""; + } + for(int i=0;i<listWord.size();i++){ + //System.out.println("i "+listWord.size()+" "+messsage); + messsage+=HexUtil.intTo2ByteHex(listWord.get(i)); + } + + //System.out.println(messsage); + //System.out.println(ip+" "+s7.readWord("DB34.122", 1)); + //鏁版嵁搴� + DBHelper db=DBHelper.getDBHelper("mes"); + try{ + //鍒涘缓杩炴帴 + sn=db.createSession(false); + Connection con= sn.getConnection(); + //璋冪敤閭d釜瀛樺偍杩囩▼ + CallableStatement sql=con.prepareCall("{call Total_method(?,?,?,?)}"); + sql.registerOutParameter(3, java.sql.Types.VARCHAR); + sql.registerOutParameter(4, java.sql.Types.VARCHAR); + sql.setString(1, messsage); + sql.setLong(2, machineID); + sql.execute(); + //璇诲彇杩斿洖鍙傛暟 + result= sql.getString(3); + flag= sql.getString(4); + if (result!=null&&result.length()>0){ + String []results=result.split(","); + //寰楀埌瀛樺偍杩囩▼杩斿洖鐨勫�硷紝鏁扮粍绗竴涓负鍦板潃锛岀浜屼釜涓哄�� + int resultsLength=results.length; + int resultsSize=resultsLength/2; + + for(int i=1;i<resultsSize+1;i++){ + int addressIndex=(i-1)*2; + int valueIndex=i*2-1; + s7.writeWord(results[addressIndex],Integer.valueOf(results[valueIndex]));//鍙傛暟缁勫啓鍏� + } +// if(results.length==2){ +// s7.writeWord(results[0],Integer.valueOf(results[1]) ); +// } +// if(results.length==4){ +// s7.writeWord(results[0],Integer.valueOf(results[1]));//閰嶆柟 +// s7.writeWord(results[2],Integer.valueOf(results[3]));//閫熷害 +// } + List<Integer> listWord2=s7.readWord(this.remarks,(this.readSize/2)); + System.out.println(listWord2.size()); + + } + + + } + catch(Exception e){ + e.printStackTrace(); + } + finally{ + sn.close(); + + } + + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + finally{ + + } + + return ""; + } public void SendPLC(int Address, int count, byte[] buffer, int offset) { this.client.write(Address, count, buffer, offset); @@ -123,15 +215,7 @@ try { java.lang.Thread.sleep(UpadateInterval); if(this.port==102){ - if(this.machineID==78){ - S7control s7=new S7control(EPlcType.S1500, ip, port, 0, 0); - System.out.println("S7-S1500:"+s7.readWord("DB34.122", 1)); - s7.writeWord("DB34.122",26); - System.out.println("S7-S1500:"+s7.readWord("DB34.122", 1)); - }else{ - S7control s7=new S7control(EPlcType.S1200, ip, port, 0, 0); - System.out.println("S7-S1200:"+s7.readWord("DB20.0", 1)); - } + String back=onceS7(); }else{ String back=once(); } -- Gitblit v1.8.0