STL的状态字

news/2024/11/15 11:33:07/文章来源:https://www.cnblogs.com/xiacuncun/p/18534885

什么叫状态字:

  • 如表:
BR CC1 CC0 OV OS OR STA RLO /FC
写:

通常在官方手册上:
-表示不进行读写,
x表示对应位可以写入0/12个状态
1/0表示对应位的确定状态
*表示读取

  • 官方对于各个位的解释:

    • 首次检查位:状态字的0位称作首次检查位,如果/FC 位的信号状态为“0”,则表示伴随着下一条逻辑指令,程序中将开始一个新的逻辑串。FC前面的斜杠表示对FC取反。
    • 逻辑运算结果:状态字的第1位为RLO 位(RLO= “逻辑运算结果”),在二进制逻辑运算中用作暂时存储位。比如,一串逻辑指令中的某个指令检查触点的信号状态,并根据布尔逻辑运算规则将检查的结果(状态位)与RLO位进行逻辑门运算,然后逻辑运算结果又存在RLO位中。
    • 状态位:状态位(第2位)用以保存被寻址位的值。状态位总是向扫描指令(A,AN,O,…)或写指令(=,S,R,)显示寻址位的状态(对于写指令,保存的寻址位状态是本条写指令执行后的该寻址位的状态)。
    • OR位:在用指令OR执行或逻辑操作之前,执行与逻辑操作的时候,就需要用到OR这一状态位。OR位表示先前执行的与逻辑操作产生的值为“1”,于是,逻辑操作或的执行结果就已被确定为“1”。
    • OV位:溢出表示算术或比较指令执行时出现了错误。根据所执行的算术或逻辑指令结果对该位进行设置。
    • OS位:溢出存储位是与OV位一起被置位的,而且在更新算术指令之后,它能够保持这种状态,也就是说,它的状态不会由于下一个算术指令的结果而改变。 这样,即使是在程序的后面部分,也还有机会判断数字区域是否溢出或者指令是否含有无效实数。OS位只有通过如下这些命令进行复位:JOS(若OS = 1,则跳转)命令,块调用和块结束命令。
    • CC1及CC0位:CC1和CC0(条件代码)位给出有关下列结果的相关信息:算术指令结果/比较指令结果/字逻辑指令/在移位功能中,移出位相关信息。
    • BR位:状态字的第8位称为二进制结果位。它将字处理程序与位处理联系起来,在一段既有位操作又有字操作的程序中,用于表示字逻辑是否正确。将BR位加入程序后,无论字操作结果如何,都不会造成二进制逻辑链中断。在梯形图的方块指令中,BR位与ENO位有对应关系,用于表明方块指令是否被正确执行:如果执行出现了错误,BR位为0,ENO位也为0;如果功能被正确执行,BR位为1, ENO位也为1。在用户编写的FB/FC程序中,应该对BR位进行管理,功能块正确执行后,使BR位为1,否则使其为0。使用SAVE指令将RLO存入BR中,从而达到管理BR位目的。
    • 状态字的9-15位未使用。

验证bit位

  • 1. /FC:通俗来讲,这个位表示的是当前语句是不是一个新的程序段。/表示取反,即=0表示一个程序段的结束,=1则表示还在一个程序段的执行过程中。
    • 如图,从STL语句和梯形图的对比从来看差异:

触点的与运算A或者与非运算AN,所反映出来的/FC位一定是1。这也符合"STEP7_Statement_List_for_S7-300_and_S7-400_k"这本手册对A/AN状态字的定义;
同样的,置位S复位R甚至线圈=,这一类指令反映出来的/FC一定是0,这类指令代表了一段完整的(从输入到输出,从触点到线圈)程序段。

  • 2. RLO:表示二进制(0/1)逻辑运算的结果暂存位,它一定是当前位的状态位STA和前一组运算后的RLO进行与运算的结果。
    • 通俗解释:因为有了RLO的存在,程序员可以构建一系列逻辑判断,而每个判断的执行都依赖于前一个操作的结果,例如,在一个自动化控制逻辑中,你可能需要依次检查多个传感器的状态,并基于这些状态决定是否启动机器。RLO使得每个检查的结果可以依次传递和评估,直到达到最终决策。此处的截图可以看得出来,当把M100.0置位的时候,当前的RLO变成了1,此时M100.1的STA虽然是0,但是1 & 0的结果是1,所以M100.1处的RLO依旧为1。

      以下是关于SET/CLR/SAVE

如上,在STL语句表中,可以用:
SET直接把状态字中RLO=1
CLR直接把状态字中RLO=0,但它并不会清除BR的状态
SAVE把当前状态字中RLO的值保存到BR寄存器
SET/CLR/SAVE后面跟的= AlwaysTrue其实是新的一条语句(因为他们的/FC=0),作用是把RLO的状态给到AlwaysTrue,所以其实SET/CLR/SAVE后面什么都不跟程序也不会报错。

  • 3. STA:用以保存被寻址位(扫描位:A、AN、O、ON…写指令:=、S、R…)的值
    • 通俗解释:当前变量的值就等于当前的状态位

值得注意的是,O(先与运算后或运算)A()以及AN()这一类带分支的指令,他们的STA一定是1。
(题外话:有些时候将LAD转成STL时候程序会多出像NOP 0一样的指令,其实它通常出现在一些调用块后面,在LAD中,调用块之后跟了一条没用的线,这时候就是NOP 0)

  • 4. OR
    • OR位表示先前执行的与逻辑操作产生的值为“1”,于是,逻辑操作或的执行结果就已被确定为“1”

当置位M110.0后,它于M110.1于运算的结果是1 .所以OOR位就变成了1。

  • 5. OS

  • 6. OV

  • 7. CC0/CC1

  • 8. BR:

    • 当您在STL中编写要从LAD/FBD调用的功能块或功能时,必须在离开该块之前将逻辑运算(RLO)的结果立即存储在BR位中,这样才能为LAD/FBD框提供使能输出(ENO)。使用SAVE、JCB、JNB指令执行此操作。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P4156 论战捆竹竿 题解

论战捆竹竿 题意:给定字符串 \(s\),计数 "串 \(t\) 的长度" 可能的种数有多少种,使得 \(t\) 能被 \(s\) 作为印章印出来,且 \(|t|\le w\)。\(n=|s|\le 5\times 10^5\),\(n\le w\le 10^{18}\)。 第一步: 求出 \(s\) 的周期 \(\{a_1\sim a_m\}\),包含 \(n\)(\(…

有DEM,如何在Global Mapper中绘制等高线,并导出至CAD

通常,用无人机航测或其它途径得到的DEM、DSM来绘制等高线,一般流程是将DEM导出至南方CASS或其它格式的高程点文件,再用这些高程点来建立DTM、结三角网、编辑三角网,来进行等高线的绘制,做过等高线生产的测绘兄弟们都清楚,这个过程还是十分繁琐的。实际上,用Global Mappe…

2024-2025-1 20241318 《计算机基础与程序设计》第七周学习总结

这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK07这个作业的目标 ①数组与链表②基于数组和基于链表实现数据结构③无序表与有序表④树⑤图⑥子程序与参数作业正文 https…

坐标系相关知识科普

四/七参数计算方法及"傻瓜式"转换流程 坐标转换隶属于"大地测量学"的范畴,而大地测量学呢,又是整个测绘学科中最基础、最重要,但知识的理论性最强的一门学科。今天呢,测绘营地将尽量用通俗易懂的语言为大家讲解一下坐标系的区别、几种转换方式、中央子…

Living-Dream 系列笔记 第84期

连通性问题点双连通:在无向图中,删除一个点(不是 \(x\) 或者 \(y\))后,点 \(x\) 和点 \(y\) 仍然能够彼此到达,那么称 \(x\) 和 \(y\) 是点双连通的。边双连通:在无向图中,删除一条边后,点 \(x\) 和点 \(y\) 仍然能够彼此到达,那么称 \(x\) 和 \(y\) 是边双连通的。性质…

谷歌浏览器最好的视频下载器插件-CocoCut视频下载器

这是我目前遇到最好用的视频下载插件,没有之一。 教程如下:打开播放视频的页面,选择你的插件,点击下载即可。如下图:下载地址:https://chromewebstore.google.com/detail/video-downloader-cococut/ekhbcipncbkfpkaianbjbcbmfehjflpf 官方网址:https://cococut.net 免费…

具有低开关损耗的: FF100R12W1T7EB11 FF300R12ME7PB11 FF75R12W1T7EB11 FF800R12KE7PE IGBT模块,简单了解下它们的资料

FF800R12KE7PE是62 mm 1200 V, 800 A 低饱和压降的Fast trench IGBT半桥模块,采用TRENCHSTOP™ IGBT7和发射极控制第7代二极管。关于英飞凌IGBT模块:这些产品组合包括不同的先进IGBT功率模块产品系列,它们拥有不同的电路结构、芯片配置和电流电压等级,适用于几乎所有应用。…

程序员 SEO 系列:如何找到更多搜索关键词?

本文分享有效的关键词挖掘策略,帮助你识别低竞争、高流量的蓝海关键词,提升网站排名并带来持续流量增长。了解如何通过竞品分析、长尾词挖掘等方法,发掘适合你网站的关键词,快速提升 SEO 效果。 一、关键词研究(挖词)的目的? SEO 挖词的目的是通过深入 Research 和识别有…

agc032 A~E 题解

a 倒推,每次删掉最后一个b[i]=i的即可 b 一开始发现可以构造完全二分图,使两边和同为S,这样每个点的和=对面二分图点的和=S,然后n=6和为奇数 进一步发现可以直接分成A组组内和为B的组,然后组之间连边,此时S=(A-1)B,有AB=n(n+1)/2 当n为奇数时取A=(n+1)/2,B=n,n单独一组…

devc++配置opengl库

由于VisualStudio太占内存,所以用老古董devc++配图形学的环境。 用到的文件下载链接 Step1:建项目 首先打开dev 点文件--新建--项目--Multimedia--OpenGL c++/c都行(我这里用的c++) 名称最好用英文,然后确定,保存的地方也最好没有中文路径 Step2:添加库文件 找到DEV-C++的…

达梦数据库DM Exception字符串截断错误,略坑~

前言 我之前在使用达梦数据库的时候,遇到了很多很多的问题,主要对达梦数据库也不是很熟悉,它的语法和我所熟悉的mysql和postgresql有很大的区别。 今天,讲一下我之前遇到的一个问题。这个问题的起因是用达梦数据库迁移工具,将数据库从postgresql迁移到达梦数据库。迁移之后…

引用

引用就是给变量起另外的名字,区别就是在别名前加&的符号。实质上指向同一个内存。引用的两个注意事项: 1.引用必须初始化。 2.引用初始化后不可以更改。引用做函数参数就太熟悉了,引用作函数返回值倒是没见过。 1.不能返回局部变量作为引用,任何和局部变量地址相关的操…