【Java】博图S7通讯仿真测试上位机连接
文章目录
- 前言
- 前提
- 方案设计
- 软件
- 视频教程
- PLC 代码
- 服务器代码
- 依赖项
- 读取
- 写入
前言
最近一段时间到一个工厂跟人去学习调试 PLC 设备,其中有个场景就是手拿遥控器人工进行库位标定并写入数据库。这个工作本身可以通过边拿电脑边去标定库位但是不太安全也不太方便,因为在工厂里面你的头顶上面还随时都有一个起重机在工作,库位之间的间隙也比较小。这个时候我就产生了一个想法就是通过手机来进行库位标定,这篇文章就是来说明如何让手机通过局域网与 PLC 进行通信的方案。
前提
- PLC 具有 S7 通讯能力
- PLC、手机、上位机在同一网段
方案设计
PLC 和 手机共同连接上位机的网络,那么两者就可以通过各自的协议来进行通信,本质上都是通过 TCP/IP 的方式。
软件
- TIA Portal V16:博图软件
- S7-PLCSIM V16:仿真器
- S7-PLCSIM Advanced V3.0:仿真高级配置
- WinPcap:https://www.winpcap.org/install/default.htm
视频教程
- https://www.bilibili.com/video/BV1a34y1x7DS
因为我不太熟悉博图软件,所以找了一个相关视频看了看,确实解决了我遇到的一些问题。如果有遇到什么问题可以在评论区提问,看见了就会回答。
如果你连接不上 PLC,可以尝试把电脑的 WIFI 连接关掉,采用以太网 IP 地址进行配置。
PLC 代码
当 “DB_S7”.bool01 为 FALSE 时,程序段 2 中移位器 MOVE 将 100 赋值给 “DB_S7”.int01;
当 “DB_S7”.bool01 为 TRUE 时,程序段 1 中移位器 MOVE 将 10 赋值给 “DB_S7”.int01。
%DB1.DBX0.0 为 “DB_S7”.bool01 变量的地址区,在 Java 中 % 不用加就可以访问和修改 “DB_S7”.bool01 的值。
%DB1.DBW2 为 “DB_S7”.int01 变量的地址区,在 Java 中 % 不用加就可以访问和修改 “DB_S7”.int01 的值。
服务器代码
依赖项
pom.xml
<dependency><groupId>com.github.dathlin</groupId><artifactId>HslCommunication</artifactId><version>3.1.1</version>
</dependency>
默认情况 “DB_S7”.bool01 为 FALSE,即程序段2会将 100 赋值给 “DB_S7”.int01,因此当访问http://192.168.2.153:8000/plcConnect 时 “DB_S7”.int01 的值为 100;当访问 http://192.168.2.153:8000/plcConnect10 时 “DB_S7”.int01 的值修改为 10,这是因为程序段1会将 10 赋值给 “DB_S7”.int01。之后访问 plcConnect 接口 “DB_S7”.int01 的值为 10,当然你可以在服务器添加逻辑代码来处理各种情况还是蛮好玩的。
读取
@GetMapping("plcConnect")
public String plcConnect(){// SiemensPLCS.S1500 代表 PLC 的型号// "169.254.7.208" 代表 PLC 的 IP 地址SiemensS7Net siemensTcpNet = new SiemensS7Net(SiemensPLCS.S1500,"169.254.7.208");// siemensTcpNet.Read() 方法是向 PLC 读取指定地址区的变量值// "DB1.DBW2" 代表变量的地址区OperateResultExOne<byte[]> read = siemensTcpNet.Read("DB1.DBW2", (short) 8);String result = null;if (read.IsSuccess) {byte[] content = read.Content;short no = siemensTcpNet.getByteTransform().TransInt16(content, 2);result = "content: \t" + Arrays.toString(content) + "\nno:\t" + no;}siemensTcpNet.ConnectClose();return result;
}
写入
@GetMapping("plcConnect10")
public String plcConnect10(){// SiemensPLCS.S1500 代表 PLC 的型号// "169.254.7.208" 代表 PLC 的 IP 地址SiemensS7Net siemensTcpNet = new SiemensS7Net(SiemensPLCS.S1500,"169.254.7.208");// siemensTcpNet.Write 方法是向 PLC 修改指定地址区的变量值// "DB1.DBX0.0" 代表变量的地址区OperateResult read = siemensTcpNet.Write("DB1.DBX0.0", true);String result = null;if (read.IsSuccess) {String content = read.Message;result = "content: \t" + content;}siemensTcpNet.ConnectClose();return result;
}
【Java】博图S7通讯仿真测试上位机连接相关推荐
- 上位机与PLC 通讯源码 上位机与三菱PLC,西门子PLC通讯 同时一起通讯,单独控制,三菱采用官方MX 通讯,支持三菱FX系列,
上位机与PLC 通讯源码 上位机与三菱PLC,西门子PLC通讯 同时一起通讯,单独控制,三菱采用官方MX 通讯,支持三菱FX系列,A系列,Q系列,L系列,R系列,全系系列,各种串口和各种网口通讯,, ...
- 上位机与PLC 通讯源码 上位机与三菱PLC,西门子PLC通讯
上位机与PLC 通讯源码 上位机与三菱PLC,西门子PLC通讯 同时一起通讯,单独控制,三菱采用官方MX 通讯,支持三菱FX系列,A系列,Q系列,L系列,R系列,全系系列,各种串口和各种网口通讯,, ...
- 痞子衡嵌入式:分享一个i.MXRT系列配套DRAM压力测试上位机工具(i.MXRT DRAM Tester)...
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦SE团队制作的i.MXRT配套DRAM压力测试上位机工具. 事情源于痞子衡的技术交流群里的提问,有群友在恩智浦官方技术公众号 [恩 ...
- esp32系列(11):ESP32 IDF平台 mpu6050 DMP 驱动移植及测试上位机开发
目录 1 DMP 官方库介绍 1.1 DMP与MPL(Motion Processing Libraries)功能 1.2 运行MPL的硬件要求 1.3 Motion Driver 6.12 的架构 ...
- C#编写上位机连接华为云平台IoTDA
C#连接华为云平台IoTDA 需求 前期准备 具体设计 代码目录简述: 工程配置参数 具体程序 App.config 主程序 连接服务器 接收到消息 消息发布回调 服务器连接成功 断开服务器连接 格式 ...
- 上下位机通讯协议_上位机与下位机的区别通讯
上位机是指可以直接发出操控命令的计算机,一般是PC/host computer/master computer/upper computer,屏幕上显示各种信号变化(液压,水位,温度等).下位机是直接 ...
- 上位机与fx3u通讯串口_c#上位机与三菱PLC(FX3U)串口通讯
项目中会经常用到上位机与PLC之间的串口通信,本文介绍一下C#如何编写上位机代码 与三菱FX3U进行通讯 1. 第一种方法是自己写代码实现,主要代码如下: //对PLC的Y7进行置1 byte[] Y ...
- 鼎阳示波器上位机连接与使用教程
示波器(oscilloscope)是一种用途十分广泛的电子测量仪器.它能把肉眼看不见的电信号变换成看得见的图像,便于人们研究各种电现象的变化过程. 本教程以鼎阳 SDS1204X-E示波器进行演示与操 ...
- 周立功示波器ZDS2024Plus与上位机连接步骤
将示波器与电脑用网线对接好. 1.查询自己电脑的IP地址 例如:192.168.1.100 2.将上位机设备的IP地址设置为同局域段,但是最后一位不能一样.例如:192.168.1.99 3.将示波器 ...
最新文章
- 问题 A: 第二题(划分一个集合为差值最小的两个子集合)
- 强化学习到底是什么,它如何运作?
- 遍历map几种方式及应用
- 【深度学习】使用深度学习进行手语识别
- spark on yarn的未解之谜
- 【数据结构与算法】拓扑排序问题C语言实现
- flex布局导致拉伸的问题
- Visual studio 2012 创建web service
- 物联网卡在智慧农业的作用有哪些
- 仿微信朋友圈图片按下效果
- php 数据访问框架,PHP Ice框架数据库访问层- Ice Framework(PHP Web开发框架)
- 181007扇贝有道每日一句
- 帝国CMS7.5仿可可礼物网漂亮大气淘宝客网站源码 带手机版+火车头采集
- 二元函数可微与可导的关系_二元函数的连续偏导数可微之间的关系
- 局域网即时通讯软件_做企业即时通讯软件,我们是认真的
- 微型计算机原理与接口技术第三版答案
- 【云计算•云原生】1.什么是云计算?它为什么这么火?
- XDM-跨文档消息传送
- svn提交代码报错:A conflict in the working copy obstructs the current operation,解决办法
- Docker 搭建FastDFS文件系统
热门文章
- 3手机版怎么换行_全国青少年普法网手机怎么登录 教育部普法网手机版登录入口:http://qspfw.moe.gov.cn...
- 生成扫频音频(也可以生成单频点音频)
- 我的世界启动侠启动器java_我的世界启动器下载
- 【erlang】【rebar依赖】添加protobuff(gpb)依赖
- 异常检测与误用检测的差异
- 专家建议:为电脑安全不要使用IE
- CANoe-是如何对ECU和网络进行测试的
- 职业规划-嵌入式工程师
- oracle pls 00323,Error(30,13): PLS-00323: subprogram or cursor 'XXXXX' is declared in a package spec
- Ocelot + Nginx