package com.zy.common; import HslCommunication.Core.Net.NetHandle; import HslCommunication.Core.Transfer.DataFormat; import HslCommunication.Core.Types.ActionOperateExThree; import HslCommunication.Core.Types.ActionOperateExTwo; import HslCommunication.Core.Types.OperateResult; import HslCommunication.Core.Types.OperateResultExOne; import HslCommunication.Enthernet.ComplexNet.NetComplexClient; import HslCommunication.Enthernet.PushNet.NetPushClient; import HslCommunication.Enthernet.SimplifyNet.NetSimplifyClient; import HslCommunication.ModBus.ModbusTcpNet; import HslCommunication.Profinet.Melsec.MelsecA1ENet; import HslCommunication.Profinet.Melsec.MelsecMcAsciiNet; import HslCommunication.Profinet.Melsec.MelsecMcNet; import HslCommunication.Profinet.Siemens.SiemensPLCS; import HslCommunication.Profinet.Siemens.SiemensS7Net; import java.util.Arrays; public class Main { // public static void main(String[] args) throws InterruptedException { // SiemesTest(); // try { // //Constructor[] aa = Integer.class.getDeclaredConstructors(); // //int i = (Integer) (aa[1].newInstance("1")); // //System.out.println(Utilities.bytes2HexString( Utilities.getBytes(String.format("%04x",100),"ASCII"))); // //System.out.println(i); // // //System.out.println(Arrays.toString("123".split("\\." ))); // //ModbusTcpTets(); // //MelsecMcNet melsec_net = new MelsecMcNet("192.168.8.12", 6001); // //System.out.println(melsec_net.ReadInt16("D100").Content); // // SiemensS7Net siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200,"192.168.8.12"); // OperateResult write = siemensS7Net.Write("M200",(short)200); // // if(!write.IsSuccess){ // System.out.println("Write failed:"+write.Message); // } // // OperateResultExOne read = siemensS7Net.ReadInt16("M200"); // if(read.IsSuccess){ // System.out.println("Value:"+read.Content.toString()); // } // else { // System.out.println("Read failed:"+read.Message); // } // } // catch (Exception ex){ // System.out.println(ex.getMessage()); // } // Thread.sleep(1000); // } public static void main(String[] args) { SiemensS7Net siemens_net = new SiemensS7Net(SiemensPLCS.S300,"192.168.6.1"); siemens_net.setSlot((byte) 2); siemens_net.setRack((byte) 0); OperateResult connect = siemens_net.ConnectServer(); if(connect.IsSuccess){ System.out.println("connect success!"); } else { System.out.println("failed:"+connect.Message); } siemens_net.ConnectClose(); short[] array = new short[] {9999,20,31,40,50}; OperateResult db100 = siemens_net.Write("DB8.18", array); if (db100.IsSuccess) { System.out.println("写入成功"); } else { System.out.println("写入失败"); } // OperateResultExOne shortOperateResultExOne = siemens_net.ReadInt16("DB100.2"); // System.out.println(shortOperateResultExOne.Content); OperateResultExOne read = siemens_net.Read("DB8.18", (short) 10); if (read.IsSuccess) { // for (int i = 0; i<10; i=i+2) { // System.out.println(siemens_net.getByteTransform().TransInt16(read.Content, i)); // } System.out.println(siemens_net.getByteTransform().TransInt16(read.Content, 0)); System.out.println(siemens_net.getByteTransform().TransInt16(read.Content, 2)); System.out.println(siemens_net.getByteTransform().TransInt16(read.Content, 4)); System.out.println(siemens_net.getByteTransform().TransInt16(read.Content, 6)); System.out.println(siemens_net.getByteTransform().TransInt16(read.Content, 8)); } // // 上面是初始化 // System.out.println(siemens_net.ReadByte("M100").Content); // // byte m100_byte = siemens_net.ReadByte("M100").Content; // short m100_short = siemens_net.ReadInt16("M100").Content; // int m100_int = siemens_net.ReadInt32("M100").Content; // long m100_long = siemens_net.ReadInt64("M100").Content; // float m100_float = siemens_net.ReadFloat("M100").Content; // double m100_double = siemens_net.ReadDouble("M100").Content; // String m100_string = siemens_net.ReadString("M100",(short) 10).Content; // // siemens_net.Write("M100",(byte) 123); // siemens_net.Write("M100",(short) 123); // siemens_net.Write("M100",(int) 123); // siemens_net.Write("M100",(long) 123); // siemens_net.Write("M100", 123.456f); // siemens_net.Write("M100", 123.456d); // siemens_net.Write("M100","1234567890"); // // OperateResultExOne read = siemens_net.Read( "M100", (short) 10 ); // { // if(read.IsSuccess) // { // byte m100 = read.Content[0]; // byte m101 = read.Content[1]; // byte m102 = read.Content[2]; // byte m103 = read.Content[3]; // byte m104 = read.Content[4]; // byte m105 = read.Content[5]; // byte m106 = read.Content[6]; // byte m107 = read.Content[7]; // byte m108 = read.Content[8]; // byte m109 = read.Content[9]; // } // else // { // // 发生了异常 // } // } } /** * 简单网络客户端 */ public static void NetSimplifyClientTest() { NetSimplifyClient client = new NetSimplifyClient("127.0.0.1", 12345); OperateResultExOne read = client.ReadFromServer(new NetHandle(2), "测试数据"); if (read.IsSuccess) { System.out.println(read.Content); } else { System.out.println("读取失败:" + read.Message); } } /** * 三菱 A */ private static void MelsecA1ETest() { MelsecA1ENet melsec_net = new MelsecA1ENet("192.168.0.100", 5000); melsec_net.SetPersistentConnection(); boolean[] M100 = melsec_net.ReadBool("M100", (short) 1).Content; // 读取M100是否通,十进制地址 boolean[] X20 = melsec_net.ReadBool("X20", (short) 1).Content; // 读取X20是否通,八进制地址 boolean[] Y20 = melsec_net.ReadBool("Y20", (short) 1).Content; // 读取Y20是否通,八进制地址 short short_D1000 = melsec_net.ReadInt16("D1000").Content; // 读取D1000的short值 int int_D1000 = melsec_net.ReadInt32("D1000").Content; // 读取D1000-D1001组成的int数据 float float_D1000 = melsec_net.ReadFloat("D1000").Content; // 读取D1000-D1001组成的float数据 long long_D1000 = melsec_net.ReadInt64("D1000").Content; // 读取D1000-D1003组成的long数据 double double_D1000 = melsec_net.ReadDouble("D1000").Content; // 读取D1000-D1003组成的double数据 String str_D1000 = melsec_net.ReadString("D1000", (short) 10).Content; // 读取D1000-D1009组成的条码数据 melsec_net.Write("M100", new boolean[]{true}); // 写入M100为通 melsec_net.Write("Y20", new boolean[]{true}); // 写入Y20为通 melsec_net.Write("X20", new boolean[]{true}); // 写入X20为通 melsec_net.Write("D1000", (short) 1234); // 写入D1000 short值 ,W3C0,R3C0 效果是一样的 melsec_net.Write("D1000", 1234566); // 写入D1000 int值 melsec_net.Write("D1000", 123.456f); // 写入D1000 float值 melsec_net.Write("D1000", 123.456d); // 写入D1000 double值 melsec_net.Write("D1000", 123456661235123534L); // 写入D1000 long值 melsec_net.Write("D1000", "K123456789"); // 写入D1000 string值 OperateResultExOne read = melsec_net.ReadBool("M100", (short) 10); if (read.IsSuccess) { boolean m100 = read.Content[0]; boolean m101 = read.Content[1]; boolean m102 = read.Content[2]; boolean m103 = read.Content[3]; boolean m104 = read.Content[4]; boolean m105 = read.Content[5]; boolean m106 = read.Content[6]; boolean m107 = read.Content[7]; boolean m108 = read.Content[8]; boolean m109 = read.Content[9]; } else { System.out.print("读取失败:" + read.Message); } OperateResultExOne read1 = melsec_net.Read("D100", (short) 5); if (read1.IsSuccess) { short D100 = melsec_net.getByteTransform().TransInt16(read1.Content, 0); short D101 = melsec_net.getByteTransform().TransInt16(read1.Content, 2); short D102 = melsec_net.getByteTransform().TransInt16(read1.Content, 4); short D103 = melsec_net.getByteTransform().TransInt16(read1.Content, 6); short D104 = melsec_net.getByteTransform().TransInt16(read1.Content, 8); } else { System.out.print("读取失败:" + read1.Message); } //解析复杂数据 OperateResultExOne read3 = melsec_net.Read("D4000", (short) 10); if (read3.IsSuccess) { double 温度 = melsec_net.getByteTransform().TransInt16(read3.Content, 0) / 10d;//索引很重要 double 压力 = melsec_net.getByteTransform().TransInt16(read3.Content, 2) / 100d; boolean IsRun = melsec_net.getByteTransform().TransInt16(read3.Content, 4) == 1; int 产量 = melsec_net.getByteTransform().TransInt32(read3.Content, 6); String 规格 = melsec_net.getByteTransform().TransString(read3.Content, 10, 10, "ascii"); } else { System.out.print("读取失败:" + read3.Message); } // 写入测试,M100-M104 写入测试 此处写入后M100:通 M101:断 M102:断 M103:通 M104:通 boolean[] values = new boolean[]{true, false, false, true, true}; OperateResult write = melsec_net.Write("M100", values); if (write.IsSuccess) { System.out.print("写入成功"); } else { System.out.print("写入失败:" + write.Message); } OperateResultExOne read2 = melsec_net.ReadBool("M100"); if (read2.IsSuccess) { System.out.println(read2.Content); } else { System.out.println("读取失败:" + read.Message); } } /** * 三菱 Q */ private static void MelsecTest() { MelsecMcNet melsec_net = new MelsecMcNet("192.168.1.192", 6001); boolean[] M100 = melsec_net.ReadBool("M100", (short) 1).Content; // 读取M100是否通,十进制地址 boolean[] X1A0 = melsec_net.ReadBool("X1A0", (short) 1).Content; // 读取X1A0是否通,十六进制地址 boolean[] Y1A0 = melsec_net.ReadBool("Y1A0", (short) 1).Content; // 读取Y1A0是否通,十六进制地址 boolean[] B1A0 = melsec_net.ReadBool("B1A0", (short) 1).Content; // 读取B1A0是否通,十六进制地址 short short_D1000 = melsec_net.ReadInt16("D1000").Content; // 读取D1000的short值 ,W3C0,R3C0 效果是一样的 int int_D1000 = melsec_net.ReadInt32("D1000").Content; // 读取D1000-D1001组成的int数据 float float_D1000 = melsec_net.ReadFloat("D1000").Content; // 读取D1000-D1001组成的float数据 long long_D1000 = melsec_net.ReadInt64("D1000").Content; // 读取D1000-D1003组成的long数据 double double_D1000 = melsec_net.ReadDouble("D1000").Content; // 读取D1000-D1003组成的double数据 String str_D1000 = melsec_net.ReadString("D1000", (short) 10).Content; // 读取D1000-D1009组成的条码数据 melsec_net.Write("M100", new boolean[]{true}); // 写入M100为通 melsec_net.Write("Y1A0", new boolean[]{true}); // 写入Y1A0为通 melsec_net.Write("X1A0", new boolean[]{true}); // 写入X1A0为通 melsec_net.Write("B1A0", new boolean[]{true}); // 写入B1A0为通 melsec_net.Write("D1000", (short) 1234); // 写入D1000 short值 ,W3C0,R3C0 效果是一样的 melsec_net.Write("D1000", 1234566); // 写入D1000 int值 melsec_net.Write("D1000", 123.456f); // 写入D1000 float值 melsec_net.Write("D1000", 123.456d); // 写入D1000 double值 melsec_net.Write("D1000", 123456661235123534L); // 写入D1000 long值 melsec_net.Write("D1000", "K123456789"); // 写入D1000 string值 OperateResultExOne read = melsec_net.ReadBool("M100", (short) 10); if (read.IsSuccess) { boolean m100 = read.Content[0]; boolean m101 = read.Content[1]; boolean m102 = read.Content[2]; boolean m103 = read.Content[3]; boolean m104 = read.Content[4]; boolean m105 = read.Content[5]; boolean m106 = read.Content[6]; boolean m107 = read.Content[7]; boolean m108 = read.Content[8]; boolean m109 = read.Content[9]; } else { System.out.print("读取失败:" + read.Message); } OperateResultExOne read1 = melsec_net.Read("D100", (short) 5); if (read1.IsSuccess) { short D100 = melsec_net.getByteTransform().TransByte(read1.Content, 0); short D101 = melsec_net.getByteTransform().TransByte(read1.Content, 2); short D102 = melsec_net.getByteTransform().TransByte(read1.Content, 4); short D103 = melsec_net.getByteTransform().TransByte(read1.Content, 6); short D104 = melsec_net.getByteTransform().TransByte(read1.Content, 8); } else { System.out.print("读取失败:" + read1.Message); } //解析复杂数据 OperateResultExOne read3 = melsec_net.Read("D4000", (short) 10); if (read3.IsSuccess) { double 温度 = melsec_net.getByteTransform().TransInt16(read3.Content, 0) / 10d;//索引很重要 double 压力 = melsec_net.getByteTransform().TransInt16(read3.Content, 2) / 100d; boolean IsRun = melsec_net.getByteTransform().TransInt16(read3.Content, 4) == 1; int 产量 = melsec_net.getByteTransform().TransInt32(read3.Content, 6); String 规格 = melsec_net.getByteTransform().TransString(read3.Content, 10, 10, "ascii"); } else { System.out.print("读取失败:" + read3.Message); } // 写入测试,M100-M104 写入测试 此处写入后M100:通 M101:断 M102:断 M103:通 M104:通 boolean[] values = new boolean[]{true, false, false, true, true}; OperateResult write = melsec_net.Write("M100", values); if (write.IsSuccess) { System.out.print("写入成功"); } else { System.out.print("写入失败:" + write.Message); } OperateResultExOne read2 = melsec_net.ReadBool("M100"); if (read2.IsSuccess) { System.out.println(read2.Content); } else { System.out.println("读取失败:" + read.Message); } } /** * 三菱 Q ASCII通讯格式 */ private static void MelsecAsciiTest(){ MelsecMcAsciiNet melsec = new MelsecMcAsciiNet("192.168.1.192",6001); OperateResultExOne read = melsec.ReadInt16("D100",(short) 2); if(read.IsSuccess) { System.out.println(Arrays.toString(read.Content)); } else { System.out.println(read.ToMessageShowString()); } } /** * 西门子 */ private static void SiemesTest(){ SiemensS7Net siemens_net = new SiemensS7Net(SiemensPLCS.S1200,"192.168.1.195"); OperateResult connect = siemens_net.ConnectServer(); if(connect.IsSuccess){ System.out.println("connect success!"); } else { System.out.println("failed:"+connect.Message); } siemens_net.ConnectClose(); // 上面是初始化 System.out.println(siemens_net.ReadByte("M100").Content); byte m100_byte = siemens_net.ReadByte("M100").Content; short m100_short = siemens_net.ReadInt16("M100").Content; int m100_int = siemens_net.ReadInt32("M100").Content; long m100_long = siemens_net.ReadInt64("M100").Content; float m100_float = siemens_net.ReadFloat("M100").Content; double m100_double = siemens_net.ReadDouble("M100").Content; String m100_string = siemens_net.ReadString("M100",(short) 10).Content; siemens_net.Write("M100",(byte) 123); siemens_net.Write("M100",(short) 123); siemens_net.Write("M100",(int) 123); siemens_net.Write("M100",(long) 123); siemens_net.Write("M100", 123.456f); siemens_net.Write("M100", 123.456d); siemens_net.Write("M100","1234567890"); OperateResultExOne read = siemens_net.Read( "M100", (short) 10 ); { if(read.IsSuccess) { byte m100 = read.Content[0]; byte m101 = read.Content[1]; byte m102 = read.Content[2]; byte m103 = read.Content[3]; byte m104 = read.Content[4]; byte m105 = read.Content[5]; byte m106 = read.Content[6]; byte m107 = read.Content[7]; byte m108 = read.Content[8]; byte m109 = read.Content[9]; } else { // 发生了异常 } } } private static void PushNetTest() { NetPushClient client = new NetPushClient("127.0.0.1", 23467, "A"); OperateResult connect = client.CreatePush(new ActionOperateExTwo(){ @Override public void Action(NetPushClient content1, String content2) { System.out.println(content2); } }); if (connect.IsSuccess) { System.out.println("连接成功!"); } else { System.out.println("连接失败!"+connect.Message); } } private static void ModbusTcpTets(){ ModbusTcpNet modbusTcpNet = new ModbusTcpNet("127.0.0.1",502,(byte) 0x01); // 当你需要指定格式的数据解析时,就需要设置下面的这个信息 modbusTcpNet.setDataFormat(DataFormat.BADC); OperateResultExOne read = modbusTcpNet.ReadDouble("s=2;x=4;200"); if(read.IsSuccess){ System.out.println(read.Content); } else { System.out.println(read.Message); } modbusTcpNet.Write("100",new int[]{12345,-12345}); } private static void NetComplexClientTest(){ System.out.println("Hello World!等待10s关闭"); NetComplexClient client = new NetComplexClient(); client.setIpAddress("127.0.0.1"); client.setPort(12346); client.setClientAlias("测试1"); client.AcceptString= new ActionOperateExThree(){ @Override public void Action(NetComplexClient content1, NetHandle content2, String content3) { System.out.println("Handle:"+content2.get_CodeValue()+" Value:"+content3); } }; client.ClientStart(); // client.Send(new NetHandle(1),"asdasdi阿斯达阿斯达"); // System.out.println(client.getDelayTime()); // Thread.sleep(100000); // client.ClientClose(); } }