如何监视 32 位长度地址中的变化位,判定标志字中的有效位,单独访问双字中的位地址?

说明:
下表介绍了如何判定标志字中的有效位,如何监控记录到来或离去事件的 32 位长度地址中的变化位,在指令中如何访问双字类型变量中的某一位。

序号 举例说明
1 判定标志字中的有效位
STEP 7 中利用标志字对顺序过程进行顺序控制。在同一时刻,此步号标志字中有且仅有一位为 “1 ”,用以标示顺序控制器的当前活动步号。 利用位计数可获知活动步号并将其以文本形式指示出来,如在 ProTool 中的符号列表。为了直观起见,当前活动步号最好以整型数值的方式表示。有效位位号与当前活动步号间的关系可由下式表示: n

  • 2X = Y
    X = lnY / ln2

式中,X 指示有效位所在位号(X = 0......15),当前活动步号为 X+1,Y 为标志字的数值。请注意,Y 不得为 0 或负数(带符号)。下面给出了完成上述功能的 STL 例子程序,可供下载。n

"bitpos_c" 下载程序中包含上面所提及的功能块 FC1,并于 OB1中进行调用以供示范。n

如何监视 32 位长度地址中的变化位,判定标志字中的有效位,单独访问双字中的位地址? bitpos_c.zip ( 28 KB )

2监视 32 位长度地址
为了监视到来和离去事件的发生,需要查询 32 位长度地址中的每一位的上升沿和下降沿。与上例中类似,此处的双字也定义为双整型,计算变化位的位地址。 n

此处例子程序采用的方法与上例类似, 程序描述如下:n

  1. 为了甄别在本周期内发生变化的位,例程中调用双字异或指令将本周期与上一周期的状态进行异或,操作结果中为 1 的位即为所得。之后使用与操作判定其为到来还是离去事件。n
  2. 当双整数中有且仅有一位为 1 时,可得到如下等式,双整数的值 Y: Y = 2X
    其中,X = 0......31。利用下式计算 X 的值: X = lnY / ln2.

可供下载的例程 "Monitor_en" 中为上述功能的一个 STEP 7 项目,其中包含 FB1 和 OB1。OB1 中另以两位为例进行功能测试。

如何监视 32 位长度地址中的变化位,判定标志字中的有效位,单独访问双字中的位地址? Monitor_en.zip ( 41 KB )

3单独访问双字类型变量 DWORD 中的位
块中所定义的变量仅能以其所声明的方式进行访问。当声明时制定变量为“DWORD”类型时,仅能以双字格式而不能以位格式访问该变量。

由于可以单独访问绝对地址中的位,只要知道变量对应有绝对地址,便可直接通过绝对地址进行位访问。

图 01 例中,首先将双整型静态变量 “Variable” 的内容装入累加器 1,然后传送给 DB5 中的变量“ValueRange”。变量“ValueRange”在 DB5中的地址为 0 (DB5.DBD0 为双整型)。此时即可逐位访问此变量。

如何监视 32 位长度地址中的变化位,判定标志字中的有效位,单独访问双字中的位地址?
图 01

注意:
如果不使用绝对地址,也可以利用局部变量进行位访问。这一方法具有以下优势:

  • 此方法可应用于任何程序块中,代码可读性强。
  • 无需额外数据块。
  • 本地访问可提高操作性能。
  • 块结构或大小变化对访问无影响

定义 32 个 BOOL 类型的 TEMP 变量用于对双整型变量进行逐位操作。下例中调用指令将需进行操作的变量/参数(此处为 MD 10)传送至临时变量 “bitvar_0”至 “bitvar_31”。采用符号寻址对 32 个位变量进行操作,然后保存操作结果。

如何监视 32 位长度地址中的变化位,判定标志字中的有效位,单独访问双字中的位地址?
图 02

请注意,只有当该块被调用时,临时变量才有效。此外,在第一次读访问前需对其进行初始化。

将相关的可执行.exe 文件拷贝到独立的文件夹,双击打开该文件将自动解压缩 STEP 7 项目。随后可使用 SIMATIC Manager 打开并处理该项目。

注意:
请注意对于不同 CPU 模板,取自然对数的执行时间各不相同:

CPU 模板

执行时间典型值µs

CPU312455
CPU313, CPU314< 650
CPU315, CPU315-2, CPU316-2< 650
CPU31714,97
CPU318-235
CPU41263
CPU41435
CPU41633
CPU41735

关键词:
标志顺序控制器,顺序控制器

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc337548.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论