精华内容
下载资源
问答
  • java 连接西门子S7系列PLC 读写数据记录
    千次阅读 热门讨论
    2020-06-15 22:48:36

    放张图片给大家压压惊,读取的图片数据在第二张图片 前8个数据
    在这里插入图片描述

    目前了解有两款开发包

    <dependency>
        <groupId>com.github.s7connector</groupId>
        <artifactId>s7connector</artifactId>
        <version>2.1</version>
    </dependency>
    https://github.com/s7connector/s7connector
    // https://www.cnblogs.com/jearchen/p/13741553.html 教程详细看这个
    
     //根据官网扩展的 https://github.com/xtrinch/moka7-live 下面案例也是用的这个
    <dependency>
          <groupId>si.trina</groupId>
          <artifactId>moka7-live</artifactId>
          <version>0.0.13</version>
        </dependency>
       参考-> C# sanp7 文档http://snap7.sourceforge.net/sharp7.html
    

    根据官网sanp7总结下方示例 http://snap7.sourceforge.net/ 可能国内打不开,

    // 需要了解的相关词汇: 
     //数据块 db块 dbw块什么的 ; 定义数据的地方; 
     //偏移量--数据在数据块具体的位置 
     // 偏移量长度 一个具体数据所占的 位置长度 8个bool 占据 1个字节位置 1个 int 占据2个字节位置, 2个int 占据 4个字节位置;   以上都是plc数据类型
     ----------------------------------------------------------------
     //准备连接
     S7Client s7Client = new S7Client();
     //连接参数  机器的ip,机器的机架号 ,插槽号 
            s7Client.ConnectTo("192.168.5.1",0,1);
            // 容器 读出的数据存放位置 大小不能少于数据数量
            byte[] bytes = new byte[64];
            //参数1 :读取函数 参数 数据块类型 ,2: 数据块位置 例如"DB601" ,
            //3:读取的开始位置, 4: plc数据偏移量,  , 5: 读取数据所存放的容器;
            // 在这里是1位 ,bool特殊 站1位(1/2/3/8个bool 也是一个字节) ,其余写占多少字节 
            //返回类型 0代表成功 
            int i = s7Client.ReadArea(S7.S7AreaDB, 601, 0, 1, bytes);
            if (i==0){
                //amount 数据类型占多少 字节--bool比较特殊 读取一个bool 也是一个字节
           //根据的 44  getbite函数 解析 得出 java Boolean值 
           //连续8个出现的 bool 读取出来是一个数: byte容器,容器数值索引,位置  
           //根据读出来的1个 数 解析出来8个bool 值 看下面
           //44 解析成 二进制 得出 8bit 8个bool值
            System.out.print("\n"+S7.GetBitAt(bytes,0,0) +"\t");
            System.out.print(S7.GetBitAt(bytes,0,1) +"\t");
            System.out.print(S7.GetBitAt(bytes,0,2) +"\t");
            System.out.print(S7.GetBitAt(bytes,0,3) +"\t");
            System.out.print(S7.GetBitAt(bytes,0,4) +"\t");
            System.out.print(S7.GetBitAt(bytes,0,5) +"\t");
            System.out.print(S7.GetBitAt(bytes,0,6) +"\t");
            System.out.print(S7.GetBitAt(bytes,0,7) +"\t");
    //写入数据 setbitat()  读出存放容器 byte, ?,  第三个参数 数据 索引 , 4:修改的值  .
     S7.SetBitAt(bytes,0,0,true);
       s7Client.WriteArea(S7.S7AreaDB,601,0,1,bytes);
    

    在这里插入图片描述

    //读取上面的数据 input11 偏移量36 的DINT数据 占 4字节 存入 byte[4] 就行
    //host=IP地址
    @Test
        public void getDint36_40(){
            S7Client s7Client = new S7Client();
            s7Client.ConnectTo(Host,0,1);
            byte[] bytes = new byte[8];//byte[4] 就行;---  长度8个为for循环演示
            int i = s7Client.ReadArea(S7.S7AreaDB, 603, 36, 4, bytes);
            // 读取数据成功 此时byte 数据 -1 -1 -1 -18
            System.out.print(  S7.GetDIntAt(bytes));
          //  输出 -18
          //  S7.GetDIntAt读取数据 它返回的就是18  例子 S7.GetDIntAt(bytes, 0) 返回18 ;内部去取
          //  bytes 0位置的前4个数据 进行位运算
            for (int j = 0; j < bytes.length-4; j++) { 
            //S7.GetDIntAt 数据转换  4个 byte = 32位的二进制 = 4字节的 PLC的Dint数据 =java int数据
            int i1 = S7.GetDIntAt(bytes, j);
            System.out.print(i1 +" ");
            }
            s7Client.Disconnect();//关闭连接
        }  
    // 转换后打印 bytes 输出-18 -4608  -1179648 -301989888  
    
      @Test
      // 上面的 input10 读取 设置值 在写回去PLC
        public void getWord34_36(){
            S7Client s7Client = new S7Client();
            s7Client.ConnectTo(Host,0,1);
            byte[] bytes = new byte[8];
             //byte[2] 就行 word类型 占 2个字节 解析出来也是两个数 截取第一个
            int i = s7Client.ReadArea(S7.S7AreaDB, 603, 34, 2, bytes);
          for (int j = 0; j < bytes.length-4; j++) { 
        	  int i1 = S7.GetWordAt(bytes, j);
          		System.out.println(i1); }
          //打印输出数据 17 4352 0 0
     int a2=S7.GetWordAt(bytes, 0);
     System.out.println(a2);
    //打印输出数据 17
     s7Client.Disconnect();
        }
        //写入数据 根据读出的数据类型确定写入
         S7.SetWordAt(bytes,0,18);
         s7Client.WriteArea(S7.S7AreaDB, 603, 34, 2, bytes);
    
    S7Client 参考
     
    ConnectTo 连接一个 到 PLC 的客户端对象
    Connect 连接一个 带有隐式参数的 PLC 的客户端对象。 
    Disconnect  	断开
    ReadArea  读取数据 来自 PLC 的区域。
    WriteArea  	写入数据 区域到PLC。 
    S7 Helper syntax
    //读取字节转换函数
    GetBitAt	GetWordAt	GetShortAt	GetDWordAt	GetDIntAt 	GetFloatAt 	GetStringAt 	GetPrintableStringAt GetDateAt
    
    Write functions
    //数值转换 byte函数
    SetBitAt	SetWordAt	SetShortAt	SetDWordAt	SetDIntAt	SetFloatAt	SetDateAt
    

    关于长连接的问题 ; S7Client. LastError ==0 检测断开连接 , 或则心跳机制 读取其他数据 返回值
    有兴趣的推荐看下GitHub(Mokka7) ;重构的 snap7 带客户端,可以直接选读取数据类型, 可以根据他的模仿写了一个javaFX客户端

    更多相关内容
  • 原生JAVA读写PLC

    2018-06-28 13:58:39
    使用java8 scoket 实现西门子s7协议 可以读写 s7系列全部plc 没有dll 文件 纯原生java
  • JAVAPLC通讯读取数据(两种方式)

    千次阅读 热门讨论 2021-12-17 15:24:57
    第二种方式(HslCommunication) 参考C语言读PLC而来:C# 读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC - dathlin - 博客园 1.创建maven工程引入依赖 ...

    第一种方式(s7connector)

    S7官网:S7Connector — Documentation,有简单的读写操作参考。


    1.创建maven工程引入依赖

    <dependency>
        <groupId>com.github.s7connector</groupId>
        <artifactId>s7connector</artifactId>
        <version>2.0</version>
    </dependency>

    2. 通过代码连接PLC

    //PLC地址
    String ipAddress = "192.168.101.90";
    //默认端口
    int port = 102;
    S7Connector s7Connector = S7ConnectorFactory
                    .buildTCPConnector()
                    .withHost(ipAddress)
                    .withPort(port)
                    .withTimeout(10000) //连接超时时间
                    .withRack(0)
                    .withSlot(1)
                    .build();

    3.解析获取的数据

    //第一个参数:DaveArea.DB 表示读取PLC的地址区域为DB
    //第二个参数:DB地址,若plc中是DB1082,则填1082
    //第三个参数:数据长度
    //第四个参数:偏移量
    byte[] barcodeByte = s7Connector.read(DaveArea.DB, 1082, 16, 82);
    Integer extract = integerConverter.extract(Integer.class, barcodeByte, 0, 0);
    System.out.println(extract);

    测试结果

     

     解析使用的工具类可使用S7jar包中自带的方法(方法还是很全面的)

     

    需注意的是PLC中数据类型的所占长度和java有所出入!!!

    第二种方式(HslCommunication) 

    参考C语言读PLC而来:C# 读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC - dathlin - 博客园


    1.创建maven工程引入依赖

    <dependency>
       <groupId>com.github.dathlin</groupId>
       <artifactId>HslCommunication</artifactId>
       <version>3.1.1</version>
    </dependency>

    2. 通过代码连接PLC

    SiemensS7Net siemensTcpNet = new SiemensS7Net(SiemensPLCS.S1200, "192.168.101.90");

    3.解析获取的数据 

    //105代表读取的长度
    OperateResultExOne<byte[]> read = siemensTcpNet.Read("DB1082.80", (short) 105);
    if (read.IsSuccess) {
        byte[] content = read.Content;
        //2是下标
        short no = siemensTcpNet.getByteTransform().TransInt16(content, 2);
        System.out.println(no);
    }

    测试结果

    总结

    • 两种方式皆可读取PLC中的数据,第一种方式只能单个读取,单个解析;第二种方式可读取整个DB块(字节数组)后解析其中数据(可根据实际情况去选择)
    • 两种方式皆需注意PLC要与本身电脑处于同一网段(可修改电脑网段或利用西门子博途软件修改PLC中设置的网段)  

     最后大家要是觉得有用的话,给博主点个赞!!!

    展开全文
  • java 读写文件

    2017-06-21 21:23:46
    java读写文件简单命令
  • OPC工具读取PLC数据

    2015-09-22 14:38:20
    一个读取PLC数据的工具,OPC 配置参数过程(读取西门子 PLC S7200 SMART的数据) 1、 新建NEW Channel –> Channel name xxxx -> Device driver “Siemens TCP/IP Ethernet” -> Network Adapter “Realtek PCIe GBE...
  • PLC数据 Eclipse+Maven+JDK8 使用的轮子是 s7connector 官网有简单的案例 官网地址https://s7connector.github.io/s7connector/ 创建Maven工程, 需要导入的Maven依赖 junit junit 3.8.1 test ...import java.io....

     PLC数据

    Eclipse+Maven+JDK8

    使用的轮子是 s7connector 官网有简单的案例 官网地址https://s7connector.github.io/s7connector/

    1. 创建Maven工程,

    2. 需要导入的Maven依赖

    3. <dependencies>
      		<dependency>
      			<groupId>junit</groupId>
      			<artifactId>junit</artifactId>
      			<version>3.8.1</version>
      			<scope>test</scope>
      		</dependency>
      		<dependency>
      			<groupId>com.github.s7connector</groupId>
      			<artifactId>s7connector</artifactId>
      			<version>2.1</version>
      		</dependency>
      		<dependency>
      			<groupId>org.slf4j</groupId>
      			<artifactId>slf4j-api</artifactId>
      			<version>1.7.25</version>
      		</dependency>
      		<dependency>
      			<groupId>org.slf4j</groupId>
      			<artifactId>slf4j-log4j12</artifactId>
      			<version>1.7.25</version>
      		</dependency>
      	</dependencies>

     获取数据代码

    
    import java.io.IOException;
    import java.math.BigDecimal;
    
    import com.github.s7connector.api.DaveArea;
    import com.github.s7connector.api.S7Connector;
    import com.github.s7connector.api.factory.S7ConnectorFactory;
    import com.github.s7connector.impl.serializer.converter.BitConverter;
    import com.github.s7connector.impl.serializer.converter.IntegerConverter;
    import com.github.s7connector.impl.serializer.converter.RealConverter;
    import com.github.s7connector.impl.serializer.converter.StringConverter;
    
    
    /**
     * 测试PLC通信
     * 获得PLC的数据
     */
    public class PlcTest1 {
    	//Int类型的封装类 用来转义
    	private static IntegerConverter intCon = new IntegerConverter();
    	//String...
    	private static StringConverter strCon = new StringConverter();
    	//Boolean...
    	private static BitConverter boolCon = new BitConverter();
    	//real实数浮点...
    	private static RealConverter realCon = new RealConverter();
    	
    	public static void main(String[] args) {
    		long startTime = System.currentTimeMillis(); // 获取开始时间
    		
    		//创建与PLC的链接
    		final S7Connector connector = S7ConnectorFactory.buildTCPConnector().withHost("192.168.0.21") //
    				.withRack(0) // 架机号 可选
    				.withSlot(1) // 插槽号 可选
    				.build();
    		
    		byte[] PlcData = connector.read(DaveArea.DB, // 选择数据区块
    				5, // 区块编号
    				2, // 数据值长度 int长度2
    				2); // 开始位置 偏移量
    		System.out.println("转换int="+intCon.extract(new Integer(0).getClass(), PlcData, 0, 0));
    		
            
    		PlcData = connector.read(DaveArea.DB, // 选择数据区块
    				5, // 区块编号
    				16, // 数据值长度 String最小3 随值长度增加
    				4); // 开始位置偏移量
            System.out.println("转换str="+strCon.extract(new String().getClass(), PlcData, 0, 0));
            
            
            PlcData = connector.read(DaveArea.DB, // 选择数据区块
    				5, // 区块编号
    				1, // 数据值长度 boolean长度1
    				0); // 开始位置偏移量
            System.out.println("转换bool="+boolCon.extract(new Boolean(false).getClass(), PlcData, 0, 0));
            
            PlcData = connector.read(DaveArea.DB, // 选择数据区块
    				5, // 区块编号
    				4, // 数据值长度 double长度4
    				516); //偏移量
            Double num1 = realCon.extract(new Double(0).getClass(), PlcData, 0, 0);
            BigDecimal bd1 = new BigDecimal(num1);
            System.out.println("转换real浮点="+bd1.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
            
            try {
    			connector.close();//关闭链接
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
            
    		long endTime = System.currentTimeMillis(); // 获取结束时间
    		System.out.println("程序运行时间:" + (endTime - startTime) + "ms"); // 输出程序运行时间
    	}
    }
    

    运行结果

    写入数据代码

    package wlf.learn;
    
    import java.math.BigDecimal;
    import java.nio.ByteBuffer;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.ThreadPoolExecutor;
    
    import com.github.s7connector.api.DaveArea;
    import com.github.s7connector.api.S7Connector;
    import com.github.s7connector.api.factory.S7ConnectorFactory;
    import com.github.s7connector.impl.serializer.converter.BitConverter;
    import com.github.s7connector.impl.serializer.converter.IntegerConverter;
    import com.github.s7connector.impl.serializer.converter.RealConverter;
    import com.github.s7connector.impl.serializer.converter.StringConverter;
    
    
    /**
     * 测试PLC通信 获得PLC的数据
     * 多线程
     */
    public class PlcTest2 {
    
    	public static void main(String[] args) {
    		long startTime = System.currentTimeMillis(); // 计算开始时间
    		S7Connector connector = S7ConnectorFactory.buildTCPConnector().withHost("192.168.0.21") //
    				.withRack(0) // 架机号 可选
    				.withSlot(1) // 插槽号 可选
    				.build();
    		// 线程池
    		ExecutorService pool = Executors.newFixedThreadPool(10);
    
    		ThreadPoolExecutor executor = (ThreadPoolExecutor) pool;
    		executor.setCorePoolSize(2);
    		executor.setMaximumPoolSize(3);
    		
    		//Real读写
    		executor.execute(new WriteReal(connector,(float)202109.06));
    		executor.execute(new GetReal(connector));
    		
    		//String读写
    		executor.execute(new WriteString(connector,"SShelloword"));//'SS'占位符 从第3个字符开始为写入内容
    		executor.execute(new GetString(connector));
    		
    		
    		//关闭线程池
    		pool.shutdown();
    		
    		long endTime = System.currentTimeMillis(); // 计算结束时间
    		System.out.println("程序整体运行时间:" + (endTime - startTime) + "ms"); // 输出程序运行时间
    
    	}
    }
    
    
    class GetString implements Runnable {
    	S7Connector connector = null;
    
    	GetString(S7Connector connector) {
    		this.connector = connector;
    	}
    
    	public void run() {
    		long startTime = System.currentTimeMillis(); // 计算开始时间
    		// String...
    		StringConverter strCon = new StringConverter();
    		byte[] PlcData = connector.read(DaveArea.DB, // 选择数据区块
    				5, // 区块编号
    				128, //byte数据值长度 String最小3 最大96 随值长度增加
    				4); // 开始位置偏移量
    		System.out.print("str=" + strCon.extract(new String().getClass(), PlcData, 0, 0).trim());
    		long endTime = System.currentTimeMillis(); // 计算结束时间
    		System.out.println("\t时间:" + (endTime - startTime) + "ms"); // 输出程序运行时间
    	}
    }
    
    class GetReal implements Runnable {
    	S7Connector connector = null;
    
    	GetReal(S7Connector connector) {
    		this.connector = connector;
    	}
    
    	public void run() {
    		long startTime = System.currentTimeMillis(); // 计算开始时间
    		RealConverter realCon = new RealConverter();
    		byte[] PlcData = connector.read(DaveArea.DB, // 选择数据区块
    				5, // 区块编号
    				4, //byte数据值长度 double长度4
    				260); // 偏移量
    		Double num1 = realCon.extract(new Double(0).getClass(), PlcData, 0, 0);
    		BigDecimal bd1 = new BigDecimal(num1);
    		System.out.print("real浮点=" + bd1.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
    		long endTime = System.currentTimeMillis(); // 计算结束时间
    		System.out.println("\t时间:" + (endTime - startTime) + "ms"); // 输出程序运行时间
    	}
    }
    
    
    /**
     * 写入Real到PLC
     * @author 1
     *
     */
    class WriteReal implements Runnable {
    	S7Connector connector = null;
    	Float data = null;
    	WriteReal(S7Connector connector,Float data) {
    		this.connector = connector;
    		this.data = data;
    	}
    
    	public void run() {
    		long startTime = System.currentTimeMillis(); // 计算开始时间
    		
    		System.out.println(); // 输出程序运行时间
    		byte[] bytes = ByteBuffer.allocate(4).putFloat(data).array();
    		connector.write(DaveArea.DB,5,260,bytes);
    		
    		long endTime = System.currentTimeMillis(); // 计算结束时间
    		System.out.println("写入Real成功:"+data+"\t时间:" + (endTime - startTime) + "ms");
    	}
    }
    
    /**
     * 写入String到PLC
     * @author 1
     *
     */
    class WriteString implements Runnable {
    	S7Connector connector = null;
    	String data = null;
    	WriteString(S7Connector connector,String data) {
    		this.connector = connector;
    		this.data = data;
    	}
    
    	public void run() {
    		long startTime = System.currentTimeMillis(); // 计算开始时间
    		
    		byte[] bytes = data.getBytes();
    		connector.write(DaveArea.DB,5,4,bytes);
    		
    		long endTime = System.currentTimeMillis(); // 计算结束时间
    		System.out.println("写入Str成功:"+data+"\t时间:" + (endTime - startTime) + "ms");
    	}
    }
    

     

     

    展开全文
  • 公司今天要我研究这个方面的技术,以前从来没接触过。有知道这一块的大神吗?
  • 这个例子是java采集java S7-S200、java S7-300、java S7-400协义数据, 可以实现数据同步图表显示,并且可以写入数据, 以上全开源,一看就知道,请放心下载,已经使用在生产上 请浏览详情 ...
  • javaplc通讯示例代码

    2019-07-18 15:55:59
    该示例代码使用modbus4j通过modbus连接plc 并实现读取plc端口数据及plc内部寄存器数据
  • 最近新接了个项目,其中一个功能是要和PLC进行交互,获取PLC的块信息,网上看了很多,都没有详细的方法,下面是我自己整理的一些方法及资料,众所周知,PLC是不可以直接进行HTTP请求发送,那么常见的PLC通讯方式有...
  • 在已有java web工程里添加读取opc的接口类。附有详细说明操作步骤。
  • 同享一下欧姆龙CJ2M系列的plcPLC之间的数据互相读取设定,因为CJ2M系列PLC自带EIP协议,所以硬件联接只需求将多个PLC经过网线用沟通机连起来,并将悉数的PLC的IP地址设置在同一个网段即可(如192.168.250.1;...

    同享一下欧姆龙CJ2M系列的plc与PLC之间的数据互相读取设定,因为CJ2M系列PLC自带EIP协议,所以硬件联接只需求将多个PLC经过网线用沟通机连起来,并将悉数的PLC的IP地址设置在同一个网段即可(如192.168.250.1;192.168.250.2;……)

    1,IP地址的设置:

    翻开编程软件,

    94147ac78841d8c332ef278cacbc312b.png

    用USB线将CPU与电脑连起来,翻开IO表,将每个PLC的CJ2M-EIP21的IP地址设为同一网段纷歧样节点,用USB线别离下载到每个PLC。

    a71e04fff53a163645d5af50bed05818.png

    2,翻开network configratorn软件

    c356c800f5292780cf469fa87a86b2bf.png

    在菜单栏挑选USB接口,并在线

    faa47fc8c6ea3d0023b600603292575e.png

    2f82f9f795052deccc64335992117934.png

    028c115de594bb9ddc2022af52ab825c.png

    点击OK,挑选TCP:2联接

    ef628ea09da0d7cd465cd240ed29cda0.png

    挑选网络

    83671b1e6e7e104230e1a58efc3d2c70.png

    挑选上载网络

    0d3e83b852e0880238bee263aac2acee.png

    上载后就能够看到悉数网络里的悉数设备

    7366bbe796e8a24bd8b5c16630129357.png

    下面咱们来设置各PLC互相读取的数据(在这儿咱们用1#PLC别离与2#,3#,4#,5#PLC进行数据沟通,1#PLC的D00000,D02000,D03000,D04000作为发送地址,D00010,D02100,D03100,D041000作为接纳地址,2#,3#,4#,5#PLC均由D00000作为接纳地址,D00010作为发送地址),

    树立1#PLC的CJ2M-EIP21的tag,双击1#EIP模块,点击edit tags进入新建页面,点击NEW新建tag称谓为D0,8个字节,顺次树立D2000,D3000,D4000,均为8个字节;往后在OUT新建tag,地址别离为D10,D2100,D3100,D4100,地址均为8个字节。

    17afef274b37a2adc710fd16f0e4f7ff.png

    72a39face3bc7893b8602403cbc6c360.png

    以相同的办法别离在2#,3#,4#,5#PLC树立发送和接纳地址,这儿需求留神的是,发送数据的巨细和对应接纳数据的巨细有必要一同,不然,将会报错。

    03d56dbcf5864c8d2d2c2459b6365490.png

    下面咱们将在1#PLC下注册2#,3#,4#,5#PLC,在2#,3#,4#,5#PLC下注册1#PLC。

    fc085ca73b6cd4d0a268ef8b6b6b5efd.png

    点击向下的箭头

    8768e0e5d84f7ec22528ee4af158fd95.png

    双击IP地址

    b5b356df3a299027e6a5d756f61f4fe0.png

    挑选输入地址对应到输出地址

    edcfcc82621d839dcee3ad576da27806.png

    顺次将2#,3#,4#,5#注册,注册往后模块下方将呈现一个小方框,里边有个小箭头。

    ba6257efc6ef40a136725aaf0eb7f393.png

    终究下载到PLC。

    8f51b9495e77426076df6a7b58dbdc93.png

    展开全文
  • Java读写操作西门子S7系列PLC

    万次阅读 2019-06-13 13:26:39
    原帖地址 https://blog.csdn.net/pnoter/article/details/90231852
  • Java接收三菱plc发送的数据 一、需求 plc做服务端,Java做客户端,将焊机电流,报警信息,焊接工件数量等信息传送到java端,数据保存到数据库,进行web展示等。 二、实现方式 作为java开发程序员,常使用byte...
  • 使用西门子S7-200CN PLC,V4.0 STEP 7 MicroWIN SP9上导入Modbus Slave Port0(v1.0),下载slave.mwp到PLC并运行,串口连接PLC数据采集网关(PC、树莓派或开发板),运行数据采集网关上的server.py,运行另一台PC上...
  • 西门子300 400 1200 1500PLC 以太网读写软件 不使用任何OPC服务器。 本软件运行环境 Framework 4.0 如果电脑上没有安装请在百度搜索下载安装。 有任何问题请联系QQ781885609 或加QQ群478867152 技术交流。
  • 该文档是java使用Fx串口协议批量读、写入的demo,解压文件设置好串口规则运行即可。涉及到串口操作,需要引入RXTX库,将资源中rxtxParallel.dll/rxtxSerial.dll放在jdk安装目录下。
  • 分享一下欧姆龙CJ2M系列的plcPLC之间的数据相互读取设定,因为CJ2M系列PLC自带EIP协议,所以硬件连接只需要将多个PLC通过网线用交换机连起来,并将所有的PLC的IP地址设置在同一个网段即可(如192.168.250.1;...
  • 最近在研究处理java写modbus RTU通信,分别使用几套工具,模拟modbus从站、模拟串口等才能正常在电脑测试成功。 最开始使用阿里开发的jdkAlibaba Dragonwell 8.8.9,一报错,后来使用oracle的jdk正常 以下是一些...
  • 从S7 PLC读取数据或向S7 PLC写入数据 OSGi支持 PROFINET支持 直接从Maven Central使用 Apache许可证 入门 简单的读/写示例 // Create connection S7Connector connector = S7ConnectorFactory ....
  • Java连接西门子PLC(S7-1200)及读写操作
  • javaplc 西门子 通讯,进行读写操作 采用TCP 直接连接 0x0 ​ 阅读本文章你能会使用java与西门子plc 进行通信 ​ 所有环境都为仿真模拟环境, ​ 本测试使用的是西门子plc(s7-1500) ​ 软件为: 博图v16 plc仿真(s7-...
  • 本文将使用一个gitHub开源的组件技术来读写西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作github地址:...
  • } //大小端的方法:西门子等欧系PLC都是大端在前 List<ushort> barr2 = new List(); //第一种方法 private void btn1_Click(object sender, EventArgs e) { byte[] barr = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }; ...
  • 利用java读取OPC里面的数据总结

    千次阅读 2019-08-30 15:25:59
    利用java与OPC通讯读取数据Matrikon_opc模拟器S7-200 PC Access SMART Matrikon_opc模拟器 1、Matrikon-OPC-server模拟器的安装参考链接 软件下载:OPC软件安装包下载 软件安装:安装OPC-server. 2、与matrikon-opc...
  • 现在有需求要读取plc程序里的数据,本人不懂plc,请问应该如何读取这里面的数据呢?在此请教各位,希望有个demo能让我学习下,感激不尽!
  • java中使用modbusTcp与plc通信

    千次阅读 2021-05-07 15:00:04
    本人只是用此协议写过上位机,所以这里介绍的只是在java中的一些使用 首先引入jar包 <dependency> <groupId>com.intelligt.modbus</groupId> <artifactId>jlibmodbus</artifactId>...
  • 1.采用modbus4j实现了modbus通信,但读取PLC的浮点数时,读取到整数位正确,小数位错误,请问如何解决? 2. 读取PLC保持寄存器的方法如下: ``` readHoldingRegistersTest(master,1,1,4); private static ...
  • 欧姆龙plc寄存器读取命令响应超时只看标题不能理解意思,从哪里读取PLC本身?上位机电脑?还是从其它PLC?最不容易受伤的人,不是最坚强的人,而是最坦诚面对自己的人。小编现在有关于proface 的问题,就是小编...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 860
精华内容 344
关键字:

java读取plc数据

java 订阅