1、在STEP 7 Micro/WIN中,如何评价主程序或子程序中过多的的上升沿和下降沿?描述:使用以下库可以实现过多的边沿评价。通常CPU仅支持256 个边沿评价 - 见条目号:8804150。本程序例程也可以用于子程序中。通常CPU不支持此程序例程 - 见条目号:7115899。这个库包含两个例行程序:分别适用于上升沿和下降沿。图1:库文件夹上升沿图2:上升沿子程序调用参数 变量类型 说明EN BOOL 必须始终高(1)Input BOOL 信号输入,当发生(0 - 1)改变时,激 活输出1个循环周期.Memory BOOL 临时存储区Output BOOL 信号输出表1:上升沿的参数说明功能
2、:如果信号输入(input)的状态发生变化0 - 1(上升沿),那么信号输出(output)将被置位一个循环周期。存储位保留该状态。为了识别另一个边沿,信号输入(input)必须运行一个零循环。这样存储位将被复位。图3:上升沿的时序图下降沿图4:下降沿子程序调用参数 变量类型 说明EN BOOL 必须始终高(1)Input BOOL 信号输入,当发生(0 - 1)改变时,激活输出1 个循环周期Memory BOOL 临时存储区Output BOOL 信号输出表2:下降沿的参数说明功能:如果信号输入 (input) 的状态发生1 - 0 (下降沿)变化,那么信号输出 (output) 将被置位一
3、个循环周期.存储位保留该状态。为了识别另一个边沿,信号输入 (input) 必须被复位为 High 1个循环周期。这样存储位将被复位。图5:下降沿的时序图上升沿与下降沿(块: Edge_detect)图6:子程序调用块Edge_detect参数 变量类型 说明EN BOOL 使能: 使能功能,必须一直为TRUE (1)IN BOOL 信号输入,在上升沿(0-1)或下降沿(1-0),将被设置为“ OUT”一个循环周期。Memory BOOL 临时存储区OUT BOOL 信号输出表3:Edge_detect 的参数功能:如果信号输入“IN”出现上升沿(0-1)或下降沿 (1-0)变化,那么信号输出
4、“OUT2”将被置位一个循环周期。存储位保存“IN”信号的当前状态。图7:Edge_detect 信号图STEP 7 Micro/WIN库的存档文件:把“rising_falling_edge.exe” 文件复制到一个单独的文件夹,然后双击启动该文件。解包 STEP 7 Micro/WIN 库。然后可以集成这个库到 S7-200 项目中,可以在 STEP 7 Micro/WIN的3.2.4.27 以及更高版本中使用这个库。下载包含两个子程序。注意事项: 关于在 STEP 7 Micro/WIN 中插入库的信息,可以在条目号:16689345 处找到。rising_falling_edge.ex
5、e ( 30 KB ) !下面的 Clock_Integer 库可以自动将传输值从十进制转换为 BCD 格式,反之也可以从 BCD 格式转换成十进制。然后执行相应的时间操作 READ_RTC或SET_RTC。这样当传输值用操作面板或程序的十进制格式保存时,便于时间函数的处理 (READ_RTC和SET_RTC)。注意事项:在条目号:16689345 中可以找到关于将库插入 STEP 7 Micro/WIN 中的信息。图1: Clock_Integer库库的全局存储区库使用全局存储区来保证传输的用户数据的一致性。从 库中将其中一个函数 (READ_RTC_I或SET_RTC_I)插入到STEP
6、7 Micro/Win 项目,然后选中 STEP 7 Micro/Win 菜单“文件” 中的条目“Library Memory Allocation (分配库内存)”。系统会提供一个地址区,或者您也可以自己选择一个地址区。该库需要8个字节。 图2:库存储区 从CPU中读取时间(READ_RTC_I)图3:函数“READ_RTC _I”函数“READ_RTC_I”的参数参数 变量类型 说明EN BOOL 激活块如有需要时才激活块,这样能减轻CPU负担地址 DWORD 用于保存读取的时间值的地址从该偏移量地址开始为其分配8个字节。 表1:函数“READ_RTC _I”的参数功能:如果激活输入信号“
7、EN”,该块读取当前时间,将 所读取的BCD值转换成十进制值,并保存在从给定偏移量地址开始的地址中。在CPU中设置时间(SET_RTC_I)图4:函数“SET_RTC_I”函数“SET_RTC_I”的参数 参数 变量类型 说明EN BOOL 激活块只有在需要时才激活该块,这样能减轻CPU负担。地址 DWORD 存储用户时间数据的地址,该块读取从该偏移量地址开始的8个字节。表2:参数“SET_RTC_I”功能:如果激活输入信号(EN),该块读取所存储的用户数据,将 它们转换成BCD格式并以该格式来设置CPU 时钟.以十进制格式读取CPU时钟的实例:如果激活V50.0 ,就读取时间。所读取的数据以
8、十进制格式存储在VB10开始的地址中。图5:“READ _RTC_I”实例 在状态表中检查数值:该数值以十进制格式存放在时间函数所用的结构中。时间函数的存储区结构(READ_RTC, SET_RTC):VB10 = 年份VB11 = 月份VB12 = 日期VB13 = 小时VB14 = 分钟VB15 = 秒钟VB16 = 保留VB17 = 星期图6:时间值的状态表 注意事项:CPU 221和CPU 222不包含集成的时钟,所以需要 CC292模块。 将STEP 7 Micro/WIN库作为档案库文件:将文件clock_integer.exe复制到一个独立目录中并双击启动它。将STEP 7 Mi
9、cro/WIN库进行解包,可以把该库加到S7-200项目中。该库适用于STEP 7 Micro/WIN 3.2.4.27以及更高版本。 Clock_integer.exe ( 31 KB ) !如何使用 STEP 7 - Micro / WIN 中附加的逻辑运算符 (NEG, NAND, NOR, NXOR)?描述:下面我们将对这些未作为标准运算符包含在编程软件 STEP 7 - Micro / WIN 中的运算符进行描述。在条目的末尾,有一个包含了这些运算符的文件,可以将其作为库集成到 STEP 7 - Micro / WIN 软件中。 此条目描述了运算符 NEG、NAND、NOR 和 NX
10、OR。 NEGNEG 运算符提供了一个数字的二进制补码,作为返回值。二进制补码格式对应改变符号的数字,或者是数字乘以“-1”。图 1:NEG 运算符 图 2:NEG 运算符实例 NANDNAND 运算符是 AND 运算符的配对运算符。NAND (非-AND) 的输出仅在所有输入都具有状态 1 (即闭合状态) 时才会具有状态 0。x y 结果0 0 11 0 10 1 11 1 0表 1:NAND 的布尔代数 图 3:NAND 运算符 图 4:NAND 运算符实例 NORNOR 运算符是 OR 运算符的配对运算符。NOR (非-OR) 的输出仅在所有输入都具有状态 0 (即断开状态) 时才会具有
11、状态 1。只要其中一个输入接通 (状态 1),输出就会断开。x y 结果0 0 11 0 00 1 01 1 0表 2:NOR 的布尔代数 图 5:NOR 运算符 图 6:NOR 运算符实例 NXORNXOR 运算符是 XOR 运算符的配对运算符。当输入具有不同状态值时,NXOR 的输出具有状态 0。x y 结果0 0 11 0 00 1 01 1 1表 3:XNOR 的布尔代数 图 7:NXOR 运算符 图 8:NXOR 运算符实例运算符 参数 变量类型 可用的存储器类型IN BYTE VB、EB、AB、 MB、SB、SMB、LB、AC、常数、*VD 、*AC 、*LDNEG_BNAND_B
12、NOR_BNXOR_B OUT BYTE VB、EB、AB、 MB、SB、SMB、LB、AC、*VD、*AC 、 *LDIN WORD VW、EW、AW、MW 、SW 、 SMW、T、Z、AEW、LW、AC、常数、*VD、*AC、*LDNEG_WNAND_WNOR_WNXOR_WOUT WORD VW、EW、AW、MW,SW、SMW 、T 、Z、LW、AC、*VD 、*AC 、*LDIN DWORD VD、ED、AD 、 MD、SD 、SMD 、LD、AC、HC、常数、*VD、*AC、*LDNEG_DWNAND_DWNOR_DWNXOR_DW OUT DWORD VD、ED、AD 、 MD、S
13、D 、SMD 、LD、AC、*VD 、*AC、*LD表 4:操作符参数 使用下列库,您可以使用列出的操作符来访问类型为 BYTE、WORD 和 DWORD 的数据。 !在S7-200中如何限制阶跃的坡度?显示订货号描述:可以使用此FAQ的附件 “Ramp“ library ,在S7-200中限制浮点变量值的变化。 根据输入参数“IN“, “RAMP“ 块计算最大变化率限制在“MAX_VARIATION“个单位每秒的输出参数 “OUT“ 的输出值。图 01输入参数“IN“管脚如果有正向或负向的阶越,那么输出参数“OUT“管脚会紧跟着一个正向或负向的斜坡输出,此斜坡的变化率被限制在“MAX_VAR
14、IATION“ 每秒。“RAMP“ 块的输入输出接口符号 变量类型 数据类型 说明EN IN BOOL “RAMP“ 块的使能端IN IN REAL 输入值MAX_VARIATION IN_OUT REAL 输出值的每秒最大变化量(负值取反为正值)OUT IN_OUT REAL 输出值表 01将“Ramp“库加入STEP 7 Micro/WIN后,可在程序中调用 “RAMP“ 块。图 02下载:下载压缩包 “Ramp.zip“ 包含以下文件:文件 描述“ramp.mwl“ 库 - 包含 “RAMP“ 块 “Ramp.mwp“ 项目 - 本 FAQ的例子项目Ramp.zip ( 5 KB )图
15、9:库文件夹 以归档文件形式提供的 STEP 7 Micro/WIN 库:将“logical_operations.exe”文件复制到单独的目录内,然后双击运行该文件。STEP 7 Micro/WIN 库将解包。然后便可以集成该库;在版本 V3.2.4.27 及更高版本的 STEP 7 Micro/WIN 中,可以将该库用于 S7-200 项目。 注意:关于在 STEP 7 Micro/WIN 中插入库的信息,可以在条目号 16689345 中找到。 logical_operations.exe ( 64 KB ) !在STEP 7 - Micro / WIN 如何实现取模功能?显示订货号描述
16、:取模运算符在整数除法运算中给出了余数。实例:6 Mod 2 = 0 6 / 2 = 3;无余数11 Mod 4 = 3 11 / 4 = 2,余数为 3;通过取模功能,可以检查一个数是否可以被另一个数整除 - 取模运算中结果是否为 0。取模运算符通常在高级编程语言中使用,例如 C、Basic、Java 等等。但是它主要用作除法器,仅用于在特定周期执行特定函数或切换特定函数 (在循环中) 。实例:FOR x=1 TO 20IF x MOD 2 = 0 THEN CALL AnythingNEXT在此实例中,一个循环执行二十次,此外每第二个周期额外调用一次子程序 (功能) “Anything”。
17、使用取模库的 STEP 7 - Micro / WIN 等价程序如实例 1 所示。库中的每个取模块除了提供除法的余数外,还提供了一个输出位,它能立即表明是否存在除法余数。这样就节省了随后必须将除法余数与零相比较所需要的运算,并且节省了程序存储器中的空间。您需要做的所有工作仅仅是评估输出位 DWR (无余数的除法运算)。参数说明:图 1:字节的取模块参数 变量类型 说明EN BOOL 执行块E、A、M、SM、T、C、V、S、LIN1 BYTE 输入值VB、EB、AB、 MB、SB、SMB、LB、AC、常数、*VD、*AC、*LDIN2 BYTE 除数VB、EB、AB、 MB、SB、SMB、LB、
18、AC、常数、*VD、*AC、*LDDWR BOOL 输出位1 (高) = 除法运算无余数;0 (低) = 除法运算有余数,A, M, V, L, SMOUT 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、LIN1 WORD 输入值VW、EW、AW、MW 、SW 、 SMW、T 、C、AC、LW、AEW、常数、*VD 、*LD 、*ACIN2 WORD 除数VW、EW、AW、MW 、SW 、 SMW、T 、C、AC、L
19、W、AEW、常数、*VD 、*LD 、*ACDWR BOOL 输出位1 (高) = 除法运算无余数;0 (低) = 除法运算有余数,A, M, V, L, SMOUT 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、LIN1 DWORD 输入值VD、ED、AD 、 MD、SMD、SD、LD、AC、HC 、常数、*VD、*LD、*ACIN2 DWORD 除数VD、ED、AD 、 MD、SMD、SD、LD、AC、HC
20、 、常数、*VD、*LD、*ACDWR BOOL 输出位1 (高) = 除法运算无余数; 0 (低) = 除法运算有余数,A、M、V、L、 SMOUT DWORD 除法运算余数VD、ED、AD 、 MD、SMD、SD、LD、AC、*VD、*LD、*AC表 3:Modulo_DW 的块参数下面是两个如何实现取模块的实例。可以在这些块的注释中找到相关说明。实例 1 - 程序循环ForNext 循环运行二十次。每第二个周期临时变量“Indirect_Address”的数值增加 4。如果没有除法运算余数,位 V10.0 始终为高 (1),( 即,在第 2 个、第 4 个、第 6 个、第 8 个、第 1
21、0 个周期内,如此等等)。循环计数器 VW0 在 FOR 命令的每个周期末尾自动增加 1 (关于此命令的更多信息可以在 STEP 7 - Micro / WIN 帮助中找到)。图 4:程序周期实例实例 2 - 时钟发生器MOD_B (IN2) 的除数在此实例中已经保持为变量 (VB1)。子程序 SBR_0 每三个周期执行一次。周期计数器 VB0 始终在程序段 3 中复位,否则可能会达到 (超过) 最大值范围,此时将会重新从零开始。在零周期内可能会发生偏离,子程序不是严格在第三个周期内调用。图 5:时钟发生器实例通过下列库,您还可以在 STEP 7 - Micro / WIN 中使用取模运算符。
22、该库为每种变量访问宽度 (字节、字、双字) 各提供了一个独立的程序例程。图 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 中找到。modulo.exe ( 64 KB )!!如何在 STEP 7 Micro/WIN 中实现 LO
23、GO! 脉冲继电器功能 ?显示订货号描述: 本条目提供了一个包含有脉冲继电器功能的 STEP 7 Micro/WIN 库。脉冲继电器(功能块: Pulse_Relay)图1:Pulse_Relay 功能块参数 变量类型 解释EN BOOL 使能:允许使用该功能块,必须始终为TRUE (1)Input BOOL 信号输入,上升沿(0-1)触发输出置位或者复位Set BOOL 置位输出,无论当前是什么状态Reset BOOL 复位输出,无论当前是什么状态Memory BOOL 临时存储Output BOOL 信号输出表1:Pulse_Relay 的参数功能:如果信号输入“Input” 有 0-1
24、的变化边沿(上升沿)发生,如果信号输出“Output” 在低电平,那么将被置位,如果在高电平,那么将被复位。图2:Pulse_Relay 信号图将 STEP 7 Micro/WIN 库作为归档文件:将“logo_functions.exe” 文件拷贝到一个独立子文件夹中,然后双击打开它,就可以解压 STEP 7 Micro/WIN 库。然后就可将用于 STEP 7 Micro/WIN的V3.2.4.27 以及更高版本的库文件整合到 S7-200 项目上去。注意事项: 向 STEP 7 Micro/WIN 中增加库文件的相关信息可以在条目 ID:16689345 中获得。logo_functio
25、ns.exe ( 29 KB ) !虽然浮点数在状态上相等,但为什么在“比较实数是否相等”运算中却检测到存在差异?显示订货号描述:对于“比较实数是否相等”的比较运算,由过程运算提供的实数类型的数值非常不精确。由于实数存在修正的误差,故不推荐使用此数据格式进行“相等”比较。浮点数 (或实数) 由一个 32 位的单精度数表示,而访问时使用双字格式。在 S7-200 中,实数精确到 6 个小数位。当使用包括较大数和很小数的一系列数值来计算实数时,可能会出现不精确的结果。当在状态表中查看实数时,相同的实数可能有不同的二进制表示。因此我们推荐不要使用“LDR=”函数,而是使用“LDR=”这两个函数来进行
26、比较运算。这为你提供一个数值比较的比较框架。以归档文件形式提供的 STEP 7 Micro/WIN 库:将“real_compare”文件复制到单独的目录内,然后双击启动该文件。将 STEP 7 Micro/WIN 库解包。然后便可以集成该库,在版本 V3.2.4.27 及更高的 STEP 7 Micro/WIN 中,可以将该库用于 S7-200 项目。注意: 关于在 STEP 7 Micro/WIN 中插入库的信息,可以在条目号 16689345 中找到。real_compare ( 64 KB )!!怎样在STEP 7 Micro/WIN 中相互转换二进制码和格雷码?显示订货号说明STEP
27、 7 - Micro/WIN 的标准库中不包含格雷码转换。使用下载的附件可以转换成8位、16位和32 位二进制数。格雷码指令库的描述“graycode.mwl“ 指令库包括用于字节、字和双字格式的编码和解码的功能块。图 1从二进制码转换到格雷码(BIN_GRAY)功能块 BIN_GRAY_B、BIN_GRAY_W 和 BIN_GRAY_DW 把输入的字节、字和双字类型的二进制码编码成格雷码。图 2功能 参数 数据类型 操作数IN BYTE VB, IB, QB, MB, SB, SMB, LB, AC, Constant, *VD, *LD, *ACBIN_GRAY_BOUT BYTE VB,
28、 IB, QB, MB, SB, SMB, LB, AC, *VD, *LD, *ACBIN_GRAY_W IN WORD VW, IW, QW, MW, SW, SMW, LW, T, Z, AEW, Constant, AC, *VD, *AC, *LDOUT WORD VW, IW, QW, MW, SW, SMW, LW, T, Z, AC, *VD, *AC, *LDIN DWORD VD, ID, QD, MD, SD, SMD, LD, AC, HC, Constant, *VD, *LD, *ACBIN_GRAY_DWOUT DWORD VD, ID, QD, MD, SD,
29、SMD, LD, AC, *VD, *LD, *AC表 1从格雷码转换到二进制码(GRAY_BIN)功能块 GRAY_BIN_B、GRAY_BIN_W 和 GRAY_BIN_DW 把输入的格雷码解码成字节、字和双字类型的二进制码。图 3功能 参数 数据类型 操作数IN BYTE VB, IB, QB, MB, SB, SMB, LB, AC, Constant, *VD, *LD, *ACGRAY_BIN_BOUT BYTE VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *LD, *ACGRAY_BIN_W IN WORD VW, IW, QW, MW, SW, SMW, LW, T, Z, AEW, Constant, AC, *VD, *AC, *LD