Java和西门子S7-1200通讯调试记录

这是很久以前做的一个项目,工业现场一个agv,主要作用的清扫摇床(一种选矿设备),选用的S7-1200的CPU。工作原理是agv上面放一个机械臂,机械臂上面装一个扫把,到固定位置以后,执行清扫动作,模拟人工清扫。见下图:

上位软件部分,服务端采用springboot,前端使用vue。主要功能:

1:对接主控plc,下发控制指令。

2:监控设备状态,任务状态。

3:手动下发清扫任务,以及制定自动清扫任务。

软件界面见下图:

调试过程中,发现bit位写入不成功。这个通讯协议已经在其他项目上使用过了,很稳定。

  • 可能原因

西门子S7协议并不通用。万山项目上,称重的plc和散装机plc虽然都是smart200,但是订货号不同,协议稍微有一点不同。具体表现在链接的时候,一个参数不一样。

散装机PLC链接,最后一个参数为2

称重PLC链接,最后一个参数1

  • 尝试解决

程序链接云南华联PLC,从0开始测试,发现第三个参数应该为0,

清扫AGV,PLC链接代码

Plc链接成功,测试都数据没有问题,写单个字节和多个字节都没有问题。但是写一个bit不成功。 

尝试解决

使用抓包工具WSexplore.exe进行抓包。对比以后的程序发现问题。

抓包工具

 

写位数据时实际发送的数据

程序里面对协议的解析为:

程序里面相同的位

对比以后,发现写入长度位不一致。将这个地方改成0x65,经测试,写入bit成功。

  • 总结

S7系列plc,不同plc型号,以及订货号,协议稍有不同。slot是插槽的意思,按我的理解,应该是在导轨上的位置。一遍情况下,应该都是在最左侧,就是位置0或者1。但是为什么有时候写0,有时候写1,有时候写2,完全搞不清楚,一头雾水。有知道的大佬可以帮忙指点一下,感谢。

对于写bit位,目前总结下面的几个经验:

Slot=1 或者slot =2 ,就是链接的时候最后一个参数。这个时候写位必须按长度为1

Slot=0 ,这个时候写位,长度是0x65,就是101。

 

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

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

相关文章

结合人工智能,大数据,物联网等主流技术实现业务流程的闭环整合的名厨亮灶开源了

明厨亮灶视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。AI技术可以24小时…

Beyond Compare 标准版与专业版 区别

Beyond Compare 的标准版是一个功能齐全的比较工具,而不是一个精简的“精简版”。标准版具有全屏编辑、完全 Unicode 支持、语法高亮等等。 但是,Pro 版增加了以下高级功能: 3 路合并 将独立更改与共同上级进行比较,以便为文件夹…

C++第五十一弹---IO流实战:高效文件读写与格式化输出

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1. C语言的输入与输出 2. 流是什么 3. CIO流 3.1 C标准IO流 3.2 C文件IO流 3.2.1 以写方式打开文件 3.2.1 以读方式打开文件 4 stringstre…

算法入门-贪心1

第八部分:贪心 409.最长回文串(简单) 给定一个包含大写字母和小写字母的字符串 s ,返回通过这些字母构造成的最长的回文串 的长度。 在构造过程中,请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串…

C++ ——string的模拟实现

目录 前言 浅记 1. reserve(扩容) 2. push_back(尾插) 3. iterator(迭代器) 4. append(尾插一个字符串) 5. insert 5.1 按pos位插入一个字符 5.2 按pos位插入一个字符串 …

2024年全国大学生数学建模竞赛B题生产过程中的决策问题分析

目录 引言 问题 1:抽样检测方案设计 问题 2:生产过程中的决策 决策阶段划分 决策方案 结果 问题 3:多道工序和零配件的决策 生产流程 决策过程 问题 4:基于抽样检测的重新决策 动态调整次品率 结论 引言 在2024年全国…

Python 的 WSGI 简单了解

从 flask 的 hello world 说起 直接讨论 WSGI,很多人可能没有概念,我们还是先从一个简单的 hello world 程序开始吧。 from flask import Flaskapp Flask(__name__)app.route("/", methods[GET]) def index():return "Hello world!&q…

【Axure原型】B端系统登录注册页设计成这样,就不用跟小孩一桌了

前言 在B端后台中,登录注册页这个东西,因为感觉很简单,所以经常不被产品经理们重视。但是登录注册页作为一个后台系统的门面,直接影响用户第一印象,又是非常重要的存在。 登录注册页的价值 B端系统登录注册页是用户…

极验3代前两个参数w逆向分析

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关。 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除! 前言 这次会简单的讲解…

Java封装(面向对象)

这个是大三来的时候刚开始又捡起来了java这个语言,以前是开设过这个课程的,但是上课都没哈好听讲,现在又开始学习java类的。 首先附上黑马程序员的一张听课截图吧 我就拿我在黑马程序员的例子上给自己的一个讲解吧 首先是javabean类 pack…

我在高职教STM32——准备HAL库工程模板(2)

新学期已开始,又要给学生上 STM32 嵌入式课程了。这课上了多年了,一直用的都是标准库来开发,已经驾轻就熟了。人就是这样,有了自己熟悉的舒适圈,就很难做出改变,老师上课也是如此,排斥新课和不熟悉的内容。显然,STM32 的开发,HAL 库已是主流,自己其实也在使用,只不过…

【IEEE出版,高录用 | EI快检索】第二届人工智能与自动化控制国际学术会议(AIAC 2024,10月25-27)

第二届人工智能与自动化控制国际学术会议(AIAC 2024) The 2nd International Conference on Artificial Intelligence and Automation Control 2024年10月25-27日 中国-广州 重要信息 会议官网:www.icaiac.org The 2nd International Conf…

网络安全学习(三)Hydra破解密码

接下来看一下Hydra工具,这是一个暴力破解密码的工具。 使用命令(注意区分大小写)。 hydra -L user.txt账号字典 -P pass.txt密码字典 IP地址 smb协议名称 hydra -l administrator指定账号 -P pass.txt密码字典 IP地址 smb协议名称 hydra -…

进程状态、进程创建和进程分类

文章目录 进程进程常见的状态进程调度进程状态变化关系 进程标识示例--进程标识的使用以及简介 进程创建fork函数vfork函数示例--使用fork函数创建子进程,并了解进程之间的关系 创建进程时发生的变化虚拟内存空间的变化示例--验证fork函数创建进程时的操作 对文件IO…

改进RRT*的路径规划算法

一、RRT算法 RRT 算法是一种基于随机采样的快速搜索算法。该算法的主要思想是通过随机采样来创建一个快速探索的树,从而生长出一条从起点到终点的路径。如图为随机树的生长过程。 初始化。首先,初始化起始点和目标点位置,并将起点作为根节点…

5-----RYZ维修工具 操作界面预览与功能操作解析 刷机 解锁 修复参数等等

以上是工具选项功能的界面预览 。通过预览可以看到很多功能选项。此类工具涵盖了很多操作区域。需要根据自己机型的实际需求来操作。根据开发者的描述。此工具有一下功能。包含mtk刷机 分区修复。9008刷机 备份基带efs等等。 高通操作区域 高通修复串码 高通修改写入基带qc…

python中的各类比较与计算

运算符 1.算数运算符2.关系运算符3.逻辑运算符4.关于短路求值5.赋值运算符1)的使用链式赋值多元赋值 2)复合赋值运算符 6.位运算符7.成员运算符8.身份运算符 1.算数运算符 # 加 print(1 2) # 减 print(2 - 1) # 乘 print(1 * 2) # 余数 4%31余数为1 print(4 % 3…

只要不逾期就行了吗?如何守护好你的“第二张身份证“!

在这个时代,信用记录已远远超越了金融交易的范畴,它如同一根无形的纽带,将我们生活的各个领域紧密相连。近闻有人甚至在步入婚姻殿堂前,也要细致核查对方的信用状况,毕竟,这关乎到共同生活的基石与未来幸福…

通过hosts.allow和hosts.deny限制用户登录

1、Hosts.allow和host.deny说明 两个文件是控制远程访问设置的,通过设置这个文件可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务。如果请求访问的主机名或IP不包含在/etc/hosts.allow中,那么tcpd进程就检查/etc/hosts.deny。看请求访问的主机…

volatile 实现原理了解吗?

volatile 实现原理了解吗? volatile 有两个作用,保证可见性和有序性。 volatile 怎么保证可见性的呢? 简单来说:读取和写入变量从原本的本地内存变成主内存中 相比 synchronized 的加锁方式来解决共享变量的内存可见性问题&#…