对输入、输出模拟量的PLC编程的探讨及编程实例解析 点击:38350 | 回复:304



wyb2866255

    
  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2011-12-29 09:03:42
楼主

对输入、输出模拟量的PLC编程的探讨及编程实例解析

 

    对于初学PLC编程的人来说,模拟量输入、输出模块的编程要比用位变量进行一般的程序控制难的多,因为它不仅仅是程序编程,而且还涉及到模拟量的转换公式推导与使用的问题。不同的传感变送器,通过不同的模拟量输入输出模块进行转换,其转换公式是不一样的,如果选用的转换公式不对,编出的程序肯定是错误的。比如有3个温度传感变送器:

1)、测温范围为 0~200  ,变送器输出信号为420ma

2)、测温范围为 0~200  ,变送器输出信号为05V

3)、测温范围为100 ~500  ,变送器输出信号为420ma

1)和(2)二个温度传感变送器,测温范围一样,但输出信号不同,(1)和(3)传感变送器输出信号一样,但测温范围不同,这3个传感变送器既使选用相同的模拟量输入模块,其转换公式也是各不相同。

        一、转换公式的推导

下面选用S7-200的模拟量输入输出模块EM235的参数为依据对上述的3个温度传感器进行转换公式的推导:

对于(1)和(3)传感变送器所用的模块,其模拟量输入设置为020ma电流信号 ,20ma

对应数子量=320004 ma对应数字量=6400

对于(2)传感变送器用的模块,其模拟量输入设置为05V电压信号,5V对应数字量=320000V对应数字量=0

3种传感変送器的转换公式该如何推导的呢?这要借助与数学知识帮助,请见下图:

 

 

 

     上面推导出的(2-1)、(2-2)、(2-3)三式就是对应(1)、(2)、(3)三种温度传感变送器经过模块转换成数字量后再换算为被测量的转换公式。编程者依据正确的转换公式进行编程,就会获得满意的效果。

         二、变送器与模块的连接

    通常输出420ma电流信号的传感变送器,对外输出只有 +- 二根连线,它需要外接24V电源电压才能工作,如将它的+- 二根连线分别与24V电源的正负极相连,在被测量正常变化范围内,此回路将产生420ma电流,见下左图。下右图粉色虚线框内为EM235 模块第一路模拟输入的框图,它有3个输入端,其A+A-A/D转换器的+ - 输入端,RAA-之间并接250Ω标准电阻。A/D转换器是正逻辑电路,它的输入是05V电压信号,A-为公共端,与PLC24V电源的负极相连。   

那么24V电源、传感变送器、模块的输入口三者应如何连接才是正确的?正确的连线是这样的:将左图电源负极与传感器输出的负极连线断开,将电源的负极接模块的A-端,将传感器输出负极接RA端,RA端与A+端并接一起,这样由传感器负极输出的420ma电流由RA流入250Ω标准电阻产生05V 电压并加在A+A-输入端。

切记:不可从左图的24V正极处断开,去接模块的信号输入端,如这样连接,模块是不会正常工作的。

对第(2)种电压输出的传感変送器,模块的输入应设置为05V电压模式,连线时,变送器输出只连A+、A-RA端空悬即可。

三、按转换公式编程:

    根据转换后变量的精度要求,对转换公式编程有二种形式:1、整数运算,2、实数运算。

请见下面梯形图:

     A)、整数运算的梯形图:

     该梯形图是第(1)种 温度传感变送器(测温:0200 ,输出:420ma)按公式(2-1)以整数运算编写的转换程序,它可作为一个子程序进行调用。

      B)实数运算的梯形图:

     该梯形图是对一个真空压力变送器(量程:00.1Mpa,输出:420ma)按公式(2-1)以实数运算编写的转换程序,可作为一个子程序进行调用。

 

           四、编程实例及解析

 

某设备装有4种传感器:
1
、真空压力传感器,量程为:00.1Mpa;输出给PLC的信号为420ma

2
、蒸汽压力传感器,量程为:01.0Mpa;输出给PLC的信号为420ma

3
、温度传感器,量程为:0200 度;输出给PLC的信号为420ma

4
、电机转速,量程为:050/秒;输出给PLC的信号为420ma

该设备用蒸汽对其罐体加热,并对温度要求按设定的温度值进行温度控制。控制方式采用自动调整电动阀开门角度的大小来改变加热管道的蒸汽的流量。电动阀的控制信号为420ma,即输入4ma时,电动阀关门,输入20ma时,电动阀门全开。

为此选用了含有4路模拟输入和一路模拟输出的模块EM235。其4路模拟量输入信号皆设定为020ma电流输入模式,一路模拟量输出信号设定为420ma电流输出模式。
   
要求用触摸屏显示这4种信号的时时状态值,并在触摸屏上设置控制的温度参数,传给PLC使PLC按此值进行温度控制。由于本文重点是讲述有关模拟量的输入与输出的编程设计,对触摸屏的编程设计不予讲述,只提供触摸屏与PLC的通讯变量:

 VD0:为真空压力显示区,由PLC传送给触摸屏。

VD4:为蒸汽压力值显示区,由PLC传送给触摸屏。

VW8:为蒸汽温度值显示区,由PLC传送给触摸屏。

VW10:为电机转速值显示区,由PLC传送给触摸屏。

VW12:设定温度值区,由触摸屏传送给PLC.

一、硬件电路的配置:

 

      (一)、硬件设置

除上述4种传感器外,选用:
1
S7-200PLC一台,型号为:CPU222 CN
2
、选用EM235模拟量输入模块一块(输入设置:0~20 ma工作模式;输出设置:

420ma)。

3、变频器一台,型号为PI8100,由PLC控制启停,手动调速。
4
、西门子触摸屏一块。型号:Smart 700

硬件电路图

二)、对传感器输出的4~20ma转换为显示量程的公式推导:

EM235模拟量输入输出模块,当输入信号为20ma时,对应的数字量=32000,故:

输入=4ma时,对应的数字量=6400,对应显示量程值=0 输入20ma时,对应的数字量

=32000,对应显示量程值最大值=Hm,其输出量与模块的数字量的变化关系曲线如图一所

示:


  4个转换公式,前二种为实数运算,后二种为整数运算,为简化程序,自定义二个功能块分别用于实数与整数运算,而每个功能块在程序运行中又都调用二次,分别计算不同的物理量。为此功能块设有二个数字输入与一个计算结果输出三个口,以适用于多次调用去计算不同物理量的值。请见下面编程:

   (三)、实数运算功能块(SBR_0):

       (四)、整数运算功能快(SBR_1): 

()、将模块的数字量,按对应公式转换为量程显示值的编程

分析以上梯形图可知,该程序编写的特点:1、选用自定义功能块编写转换公式的子程序,2、对多个转换变量的调用采用每个扫描周期对MB01的依次循环调用的方式,这样的编程处理会使编写的程序,简短易读易懂。

(六)、对模拟量输出的编程处理

对罐体温度控制是采用渐近比较的控制方式进行编程。设计思路是这样的:

当罐体的温度低于设定温度10度时,控制加热蒸汽的电动阀门全打开,当罐体的温度低于设定温度7度时,电动阀门打开3/4,当罐体的温度低于设定温度4度时,电动阀门打开1/2,当罐体的温度低于设定温度2度时,电动阀门打开1/4,当罐体的温度低于设定温度1度时,电动阀门打开1/8,当罐体的温度=设定温度时,电动阀门关闭。

(2-1a)式为温度与数字量的关系式,用它可将设定温度值转换为对应的数字量。如

设定温度Tz=120度,带入(2-1a,可得对应数字量AIW=21760

3-5)式为数字量与电动阀门打开度α的关系式,可用它输送给模块不同的数字量,来改变模块的模拟量输出值,进而达到改变电动阀门的打开角度。

如:α=1代入(3-5)可得:AIWx=32000  32000送入给模块的AQW0, 模块的模拟量输出将产生20ma电流输入给电动阀的信号输入端,使阀门全打开。

   

α=1/2代入(3-5)式可得:AIWx=19200 19200送入给模块的AQW0, 模块的模拟量输出将产生12ma电流输入给电动阀的信号输入端,使阀门打开1/2

 

   下面是利用渐近比较法进行温度控制的梯形图:程序解释见网络上的说明   

程序中的Q0.0为蒸汽电磁阀的输出信号。Q0.0=1即蒸汽电磁阀打开,注入蒸汽加热,程序将对罐体内的温度进行控制。Q0.1 为冷水电磁阀的输出信号。Q0.1=1即冷水发打开,注入冷水进行降温,此时电动阀门全开,加速降温,程序对降温不做控制处理。

 

  七)、PLC输入输出的控制编程

输入有3个按钮:分别控制变频器、蒸汽电磁阀、水冷电磁阀的通电与关断:

1、启动按钮接PLCI0.0,控制变频器的启动与停止,输出口为Q0.3

2、蒸汽电磁阀控按钮,控制蒸汽电磁阀的打开与关闭,输出口为 Q0.0

3、冷水电磁阀按钮,控制冷水电磁阀的打开与关闭,输出口为 Q0.1

    控制方式选用一个按钮控制启停,用RS触发器指令编程。Q0.0Q0.1 互锁,即只容许一个电磁阀打开,如蒸汽阀打开时,按水阀控制按钮,水阀不能打开,只有先关断气阀后再按水阀,水阀才能打开。见下面梯形图:

    本文到此结束,望大家分析探讨,有不对之处请给于指正。谢谢大家!



楼主最近还看过



lzw283634282

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:39
  • 注册:2012年3月06日
发表于:2012-03-07 20:10:47
41楼

收藏先。谢谢楼主的分析。

银光人生—华

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 13597回
  • 年度积分:0
  • 历史总积分:52877
  • 注册:2007年11月23日
发表于:2012-03-15 15:50:40
42楼
很不错的文章,有那种分段标定的吗?还有就是如何取反和进行零位标定;

zzl105118

  • 精华:0帖
  • 求助:29帖
  • 帖子:29帖 | 35回
  • 年度积分:0
  • 历史总积分:497
  • 注册:2012年2月20日
发表于:2012-03-23 17:32:01
43楼
好东西啊 找了好久都没找到 ,现在终于找到啦 ,在学校学的都是数字量的,现在要搞模拟量的,那里会。

flylovemore--王者之师

  • 精华:0帖
  • 求助:4帖
  • 帖子:11帖 | 329回
  • 年度积分:5
  • 历史总积分:1026
  • 注册:2011年2月23日
发表于:2012-03-23 21:02:30
44楼

文章写的很好

受益匪浅

对我们新手很有指导意义

非常支持多发表这样的帖子

余 辉

  • [版主]
  • 精华:53帖
  • 求助:44帖
  • 帖子:3350帖 | 28451回
  • 年度积分:603
  • 历史总积分:131640
  • 注册:2006年4月25日
发表于:2012-03-26 14:12:13
45楼

经典    收藏了    感谢楼主

lv031226

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 2回
  • 年度积分:0
  • 历史总积分:26
  • 注册:2012年3月31日
发表于:2012-03-31 22:34:36
46楼

支持,感谢楼主,很好的帖子啊

jianxb2009

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 15回
  • 年度积分:0
  • 历史总积分:71
  • 注册:2008年9月02日
发表于:2012-04-03 14:11:31
47楼
为贴写和非常好,对所有PLC的模拟量输入都一样的道理。收了!!谢谢楼主

LIXUAN1964

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 57回
  • 年度积分:149
  • 历史总积分:201
  • 注册:2011年12月01日
发表于:2012-04-03 15:53:12
48楼

十分感谢楼主,现在正在使用。

longlivehilter

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 2回
  • 年度积分:0
  • 历史总积分:25
  • 注册:2011年4月18日
发表于:2012-04-03 17:17:02
49楼
绝世好帖,顶了…………楼主我看到你有用到一个电动阀门装置,不知道你用的是谁家的,按照你说的应该是调节性的电动阀门装置,那该阀门是智能型的吗?还有就是如果是智能型的并且支持MODBUS RTU通讯的话,那么200与电装之间的通讯怎么搞?怎么将电装的状态读到PLC呢?

wyd0106008

  • 精华:0帖
  • 求助:2帖
  • 帖子:4帖 | 174回
  • 年度积分:0
  • 历史总积分:790
  • 注册:2009年8月01日
发表于:2012-04-07 21:40:20
50楼
楼主 太好了 十分感谢、

mhbwxl

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 92回
  • 年度积分:0
  • 历史总积分:262
  • 注册:2012年3月15日
发表于:2012-04-14 18:52:06
51楼

楼主写的非常好,但是对罐体温度的控制为什么要采用渐进比较的方法呢,你为什么不采用PID控制,这样温度控制不是更精准,跟随性不是更好吗

wanzeyuju

  • 精华:3帖
  • 求助:0帖
  • 帖子:15帖 | 86回
  • 年度积分:0
  • 历史总积分:175
  • 注册:2008年10月18日
发表于:2012-04-15 09:28:52
52楼
文章很好,学习了,很有技术,

firepoint0

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 50回
  • 年度积分:0
  • 历史总积分:641
  • 注册:2010年11月10日
发表于:2012-04-18 11:34:54
53楼
楼主很给力,收藏之。

plc&inverter

  • 精华:4帖
  • 求助:6帖
  • 帖子:79帖 | 658回
  • 年度积分:0
  • 历史总积分:1812
  • 注册:2004年9月04日
发表于:2012-04-18 11:52:51
54楼
绝对的好帖,收藏学习了!

大话东游

  • 精华:2帖
  • 求助:6帖
  • 帖子:39帖 | 1815回
  • 年度积分:7
  • 历史总积分:8251
  • 注册:2008年12月19日
发表于:2012-04-18 12:10:11
55楼

长期驻留此贴!

 

wstkwy

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 19回
  • 年度积分:0
  • 历史总积分:86
  • 注册:2012年1月30日
发表于:2012-04-18 15:09:59
56楼

论文写作、职称论文发表――写你所想,急您所急!

我们的服务项目:

(1)代写代发教育医学医药类 论文。!

(2)代写代发高会、高审、高经评定职称所需要的论文

(3)代写发表:各类职称及学术论文!本工作室拥有多家合作期刊。

(4)代写:博士、硕士、本专科论文、课程论文,  职称论文、毕业论文、学术论文.

我们的团队                        

本工作室拥有专业写作、发表队伍为您服务,以打造完美论文为目的,为您提供写作及发表一条龙服务,解决您的后顾之忧。

我们的伙伴:

国内多家会计财务类、金融经济类、教育类、医学类、杂志(均为国家级正规学术期刊具有CNISSN刊号)为您参加职称评定提供论文修改撰写、发表等服务。安全可靠,长期服务,信誉好!

 

我们的承诺:

您的需要就是我们的工作,您的满意就是我们的追求,安全保密、质量优秀,舍我其谁!

-maillunwen5180@sina.com  咨询电话:13479894956  0792-4827209

工作QQ809460389(论文写作发表)   http://www.888lunwen.com

Smile-王者之师

  • [管理员]
  • 精华:114帖
  • 求助:50帖
  • 帖子:2786帖 | 22283回
  • 年度积分:284
  • 历史总积分:144015
  • 注册:2006年8月04日
发表于:2012-04-18 15:17:01
57楼
引用 shiyinglu 的回复内容:想请问楼主:为什么4-20ma时,对应的值为什么是6400-32000,而不是0-32000,

32000/20=1600,4*1600=6400,4-20ma时,对应的值为什么是6400-32000

wyb2866255---王者之师

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-04-18 17:06:52
58楼

      回57楼的提问:S7-200的模拟量输入输出模块EM235,输入的模拟量取电流设置,即:0~20ma,这是单极性的,单极性全量程转换为数字量的范围是:0~32000,模拟量与转换的数字量二者是成正比的,其关系曲线是过0点的直线,即:I=0ma时,AIW=0。I=20ma时 ,AIW=32000。32000/20=1600,即为直线的斜率,也就是:1ma对应的数字量,显然:4ma对应数字量=1600×4=6400,20ma 对应数字量=1600×20=32000。所以4~20ma 对应数字量为6400~32000

赏月不吃月饼

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 91回
  • 年度积分:0
  • 历史总积分:175
  • 注册:2011年9月08日
发表于:2012-05-03 11:10:31
59楼

十分感谢楼主的无私奉献!

rjieyang

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 7回
  • 年度积分:0
  • 历史总积分:14
  • 注册:2012年2月29日
发表于:2012-05-09 17:05:16
60楼

回复内容:
对:wyb2866255关于回28楼:“SHI_in:LWO这些数据是系统默认的还是自己定义的如果是自己定义,怎么定义呢?”其SHI_in字符是自己定义的,即定义该子程序作为功能块的第一个字输入局部变量,LW0为系统根据定义变量的顺序,给出改变量的地址。该子程序作为作为运算功能块,可以多次调用,来计算不同的物理量。如进行实数运算调用实数运算功能块有2次,1、对真空压力的计算,其转换的数字量为AIW0,此时应将AIW0输入给功能块的SHI_in。2、进行蒸汽压力计算时,其转换的数字量为AIW2,此时应将AIW2输入给功能块的SHI_in。 内容的回复:


非常感谢楼主的讲解,不过我还是有一点不明白,SHI_in这个字符在这里是随便定义的吗,可以用别的字符来代替吗,还是每个字符代表不同的含义?为什么这个字符


热门招聘
相关主题

官方公众号

智造工程师