| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292 |
- package com.jeesite.modules;
- import com.github.s7connector.api.DaveArea;
- import com.github.s7connector.api.S7Connector;
- import com.github.s7connector.api.S7Serializer;
- import com.github.s7connector.api.factory.S7ConnectorFactory;
- import com.github.s7connector.api.factory.S7SerializerFactory;
- import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
- import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
- import java.math.BigInteger;
- public class S7 {
- public static void main(String[] args) {
- // 192.168.0.200
- S7PLC s7PLC = new S7PLC(EPlcType.SINUMERIK_828D, "192.168.1.7");
- s7PLC.readStatus();
- int workMode = s7PLC.readWorkMode();
- // S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.0.200");
- // s7PLC.writeString("DB1.400","000020015308-0100101425042500137");
- // System.out.println("单枪-条码:"+s7PLC.readString("DB1.400.0",40));
- // System.out.println("单枪-产品:"+s7PLC.readInt16("DB1.440.0"));
- // System.out.println("单枪-拉力:"+s7PLC.readInt32("DB1.144.0"));
- // System.out.println("单枪-位移:"+s7PLC.readFloat32("DB1.148.0"));
- // System.out.println("单枪-结果:"+s7PLC.readString("DB1.450.0",2));
- // System.out.println("单枪-预设值:"+s7PLC.readInt32("DB1.38.0"));
- // System.out.println("单枪-实际值:"+s7PLC.readInt32("DB1.184.0"));
- // System.out.println("单枪-OK数:"+s7PLC.readInt32("DB1.176.0"));
- // System.out.println("单枪-NG数:"+s7PLC.readInt32("DB1.180.0"));
- // System.out.println("单枪-基准拉力:"+s7PLC.readInt16("DB1.442.0"));
- // System.out.println("单枪-基准位移:"+s7PLC.readInt32("DB1.444.0"));
- // System.out.println("单枪-拉力上限:"+s7PLC.readInt32("DB1.160.0"));
- // System.out.println("单枪-拉力下限:"+s7PLC.readInt32("DB1.164.0"));
- // System.out.println("单枪-位移上限:"+s7PLC.readInt32("DB1.168.0"));
- // System.out.println("单枪-位移下限:"+s7PLC.readInt32("DB1.172.0"));
- // System.out.println("单枪-拉铆完成信号:"+s7PLC.readBoolean("DB1.314.5"));
- // System.out.println("单枪-MES屏蔽:"+s7PLC.readBoolean("DB5.0.1"));
- // System.out.println("单枪-MES启用:"+s7PLC.readBoolean("DB5.0.0"));
- // s7PLC
- // s7PLC.writeBoolean("DB1.2.2",true);
- // s7PLC.writeBoolean("DB1.2.3",false);
- System.out.println("A枪-强制使用:"+s7PLC.readBoolean("DB1.2.3"));
- System.out.println("A枪-报警断气:"+s7PLC.readBoolean("DB1.1.0"));
- System.out.println("A枪-扫码功能:"+s7PLC.readBoolean("DB1.2.2"));
- System.out.println("A枪-授权运行:"+s7PLC.readBoolean("DB1.3.0"));
- System.out.println("A枪-SV(预设)数量:"+s7PLC.readInt32("DB1.38.0"));
- System.out.println("A枪-PV(实际)数量:"+s7PLC.readInt32("DB1.184.0"));
- System.out.println("A枪-OK数量:"+s7PLC.readInt32("DB1.176.0"));
- System.out.println("A枪-NG数量:"+s7PLC.readInt32("DB1.180.0"));
- System.out.println("A枪-产品选择:"+s7PLC.readInt16("DB1.54.0"));
- System.out.println("A枪-最大拉力:"+s7PLC.readInt32("DB1.144.0"));
- System.out.println("A枪-最大位移:"+s7PLC.readFloat32("DB1.148.0"));
- System.out.println("A枪-基准拉力:"+s7PLC.readInt32("DB1.152.0"));
- System.out.println("A枪-基准位移:"+s7PLC.readFloat32("DB1.156.0"));
- // System.out.println("A枪-拉力上限:"+s7PLC.readInt32("DB1.160.0"));
- // System.out.println("A枪-拉力下限:"+s7PLC.readInt32("DB1.164.0"));
- // System.out.println("A枪-位移上限:"+s7PLC.readFloat32("DB1.168.0"));
- // System.out.println("A枪-位移下限:"+s7PLC.readFloat32("DB1.172.0"));
- System.out.println("A枪-拉力上限:"+s7PLC.readInt32("DB1.22.0"));
- System.out.println("A枪-拉力下限:"+s7PLC.readInt32("DB1.26.0"));
- System.out.println("A枪-位移上限:"+s7PLC.readFloat32("DB1.30.0"));
- System.out.println("A枪-位移下限:"+s7PLC.readFloat32("DB1.34.0"));
- System.out.println("A枪-拉力OK:"+s7PLC.readBoolean("DB1.314.0"));
- System.out.println("A枪-拉力NG:"+s7PLC.readBoolean("DB1.314.1"));
- System.out.println("A枪-位移OK:"+s7PLC.readBoolean("DB1.314.2"));
- System.out.println("A枪-位移NG:"+s7PLC.readBoolean("DB1.314.3"));
- System.out.println("A枪-拉铆完成信号:"+s7PLC.readBoolean("DB1.314.5"));
- System.out.println("A枪-判断结果:"+s7PLC.readString("DB1.398.0",2));
- System.out.println("A枪-实时条码:"+s7PLC.readString("DB1.400.0",50));
- System.out.println("A枪-枪号:"+s7PLC.readInt16("DB1.450.0"));
- System.out.println("A枪-产品型号:"+s7PLC.readInt16("DB1.452.0"));
- System.out.println("A枪-基准拉力:"+s7PLC.readInt16("DB1.454.0"));
- System.out.println("A枪-基准位移:"+s7PLC.readInt16("DB1.456.0"));
- System.out.println("A枪-最大拉力:"+s7PLC.readInt16("DB1.458.0"));
- System.out.println("A枪-最大位移:"+s7PLC.readInt16("DB1.460.0"));
- System.out.println("A枪-结果判断:"+s7PLC.readString("DB1.462.0",2));
- System.out.println("A枪-当前数量:"+s7PLC.readInt16("DB1.464.4"));
- System.out.println("A枪-总铆接数:"+s7PLC.readString("DB1.466.0",10));
- System.out.println("A枪-条码信息:"+s7PLC.readString("DB1.476.0",50));
- System.out.println("B枪-扫码功能:"+s7PLC.readBoolean("DB1.532.2"));
- // System.out.println("B枪-授权运行:"+s7PLC.readBoolean("DB1.3.0"));
- System.out.println("B枪-SV(预设)数量:"+s7PLC.readInt32("DB1.568.0"));
- System.out.println("B枪-PV(实际)数量:"+s7PLC.readInt32("DB1.714.0"));
- System.out.println("B枪-OK数量:"+s7PLC.readInt32("DB1.706.0"));
- System.out.println("B枪-NG数量:"+s7PLC.readInt32("DB1.710.0"));
- System.out.println("B枪-产品选择:"+s7PLC.readInt16("DB1.584.0"));
- System.out.println("B枪-最大拉力:"+s7PLC.readInt32("DB1.674.0"));
- System.out.println("B枪-最大位移:"+s7PLC.readFloat32("DB1.678.0"));
- System.out.println("B枪-基准拉力:"+s7PLC.readInt32("DB1.682.0"));
- System.out.println("B枪-基准位移:"+s7PLC.readFloat32("DB1.686.0"));
- // System.out.println("B枪-拉力上限:"+s7PLC.readInt32("DB1.690.0"));
- // System.out.println("B枪-拉力下限:"+s7PLC.readInt32("DB1.694.0"));
- // System.out.println("B枪-位移上限:"+s7PLC.readFloat32("DB1.698.0"));
- // System.out.println("B枪-位移下限:"+s7PLC.readFloat32("DB1.702.0"));
- System.out.println("B枪-拉力上限:"+s7PLC.readInt32("DB1.552.0"));
- System.out.println("B枪-拉力下限:"+s7PLC.readInt32("DB1.556.0"));
- System.out.println("B枪-位移上限:"+s7PLC.readFloat32("DB1.560.0"));
- System.out.println("B枪-位移下限:"+s7PLC.readFloat32("DB1.564.0"));
- System.out.println("B枪-拉力OK:"+s7PLC.readBoolean("DB1.844.0"));
- System.out.println("B枪-拉力NG:"+s7PLC.readBoolean("DB1.844.1"));
- System.out.println("B枪-位移OK:"+s7PLC.readBoolean("DB1.844.2"));
- System.out.println("B枪-位移NG:"+s7PLC.readBoolean("DB1.844.3"));
- System.out.println("B枪-拉铆完成信号:"+s7PLC.readBoolean("DB1.844.5"));
- System.out.println("B枪-最大拉力:"+s7PLC.readInt32("DB1.846"));
- System.out.println("B枪-最大位移:"+s7PLC.readFloat32("DB1.850"));
- System.out.println("B枪-判断结果:"+s7PLC.readString("DB1.992.0",2));
- System.out.println("B枪-实时条码:"+s7PLC.readString("DB1.930.0",50));
- System.out.println("B枪-枪号:"+s7PLC.readInt16("DB1.980.0"));
- System.out.println("B枪-产品型号:"+s7PLC.readInt16("DB1.982.0"));
- System.out.println("B枪-基准拉力:"+s7PLC.readInt16("DB1.984.0"));
- System.out.println("B枪-基准位移:"+s7PLC.readInt16("DB1.986.0"));
- System.out.println("B枪-最大拉力:"+s7PLC.readInt16("DB1.988.0"));
- System.out.println("B枪-最大位移:"+s7PLC.readInt16("DB1.990.0"));
- System.out.println("B枪-结果判断:"+s7PLC.readString("DB1.992.0",2));
- System.out.println("B枪-当前数量:"+s7PLC.readInt16("DB1.994.4"));
- System.out.println("B枪-总铆接数:"+s7PLC.readString("DB1.996.0",10));
- System.out.println("B枪-条码信息:"+s7PLC.readString("DB1.1006.0",50));
- // String programName = s7PLC.readProgramName();;
- // System.out.println("programName:"+programName);
- ////// String programName = s7PLC.readProgramName();;
- // System.out.println("programName:"+s7PLC.readStatus());
- // // S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.0.41");
- // S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.7.100");
- // Short dya = s7PLC.readInt16("DB1010.20");
- // Short dla = s7PLC.readInt16("DB1.22");
- // Short ssa = s7PLC.readInt16("DB1.24");
- // Short cwa = s7PLC.readInt16("DB1.26");
- // Short joba = s7PLC.readInt16("DB1.28");
- // System.err.println(s7PLC.readFloat32("DB1010.2")+"");
- // System.err.println(s7PLC.readFloat32("DB1010.8")+"");
- // System.err.println(s7PLC.readFloat32("DB1010.14")+"");
- // System.err.println(s7PLC.readInt16("DB1010.18")+"");
- // System.err.println(s7PLC.readInt16("DB1010.20")+"");
- //
- // System.err.println(s7PLC.readFloat32("DB1010.26")+"");
- // System.err.println(s7PLC.readFloat32("DB1010.34")+"");
- // System.err.println(s7PLC.readFloat32("DB1010.42")+"");
- // System.err.println(s7PLC.readInt16("DB1010.46")+"");
- // System.err.println(s7PLC.readInt16("DB1010.48")+"");
- //
- // System.err.println(s7PLC.readFloat32("DB1010.54")+"");
- // System.err.println(s7PLC.readFloat32("DB1010.62")+"");
- // System.err.println(s7PLC.readFloat32("DB1010.70")+"");
- // System.err.println(s7PLC.readInt16("DB1010.74")+"");
- // System.err.println(s7PLC.readInt16("DB1010.76")+"");
- // Float dyb = s7PLC.readFloat32("DB2000.50");
- // Float dlb = s7PLC.readFloat32("DB2000.54");
- // Float ssb = s7PLC.readFloat32("DB2000.58");
- // Short cwb = s7PLC.readInt16("DB2000.62");
- // Short jobb = s7PLC.readInt16("DB2000.64");
- // Short dyb = s7PLC.readInt16("DB1.30");
- // Short dlb = s7PLC.readInt16("DB1.32");
- // Short ssb = s7PLC.readInt16("DB1.34");
- // Short cwb = s7PLC.readInt16("DB1.36");
- // Short jobb = s7PLC.readInt16("DB1.38");
- // System.err.println(dyb+"");
- // System.err.println(dlb+"");
- // System.err.println(ssb+"");
- // System.err.println(cwb+"");
- // System.err.println(jobb+"");
- // S7PLC s7PLC = new S7PLC(EPlcType.S200_SMART,"192.168.2.1");
- // s7PLC.writeBoolean("V800.1",true);
- //// s7PLC.writeBoolean("V801.0",true);
- //// s7PLC.writeBoolean("V800.0",true);
- //
- // System.out.println(s7PLC.readBoolean("V800.0"));
- // System.out.println(s7PLC.readBoolean("V801.0"));
- // System.out.println(s7PLC.readBoolean("V800.1"));
- // Float weight = Float.valueOf(" ");
- // System.out.println(Float.valueOf(" "));
- // S7PLC s7PLC = new S7PLC(EPlcType.SINUMERIK_828D, "192.168.0.7");
- //System.out.println(s7PLC.readFloat32("DB9050.12"));
- //System.out.println(s7PLC.readFloat32("DB9050.14"));
- // System.out.println(new BigInteger(s7PLC.readByte("DB9050",4)).floatValue());
- // S7Connector s7Connector = null;
- // try {
- // if (s7Connector == null) {
- //
- // //PLC地址
- // String ipAddress = "192.168.7.100";
- // //默认端口
- //// int port = 102;
- // int rack = 0;
- // int slot = 3;
- // int timeout = 10000;
- // s7Connector =
- // S7ConnectorFactory
- // .buildTCPConnector()
- // .withHost(ipAddress)
- //// .withPort(port) //optional
- //// .withRack(rack) //optional
- //// .withSlot(slot) //optional
- // .withTimeout(timeout) //连接超时时间
- // .build();
- // S7Serializer s7Serializer2L = S7SerializerFactory.buildSerializer(s7Connector);
- //
- //
- //
- //
- //// String binaryString = "00000001";
- //// int length1 = binaryString.length();
- //// byte[] byteArray = new byte[length1 / 8];
- //// for (int i = 0; i < byteArray.length; i++) {
- //// String byteString = binaryString.substring(i * 8, (i + 1) * 8);
- //// byteArray[i] = (byte) Integer.parseInt(byteString, 2);
- //// }
- //
- // byte[] bytes2 = new byte[1];
- // bytes2[0] = 0x01;
- // s7Connector.write(DaveArea.DB,9052,1,bytes2);
- ////
- //// System.out.println("DB9031.DBW60:"+new BigInteger(xtob(s7Connector.read(DaveArea.DB, 1010, 2, 0))).intValue());
- //
- //
- // System.out.println("DB9050.DBD0:"+new BigInteger(xtob(s7Connector.read(DaveArea.DB, 9050, 4, 0))).floatValue());
- // System.out.println("DB9050.DBD4:"+new BigInteger(xtob(s7Connector.read(DaveArea.DB, 9050, 4, 4))).intValue());
- // System.out.println("DB9050.DBD8:"+new BigInteger(xtob(s7Connector.read(DaveArea.DB, 9050, 4, 8))).intValue());
- // System.out.println("DB9050.DBD12:"+new BigInteger(xtob(s7Connector.read(DaveArea.DB, 9050, 4, 12))).intValue());
- // System.out.println("DB9050.DBD16:"+new BigInteger(xtob(s7Connector.read(DaveArea.DB, 9050, 4, 16))).intValue());
- //
- //
- // System.out.println("DB9052.DBB1:"+new BigInteger(xtob(s7Connector.read(DaveArea.DB, 9052, 1, 1))).intValue());
- //
- // byte[] bytes3 = s7Connector.read(DaveArea.DB, 9052, 1, 1);
- // System.out.println("DB9052.DBB1:"+byteToBinaryString(bytes3));
- //
- //
- // byte[] bytes = s7Connector.read(DaveArea.DB, 9052, 1, 0);
- // System.out.println("DB9052.DBX0:"+byteToBinaryString(bytes));
- //
- // System.out.println("DB9052.DBX0:"+getBit(bytes[0],0));
- // }
- // }catch (Exception e){
- // e.printStackTrace();
- // }
- }
- public static int getBit(byte b, int n) {
- // 将byte转换为二进制字符串
- String binaryString = Integer.toBinaryString(b & 0xFF);
- // 补足位数到8位
- binaryString = String.format("%8s", binaryString).replace(' ', '0');
- // 获取第n位的字符,然后转换为整数
- return binaryString.charAt(n) == '1' ? 1 : 0;
- }
- private static String byteToBinaryString(byte[] byteArray) {
- StringBuilder binaryString = new StringBuilder();
- for (byte b : byteArray) {
- binaryString.append(String.format("%8s", Integer.toBinaryString(b & 0xFF)).replace(' ', '0'));
- }
- return binaryString.toString();
- }
- private static byte[] xtob( byte[] bytes){
- // 创建新的byte数组并复制原始数据
- byte[] reversedBytes = new byte[bytes.length];
- System.arraycopy(bytes, 0, reversedBytes, 0, bytes.length);
- // 反转byte数组元素的位置
- for (int i = 0; i < bytes.length / 2; i++) {
- byte temp = reversedBytes[i];
- reversedBytes[i] = reversedBytes[reversedBytes.length - 1 - i];
- reversedBytes[reversedBytes.length - 1 - i] = temp;
- }
- return reversedBytes;
- }
- }
|