java写s7和plc通讯

pom.xml

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

maven下载不了的,下载包,评论或者私自内免费给
DB212 类:
String类型的我的占用25个字节,要看实际情况
在这里插入图片描述

package com.alnan.entity;import com.github.s7connector.api.annotation.S7Variable;
import com.github.s7connector.impl.utils.S7Type;
import lombok.Data;import java.io.Serializable;@Data
public class DB212 implements Serializable {@S7Variable(type = S7Type.STRING,byteOffset = 32,bitOffset = 0, size = 25)public int PW_plateId;@S7Variable(type = S7Type.WORD,byteOffset = 88,bitOffset = 0)public int PW_plateLength;@S7Variable(type = S7Type.WORD,byteOffset = 92,bitOffset = 0)public int PW_plateWidth;@S7Variable(type = S7Type.WORD,byteOffset = 208,bitOffset = 0)public int PW_send;@S7Variable(type = S7Type.WORD,byteOffset = 212,bitOffset = 0)public int ACT_PW_1;@S7Variable(type = S7Type.WORD,byteOffset = 216,bitOffset = 0)public int ACT_PW_2;@S7Variable(type = S7Type.WORD,byteOffset = 260,bitOffset = 0)public int ACT_HY_UP_1;@S7Variable(type = S7Type.WORD,byteOffset = 264,bitOffset = 0)public int ACT_HY_DOWN_1;@S7Variable(type = S7Type.WORD,byteOffset = 276,bitOffset = 0)public int ACT_HY_UP_2;@S7Variable(type = S7Type.WORD,byteOffset = 280,bitOffset = 0)public int ACT_HY_DOWN_2;@S7Variable(type = S7Type.WORD,byteOffset = 292,bitOffset = 0)public int ACT_HY_UP_3;@S7Variable(type = S7Type.WORD,byteOffset = 296,bitOffset = 0)public int ACT_HY_DOWN_3;@S7Variable(type = S7Type.WORD,byteOffset = 308,bitOffset = 0)public int ACT_HY_UP_4;@S7Variable(type = S7Type.WORD,byteOffset = 312,bitOffset = 0)public int ACT_HY_DOWN_4;@S7Variable(type = S7Type.WORD,byteOffset = 324,bitOffset = 0)public int ACT_HY_UP_5;@S7Variable(type = S7Type.WORD,byteOffset = 328,bitOffset = 0)public int ACT_HY_DOWN_5;@S7Variable(type = S7Type.WORD,byteOffset = 340,bitOffset = 0)public int ACT_LC_UP_1;@S7Variable(type = S7Type.WORD,byteOffset = 344,bitOffset = 0)public int ACT_LC_DOWN_1;@S7Variable(type = S7Type.WORD,byteOffset = 356,bitOffset = 0)public int ACT_LC_UP_2;@S7Variable(type = S7Type.WORD,byteOffset = 360,bitOffset = 0)public int ACT_LC_DOWN_2;}

应用:

 //一级发数据S7Connector s7Connector = S7ConnectorFactory.buildTCPConnector().withHost("192.168.100.10")//ip.withPort(102).withTimeout(1000) //连接超时时间.withRack(0).withSlot(1).build();s7Connector.write(DaveArea.DB, 212, 32, pzString(plateNo));//212是PLC地址,32是从第多少字节开始写入,s7Connector.write(DaveArea.DB,212,88, ByteBuffer.allocate(4).putInt(Integer.valueOf(length)).array());s7Connector.write(DaveArea.DB,212,92, ByteBuffer.allocate(4).putInt(Integer.valueOf(width)).array());s7Connector.write(DaveArea.DB,212,208, ByteBuffer.allocate(4).putInt(1).array());System.out.println(s7Serializer.dispense(DB212.class,212,0));s7Connector.close();public byte[] pzString(String out_string){//        写入字符串//第一个参数:DaveArea.DB 表示读取PLC的地址区域为DB//第二个参数:DB块地址,若plc中是DB1000,则填1000//第三个参数:偏移量//第四个参数:写入的数据 二进制数组byte[]  ,总长度为10的话,有效数据只能是10-8,第一位代表总长,第二位,代表有效数据字节int writeStrLength = 25;//地址块大小byte[] writeBytes = new byte[writeStrLength];writeBytes[0] = (byte) writeStrLength;//写入本字符串块总宽度out_string = out_string.trim();//清除掉两边的空串int availableEffectCharLength = 0;//有效字符数控制if (out_string.length() > writeStrLength - 2) {//>writeStrLength-2 截断到最大有效数据位availableEffectCharLength = writeStrLength - 2;} else {//<=writeStrLength-2availableEffectCharLength = out_string.length();}writeBytes[1] = (byte) availableEffectCharLength;//写入有效字节数byte[] strBytes = out_string.getBytes(StandardCharsets.US_ASCII);for (int i = 0; i < availableEffectCharLength; i++) {writeBytes[i + 2] = strBytes[i];}return writeBytes;}

基本上能用起来了
具体细节:

https://blog.csdn.net/qq_51383028/article/details/140549849

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1535884.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

5.1 溪降技术:个人装备

Content 5.1 个人装备概览设备概览视频电子书&#xff1a;个人装备安全装备非安全装备 峡谷探险个人安全装备个人安全装备视频*安全扣结构*峡谷探险个人非安全装备 湿峡谷湿峡谷装备视频个人安全装备个人非安全装备 干峡谷干峡谷装备视频个人安全装备个人非安全装备 团队装备&a…

安全区域边界等保测评

1.边界防护 应保证跨越边界的访问和数据流通过边界设备提供的受控接口进行通信。 [测评方法] 1)应核查在网络边界处是否部署访问控制设备;网闸和防火墙2)应核查设备配置信息是否指定端口进行跨越边界的网络通信,指定端口是否配置并启用了安全策略acl 3)应采用其他技术手…

【网盘外快】百度网盘SVIP充值使用说明,如何通过软件自动充值获取新用户优惠?这篇文章给你正确答案。

资源地址&#xff1a; 此软件需要 网盘ck 才可以使用。 雷电模拟器下载地址&#xff1a;https://www.ldmnq.com/ 软件下载地址&#xff1a;https://wwi.lanzoup.com/b01qdiavzg 密码:666 模拟器使用说明&#xff1a; 1、调整模拟器分辨率调整为&#xff1a;540 X 960。 2、…

每天练打字1:今日状况——击键5第1遍

前言 首先说明一点&#xff0c;这个每天练打打字系列不会每天更新。因为本来练打字就不是一件太大的事&#xff0c;没必要为了更新而更新&#xff0c;但还是会做到每周一更新。以便于跟踪进度&#xff0c;监控目标是否达成。 今日练习情况 一、跟打情况 常用字中五百&#…

RockyLinux-软件实现RAID5

一、背景 RAID&#xff08;Redundant Array of Independent Disks&#xff0c;独立磁盘冗余阵列&#xff09;是一种将多个物理硬盘驱动器组合成单一逻辑单元的技术&#xff0c;目的是提高存储性能、可靠性和/或数据冗余度。虽然早期的名字中包含“独立”&#xff08;Independen…

【资料分析】常见的坑

in 比较或计数类问题 差别大的基期比较&#xff0c;可以直接用现期进行比较 注意单位可能不同&#xff01; 注意顺序是从小到大还是从大到小 以及老问题&#xff0c;名字本身就叫XX增量&#xff0c;XX增加值&#xff0c;而非还要另外去算的东东 给出的图表可能是不完整的 2…

通过SQL语句判断奇偶数的几种方法

文章目录 1. 准备数据2. 使用 % 判断奇偶数3. 使用 MOD 判断奇偶数4. 使用按位与运算符 & 1. 准备数据 假设我们有一张测试表test_numbers -- 创建测试表 CREATE TABLE test_numbers (number_value INT );-- 插入测试数据 INSERT INTO test_numbers (number_value) VALUE…

Qt:饿汉单例(附带单例使用和内存管理)

前言 本文主要写饿汉单例以及单例的释放&#xff0c;网上很多教程只有单例的创建&#xff0c;但是并没有告诉我们单例的内存管理&#xff0c;这就很头疼。 正文 饿汉式单例 // SingletonClass.h #ifndef SINGLETONCLASS_H #define SINGLETONCLASS_H #include <QObject&g…

PCIe进阶之TL:First/Last DW Byte Enables Rules Traffic Class Field

1 First/Last DW Byte Enables Rules & Attributes Field 1.1 First/Last DW Byte Enables Rules Byte Enable 包含在 Memory、I/O 和 Configuration Request 中。本文定义了相应的规则。Byte Enable 位于 header 的 byte 7 。对于 TH 字段值为 1 的 Memory Read Request…

【stm32笔记】使用rtt-studio与stm32CubeMx联合创建项目

使用rtt-studio与stm32CubeMx联合创建项目 创建rt-thread项目 设置项目信息 在项目资源管理器中“右击“&#xff0c;创建RRT studio 项目 双击“RT-Thread 项目“。 选择MCU&#xff0c;设置UART&#xff0c;以及调试方式。添加项目名称&#xff0c;点击“完成“按钮。 …

长春自闭症寄宿学校:开启创造力与艺术之旅

长春自闭症寄宿学校的启示&#xff1a;在广州星贝育园&#xff0c;自闭症儿童开启创造力与艺术之旅 当我们谈及自闭症儿童的教育与成长时&#xff0c;总有一股力量在推动着我们不断探索与创新。虽然题目中提及了“长春自闭症寄宿学校”&#xff0c;但本文将聚焦于广州的星贝育…

使用jmeter做性能测试实践过程中需要注意什么

前言 在驾驭Apache JMeter进行性能测试之旅中&#xff0c;深刻理解其特性和限制是至关重要的。以下是提升JMeter效能的关键策略&#xff0c;旨在挖掘其潜力&#xff0c;克服局限&#xff0c;实现精准测试。 1.精确调控线程数 推荐阈值&#xff1a;将线程数控制在300以内&…

SSH公私钥后门从入门到应急响应

目录 1. SSH公私钥与SSH公私钥后门介绍 1.1 SSH公私钥介绍 1.1.1 公钥和私钥的基本概念 1.1.2 SSH公私钥认证的工作原理(很重要) 1.2 SSH公私钥后门介绍 2. 如何在已拿下控制权限的主机创建后门 2.1 使用 Xshell 生成公钥与私钥 2.2 将公钥上传到被需要被植入后门的服务…

AIGC技术下的动画新纪元:效率与创意的双重飞跃

文章目录 一、技术革新&#xff1a;从辅助到引领二、创作效率与质量的双重飞跃三、创新与艺术的深度融合四、挑战与展望《Procreate Dreams动画设计与制作完全解析》亮点内容简介作者简介目录 《猎头高情商沟通实务》亮点内容简介作者简介 在科技日新月异的今天&#xff0c;人工…

初始Python篇(1)——输入输出函数、数据类型、运算符

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; Python 以B站up主&#xff1a;Python_子木的视频 &#xff1a;花了2万多买的Python教程全套&#xff0c;现在分享给大家&#xff0c;入门到精…

C++进阶 二叉搜索树的讲解

二叉搜索树的概念 二叉搜索树又称为二叉排序树。 二叉搜索树的性质 若它的左子树不为空&#xff0c;则左子树上所有结点的值都小于等于根结点的值若它的右子树不为空&#xff0c;则右子树上所有结点的值都大于等于根结点的值它的左右子树也分别为二叉搜索树二叉搜索树中可以支持…

vscode搭建ros开发环境问题记录(更新...)

文章目录 vscode 不能自动补全 开发环境&#xff1a; vmware 15.7 ubuntu 20.04 ros noetic vscode 不能自动补全 这里将头文件已经正确包含到c_cpp_properties.json中代码中仍然不能自动补全&#xff0c; 将C_CPP插件设置中的Intelli Sense Engine 设置为TagParser,然后重新加…

MySQL:基本查询操作

插入 基本插入语法&#xff1a; insert [into] 表名 (列1, 列2 ...) values (值1, 值2 ...); create table students( id int unsigned primary key auto_increment, sn int not null unique comment 学号, name varchar(20) not null, tel varchar(20) );一次性指定所有值&…

损耗金属件检测系统源码分享

损耗金属件检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

25达能笔试测评秋招校招认知和行为偏好测评题型分析

达能认知和行为偏好测评笔试测评用的游戏化测评数字推理&#xff0c;具体有四类&#xff1a; 职业行为测试&#xff1a;从选项中选择你更偏向的那个&#xff0c;在选择的时候就可以往达能的企业文化相关方向靠。 motion challenge&#xff1a;类似华容道呢&#xff0c;要用最…