当我们在实际的应用中需要对当前的温度或是压力进行采集显示的时候,我们需要用到模拟量模块来对模拟量信号进行采集,在这里我们以S7-200smartPLC的EMAE04模拟输入模块为例来说明如何使用这个模块来采集温度或是压力。
例如:现需要实时监控发电机机组的温度,假设变送器输出的信号为0到10V的电压信号,Zui大温度值为150。Zui小温度值为0度。
要完成正确读取实际的温度值,需要进行以下三步操作:
第一、正确的接线
第二、正确的硬件组态
第三、编写正确的程序
1、按照变送器提供的信号输出接线方式进行正确的接线,对于EMAE04模块的信号接入。
如图所示:
若变送器为三线制输出的变送器,则接线时,先把变送器的24V电源接上,变送器上的信号输出接端0+,0-端子接24V电源负。
2、打开S7-200smart的编程软件STEP 7-MicroWINSMART,打开其系统块对其进行硬件组态。如图所示:
注意:对于信号类型的选择,通道0的设置对通道1的设置也有效,通道2的设置对通道3 也同样有效。
3、编写转换程序
S7-200smartPLC来说其Zui大的数字量为27648。我们可以根据其得到的数字量的大小转换成我们实际的温度值。
对其转换程序,我们可以使用S7-200中的scaling模拟量转换库,使用库移植的方法把其移植到S7-200smart的软件中。其移植方法可以参考前面所介绍的内容。
FOR-NEXT循环指令
循环指令的引入为解决重复执行相同功能的程序段提供了极大的方便,并且优化了程序结构,特别是在进行大量相同功能计算和逻辑处理时,循环指令非常有用。
循环指令由FOR和NEXT两条指令构成,使用时必须成对出现,FOR…NEXT指令中间的程序称为循环体,就是PLC每次扫描到此处时需要循环执行的程序。
INDX:记录循环次数,每执行一次循环,数值会加1,该值在FOR指令重新使能时会自动清零。
INIT、FINAL:循环的起始值和循环的结束值。
FOR NEXT之间的程序,称为循环体,是用来实现循环的。
每循环一次INDX的值会加1,并且用它跟终止进行比较,如果大于终终止值,循环结束。
注:循环次数若是太多可能出现看门狗错误的报警。
FOR NEXT示例应用
循环指令使用注意事项:
1、FOR、NEXT指令使用时必须成对出现。
2、FOR、NEXT指令可以循环嵌套,Zui多8层,使用时若嵌套使用需注意嵌套层数。
3、每次重新使能改指令时,PLC自动复位各参数,使用时可以不需要对参数进行清零。
4、初始值大于终止值时,循环指令不执行,设置结束次数时需注意,不要设置的比结束值大。
例程1:计算0+1+2+3+...+100的结果?
例程1
例程2:通过 FOR-NEXT 指令,对 5 个变量:VW100、VW102、VW104、VW106、VW108进行求和,求和结果放到 VW200 中,计算的平均值存放在 VD210 中 。
例程2
补充说明:
FOR-NEXT指令的循环次数如何计算?
答:FOR-NEXT工作过程:启用FOR-NEXT指令,将 INIT( 初始值) 复制到INDX(当前循环次数);每执行一次,INDX (当前循环次数) 加1; 如 果 INDX 大于 FINAL(终止循环次数),终止循环。
比如: INIT=1 FINAL=10,则循环体被执行10次,退出循环, 退出循环后INDX=11;
INIT=0,FINAL=10, 则循环体被执行11次,退出循环,退出循环后INDX=11。
FOR-NEXT指令执行时,主程序是否执行,对扫描周期的影响?
答:程序自上而下循环扫描,当FOR-NEXT指令启用后,则循环体被循环执行,直至循环次数到达,循环结束,程序继续向下执行。即在一个扫描周期内执行循环完毕后才会向下执行,循环次数越多,会导致扫描周期时间延长越多。如果循环次数过多或者出现死循环,会导致扫描周期时间超过看门狗时间,报出看门狗超时的致命错误,CPU停机并且SF/DIAG灯红灯常亮。
如何在FOR-NEXT执行循环过程中,退出循环?
答:您可以在FOR/NEXT 指令处于循环过程中时,在循环体中修改FINAL (终止循环次数)数值。
Input :表示需要转换的数字量,即采样所的数字量
Ish:换算对象的高限,即Zui大模拟量所对应的数字量值(27648)
Isl: 换算对象的低限,即Zui小模拟量所对应的数字量值(0)
Osh:换算结果的高限,即测量范围Zui大值
Osl:换算结果的底限,即测量范围Zui小值。
VD100:换算结果所存储的值。