合信论坛

快捷导航
查看: 2745|回复: 0

如何实现取模功能?

[复制链接]

148

主题

236

帖子

3141

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3141
发表于 2022-7-7 15:35:27 | 显示全部楼层 |阅读模式
取模运算符在整数除法运算中给出了余数。

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

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

在此实例中,一个循环执行二十次,此外每第二个周期额外调用一次子程序 (功能) “Anything”。
使用取模库的程序如实例 1 所示。
库中的每个取模块除了提供除法的余数外,还提供了一个输出位,它能立即表明是否存在除法余数。这样就节省了随后必须将除法余数与零相比较所需要的运算,并且节省了程序存储器中的空间。您需要做的所有工作仅仅是评估输出位 DWR (无余数的除法运算)。
参数说明:

图 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 的块参数

图 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 的块参数

图 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 的块参数
下面是两个如何实现取模块的实例。可以在这些块的注释中找到相关说明。
实例 1 - 程序循环

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

图 4:程序周期实例
实例 2 - 时钟发生器

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

图 5:时钟发生器实例
通过下列库,您还可以在软件中使用取模运算符。
该库为每种变量访问宽度 (字节、字、双字) 各提供了一个独立的程序例程。
1.png

modulo.ctmwl

17.13 KB, 下载次数: 137

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

客服热线
400-700-4858 周一至周五:09:00 - 18:00
深圳市南山区打石一路深圳国际创新谷6栋A座9层

深圳市合信自动化技术有限公司(简称“合信技术”)成立于2003年,高新技术企业,专注于工业自动化产品的研发、生产、销售和技术服务,依靠高质量、高性能的自动化控制产品与方案为客户创造最大价值,立志于成为全球领先的工业自动化解决方案供应商。

Archiver|手机版|小黑屋|COTRUST Inc. ( 粤ICP备13051915号 )

GMT+8, 2024-5-15 23:30 , Processed in 0.078158 second(s), 23 queries .

快速回复 返回顶部 返回列表