描述:
取模运算符在整数除法运算中给出了余数。
实例:
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”。
使用取模库的 STEP 7 - Micro / WIN 等价程序如实例 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:时钟发生器实例
通过下列库,您还可以在 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 项目。
注意:
S7-200如何通过 STEP 7 MicroWIN 将用户自定义的库集成到项目中。
modulo.exe ( 64 KB )