您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

一个程序小BUG产生的原因

时间:2022-08-10 15:32:28  来源:  作者:西门子1847工业学习

编程的时候除了注意指令的使用环境,还需要注意基本的运行规则,否则就会产生不必要的小BUG,这些小BUG看似简单,但是真正解决起来却不容易,因为这样的错误是根深蒂固地存在大脑的深处,看着错误可能就是觉得是正确的,这样就会怀疑其它的地方,造成方向性的错误,比如是不是CPU的操作系统有BUG,或者是指令系统有BUG,即使老司机也可能犯低级的错误。

在编写《从S7-300_400到S7-1500看变址寻址的改变》系列时做了一个小的示例程序,结果总是有问题,分析也很烧脑。好了,先介绍一下程序的功能,这是一段表查询的小程序

例如创建一个数据块A,然后在里面再创建一个数组B,INDEX从0~100,单位是INT,这样一个表就创建完毕,然后使用一个已知的值与表中的值比较,如果查询到第一个相同的值就记录值的位置,就是数组中INDEX的值,然后清零INDEX的值并复位查询使能位,如果没有查询到,INDEX值加1,如果整个表中都没有相同的值,同样清零INDEX并复位查询使能位。程序参考图1。

图1

"Start_comp"作为查询使能位,如果 "Comp_Value"与表(数组) "A".B["Index"]的值相同,将"Index"的值存储到"Result"中,然后清零"Index"并复位查询使能位 "Start_comp";如果 "Comp_Value"与表(数组) "A".B["Index"]的不相同,将"Index"的值加1,如果查询到表的最后,还是没有相同的值,同样清零"Index"并复位查询使能位 "Start_comp"。一段小程序,非常简单,好了,再看一下程序监控吧,参考图2。

图2

查询的结果是正确的,但是"Index"的值定格为1而不是0。对于这样的结果,我首先想到的是时序的问题,是不是S7-1500编程功能扩展后程序有些变化?想起一个办法就是在S7-300中编写相同的程序,然后切换到STL,使用断点监控一下,后来还是放弃了,因为S7-300不支持数组INDEX 的方式,如果使用S7-1500做也比较麻烦。可以把程序放到循环中断中,放大扫描时间看一下结果,就是相当于慢放功能,监控程序,首先是值不相等条件满足,如图3所示。

图3

从图3中可以看到,值不相等,"Index"的值加1,然后与下一个值进行比较,直到与比较值相同,如图4所示。

图4

从图4中可以看到,比较值等于与不等于同时满足,所以上面"Index"的值清零了,下面一行又加1了,所以"Index"的值最终定格在1上,只是什么逻辑!!! 搞不明白!!!

经过一番折腾,发现问题了,比较值相等的"Index"是2,比较值不相等的"Index"是0,说明"Index"是清零了,所以会出现比较值等于与不等于同时满足的情况,就是因为比较的值不同了,所以犯了一个小错误,也是没有仔细查看,也是由于设定的扫描时间还是比较短,最后使用图片抓拍才发现。

总结一下这里的问题,主要还是时序的问题,相同程序段线圈的复位结果作用在下一个扫描周期,而赋值结果是在指令完成之后。可以把上下两行程序互换一下位置就可以解决问题了,程序参考图5。

图5

想要学习更多工业知识,欢迎访问西门子1847工业学习平台,这是一个官方的学习平台,能够帮助您高效获得实用和权威的资料。

另外,这里还有60场西门子1847工业专家会议等您来参与!点击下方链接查看会议详情。



Tags:BUG   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  Search: BUG  点击:(5)  评论:(0)  加入收藏
MySQL:BUG导致DDL语句无谓的索引重建
对于5.7.23之前的版本在评估类似DDL操作的时候需要谨慎,可能评估为瞬间操作,但是实际上线的时候跑了很久,这个就容易导致超过维护窗口,甚至更大的故障。一、问题模拟使用5.7.22...【详细内容】
2024-03-26  Search: BUG  点击:(10)  评论:(0)  加入收藏
拼多多先用后付,一直不付钱会怎样?看完网友评论都是卡BUG的
今天给大家带来了一篇重磅推文!话题就是关于拼多多的先用后付服务,如果一直不付钱会有怎样的后果?快来一起揭开这个让人好奇的谜团吧!众所周知,拼多多作为国内最大的农村电商平台...【详细内容】
2023-12-24  Search: BUG  点击:(63)  评论:(0)  加入收藏
Kubernetes 的调试功能 ,别慌:debug 不行,还有superdebug
这篇内容主要探讨了 Kubernetes 的调试功能,介绍了 kubectl debug 和 kubectl superdebug。它们支持容器挂载并且能够调试一些需要排查问题的 Pod。文章指出了在 Kubernetes...【详细内容】
2023-12-06  Search: BUG  点击:(215)  评论:(0)  加入收藏
分享30个避免低级Bug的代码技巧清单!
作为Java开发人员,希望确保程序没有错误。Bug不仅会给用户造成困扰,而且修复起来耗时且降低了自己的信任度。以下是30个代码技巧清单,一起分享。 使用变量之前进行初始化在Jav...【详细内容】
2023-10-03  Search: BUG  点击:(321)  评论:(0)  加入收藏
调试心得:通过观察正常的程序行为来识别Bug
有时候,当我调试一个问题的时候,我会特意忽略掉某些线程。这个时候,有人就问了:”这些线程是干什么的?你为什么知道要忽略它们?”我的回答是:我也不清楚这些线程是干啥的,但是无论它...【详细内容】
2023-09-08  Search: BUG  点击:(280)  评论:(0)  加入收藏
苹果用户险被电话诈骗160万:IOS有BUG
FaceTime诈骗事件近日在上海再次引发关注。一名女子几乎被骗走160余万元的存款,幸亏警方紧急止付才未造成损失。据报道,骗子利用FaceTime服务,通过盗取苹果ID信息获取被害人的个人资料,并冒充金融平台客服,以取消虚假贷款...【详细内容】
2023-07-10  Search: BUG  点击:(243)  评论:(0)  加入收藏
iOS 17体验评测:20条Bug 9个变化 不值得升级
北京时间6月6日凌晨,在2023年的WWDC开发者大会上,苹果带来了全新的iOS 17操作系统,我们也在第一时间给大家分析了这次全新的iOS 17带来的九大升级,感兴趣的朋友可以去翻看一下我...【详细内容】
2023-06-09  Search: BUG  点击:(179)  评论:(0)  加入收藏
故障案例:MySQL唯一索引有重复值,官方却说This is not a bug
一、问题:MySQL5.7.38主从架构,主节点唯一索引上(唯一索引不是主键)有重复值,全部从节点报1062,SQL线程状态异常,根据SQL线程报的binlog位置点,insert 数据时有重复值,插入失败二、原...【详细内容】
2023-06-01  Search: BUG  点击:(231)  评论:(0)  加入收藏
JavaScript 的 Anti-Debugging 技術
JavaScript 運行在客戶端,多數 Browser 亦有很強的 debugger,有時為了保護程式碼的邏輯不被破解或想要藏惡意程式之類的,會想辦法讓分析者沒辦法輕易分析原始碼。通常又可以分...【详细内容】
2023-05-20  Search: BUG  点击:(368)  评论:(0)  加入收藏
▌简易百科推荐
Netflix 是如何管理 2.38 亿会员的
作者 | Surabhi Diwan译者 | 明知山策划 | TinaNetflix 高级软件工程师 Surabhi Diwan 在 2023 年旧金山 QCon 大会上发表了题为管理 Netflix 的 2.38 亿会员 的演讲。她在...【详细内容】
2024-04-08    InfoQ  Tags:Netflix   点击:(2)  评论:(0)  加入收藏
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(6)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(13)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(9)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(5)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(11)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(9)  评论:(0)  加入收藏
为什么都说 HashMap 是线程不安全的?
做Java开发的人,应该都用过 HashMap 这种集合。今天就和大家来聊聊,为什么 HashMap 是线程不安全的。1.HashMap 数据结构简单来说,HashMap 基于哈希表实现。它使用键的哈希码来...【详细内容】
2024-03-22  Java技术指北  微信公众号  Tags:HashMap   点击:(11)  评论:(0)  加入收藏
如何从头开始编写LoRA代码,这有一份教程
选自 lightning.ai作者:Sebastian Raschka机器之心编译编辑:陈萍作者表示:在各种有效的 LLM 微调方法中,LoRA 仍然是他的首选。LoRA(Low-Rank Adaptation)作为一种用于微调 LLM(大...【详细内容】
2024-03-21  机器之心Pro    Tags:LoRA   点击:(12)  评论:(0)  加入收藏
这样搭建日志中心,传统的ELK就扔了吧!
最近客户有个新需求,就是想查看网站的访问情况。由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的...【详细内容】
2024-03-20  dbaplus社群    Tags:日志   点击:(4)  评论:(0)  加入收藏
站内最新
站内热门
站内头条