| | |
| | | import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType; |
| | | import com.github.xingshuangs.iot.protocol.s7.service.MultiAddressWrite; |
| | | import com.github.xingshuangs.iot.protocol.s7.service.S7PLC; |
| | | import com.github.xingshuangs.iot.utils.FloatUtil; |
| | | import com.google.common.primitives.Bytes; |
| | | import org.apache.ibatis.jdbc.Null; |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | private int getIndexFromAddress(String address) { |
| | |
| | | public List<Short> ReadWord(String address, int count) { |
| | | if (s7PLC == null) |
| | | return null; |
| | | |
| | | List<String> addresslist = GetAddressList(address, count, 16); |
| | | try { |
| | | return s7PLC.readInt16(addresslist); |
| | |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | public byte[] Readbyte(String address, int count) { |
| | | byte[] byt=new byte[count]; |
| | | int wordcount=((count%2==0)?count/2:count+1); |
| | | List<Short> word=ReadWord(address,wordcount); |
| | | |
| | | return byt; |
| | | } |
| | | /** |
| | | * 按指定的地址 读取byte结果集 |
| | | * |
| | |
| | | } |
| | | return addresslist; |
| | | } |
| | | public void writeString(String addr,String data) { |
| | | s7PLC.writeString(addr,data); |
| | | } |
| | | |
| | | public String readStrings(String addr) { |
| | | return s7PLC.readString(addr); |
| | | } |
| | | |
| | | public float readFloat32(String addr) { |
| | | return s7PLC.readFloat32(addr); |
| | | } |
| | | |
| | | public double readFloat64(String addr) { |
| | | return s7PLC.readFloat64(addr); |
| | | } |
| | | // public float[] readfloat32(List<String> addr) { |
| | | // float[] result=new float[addr.size()]; |
| | | // for (int i=0;i<addr.size();i++) { |
| | | // String address=addr.get(i); |
| | | // result[i]=readFloat32(address); |
| | | // } |
| | | // return result; |
| | | // } |
| | | |
| | | public List<Float> readFloat32(List<String> addr) { |
| | | List<Float> result=new ArrayList<>(); |
| | | for (String string : addr) { |
| | | if(string.equals("DB10.2000")||string.equals("DB10.2008")){ |
| | | result.add((float)s7PLC.readFloat64(string)); |
| | | }else if (string.equals("DB10.224")||string.equals("DB10.226")||string.equals("DB10.228")||string.equals("DB10.230")) { |
| | | List<Short> word=ReadWord(string,1); |
| | | for (Short short1 : word) { |
| | | result.add((float)short1); |
| | | } |
| | | } |
| | | else{ |
| | | result.add(s7PLC.readFloat32(string)); |
| | | } |
| | | |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | public void writeFloat32(String addr, float data) { |
| | | s7PLC.writeFloat32(addr,data); |
| | | } |
| | | |
| | | |
| | | } |