在STEP 7 – Micro / WIN 如何实现取模功能?

描述:
取模运算符在整数除法运算中给出了余数。

实例:
6 Mod 2 = 0 --> 6 / 2 = 3;无余数
11 Mod 4 = 3 --> 11 / 4 = 2,余数为 3;

通过取模功能,可以检查一个数是否可以被另一个数整除 - 取模运算中结果是否为 0。
取模运算符通常在高级编程语言中使用,例如 C、Basic、Java 等等。但是它主要用作除法器,仅用于在特定周期执行特定函数或切换特定函数 (在循环中)。n

实例:
FOR x=1 TO 20
IF x MOD 2 = 0 THEN CALL Anything
NEXT

在此实例中,一个循环执行二十次,此外每第二个周期额外调用一次子程序 (功能) “Anything”。
使用取模库的 STEP 7 - Micro / WIN 等价程序如实例 1 所示。n

库中的每个取模块除了提供除法的余数外,还提供了一个输出位,它能立即表明是否存在除法余数。这样就节省了随后必须将除法余数与零相比较所需要的运算,并且节省了程序存储器中的空间。您需要做的所有工作仅仅是评估输出位 DWR (无余数的除法运算)。n

参数说明:

在STEP 7 - Micro / WIN 如何实现取模功能?
图 1:字节的取模块

参数 变量类型 说明
EN BOOL 执行块
E、A、M、SM、T、C、V、S、L
IN1 BYTE 输入值
VB、EB、AB、MB、SB、SMB、LB、AC、常数、*VD、*AC、*LD
IN2 BYTE 除数
VB、EB、AB、MB、SB、SMB、LB、AC、常数、*VD、*AC、*LD
DWR BOOL 输出位
1 (高) = 除法运算无余数;
0 (低) = 除法运算有余数,
A, M, V, L, SM
OUT BYTE 除法运算余数
VB、EB、AB、MB、SB、SMB、LB、AC、*VD、*AC、*LD

表 1:Modulo_B 的块参数 n

在STEP 7 - Micro / WIN 如何实现取模功能?
图 2:字的取模块

参数 变量类型 说明
EN BOOL 执行块
E、A、M、SM、T、C、V、S、L
IN1 WORD 输入值
VW、EW、AW、MW、SW、SMW、T、C、AC、LW、AEW、常数、*VD、*LD、*AC
IN2 WORD 除数
VW、EW、AW、MW、SW、SMW、T、C、AC、LW、AEW、常数、*VD、*LD、*AC
DWR BOOL 输出位
1 (高) = 除法运算无余数;
0 (低) = 除法运算有余数,
A, M, V, L, SM
OUT WORD 除法运算余数
VW、EW、AW、MW、SW、SMW、LW、AC、*VD、*LD、*AC

表 2:Modulo_W 的块参数 n

在STEP 7 - Micro / WIN 如何实现取模功能?
图 3:双字的取模块

参数 变量类型 说明
EN BOOL 执行块
E、A、M、SM、T、C、V、S、L
IN1 DWORD 输入值
VD、ED、AD、MD、SMD、SD、LD、AC、HC、常数、*VD、*LD、*AC
IN2 DWORD 除数
VD、ED、AD、MD、SMD、SD、LD、AC、HC、常数、*VD、*LD、*AC
DWR BOOL 输出位
1 (高) = 除法运算无余数;0 (低) = 除法运算有余数,
A、M、V、L、SM
OUT DWORD 除法运算余数
VD、ED、AD、MD、SMD、SD、LD、AC、*VD、*LD、*AC

表 3:Modulo_DW 的块参数 n

下面是两个如何实现取模块的实例。可以在这些块的注释中找到相关说明。n

实例 1 - 程序循环

For..Next 循环运行二十次。每第二个周期临时变量“Indirect_Address”的数值增加 4。如果没有除法运算余数,位 V10.0 始终为高 (1),(即,在第 2 个、第 4 个、第 6 个、第 8 个、第 10 个周期内,如此等等)。
循环计数器 VW0 在 FOR 命令的每个周期末尾自动增加 1 (关于此命令的更多信息可以在 STEP 7 - Micro / WIN 帮助中找到)。n

在STEP 7 - Micro / WIN 如何实现取模功能?
图 4:程序周期实例n

实例 2 - 时钟发生器

MOD_B (IN2) 的除数在此实例中已经保持为变量 (VB1)。子程序 SBR_0 每三个周期执行一次。
周期计数器 VB0 始终在程序段 3 中复位,否则可能会达到 (超过) 最大值范围,此时将会重新从零开始。在零周期内可能会发生偏离,子程序不是严格在第三个周期内调用。n

在STEP 7 - Micro / WIN 如何实现取模功能?
图 5:时钟发生器实例

通过下列库,您还可以在 STEP 7 - Micro / WIN 中使用取模运算符。
该库为每种变量访问宽度 (字节、字、双字) 各提供了一个独立的程序例程。

在STEP 7 - Micro / WIN 如何实现取模功能?
图 6:库文件夹

以归档文件形式提供的 STEP 7 Micro/WIN 库:
将“modulo.exe”文件复制到单独的目录内,然后双击启动该文件。STEP 7 Micro/WIN 库将解包。然后便可以集成该库;在版本 V3.2.4.27 及更高版本的 STEP 7 Micro/WIN 中,可以将该库用于 S7-200 项目。

注意:
关于在 STEP 7 Micro/WIN 中插入库的信息,可以在条目号 16689345 中找到。

在STEP 7 - Micro / WIN 如何实现取模功能? modulo.exe ( 64 KB )

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

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

相关推荐

发表回复

登录后才能评论