plc中整数变为双整数,如果输入IN是MW2,而输出OUT是MD2,给MW2赋值为1,则

当前位置: >>
电气控制与PLC应用项目11液体混合装置控制
项目11 液体混合装置控制? ? ? ? ?【学习目标】 1.掌握算术运算指令、转换指令和字逻辑运算指令特点及正 确使用。 2.掌握模拟量输入/输出模块的正确安装、设置、调试。 3.会使用算术运算指令、转换指令和字逻辑运算指令编写简 单的程序。 4.能独立完成简单模拟量控制系统(如液体混合控制装置、 炉温控制系统)的硬件配置及安装、硬件组态及程
序编写。 11.1 项目简述? ?多种液体按一定比例混合在很多生产过程中是不可缺少的关 键环节,液体混合控制的可靠性是非常重要的。 图11-1所示为一液体混合控制装置,由一个模拟量液位传感 器-变送器(输出为4~20mA)来检测液位的高低。对A和B 两种液体原料按比例混合,控制要求如下:(1)按下启动 按钮SB1,液体A阀门打开,液体A流入容器。(2)当液位 达到30%后,则关闭液体A阀门,打开液体B阀门,开始加 入液体B。(3)当液位达到100%后,则关闭液体B阀门, 搅拌电动机开始搅匀。(4)搅拌电动机工作10s后停止搅动, 混合液阀门打开,开始放出混合液体。(5)当液体放空后, 延时5s后关闭混合液阀门。按停止按钮,系统应立即停止运 行。 液体B Y2液体A Y1搅拌器液位 传感器-变送器MY3 混合液阀门图11-1 液体混合控制装置?用PLC实现对两种液体混合装置的控制。本项目涉及对 模拟量信号的处理,因此应该对模拟量输入模块、模拟量输 出模块以及对模拟信号的处理进行相关内容的准备。模拟信 号的处理一般都用到算术运算指令、转换指令和字逻辑运算 指令。 11.2 相关知识11.2.1 模拟量的处理?在生产过程中,有许多过程变量的值是随时间连续变化 的(如温度、压力、流量等),称为模拟量。为了实现对这 些物理量的控制,首先需要经测量传感器将物理量转换为电 量(如电压、电流、电阻、电荷等),然后再经变送器将测 量结果转换为标准的直流电压和直流电流信号(如 ±1000mV、±10V、4~20mA等),再将标准的模拟电信 号送入模拟量输入模块进行A/D转换,变成CPU能够接收的 数字量信号后送入 CPU 进行处理, PLC 处理后的二进制电 平信号再送给模拟量输出模块进行D/A转换,转换成模拟量 信号后去驱动相应的执行器。 ? ??1.模拟量输入模块测量方法和测量范围的设置 模拟量输入模块的输入信号的种类和测量范围用安装 在模块侧面的量程卡(或称量程模块)来设置。量程卡安 装在模拟量输入模块的一侧,每两个通道为一组,共用一 个量程卡,图11-2中的模块共有8个通道,因此有4个量程 卡。量程模板可以设定为以下位置:“A”、“B”、“C”和 “D”。其中,“A”为热电阻、热电偶测量,测量范围为 ±1000mV;“B”为电压测量,测量范围为±10V;“C” 为四线变送器测量,传感器电源线与信号线分开,测量范 围为4~20mA;“D”为两线变送器测量,传感器电源线与 信号线并用,传感器的电源通过模拟量输入模块供给,测 量范围为4~20mA。使用STEP7中的硬件组态功能可以 进一步确定测量范围。 模块出厂时量程卡预设在B位置,如果需要的话,必 须重新插入量程模板,以更改测量方法和测量范围。各种 测量方法和测量范围的设定都打印在模拟量模板上。设置 量程 ?卡时先使用改锥将量程卡从模拟量输入模块中松开,如图 11-2所示;根据要设置的量程,确定量程卡的位置,并按 标记方向将量程卡插入模拟量输入模块中,如图11-3所示。图11-2 将量程卡从模拟量输入模块中松开图11-3 将量程卡插入模拟量输入模块 ???? ?如果没有正确的设置量程卡,将会损坏模拟量输入模块。 在STEP7中,对模拟量模块进行参数化设置时,所选测量 传感器类型必须与模块上量程卡设定的类型相匹配;否则, 模块上的SF指示灯将指示模块故障。 2.传感器与模拟量输入模块连接 根据测量方法的不同,可以将电压和电流传感器以及 电阻器等不同类型的传感器连接到模拟量输入模块。为了 减少电子干扰,对于模拟信号应使用双绞线屏蔽电缆。模 拟信号电缆的屏蔽层应该两端接地。 如果电缆两端存在电 位差,将会在屏蔽层中产生等电位连接电流,造成对模拟 信号的干扰。在这种情况下,应该让电缆的屏蔽层一点接 地。 (1)带隔离的模拟量输入模板 对于带隔离的模拟量输入模板,在CPU的M端和测量电 流MANA的参考点之间没有电气连接。 如果测量电流 MANA参考点和CPU的M端存在一个电位差UISO,必须选 ?? ?? ??用隔离型模拟输入模块。通过在 MANA 端子和 CPU 的 M 端子之间使用一根等电位连接导线,可以确保UISO不会超 过允许值。 (2)不带隔离的模拟量输入模块 对于不带隔离的模拟量输入模块,在CPU 的M端和测 量电流 MANA的参考点之间,必须建立电气连接。为此, 应连接MANA端子与CPU的M端子以及IM153的M端子。 MANA和CPU 的M 端子及IM153之间的电位差会造成模拟 信号的中断。 (3)有限电位差UCM 在输入通道的测量线 M-和测量电路的参考点 MANA 之间只会发生有限电位差 UCM(共模电压)。为了防止 超过允许值,可以根据传感器的电线连接情况,采取不同 的措施。 3.连接带隔离的传感器 ?带隔离的传感器不能与本地接地电线连接(本地接 地)。带隔离的传感器应无电势运行。 对于带隔离的传 感器,在不同传感器之间会引起电位差,这些电位差可能 是由于干扰或传感器的本地布置情况造成的。L+ M M+ MADC 逻辑 背板总线 光电隔离 光电隔离 隔离传感器 (热电偶)?M+ M推荐连接 MANACPU UISO M内部 L+ M 接地母线图11-4 连接带隔离的传感器至带隔离的模拟量输入模块 ?? ? ? ? ? ? ?为了防止在具有强烈电磁干扰的环境中运行时超过 UCM的允许值,建议将 M-与 MANA连接。在连接用于电 流测量的双线变送器和阻性传感器时,禁止将M-连接至 MANA。连接电路如图11-4和图11-5所示。在图11-4至图 11-11中所用的缩写词和助记符具有以下含义。 M+: 测量导线(正) M -: 测量导线(负) MANA: 模拟测量电路的参考电压 M: 接地端子 L +:24 VDC电源端子 UCM:MANA测量电路的输入和参考电位之间的电位差 UISO: MANA和CPU 的M端子之间的电位差 L+ M M+ MADC光电隔离隔离传感器 (热电偶)M+ M推荐连接 MANA逻辑背板总线CPU M内部 L+ M 接地母线图11-5 连接带隔离的传感器至不带隔离的模拟量输入模块 ? ?4.不带隔离的传感器 不带隔离的传感器可以与本地接地电线连接(本地接地)。 如果使用的是不带隔离的传感器,必须将MANA连接至本 地接地。由于本地条件或干扰,在本地分布的各个测量点 之间会造成电位差UCM(静态或动态)。如果电位差 UCM超过允许值,在测量点之间必须使用等电位连接导 线。 如果将不带隔离的传感器连接到光隔离的模块, CPU 既可以在接地模式(参见图11-6)下运行,也可以 在未接地模式下运行。如果将不带隔离的传感器连接到不 带隔离的模板,CPU只能在接地模式下运行,如图11-7所 示。 L+ M M+ MADC光电隔离 光电隔离L+ M M+ MADC光电隔离隔离传感器 (热电偶)非隔离传感器 (热电偶)M+ M-逻辑背板总线M+ M逻辑背板总线UCMMANA CPU UISOUCMMANA CPU等电位连接导线M内部 L+ M等电位连接导线 接地母线M内部 L+ M接地母线图11-6 连接不带隔离的传感器至带隔离的模拟量输入模块 图11-7 连接不带隔离的传感器至不带隔离的模拟输入模块 ? ?5.连接电压传感器 电压传感器与模拟量输入模块之间的连接如图11-8所示。L+ M M+ MM+ MADC 逻辑 背板总线 光电隔离 光电隔离 隔离传感器 + (热电偶) U + UMANA图11-8 连接电压传感器至带隔离的模拟量输入模块 ? ?6.连接二线变送器 二线变送器可通过模拟量输入模块的端子进行短路保 护供电,并将所测得的变量转换为电流,二线变送器必须 是一个带隔离的传感器,连接参考电路如图11-9所示。L+ M M+ MADC 逻辑 背板总线 光电隔离 光电隔离 压力传感器 P 二 线 + 变送器 二 线 + 变送器 -压力传感器PM+ M-MANA图11-9 连接二线变送器至带隔离的模拟量输入模块 ?二线变送器的供电电源L+也可以从模块馈入,连接参 考电路如图11-10所示。这种方式必须使用STEP7将二线 变送器作为四线变送器进行参数赋值。L+ M光电隔离 光电隔离压力传感器P二 线+ 变送器 -M+ M-ADC逻辑背板总线MANA图11-10 连接从L+供电的二线变送器至带隔离的模拟量输入模块 ??7.连接四线变送器 四线变送器与模拟量输入模块的连接电路如图11-11所示。L+ M M+ MADC光电隔离 光电隔离压力传感器P 四 线 变送器+ + L+ M压力传感器PM+ M-逻辑背板总线MANA图11-11 连接四线变送器至带隔离的模拟量输入模块 ????? ? ?8.连接热敏电阻和普通电阻 热敏电阻/普通电阻可以使用两线制、三线制或四线制 端子进行接线。 对于四线端子和三线端子,模块可以通 过端子 IC+和 IC-提供恒定电流,以补偿测量电缆中产生 的电压降。如果使用四位或三位端子进行测量,由于可以 补偿两位端子的测量,测量结果将更精确。在带有4个端 子的模块上连接二线电缆时,需在热敏电阻上将IC+和M+ 短接,IC-和M-短接,如图11-12所示。在带有4个端子的 模块上连接三线电缆时,一般必须短接M-和IC-,并确保 所连接电缆IC+和M+都直接连接到了热敏电阻,其连接电 路如图11-13所示。但SM331×RTD例外,其连接电路如 图11-14所示,必须确保IC-和M-电缆直接连接到热敏电阻 上。 图11-12和图11-18中所用的缩写词和助记符具有以下含义: IC+: 恒定电流导线(正) IC-: 恒定电流导线(负) M+: 测量导线(正) M-: 测量导线(负) ? ? ? ?MANA: 模拟测量电路的参考电压 M: 接地端子 L+: 24 VDC电源端子 S-: 检测头(负)光电隔离 光电隔离 M+ M-L+ ML+ M M+ M-光电隔离 光电隔离tIC+ IC-ADC逻辑背板总线ICIC+ IC-ADC逻 背板总线 辑t 热敏电阻MANAMANA图11-12 热敏电阻与隔离的AI之间的两线连接图11-13 热敏电阻与隔离的AI之间的三线连接 L+ M M+ MIC+ ICADC光电隔离 光电隔离L+ M M+ M逻 背板总线 辑光电隔离 光电隔离t热敏电阻tMANAICIC+ IC-ADC逻 背板总线 辑热敏电阻 MANA图11-14 热敏电阻与SM331 AI8×RTD之间的三线连接?图11-15 热敏电阻与隔离的AI之间的四线连接在带有4个端子的模块上连接四线电缆时,可以通过M+ 和M-端子测量热敏电阻所产生的电压。在连接时,在热敏电 阻上IC+与M+短接,IC-与M-短接。在连接时,应确保所连 接电缆IC+和M+以及电缆IC-和M-都直接连接到了热敏电阻, 如图11-15所示。 ?在带有3个端子模块(如SM331 AI8×13位)上连接 二线电缆时,需短接模块的M-和S-端子,连接电路如图 11-16所示。三线连接电路如图11-17所示。在带有3个端 子模块上连接四线电缆时,电缆的第4条线必须悬空,连 接电路如图11-18所示。L+ M 光电隔离 光电隔离SM+ M-ADC逻 辑背板总线t热敏电阻 MANA图11-16 热敏电阻与SM331 AI8×13位之间的两线连接 L+ M光电隔离 光电隔离L+ M光电隔离 光电隔离SM+ M-ADC逻 背板总线 辑第4条线悬空SM+ M-ADC逻 背板总线 辑t 热敏电阻t 热敏电阻图11-17 热敏电阻与SM331 AI8×13位之间的三线连接?图11-18 热敏电阻与SM331 AI8×13位之间的四线连接热电偶与模拟量输入模块之间的连接有多种方式,可 以直接连接,也可以使用补偿导线连接,且每一个通道组 都可以使用一个模拟量模块所支持的热电偶,与其他通道 组无关。具体连接电路请参考S7-300 PLC可编程控制器 模板规范参考手册。 ? ???9.连接负载/执行器至模拟量输出模块 模拟量输出模块为负载和执行器提供电流和电压,对 于模拟信号,应使用屏蔽电缆和双绞电缆。电缆QV和S+、 MANA和S-应分别绞接在一起,由此可降低干扰。应将电 缆两端的模拟电缆屏蔽层接地。 如果电缆两端存在电位差,将会在屏蔽层中产生等电 位连接电流,造成对模拟信号的干扰。在这种情况下,应 该让电缆的屏蔽层一点接地。 对于带隔离的模拟量输出模块,在CPU的M端和测量 电流MANA的参考点之间没有电气连接。如果测量电流 MANA参考点和CPU的M端存在一个电位差UISO,必须 选用隔离模拟输出模块。通过在 MANA 端子和 CPU 的 M 端子之间使用一根等电位连接导线,可以确保UISO不会 超过允许值。 ????? ? ? ? ? ? ?对于不带隔离的模拟量输出模块,在CPU 的M端和测 量电流 MANA的参考点之间,必须建立电气连接。因此, 连接 MANA端子与 CPU的 M端子。MANA和 CPU的 M端 子之间的电位差,会造成模拟信号的中断。 对于电压输出型模块可以采用双线制和四线制电路, 对于电流型模拟量输出模块,与负载的连接只能采用双线 制。各种参考连接电路如图11-19~图11-22所示,图中所 用的缩写词和助记符具有以下含义。 QV:模拟量输出电压 S+:探测器导线(正) S -:探测器导线(负) MANA:模拟电路的参考电压 RL:负载阻抗 L+:24V DC电源端子 M:接地端子 UISO:MANA和CPU的M端子之间的电位差 QI:模拟量输出电流 ?负载与电压输出型带隔离模块之间的四线连接,可以 实现高精度输出。连接时需要在传感器导线(S- 和 S+) 之间连接负载。由此,可以在负载上直接测量电压并进行 修正。参考电路如图 11-19所示。光电隔离 光电隔离 QV 背板总线 逻辑 DAC SMANA CPU UISO M内部 L+ M 接地母线 S+ RL 负载 L+ M图11-19 负载与带隔离电压输出型模拟量输出模块之间的四线连接 ?负载与不带隔离的模板的电压输出之间的连接,若采 用双线电路,只需连接负载至端子QV和测量电路MANA 的参考点,S+和S-端子可以断开,但将不能达到四线电路 的精度,参考电路如图11-20所示。光电隔离 L+ MQV 背板总线逻辑DACRL 负载MANA CPU M内部 L+ M 接地母线图11-20 负载与不带隔离的电压输出型模拟量输出模块之间的双线连接 光电隔离 光电隔离 QI 背板总线 逻辑 DAC SMANA CPU UISO M内部 L+ M 接地母线L+ M光电隔离L+ M QI背板总线RL 负载逻辑DACRL 负载MANA CPU M内部 L+ M 接地母线图11-21 连接负载至带隔离的电流输出型模拟量输出模块 图11-22 连接负载至不带隔离的电流输出型模拟量输出模块 ??? ?连接负载至带隔离的电流型输出模块,必须将负载连 接到QI以及电流输出的模拟电路MANA的参考点,而 MANA端与CPU的M端不能相连,参考电路如图11-21所 示。 连接负载至不带隔离的电流型输出模块,必须将负载 连接到QI以及电流输出的模拟电路MANA的参考点,而 MANA端与CPU的M端相连,参考电路如图11-22所示。 10.模拟量的表示方式及测量精度 模拟量经过模拟量输入模块后的转换值用一个16位二 进制数补码定点数表示,其中的第15位为模拟值的符号位, 0表示正数,1表示负数;第14~0位为数值部分。如果一 个模拟量模块的精度少于16位,则模拟值将左移调整之后 才被保存在模块中。在未用的幂低的位则填入“0”,如表 11-1所示,其中的“*”为0或1。 表11-1 模拟值的表示及测量精度单 位 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 精度 /位 十进制 十六进制 符号 214 213 212 211 210 29 28 27 26 25 24 23 22 21 20 8 9 10 11 12 13 14 15 128 64 32 16 8 4 2 1 80 40 20 10 8 4 2 1 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1 * * * * * * * 0 1 * * * * * * 0 0 1 * * * * * 0 0 0 1 * * * * 0 0 0 0 1 * * * 0 0 0 0 0 1 * * 0 0 0 0 0 0 1 * 0 0 0 0 0 0 0 1 ? ??11.模拟输入量转换后的模拟值表示方法 模拟量输入模块可以测量的模拟量信号有电压、电流、 电阻和温度等,表11-2给出了模拟量输入模块的不同测量 范围的模拟量表示。表11-2中所述值适用于具有相应测量 范围的所有模块。模拟量量程的上、下限(±100%)分 别对应于十六进制的模拟值6C00H和9400H。 模拟量输入模块在模块通电前或模块参数设置完成后 第一次转换之前,或上溢出时,其模拟值为7FFFH,下溢 出时模拟值为8000H。上下溢出时SF指示灯闪烁,有诊断 功能的模块可以产生诊断中断。 表11-2 不同测量范围下模拟值的表示双极性 范围 单极性测量范围 测量范围 测量范围 转换值单位 测量范围 测量范围 测量范围 转换值单位 ±5V ±10V ±20mA 十进制 十六进制 0~10V 0~20mA 4~20mA 十进制 十六进制 5.926V 11.851V 23.70mA V 11.759V 23.52mA V 0V -10V 20mA 0mA FFFH 7EFFH 6C00H 0H 11.852V 23.70mA 22.96mA V 23.52mA 22.81mA V 20mA 0mA 20mA 4mA FFFH 7EFFH 6C00H 0H上溢出 超出范围正常范围0V -5V-20mA -H -3.52mA 1.185mA -4864 ED00H低于范围 下溢出-5.879V -11.759V -23.52mA -H -5.926V -11.851V -23.70mA -H ? ???12.模拟量输入通道的扫描时间 模-数转换以及数字化被测值向存储器或总线底板的传 送,应顺序进行,换句话说即,模拟量输入通道应顺次转 换。扫描时间,即直到模拟量输入值再次转换时所经历的 时间,是指模拟量输入模板的所有激活模拟量输入通道的 转换时间总和。如果模拟量输入通道进行了通道分组,必 须考虑到通道组之间的转换时间。可以用装入指令“L PIW…”来访问转换的结果。 转换时间由基本转换时间和模板的电阻测试和断线监 控时间组成。基本转换时间直接取决于模板量输入模板的 转换方法(如积分方法和瞬时值转换方法)。对于积分转 换方法,积分时间将直接影响转换时间。积分时间取决于 在STEP 7中所设置的干扰频率抑制。 为了减少扫描时间,可使用编程软件STEP7中的硬件 组态工具屏蔽未用的模拟量输入通道;另外,在硬件上还 需将未用通道的输入端短路。 ? ??13.模拟量输入值的规范化FC105 在STEP 7的标准库“TI-S7转换块”的子目录中有一 个可用于模拟量输入规范化的功能FC105,符号名为 “SCALE”,该功能可以将从模拟量输入模块接收的一个 整型值转换为以工程单位表示的介于下限(LO-LIM)和 上限(HI-LIM)之间的实型值。 FC105的功能可用下面方程式表示:(IN - K1)(HI_LIM - LO_LIM) OUT= +LO_LIM K2 - K1??常数K1和K2根据输入值是双极性还是单极性来设置。 假定输入整型值介于-27 648与27 648之间,则K1=-27 648.0,K2=+27 648.0;假定输入整型值介于0和27 648 之间,则K1=0.0,K2=+27 648.0。如果输入整型值大于 K2,输出(OUT)将被钳位于HI_LIM,并返回一个错误; 如果输入整型值小于K1,那么输出(OUT)将被钳 ?位于LO_LIM,并返回一个错误。ENO的信号状态将置0, RET_VAL被设置为W#16#0008。表11-3 FC105的参数参数 EN ENO IN声明 输入 输出 输入数据类型 BOOL BOOL INT REAL REAL BOOL REAL WORD存储区 I, Q, M, D, L I, Q, M, D, L说明 使能输入端,信号状态为1时激活该功能 使能输出端,如果该功能的执行无错误,该使能输出为1I, Q, M, D, L,P或常数 欲转换为以工程单位表示的实型值的输入值 I, Q, M, D, L,P或常数 以工程单位表示的上限值 I, Q, M, D, L,P或常数 以工程单位表示的下限值 I, Q, M, D, L I, Q, M, D, L,P I, Q, M, D, L,P 信号状态为1表示输入值为双极性,信号状态为0表示输入值为单极性 规范化后的工程量值(实际物理量) 如果该指令的执行没有错误,则返回值为0HI_LIM 输入 LO_LIM 输入 BIPOLAR 输入 OUT 输出RET_VAL 输出 ?FC105应用示例如图 11-23所示,FC105的形 参定义如表11-3所示。在 图11-23中,输入IN直接 从模拟量输入模块接收数 据,为PIW272;工程量 的上限为1000.0,下限值 为0.0。如果I0.1为1且 M0.0为0,则可将地址为 272的模拟量输入通道值 (0~27 648)转换为介 于0.0和1000.0之间的实型 值,并写入MD4。I0.1 EN PIW272 1.000000e+ 003 0.000000e+ 000 M0.0 INFC105 ENO RET_VAL OUT LO_LIM MW2 MD4HI_LIMBIPOLAR图11-23 FC105的应用 ? ?14.模拟量输出值的规范化FC106 在STEP 7的标准库“TI-S7转换块”的子目录中有一 个可用于模拟量输出规范化的功能FC106,符号名为 “UNSCALE”,其功能是接收一个以工程单位表示且介于 下限(LO_LIM)和上限(HI_LIM)之间的实型输入值, 并将其转换为一个整型值。即将实际物理量转化为模拟量 模块所需的16位整数。 FC106的功能可用下面方程式表示:??(IN - LO_LIM)(K2 - K1) OUT= +K1 HI_LIM - LO_LIM常数K1和K2根据输入值是双极性还是单极性来设置。假 定输出整型值介于-27 648与27 648之间,则K1=-27 648.0,K2=+27 648.0;假定输出整型值介于0和27 648? ??之间,则K1=0.0,K2=+27 648.0。如果输入值超出 LO_LIM和HI_LIM范围,那么输出(OUT)将钳位于距下 限或上限较近的一方,并返回一个错误。 FC106应用示例如图11-24所示,FC106的形参定义 如表11-4所示。在图11-24中,输入IN为需要送到模拟量 输出模块的实际物理量值,为MD4;工程量的上限 (HI_LIM)为1000.0,下限(LO_LIM)值为0.0。如果 I0.1为1且M0.0为0,则可将用户程序计算的在量程范围内 的模拟量(在MD4中)转换为0~27 648之间的16位整型 值,并可以直接传送到模拟量输出模块上(PQW288), 通过模拟量输出模块输出与其对应的实际物理量。 表11-4 FC106的参数参数 EN ENO IN HI_LIM 声明 输入 输出 输入 输入 数据类型 BOOL BOOL REAL REAL REAL BOOL INT WORD 存储区 I, Q, M, D, L I, Q, M, D, L I, Q, M, D, L,P或常数 I, Q, M, D, L,P或常数 I, Q, M, D, L,P或常数 I, Q, M, D, L I, Q, M, D, L,P I, Q, M, D, L,P 说明 使能输入端,信号状态为1时激活该功能 使能输出端,如果该功能的执行无错误,该使能输出为1 欲规范为整型值的输入值 以工程单位表示的上限值 以工程单位表示的下限值 信号状态为1表示输入值为双极性,信号状态为0表示输入值为单极性 规范化后的16位整型值 如果该指令的执行没有错误,则返回值为0LO_LIM 输入 BIPOLAR 输入 OUT 输出RET_VAL 输出 I0.1 EN MD4 1.000000e+ 003 0.000000e+ 000 M0.0 INFC106 ENO RET_VAL OUT LO_LIM MW8 PQW288HI_LIMBIPOLAR图11-24 FC106的应用11.2.2 转换指令?语句表转换指令将累加器1中的数据进行类型转换, 转换的结果仍在累加器1中。能够实现的转换操作有: BCD码和整数及双整数间的转换,实数和双整数间的转换, 数的取反、取补等。在STEP7中,整数和双整数是以补码 形式表示的。BCD码数值有两种:一种是字(16位)格式的 BCD码数,其数值范围从-999到+999;另一种是双 ?? ?字(32位)格式的BCD码数,范围从-9 999 999到+9 999 999。 1.BCD码和整数转换为其他类型指令 BCD码与整数转换为其他类型指令有STL和LAD两种 指令形式,指令、说明及示例如表11-5和表11-6所示。 表11-5 BCD码与整数转换为其他类型的STL指令指令 BTI 说明 将累加器1低字中的3位BCD码数转换为16位整数,位0 到位11作为BCD数的数值进行编译,位15作为BCD数的 符号位进行编译(0=正数,1=负数)。位12到位14在 转换时无用。 将累加器1中的7位BCD码数转换为32位整数,位0到位 27作为BCD数的数值进行编译,位31作为BCD数的符号 位进行编译(0=正数,1=负数)。位28到位30在转换 时无用。 将累加器1低字中的16位整数转换为3位BCD码数,位0 ~11包含BCD数的数值,位12~15设置为BCD数的符号 位(0000 =正数,1111=负数) 示例 L MW10 //将BCD数装入累加器1低字中 BTI //将BCD数转换为整数;结果保存到累加器1低字中 T MW20 //将结果(整数)传送到存储字MW20 L MD10 //将BCD数装入累加器1 BTD //将BCD数转换为双整数;结果保存到累加器1中 T MD20 //将结果双整数传送到存储双字MD20 L MW10 //将整数装入累加器1低字中 ITB //将整数转换为BCD数(16位);结果保存到累加 //器1低字中 T MW20 // 将结果(BCD数)传送到存储字MW20 L MW12 //将整数装入累加器1 ITD //将16位整数转换为32位双整数;结果保存到累 //加器1中 T MD20 //将结果(双整数)传送到存储双字MD20 L MD10 //将32位整数装入累加器1 DTB //将整数(32位)转换为BCD数;结果保存到累 //加器1中 T MD20 //将结果(BCD数)传送到存储双字MD20 L MD10 //将32位整数装入累加器1 DTR //将双整数转换为浮点数(32位);结果保存到 //累加器1中 T MD20 //将结果(BCD 数)传送到存储双字MD20BTDITBITD将累加器1低字中的16位整数转换为32位整 数 将累加器1字中的32位整数转换为7位BCD码数,位0 ~27包含BCD数的数值,位28~31设置为BCD数的符 号位(0000 =正数,1111=负数)。DTBDTR将累加器1中的32位双整数转换为32位实数 表11-6 BCD码与整数转换为其他类型的LAD指令指令 BCD_I EN IN ENO OUT 说明 BCD码转换为整数指令。可以将输入参数IN的 内容以三位数BCD代码(+/-999)读入,并将 这个数转换成整数(16位)。其整数结果可 以由参数OUT输出。ENO和EN总是具有相同的 信号状态。 I0.0 MW0 示例 BCD_I EN IN ENO OUT MW2I_BCD EN IN ENO OUT整数转换为BCD码指令。可以将输入参数IN 的内容以整数(16位)读出,并转换为一个 三位数BCD代码(+/-999)。其结果可以由 参数OUT输出。如果产生上溢,则ENO为 “0”。I0.0 MW0I_BCD EN IN ENO OUT MW2I_DINT EN IN ENO OUT整数转换为双整数指令。可以将输入参数IN 的内容以整数(16位)读出,并转换为一个 双整数(32位)。其结果可以由参数OUT输 出。ENO和EN总是具有相同的信号状态。I0.0 MW0I_DINT EN IN ENO OUT MD2BCD_DI EN IN ENO OUTBCD码转换为双整数指令。可以将输入参数 IN的内容以七位数BCD代码(+/-9 999 999)读入,并将它转换成双整数(32 位)。其双整数结果可以由参数OUT输出。 ENO和EN总是具有相同的信号状态。 双整数转换为BCD码指令。可以将输入参数IN 的内容以双整数(32位)读出,并转换为一 个七位数BCD代码(+/-9 999 999)。其结果 可以由参数OUT输出。如果产生上溢,则ENO 为“0”。I0.0 MD0BCD_DI EN IN ENO OUT MD4DI_BCD EN IN ENO OUTI0.0 MD0DI_BCD EN IN ENO OUT MD4DI_REAL EN IN ENO OUT双整数转换为浮点数指令。可以将输入参数 IN的内容以双整数读出,并将它转换为一个 浮点数。其结果可以由参数OUT输出。ENO 和EN总是具有相同的信号状态。I0.0 MD0DI_REAL EN IN ENO OUT MD4 ?在执行BCD码转换为整数或长整数指令时,如果BCD 数是无效数(其中的一位值在10~15范围内),将得不到正 确的转换结果,并导致系统出现“BCDF”错误。在这种情 况下,程序的正常运行顺序被终止,并有下述之一事件发 生:(1)CPU将进入STOP状态。(2)如果OBl21已编 程就调用。 表11-7 整数与实数取反取补的STL指令指令 说明 对累加器1低字中的16位整数求反码。求反码 指令为逐位转换,即“0”变为“1”,“1” 变为“0”。其结果保存在累加器1的低字 中。 对累加器1中的32位整数求反码。求反码指 令为逐位转换,即“0”变为“1”,“1” 变为“0”。其结果保存在累加器1中。 对累加器1低字中的16位整数求补码(取反码 再加1)。求补码指令为逐位转换,即“0” 变为“1”,“1”变为“0”;然后对累加器 中的内容加“1”。转换结果保存在累加器1 的低字中。求补码指令相当于该数乘以“1”。 对累加器1中的32位整数求补码。求补码指 令为逐位转换,即“0”变为“1”,“1” 变为“0”;然后对累加器中的内容加 “1”。转换结果保存在累加器1中。求补码 指令相当于该数乘以“-1” 对累加器1中的32位实数的符号位求反码(相 当于乘以-1)。该指令可转换累加器1中位31 的信号状态(尾数的符号位)。其结果保存 在累加器1中。 示例 L MW8 //将数值装入累加器1低字中 INVI //对16位数求反码 T MW20 //将结果传送到存储字MW20 L MD8 //将数值装入累加器1中 INVD //对32位数求反码 T MD20 //将结果传送到存储双字MD20INVIINVDNEGIL MW8 //将数值装入累加器1低字中 NEGI //对16位数求补码 T MW12 //将结果传送到存储字MW12NEGDL MD8 //将数值装入累加器1中 NEGD //对32位数求补码 T MD12//将结果传送到存储双字MD12NEGRL MD8//将数值装入累加器1中(例如:MD8=1.5E+02) NEGR // 将浮点数(32 位)取反 T MD20//将结果送到MD20(例如:结果=-1.5E+02) 表11-8 整数与实数取反取补的LAD指令指令 INV_I EN IN ENO OUT 说明 整数的二进制反码指令。可以读取输入参数 IN中的内容,并使用十六进制掩码W#16#FFFF 执行布尔逻辑异或(XOR)功能。因此,该指 令每一位均变为相反值。 ENO和EN总是具有 相同的信号状态。 I0.0 MW0 示例 INV_I EN IN ENO OUT MW2INV_DI EN IN ENO OUT双整数的二进制反码指令。可以读取输入参 数IN中的内容,并使用十六进制掩码 W#16#FFFF FFFF执行布尔逻辑异或(XOR) 功能。因此,该指令每一位均变为相反值。 ENO和EN总是具有相同的信号状态。 整数的二进制补码指令。可以读取输入参数 IN中的内容,并执行二进制补码操作。二进 制补码指令相当于乘以(-1),并改变其符 号(例如:从一个正值变为负值)。ENO和EN 总是具有相同的信号状态,以下例外:如果 EN的信号状态为“1”,并发生上溢,则ENO 的信号状态为“0”。 双整数的二进制补码指令。可以读取输入参 数IN中的内容,并执行二进制补码操作。二 进制补码指令相当于乘以(-1),并改变其 符号(例如:从一个正值变为负值)。ENO 和EN总是具有相同的信号状态,以下例外: 如果EN 的信号状态为“1”,并发生上溢, 则ENO的信号状态为“0”。 浮点数求反指令。可以读取输入参数IN中的 内容,并改变其符号。浮点数求反指令相当 于乘以(-1),并改变其符号(例如:从一 个正值变为负值)。ENO和EN总是具有相同的 信号状态。I0.0 MD0INV_DI EN IN ENO OUT MD4NEG_I EN IN ENO OUTI0.0 MW0NEG_I EN IN ENO OUT MW2NEG_DI EN IN ENO OUTI0.0 MD0NEG_DI EN IN ENO OUT MD4NEG_R EN IN ENO OUTI0.0 MD0NEG_R EN IN ENO OUT MD4 ????由于3位BCD数所能表示的范围是从-999到+999,小 于16位整数的数值范围,因此,一个整数到BCD数的转换, 并不总是可行的。在执行ITB指令时,如果整数超出了 BCD码所能表示的范围,在累加器1低字中将得不到有效 的转换结果。同时,状态字中的溢出位(OV)和溢出保持值 (OS)将被置为1。在程序中,一般需要根据状态位OV或 OS判断累加器1低字中的结果是否有效,以免造成进一步 的运算错误。基于相同的原因,在执行DTB指令(长整数 转换为7位BCD码)时,也有类似问题需要注意。 2.整数与实数的取反取补指令 S7-300有5条整数与实数取反取补指令,每条指令都有 STL和LAD两种形式。指令格式、说明和示例如表11-7和 表11-8所示。 对累加器中的数求反码,即逐位将0变为1,1变为0。 对累加器1中的整数求补码,则逐位取反,再对累加器1中 的内容加1。对一个整数求补码相当于对该数乘以-1。实 数取反是将符号位取反。取反是将累加器1的内容按字或 ???双字数据类型处理,而求补只有对整数或长整数才有意义。 3.实数和双整数间的转换指令 S7-300 PLC共有4条实数和双整数之间的转换指令, 指令格式、说明和示例如表11-9和表11-10所示。表11-9 实数和双整数间的STL转换指令说明 将累加器中的32位浮点数转换成为一个32位双 整数,并将结果取整为最近的整数。如果被转 换数字的小数部分位于奇数和偶数结果中间, 则该指令选择偶数结果。如果有数值超出这一 范围,则状态位OV和OS置为“1”。结果保存 在累加器1中。将累加器1中的实数化整为大于或等于该实数的最小 整数。如果有数值超出这一范围,则状态位OV和OS 置为“1”。结果保存在累加器1中。 将累加器1中的实数化整为小于或等于该实数的 最大整数。如果有数值超出这一范围,则状态 位OV和OS置为“1”。结果保存在累加器1中指令示例 L MD0 //将浮点数装入累加器1中 RND //将浮点数转换为整数,并将结果取整 T MD4 //将结果(双整数)传送到MD4RNDRND+L MD0 //将浮点数装入累加器1中 RND+ //将浮点数转换为整数(32位),并将结果取整 T MD4 //将结果传送到MD4 L MD0 //将浮点数装入累加器1中 RND- //将浮点数转换为整数(32位),并将结果取整 T MD4 //将结果传送到MD4 L MD0 //将浮点数装入累加器1中 TRUNC //将浮点数转换为整数,并将结果取整 T MD4 //将结果传送到MD4RND-TRUNC将累加器1中32位浮点数转换成为一个32位整数(双整 数)(截尾取整)。如果有数值超出这一范围,则状 态位OV和OS置为“1”。结果保存在累加器1中。 11.2.3 算术运算指令???在STEP 7中可以对整数、长整数和实数进行加、减、乘、 除算术运算。算术运算指令在累加器1和2中进行,参与运算 的第1操作数在累加器2中,第2操作数在累加器1中。算术运 算的结果保存在累加器1中,累加器2中的值保持不变。CPU 在进行算术运算时,不必考虑RLO,对RLO也不产生影响。 然而算术运算指令对状态字的某些位将产生影响,这些位是: CCl和CC0,OV,OS。可以用位操作指令或条件跳转指令, 对状态字中的标志位进行判断操作。 1.整数和双整数算术运算 使用整数算术运算指令,可以进行两个整数(16位和32 位)之间的运算,整数算术运算指令格式和指令说明如表 11-11所示,双整数算术运算指令格式和指令说明如表11-12 所示。 表11-10 实数和双整数间的LAD转换指令指令 ROUND EN IN ENO OUT 说明 舍入为双整数指令。可以将输入参数IN的内 容以浮点数读入,并将它转换成一个双整数 (32位)。其结果为与输入数据最接近的整 数(“最接近舍入”)。如果浮点数介于两 个整数之间,则返回偶数。其结果可以由参 数OUT输出。如果产生上溢,则ENO为“0”。 舍去小数取整为双整数指令。可以将输入参 数IN的内容以浮点数读入,并将它转换成一 个双整数(32位)(“舍入到零方式”)。 其双整数结果可以由参数OUT输出。如果产生 溢出,则ENO为“0” I0.0 MD0 示例 ROUND EN IN ENO OUT MD4TRUNC EN IN ENO OUTI0.0 MW0TRUNC EN IN ENO OUT MW2CEIL EN IN ENO OUT上取整指令。可以将输入参数IN的内容以浮 点数读入,并将它转换成一个双整数(32 位)。其结果为与输入数据最接近、大于浮 点数的整数(“向正无穷大舍入”)。如果 产生上溢,则ENO为“0”。 下取整指令。可以将输入参数IN的内容以浮 点数读入,并将它转换成一个双整数(32 位)。其结果为与输入数据的整数部分最接 近、小于浮点数的整数(“向负无穷大舍入 ”)。如果产生上溢,则ENO为“0”。I0.0 MD0CEIL EN IN ENO OUT MD4FLOOR EN IN ENO OUTI0.0 MD0FLOOR EN IN ENO OUT MD4 表11-11 整数算术运算指令STL指令 说明 将累加器1,2低字中的16 位整数相加,16位整数结 果保存在累加器1低字中 LAD指令 ADD_I EN IN1 IN2 将累加器2低字中的16位 整数减去累加器1低字中 的内容,结果保存在累加 器1低字中 ENO OUT 说明 ADD_I(整数加法指令)。可以由使能(EN)输入端的逻辑 “1”信号激活。该指令可以使输入IN1和IN2相加,并在 OUT扫描运算结果。如果结果在整数(16位)的允许范围之 外,则OV位和OS位为“1”,并且ENO为逻辑“0”,以防止 执行通过ENO相连(级联布置)的该算术运算方块之后的其 它功能。 SUB_I(整数减法指令)。可以由使能(EN)输入端的 逻辑“1”信号激活。该指令可以使输入IN1减去IN2, 并在OUT扫描运算结果。如果结果在整数(16位)的允 许范围之外,则OV位和OS位为“1”,并且ENO为逻辑 “0”,以防止执行通过ENO相连(级联布置)的该算术 运算方块之后的其它功能。 MUL_I(整数乘法指令)。可以由使能(EN)输入端的 逻辑“1”信号激活。该指令可以使输入IN1和IN2相 乘,并在OUT扫描运算结果。如果结果在整数(16位) 的允许范围之外,则OV位和OS位为“1”,并且ENO为逻 辑“0”,以防止执行通过ENO相连(级联布置)的该算 术运算方块之后的其它功能。 DIV_I(整数除法指令)。可以由使能(EN)输入端的 逻辑“1”信号激活。该指令可以使输入IN1除以IN2, 并在OUT扫描运算结果。如果结果在整数(16位)的允 许范围之外,则OV位和OS位为“1”,并且ENO为逻辑 “0”,以防止执行通过ENO相连(级联布置)的该算术 运算方块之后的其它功能。+ISUB_I EN IN1 IN2 ENO OUT-IMUL_I *I 将累加器1,2低字中的16 位整数相乘,结果为32位 整数并保存在累加器1中 EN IN1 IN2 ENO OUT/I将累加器2低字中的16位 整数除以累加器1低字中 的内容,商为16位整数并 保存在累加器1低字中, 余数存放在累加器1的高 字中 累加器1中加一个16位整 数常量,结果保存在累加 器1中DIV_I EN IN1 IN2 ENO OUT+&整数常数& 表11-12 双整数算术运算指令STL指令 说明 将累加器1,2中的32位整 数相加,32位整数结果保 存在累加器1中 LAD指令 ADD_DI EN IN1 IN2 ENO OUT 说明 ADD_DI(双整数加法指令)。可以由使能(EN)输入端的 逻辑“1”信号激活。该指令可以使输入IN1和IN2相加,并 在OUT扫描运算结果。如果结果在双整数(32位)的允许范 围之外,则OV位和OS位为“1”,并且ENO为逻辑“0”,以 防止执行通过ENO相连(级联布置)的该算术运算方块之后 的其它功能。 SUB_DI(双整数减法指令)。可以由使能(EN)输入端 的逻辑“1”信号激活。该指令可以使输入IN1减去 IN2,并在OUT扫描运算结果。如果结果在双整数(32 位)的允许范围之外,则OV位和OS位为“1”,并且 ENO为逻辑“0”,以防止执行通过ENO相连(级联布 置)的该算术运算方块之后的其它功能。 MUL_DI(双整数乘法指令)。可以由使能(EN)输入端 的逻辑“1”信号激活。该指令可以使输入IN1和IN2相 乘,并在OUT扫描运算结果。如果结果在双整数(32 位)的允许范围之外,则OV位和OS位为“1”,并且 ENO为逻辑“0”,以防止执行通过ENO相连(级联布 置)的该算术运算方块之后的其它功能。 DIV_DI(双整数除法指令)。可以由使能(EN)输入端 的逻辑“1”信号激活。该指令可以使输入IN1除以 IN2,并在OUT扫描运算结果。双整数除法元素不产生余 数。如果结果在双整数(32位)的允许范围之外,则OV 位和OS位为“1”,并且ENO为逻辑“0”,以防止执行 通过ENO相连(级联布置)的该算术运算方块之后的其 它功能。 MOD_DI(回送余数的双整数指令)。可以由使能(EN) 输入端的逻辑“1”信号激活。该指令可以使输入IN1 除以IN2,并在OUT扫描运算余数(小数)。如果结果在 双整数(32位)的允许范围之外,则OV位和OS位为 “1”,并且ENO为逻辑“0”,以防止执行通过ENO相连 (级联布置)的该算术运算方块之后的其它功能。+DSUB_DI -D 将累加器2中的32位整数 减去累加器1中的内容, 结果保存在累加器1中 EN IN1 IN2 ENO OUTMUL_DI *D 将累加器1,2中的32位整 数相乘,结果为32位整数 被保存在累加器1中 EN IN1 IN2 ENO OUT/D将累加器2中的32位整数 除以累加器1中的内容, 商为32位整数并保存在累 加器1中,余数被丢掉DIV_DI EN IN1 IN2 ENO OUTMOD将累加器2中的32位整数 除以累加器1中的内容, 余数保存在累加器1中, 商被丢掉MOD_DI EN IN1 IN2 ENO OUT+&双整数常数&累加器1中加一个32位整 数常量,结果保存在累加 器1中 ??? ??? ? ? ? ?下面的例子进行的运算是:将存储字MWl0,MW20中的 整数相加,结果减5送入存储字MWl4;将存储双字MDl0, MDl6中的长整数相加,结果减1送入存储双字MD24。因 为没有直接减去一个常数的指令,所以在程序中用加一个 “负”常数代替。编程时应注意长整常数的正确表示法。 L MW10//将MWl0中的值装入累加器1 L MW20//将MW20中的值装入累加器1,累加器1中 的原值移入累加器2 +I//将累加器1、2中的16位整数相加 + -5//上次运算结果加上-5 T MW14//将新的结果送到MWl4 L MD10//将MDl0中的值装入累加器1 L MD16//将MDl6中的值装入累加器1,累加器1中的 原值移入累加器2 +D//将累加器1、2中的32位整数相加 +L#-1//上次运算结果加上-1 ? ? ?T MD24//将新的结果送到MD24 2.实数算术运算 32位浮点数算术运算指令如表11-13,分为STL和LAD 两种形式进行描述。 表11-13 浮点数数算术运算指令STL指令 说明 将累加器1,2中的32位实 数相加,32位结果保存在 累加器1中 LAD指令 ADD_R EN IN1 IN2 ENO OUT 说明 ADD_R(实数加法指令)可以由使能(EN)输入端的逻辑 “1”信号激活。该指令可以使输入IN1和IN2相加,并在 OUT扫描运算结果。如果结果在浮点数的允许范围之外(上 溢或下溢),则OV位和OS位为“1”,并且ENO为逻辑 “0”,以防止执行通过ENO相连(级联布置)的该算术运 算方块之后的其它功能。 SUB_R(实数减法指令)可以由使能(EN)输入端的逻 辑“1”信号激活。该指令可以使输入IN1减去IN2,并 在OUT扫描运算结果。如果结果在浮点数的允许范围之 外(上溢或下溢),则OV位和OS位为“1”,并且ENO 为逻辑“0”,以防止执行通过ENO相连(级联布置)的 该算术运算方块之后的其它功能。 MUL_R(实数乘法指令)可以由使能(EN)输入端的逻 辑“1”信号激活。该指令可以使输入IN1和IN2相乘, 并在OUT扫描运算结果。如果结果在浮点数的允许范围 之外(上溢或下溢),则OV位和OS位为“1”,并且ENO 为逻辑“0”,以防止执行通过ENO相连(级联布置)的 该算术运算方块之后的其它功能。 DIV_R(实数除法指令)可以由使能(EN)输入端的逻 辑“1”信号激活。该指令可以使输入IN1除以IN2,并 在OUT扫描运算结果。如果结果在浮点数的允许范围之 外(上溢或下溢),则OV位和OS位为“1”,并且ENO 为逻辑“0”,以防止执行通过ENO相连(级联布置)的 该算术运算方块之后的其它功能。+RSUB_R -R 将累加器2中的32位实数 减去累加器1中的实数, 结果保存在累加器1中 EN IN1 IN2 ENO OUTMUL_R *R 将累加器1、2中的32位实 数相乘,32位乘积保存在 累加器1中 EN IN1 IN2 ENO OUTDIV_R /R 将累加器2中的32位实数 除以累加器1中的实数, 32位商保存在累加器1中 对累加器1中的32位实数 取绝对值,结果保存在累 加器1中。该指令的执行 与状态位无关,对状态位 也没有影响。 EN IN1 IN2 ABS EN IN ENO OUT ENO OUTABSABS 可以完成一个浮点数的绝对值运算。 ? ? ? ? ? ? ? ? ?下面的例子显示如何使用实数算术运算指令: L MD0 //将数据双字MD0的内容装入累加器1 L +12.3E+00 //将数值+12.3E+00装入累加器1,累加 器1原值被移入累加器2 /R //累加器2的内容除以累加器1的内容,结果保存在 累加器1中 T MD20 //将结果传送到MD20中(MD20=MD0/12.3) NEGR //将累加器1中的实数取负 T MD24 /将结果传送到MD24(MD24=-MD0/12.3) ABS //将累加器1中的实数求绝对值 T MD28 //将绝对值传送到MD28(MD28=ABS (MD24)) ? ?3.应用举例 【例11-1】图11-25为整数加法梯形图方块指令应用编程 举例。I0.0 ADD_I EN MW0 MW2 IN1 IN2 OUT MW10 ENO NOT Q4.0 (S) 如果输入位I0.0为1,执行整数加操作 方块指令。(MW0)+(MW2)的结果存 入MW10。若结果超出整数的允许范围 或输入I0.0为0,则输出位Q4.0置位。图11-25 使用整数加法方块指令?图11-25中,INl为被加数输入端,IN2为加数输入端, OUT为结果输出端。本例中,加数和被加数以及相加结果 的数据类型均为整数(INT),它们可以存储在存储区I,Q, M.D,L中。如果EN的信号状态为1,则进行整数加法操 作。若结果在整数的表示范围之外,则状态字的OV ???? ? ? ? ? ? ? ? ? ?和OS位为1,且使ENO为0;若结果没有溢出,则状态 字的OV位清0,OS位保持原状态,且使ENO为1;若 EN为0,则不进行加法运算,此时ENO为0。当ENO为0 时,方块之后被ENO连接的(串级排列)其它功能不执行。 下面是与图11-25梯形图完全对应的语句表程序。 A( A I0.0 JNB -003 L MW0 L MW2 +I T MW10 AN OV //若OV为1则RLO为0,否则RLO为1 SAVE //使BR=RLO CLR -003:A BR ? ? ? ??) NOT S Q4.0 【例11-2】 图11-26给出了一个有加减乘除运算的梯形图 程序。实现的运算如下: MW6=(MW0+DBW3)*15/MW2ADD_I EN MW0 DBW3 IN1 IN2 OUT MW100 ENO MW100 15 EN IN1 IN2 OUT MW102 MUL_I ENO MW102 MW2 DIV_I EN IN1 IN2 OUT MW6 ENO图11-26 算术运算方块指令应用 ??? ??? ? ? ? ? ??? ?与图11-26实现相同运算的语句表程序如下。 A( A( L MW0 L DBW3 +I T MW100 AN OV SAVE CLR A BR ) JNB -001 L MW100 ? ? ? ??? ? ? ? ? ? ? ? ?L 15 *I T MW102 AN OV SAVE CLR -001:A BR ) JNB -002 L MW102 L MW2 /I T MW6 -002:NOP 0 STL指令11.2.4 字逻辑运算指令说明 将累加器1的低字内容与累加器2的 低字内容或一个16位常数逐位进行 逻辑与运算。只有进行逻辑运算的 两个字的相应位都为“1”,结果字 的位才为“1”。结果被存放在累加 器1的低字中。 将累加器1的低字内容与累加器2的低 字内容或一个16位常数逐位进行逻辑 或运算。只有进行逻辑运算的两个字 中至少有一个的相应位为“1”,结果 字的位才为“1”。结果被存放在累加 器1的低字中。 将累加器1的低字内容与累加器2的 低字内容或一个16位常数逐位进行 逻辑异或运算。只有进行逻辑运算 的两个字中只有一个的相应位为 “1”,结果字的位才为“1”。结 果被存放在累加器1的低字中。 将累加器1的内容与累加器2的内容 或一个32位常数逐位进行逻辑与运 算。只有进行逻辑运算的两个双字 的相应位都为“1”,结果双字的位 才为“1”。结果被存放在累加器1 中。 将累加器1的内容与累加器2的内容或 一个32位常数逐位进行逻辑或运算。 只有进行逻辑运算的两个双字中至少 有一个的相应位为“1”,结果双字 的位才为“1”。 LAD指令 WAND_W EN IN1 IN2 ENO OUT表11-14 字逻辑运算运算指令说明 WAND_W(字和字相“与”指令)通过使能输入(EN)的信 号状态“1”激活,并将输入IN1和IN2表示的两个字值逐位 进行“与(AND)”运算。数值用纯二进制位的形式表示。 其结果可以在输出OUT中扫描。ENO和EN具有相同的逻辑状 态。AWWOR_W EN IN1 IN2 ENO OUTOWWOR_W(字和字相“或”指令)通过使能输入(EN)的 信号状态“1”激活,并将输入IN1和IN2表示的两个字 值逐位进行“或(OR)”运算。数值用纯二进制位的形 式表示。其结果可以在输出OUT中扫描。ENO和EN具有相 同的逻辑状态。WXOR_W EN IN1 IN2 ENO OUTXOWWXOR_W(字和字相“异或”指令)通过使能输入(EN) 的信号状态“1”激活,并将输入IN1和IN2表示的两个 字值逐位进行“异或(XOR)”运算。数值用纯二进制 位的形式表示。其结果可以在输出OUT中扫描。ENO和EN 有相同的逻辑状态。 WAND_DW(双字和双字相“与”指令)通过使能输入 (EN)的信号状态“1”激活,并将输入IN1和IN2表示 的两个字值逐位进行“与(AND)”运算。数值用纯二 进制位的形式表示。其结果可以在输出OUT中扫描。ENO 和EN具有相同的逻辑状态。WAND_DW EN IN1 IN2 ENO OUTADODWOR_DW EN IN1 IN2 ENO OUTWOR_DW(双字和双字相“或”指令)通过使能输入 (EN)的信号状态“1”激活,并将输入IN1和IN2表 示的两个字值逐位进行“或(OR)”运算。数值用纯 二进制位的形式表示。其结果可以在输出OUT中扫 描。ENO和EN具有相同的逻辑状态。XOD将累加器1的内容与累加器2的内容 或一个32位常数逐位进行逻辑异或 运算。只有进行逻辑运算的两个双 字中只有一个的相应位为“1”,结 果双字的位才为“1”。转换结果保 存在累加器1中。WXOR_DW EN IN1 IN2 ENO OUTWXOR_DW(双字和双字相“异或”指令)通过使能输入 (EN)的信号状态“1”激活,并将输入IN1和IN2表示的 两个字值逐位进行“异或(XOR)”运算。数值用纯二进 制位的形式表示。其结果可以在输出OUT中扫描。ENO和 EN具有相同的逻辑状态。 ???字逻辑指令将两个字(16位)或两个双字(32位)逐位进行逻 辑运算。两个数中的一个在累加器1中,另一个可以在累 加器2中或在指令中以立即数(常数)的方式给出,字逻辑运 算指令的逻辑运算结果放在累加器l低字中,双字逻辑运算 结果存放在累加器l中。累加器2的内容保持不变。 逻辑运算结果影响状态字的标志位。如果逻辑运算的结果 为0,则CCl位被复位为0。如果逻辑运算的结果非0,则 CCl被置为1。在任何情况下,状态字中的CC0,OV位都 被复位为0。 字逻辑运算指令有STL和LAD两种形式,指令格式、说明 如表11-14所示。 ?? ? ? ? ? ?【例11-3】 图11-27为字和字相“与”指令的应用编程举 例。INl为逻辑运算第一个数输入端,IN2为第二个数输入 端,OUT为逻辑运算结果输出端。本例中,参与逻辑运算 的数及结果均为字数据类型,它们可以存储在存储区I,Q, M,D,L中。如果EN的信号状态为l,则启动逻辑与指令, 对由INl和IN2指定的数字逐位相“与”,且使ENO为1。 若EN为0,则不进行逻辑“与”运算,此时ENO为0, ENO和EN有相同的信号状态。如果逻辑运算的结果非0, 则CC1被置为l。在任何情况下,CC0和OV都被复位为0。 下是与图11-27梯形图完全对应的语句表程序。 A I0.0 JNB -001 L MW10 L 2# 00 1111 AW ?? ??? ?T MW2 SET SAVE CLR -001:A BR = Q4.0I0.0 EN MW10 2#00 1111 IN1 IN2 OUT MW2 WAND_W ENO Q4.0 ( ) 如果输入位I0.0为1,执行字“与”操作结果 是:(1)存储字MW10的低4位被保留,其余 位被屏蔽,结果写入MW2。(2)输出位Q4.0 为1。如果输入位I0.0为0,则不进行与操 作,且输出Q4.0为0。 图11-27 使用字与梯形图方块指令 11.3 应用举例 11.3.1 液体混合控制系统设计??1.系统资源分配 根据控制要求,系统有两个按钮(启动按钮SB1和停 止按钮SB2),三个电磁阀Y1~Y3,一台搅拌电动机M1 和一个测量机构。系统资源分配表如表11-15所示。表11-15 系统资源分配表功能说明 停止按钮 启动按钮 液位测量输入通道 定时器1 定时器2 液体达30%标志 液体达100%标志 液体放空标志 地址 I0.0 I0.1 PIW288 T1 T2 M1.0 M1.1 M1.2 功能说明 搅拌电动机 液体A电磁阀Y1 液体B电磁阀Y2 混合液阀门Y3 控制步序1标志 控制步序2标志 控制步序3标志 控制步序4标志 控制步序5标志 地址 Q4.0 Q4.1 Q4.2 Q4.3 M2.1 M2.2 M2.3 M2.4 M2.5 ? ? ? ? ? ? ?2.PLC外部接线图 PLC外部接线图如图11-28所示。 3.PLC控制程序设计 (1)工作过程控制子程序FC1 FC1完成液体混合系统工作步序的控制,系统 共分为5个循环工作步序。 工序1:按下启动按钮,液体A阀门Y1打开, 液体A流入容器。控制程序如图11-29所示。 工序2:当液位达到30%时,进入工序2,关闭 液体A阀门,打开液体B阀门。控制程序如图11-30 所示。 停止按钮 启动按钮 24VI0.0 I0.1 SM321 M SM322Q4.0 Q4.1 Q4.2 Q4.3搅拌电动机 电磁阀Y1 电磁阀Y2 电磁阀Y3MM液位值 4~20mA M+ SM331图11-28 PLC外部接线图 图11-29 液体A阀门打开,液体A流入容器图11-30 液位达到30%,关闭液体A阀门,打开液体B阀门?工序3:当液面达到100%时,进入工序3,关闭液体B阀 门,搅拌电动机开始工作,同时开始延时10s。控制程序如 图11-31所示。 图11-31 液体达到100%,关闭液体B阀门,启动搅拌电动机 图11-32 搅拌10s后,关闭搅拌电动机,打开混合液阀门??工序4:延时10s到后,进入工序4,关闭搅拌电动机,并 打开混合液阀门。控制程序如图11-32所示。 工序5:当液体放空后,进入工序5,延时5s,延时到后关 闭混合液阀门,并重新打开液体A阀门,进入下一个循环。 控制程序如图11-33所示。 图11-33 混合液放空后,延时5s,关闭混合液阀门? ? ?图11-34 按停止按钮系统复位停止复位:任何时候按下停止按钮,系统进入复位状态。控 制程序如图11-34所示。 (2)液位测量及比较功能子程序FC2 FC2主要完成液面高度的测量,并进行规格化处理,然 后根据处理的结果判断电磁阀以及搅拌电动机的工作状态。 在本例中,液面高度的30%用30.0来模拟,液面高度的 100%用100.0来模拟。对于实际的系统,应根据实际液 ? ??? ?体混合装置的高度进行取值。 测量结果的规范化处理:调用模拟量输入规格化处理 功能FC105,直接读取PIW288模拟量输入通道测量值 (0~+32 768),并进行0~100%的规范化处理,处理 结果送入MD80。程序如图11-35所示。程序中使用M0.0 的常开触点控制BIPOLAR端子,以实现对单极性数据进 行规范化处理。 设置液面高度标志:当液面高度达到30%时,设置标 志M1.0;当液面高度达到100%时,设置标志M1.1;当液 面高度达到0(混合液体放空),设置标志M1.2。控制程 序如图11-36所示。 (3)启动组织块OB100 为了保证在模拟量输入规范化功能FC105实现对单极性数 据进行规范化处理,需生成一个常“0”信号M0.0,控制 BIPOLAR端子。这个功能由启动组织块OB100在系统初 ?始化时完成。控制程序如图11-37所示。图11-35 液面测量结果的规范化处理图11-36 设置液面高度标志 OB100:”Complete Restart” Network 1: CLR = M0.0图11-37 启动组织块OB100初始化程序图11-38 在OB1中调用功能FC1、FC2?CPU有3种启动方式:暖启动、热启动和冷启动。S7300 CPU(不包括CPU 318)只有暖启动,用STEP7可以指 定存储器位、定时器、计数器和数据块在电源掉电后的保持 范围。在起动期间,不能执行时间驱动的程序和中断驱动的 程序,运行时间计数器开始工作,所有的数字量输出信号都 为“0”。 ???? ?暖启动时,过程映像数据以及非保持的存储器位、定 时器和计数器被复位。具有保持功能的存储器位、定时器、 计数器和所有数据块将保留原数值。程序将重新开始运行, 执行启动OB或OB1。 由下列原因CPU执行启动:POWER ON之后;模式 开关从STOP到RUN时;通讯功能请求之后;多处理器的 同步;在H系统中在连接上之后(仅适用于备用的CPU)。 启动用户程序之前,先执行启动OB。用户可以在 OB100中编程,来设置CPU的初始化操作,例如用户程序 开始运行时的初始值,I/O模块的起始值等。程序没有长 度和时间的限制,因为循环时间监视还没有被激活,在起 动程序中不能执行时间中断程序和硬件中断程序。 (4)主循环组织块OB1 除了OB100外,功能FC1和FC2必须通过OB1调用才能被 执行并实现相应的控制功能和处理功能。控制程序如图 11-38所示。 ? ?4.系统运行调试 在PLC关机状态下,按照PLC外部接线图11-28正确连结 输入设备和输出设备。打开PLC电源,方式开关置于 STOP状态下,将OB1、OB100、FC1、FC2下载到PLC 中,然后将方式开关置于RUN状态下,运行程序。按下列 步骤进行调试:按下启动按钮,液体A电磁阀打开,液体 A流入,当液位达到30%时,关闭液体A电磁阀,液体B电 磁阀打开,当液面高度达到100%时,关闭液体B电磁阀, 启动搅拌电动机开始搅匀,搅拌电动机运行10s后,关闭 搅拌电动机,同时打开混合液电磁阀,放出液体,当液体 放空时,开始延时5s,延时时间到关闭混合液阀门,同时 打开液体A阀门,开始下一个循环。在任意时刻按下停止 按钮,系统都复位。 11.3.2 炉温控制系统设计??实现炉温的偏差控制功能,炉温给定值为600℃,控 制的偏差为±1%。当温度低于下限时启动加热器开始加 热,加热温度超过上限则停止加热。炉子的实时温度由K 型热电偶提供。 热电偶检测的温度由模拟量输入模块的PIW288通道 输入,然后送给规范化功能FC105进行规范化数据处理, 转换为在0℃~1000℃之间的一个实型物理量。将规范化 后的物理量与炉温的上下限进行比较,以实现控制要求。 炉温采集程序在OB35中编写,采样周期为500ms。 用SFC39禁止组织块OB35图11-39 组织块OB35 ? ??1.工作过程控制子程序FC1 工作过程控制子程序如图11-39所示。I0.0为启动按钮, I0.1为停止按钮。 2.启动组织块OB100 表11-16 循环中断组织块默认的参数OB号 OB30 OB31 OB32 OB33 OB34 OB35 OB36 OB37 默认的时间间隔 5s 2s 1s 500ms 200ms 100ms 50ms 20ms 10ms 默认的优先级 7 8 9 10 11 12 13 14 15图11-40 启动组织块OB100OB38?启动组织块生成一个常1信号,如图11-40所示。 ? ?? ?? ?3.循环中断组织块OB35 S7提供9个循环中断组织块(OB30~OB38),用于 按一定时间间隔循环执行中断程序。表11-16显示了循环 中断OB默认的时间间隔和优先级。 循环中断的等距时间间隔,是由时间间隔和相位偏移 量确定。 循环中断OB每一次运行的时间一定要短于中断的间 隔。如果一个循环中断OB没有执行完,循环中断时间到, 又要求循环中断OB运行,则时间错误组织块OB80启动, 循环中断导致错误程序的运行。 表11-17描述了循环中断组织块OB的临时变量 (TEMP),变量名称是OB35的缺省名称。 CPU318只能使用OB32和OB35,其余的S7-300 CPU只能使用OB35。 表11-17 循环中断组织块的的临时变量变量 OB35_EV_CLASS OB35_STRT_INF OB35_PRIORITY OB35_OB_NUMBR OB35_RESERVED_1 OB35_RESERVED_2 OB35_PHASE_OFFSET OB35_RESERVED_3 OB35_EXC_FREQ OB35_DATE_TIME 数据类型 BYTE BYTE BYTE BYTE BYTE BYTE WORD INT INT DATE_AND_TIME 描述 事件级别与标识符:11H为中断被激活 B#16#30:特殊标准的循环中断OB的起动请求,仅用于H-CPU; B#16#31~B#16#39:OB30~OB38的起动请求 分配的优先级,默认值为7(OB30)~15(OB35) OB号(30)~(38) 保留 保留 相位偏移 保留 执行的时间间隔(ms) OB被调用时的日期和时间 ???没有专用的SFC来激活和禁止循环中断,可以用 SFC40和SFC39来激活和禁止循环中断。SFC40“EN_IRT” 是用于激活新的中断和异步错误,其参数MODE为0时激 活所有的中断和异步错误,为1时激活部分中断和错误, 为2时激活指定的OB编号对应的中断和异步错误。 SFC39“DIS_IRT”禁止新的中断和异步错误,MODE为2时 禁止指定的OB编号 对应的中断和异步错误,MODE是字 节数据类型,必须用十六进制数来设置。 如果禁止了中断和异步故障,会影响所有的优先级, “DIS_IRT”影响的消除只能通过调用SFC40“EN_IRT”或 者暖启动或者冷启动。 在本题中,在OB35中编写输入模块采集的数值转换为 实际温度值,采样周期在CPU的属性中设置。程序如图 11-41所示。 OB35:”Cyclic Interrupt”图11-41 将采集到的模拟量转换为实际温度值项目小结???本项目以液体混合装置的PLC控制为例引出了算术运算 指令、转换指令和字逻辑指令等数字指令的格式、特点及使 用。在进行模拟量信号的处理时要用到数字指令,根据处理 任务的不同可以灵活选用字处理指令。 液体混合控制属于顺序控制任务,在进行顺序控制时, 要注意开始下一步任务时要先停止上一步任务。 ?另外,在液体混合控制和炉温控制程序中,引出了启 动组织块OB100、OB35的使用方法及用途。OB100是 S7-300 CPU的暖启动方式,使用该组织块可以完成用户 程序初始值的设置。OB35是循环中断组织块,可以实现 按固定时间间隔运行的程序,比如模拟量的采集。习题及思考题?? ?11-1 一台用于销售汽水和咖啡的自动售货机,具有硬币 识别、币值累加、自动售货、自动找钱等功能,此售货机 可接受的硬币为0.1元、0.5元和1元。汽水的售价为1.2元, 咖啡的售价为1.5 元。其示意图如图11-42所示。 (1)当投入的硬币总值超过1.2元时,汽水指示灯亮,当 投入的硬币总值超过1.5元时,汽水和咖啡的指示灯都亮。 (2)当汽水指示灯亮时,按汽水按钮,则汽水从售货口 自动售出,汽水指示灯闪烁(闪烁频率为1s ON,1s OFF),8s后自动停止。 ???(3)当咖啡指示灯亮时, 按咖啡按钮,则咖啡从售 货口自动售出,咖啡指示 灯闪烁(闪烁频率为1s ON,1s OFF),8s后自 汽水按钮 动停止。 汽水指示灯 (4)当按下汽水按钮或 投币口 咖啡按钮后,如果投入的 硬币总值超过所需钱数时, 复位按钮 找钱指示灯亮,售货机自 动退出多余的钱,8s后自 动停止。 (5)如果售货口发生故 障,或顾客投入硬币后又 不想买了(未按汽水按扭咖啡按钮咖啡指示灯 找钱指示灯 找钱口 售货口图11-42 题11-1图 ? ? ? ? ? ? ? ? ?或咖啡按钮),可按复位按钮,则售货机可如数退出顾客 已投入的硬币。 (6)具有销售数量和销售金额的累加功能。 11-2在FC1中编写炉窑温度控制程序,当进气电磁阀打开 时,热气流进入炉窑,炉窑温度上升。控制规则为: (1)如果检测温度低于设定值的50%,则进气阀打开的 占空比为100%。 (2)如果检测温度高于设定值的50%,且低于设定值的 80%,则进气阀打开的占空比为70%。 (3)如果检测温度高于设定值的80%,且低于设定值的 90%,则进气阀打开的占空比为50%。 (4)如果检测温度高于设定值的90%,且低于设定值的 100%,则进气阀打开的占空比为30%。 (5)如果检测温度高于设定值的100%,且低于设定值的 102%,则进气阀打开的占空比为10%。 (6)如果检测温度高于设定值的102%,则进气阀打开的 占空比为0%。 ?11-3在FC1中编写模拟量液位值的处理程序,要求:液位 高度传感器测量值范围为0~800mm,当液位值低于 100mm时,打开进料阀门,当液位高于600mm时,关闭 进料阀门。
唐俊华电气控制与PLC__液体混合装置控制1 - 副本 - 副本_电力/水利_工程科技_...60 Network 7 LD A O M0.4 T38 M0.5 11 AN = M0.6 M0.5 Network...实训三 液体混合装置控制的模拟_电力/水利_工程科技_专业资料。Plc实训 实训三 液体混合装置控制的模拟一、实训目的 1. 熟练使用置位和复位等各条基本指令,通过对...电气控制与PLC应用 习题答案_理学_高等教育_教育专区。习题答案项目一 习题及思考题 1.答:① 用于照明或电热负载时,负荷开关的额定电流等于或大于被控制电路中各...PLC 应用技能实训本项目的主要内容是以图8-1所示的...控指令编程法, 完成对液体自动混合装置的电气控制。...序号 1 2 3 4 5 6 7 8 9 教学过程 10 11 ...2.绘制液体混合装置控制系统的 PLC I/O 接线图和...11 第 4 章 控制系统软件设计及说明 4.1 梯形图...①表中标*号项目是硬件制作或软件编程类课题必填内容...11 2.1 硬件选型 ......PLC 的应用,了解不同公司的可编程控制器的型号和原理,熟悉其编程 方式,而多种液体混合装置的控制更常见于工业生产中,适合大中型...液体混合装置plc控制_电力/水利_工程科技_专业资料。...11 3.8 控制程序语句表 ---...电气控制与 PLC 应用.北京:电子工业出版社,2010 [7] 王永华.现代电气控制...11 七、专题设计总结......13 II 多种液体混合装置控制设计 设计任务及控制要求 F2 F1 物料 A F3 ...PLC 的应用领域目前不断扩大,并延伸到过程控制、批...电气控制与PLC应用技术 习题参考答案(梅丽凤)第1章习题答案_工学_高等教育_...11. 答: (1)熔体额定电流的选择 1)对于照明和电热设备等阻性负载电路的断路...液体混合装置控制系统设计_机械/仪表_工程科技_专业资料......11 谢辞 ......【4】常文平 .电气控制与 PLC 原理及应用.西安电子科技大学出版社,2006. 【5】吴...
All rights reserved Powered by
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信