模拟量扩展模块 EM231、EM235 和热电偶模块 EM231 配置配置 EM 231表中显示了如何使用组态 DIP 开关来组态 EM 231 模块。所有输入设置为相同的模拟量输入量程。在该表中,ON 是闭合,OFF 是断开。只在电源接通时读取开关设置。表 A-21 组态开关表用于为 EM 231 模拟量输入和 4/8 输入(括号中为 8 输入)选择模拟量输入范围。当采用 8 输入模块以及开关 3、4 和 5 选择模拟量输入范围时,使用开关 1 和 2 来选择电流输入模式。开关 1 打开(ON)为通道 6 选择电流输入模式;关闭(OFF)选择电压模式。开关 2 打开(ON)为通道 7 选择电流输入模式;关闭(OFF)选择电压模式。表 A-21 组态开关表单极性满量程输入分辨率SW1(SW3) SW2(SW4) SW3(SW5)ONOFF ON 0-10V 2.5mVON OFF0-5V 0-20mA 1.25mV5μA双极性满量程输入分辨率SW1(SW3) SW2(SW4) SW3(SW5)OFFOFF ON ± 5V 2.5mVON OFF ± 2.5V 1.25mV表 A-22 用于选择模拟量量程和精度的 EM 235 配置开关表 A单极性满量程输入分辨率SW1 SW2 SW3 SW4 SW5 SW6ON OFF OFF ON OFF ON 0-50mV 12.5μVOFF ON OFF ON OFF ON 0-100mV 25μVON OFF OFF OFF ON ON 0-500mV 125μVOFF ON OFF OFF ON ON 0-1V 250μVON OFF OFF OFF OFF ON 0-5V 1.25mVON OFF OFF OFF OFF ON 0-20mA 5μAOFF ON OFF OFF OFF ON 0-10V 2.5mV表 A-23 用于选择模拟量量程和精度的 EM 235 配置开关表 B双极性满量程输入分辨率SW1 SW2 SW3 SW4 SW5 SW6ON OFF OFF ON OFF OFF +25mV 12.5μVOFF ON OFF ON OFF OFF +50mV 25μVOFF OFF ON ON OFF OFF +100mV 50μVON OFF OFF OFF ON OFF +250mV 12μVOFF ON OFF OFF ON OFF +500mV 250μVOFF OFF ON OFF ON OFF +1V 500μVON OFF OFF OFF OFF OFF +2.5V 1.25mVOFF ON OFF OFF OFF OFF +5V 2.5mVOFF OFF ON OFF OFF OFF +10V 5mVEM 231 热电偶模块 DIP 开关组态(订货号 6ES7 231-7PDB22-0XA8)表 A-24 组态热电偶模块 DIP 开关开关 1,2,3 热电偶类型设置描述配置开关↑1 - 接通↓0 - 断开* 将 DIP 开关 4设定为 0(向下)位置。J(缺省) 000开关 1 至 3 为模块上的所有通道选择热电偶类型(或 mV 操作)。例如,选 E 类型,热电偶开关 SW1=0,SW1 SW2=1,SW3=1K 001T 010E 011R 100S 101N 110+/-80mV 111 111开关 5 断线检测方向设置描述配置开关↑1 - 接通↓0 - 断开正向标定(+3276.7 度)00 指示断线为正负向标定1 指示断线为负(-3276.8 度)1开关 6 断线检测使能设置描述配置开关↑1 - 接通↓0 - 断开使能0将 25μA 电流注入输入端子,可完成明线检测。断线检测使能开关可以使能或禁止检测电流。断线检测始终在进行,即使关闭了检测电流。如果输入信号超出大约 ±200mV,EM 231 热电偶模块将检测明线。如检测到断线,测量读数被设定成由断线检测所选定的值。禁止1开关 7 温度范围设置描述配置开关↑1 - 接通↓0 - 断开摄氏度(ºC)0EM 231 热电偶模块能够报告摄氏温度和华氏温度。摄氏温度与华氏温度的转换在内部进行。华氏温度(ºF)1开关 8 冷端补偿设置描述配置开关↑1 - 接通↓0 - 断开冷端补偿使能0使用热电偶必须进行冷端补偿,如果没有使能冷端补偿,模块的转换则会出现错误。因为热电偶导线连接到模块连接器时会产生电压选,择±冷端补偿禁止180mV 范围时,将自动禁用冷结点补偿。
先来说说这个程序,打开【S7-200 SMART PLUS 】帮助手册----编程----子程序调用的常问问题2,程序截图:
手册中明确告知,这个子程序调用时和离开时,输出位的一些特性。
但是,如果我拿来做这个程序稍做修改,挪做其它功能又将如何?假设,我把EN管脚的地址用I0.0替换,把IN1管脚用Q0.0的NC逻辑替换会产生怎么样的结果?
编译程序、保存、下载到cpu验证一下:
大家马上都会看出来这个输出是一个随机值,或许为1,又或许为0,具体输出的状态看I0.0离开时PLC的扫描周期所处的位置。
好,我再加一点“料”,不修改子程序的前提下,对管脚再稍作修改,输出的逻辑又将如何呢?
这时输出变的有那么一点规律了,对了,这就是我们经常在深入讨论的、经典的一个话题,就是所谓“单按钮起、停”控制程序了。
如果你担心多次调用这样的子程序又将如何?那你需要自己去试试了。
所以,知道“然”,还要学会应用这个“然”字,知道了它的“不足”,就是利用它的这个“不足”,把“坏事”变为“好事”,一直被大家理解为不合理的程序调用,只要稍加修改也可以为我们所用,这个是我理解的“冤”,我想为它伸一伸。
再来看一个例子,一个循环指令的应用:
相信大家也很快能够看出问题的所在了,原因是这些临时变量、输入接口变量的初始值问题。在调用临时变量、接口变量时,大家都时刻注意着调用这些变量前,都会很自觉地做初始化的操作。但,是否是每一个变量都需要这样做初始化呢?答案当然是否定的。在特定的指令和应用环境中,如、循环指令它本身启动时,INDX管脚的初值一定是自0值开始循环的。而OUT1的管脚由于子程序多次调用,需要做初始值的操作了。不然当该子程序被多次调用时,这个管脚值会被多次修改,造成程序的混乱和错误。
修改完整的子程序:
很显然,我在这个程序中仅仅是做了需要计算结果的初始化,而对于循环指令的数据并没有做任何操作,正常运行程序如下所示:
所以,在准备做多次调用的子程序时,一些变量的初始值不是一概定论的,而是需要根据具体实际的需 要,灵活运用,扬长避短,做到心中有数,我再次想为这个定论伸一伸冤。
好了,其实编程应该是一件快乐的事情,也别老挂着苦大仇深脸,只有心情愉悦了,思路才会天马行空,任由你去驰骋。
本不想采用这个标题,感觉偏离了当时编写短文的本意,但到后修改时,突然闪出这么一个奇怪的念头,感觉还是这样写的标题或许会轻松一些,大家更容易有记忆,不当之处尽请谅解。