当前位置:
(已结束)工控PLC擂台第3期--PLC模拟量输入输出程序
回复 | 人气 | 打印
云锋 个人主页 给TA发消息 加TA为好友 发表于:2010-09-10 16:19:14 楼主

现有压力变送器一只,量程0~6MPa,输出4~20mA,请选择CPU及AI/O模块,写出模拟量的输入输出程序,并对程序作出注释及说明。压力要求精确到0.01MPa。

PLC品牌不限。

工控PLC擂台每周一期,本期下周末结贴。奖项设置:一等奖1名:50MP,二等奖5名:10MP,三等奖10名:30积分。

MP介绍:gongkongMP即工控币,是中国工控网的用户积分与回馈系统的一个网络虚拟计价单位,类似于大家熟悉的QB,1个MP=1元人民币。

MP有什么用?兑换服务:以1个MP=1元来置换中国工控网的相关服务。 兑换现金:非积分获得的MP可兑换等值现金(满100MP后、用户可通过用户管理后台申请兑换)。

分享到: 关注收藏 邀请回答 回复 举报
siren 个人主页 给TA发消息 加TA为好友 发表于:2010-09-10 16:45:08 1楼
 

压力变送器有0-10V的和0-5V的,请选型是别只选4-20mA的了。

  回复 引用 举报
永不止步 个人主页 给TA发消息 加TA为好友 发表于:2010-09-10 16:50:41 2楼
 

选用西门子314CPU,并且选用SM331.SM332两种模块,具体订货型号如下表,输入输出均为4-20MA信号

采用PID调节控制压力平衡,由于FB41块比较大,故分两部分截图,具体I/O通道及程序步骤如下:

 

  回复 引用 举报
ye_w 个人主页 给TA发消息 加TA为好友 发表于:2010-09-10 16:52:00 3楼
 

重新编辑有问题,请大家看13楼

                                                                                                                                                           

  回复 引用 举报
云锋 个人主页 给TA发消息 加TA为好友 发表于:2010-09-10 16:54:14 4楼
  引用siren 的回复内容:

压力变送器有0-10V的和0-5V的,请选型是别只选4-20mA的了。




也可以用电压信号输入的模块来解题,但注意模拟量输出信号类型应与输入相同。
  回复 引用 举报
彩虹 个人主页 给TA发消息 加TA为好友 发表于:2010-09-10 19:39:48 5楼
 
硬件配置表
硬件品牌 型号 数量 功能
siemens 电源模块 6ES7 407-0DA01-0AA0 1 电源模块 输出4A DC24V
siemens CPU312 6ES7 312-1AD10-0AB0 1 CPU312,16K 内存
siemens I/O模块323 6ES7 323-1BH01-0AA0 1 8 点输入24VDC;8 点输出24VDC 模块
siemens 模拟量 334 6ES7 334-0CE01-0AA0 1 模拟量输入4路模拟量输出2路
ifm压力传感器 ifm 0~6MPa 1 用于检测压力
  回复 引用 举报
彩虹 个人主页 给TA发消息 加TA为好友 发表于:2010-09-10 20:01:40 6楼
 
I/O分配表
I0.0 手动
I0.1 自动
Q0.0 自动指示
Q0.1 手动指示
Q0.2 报警指示
PIW272 模拟量输入
PQW272 模拟量输出
  回复 引用 举报
彩虹 个人主页 给TA发消息 加TA为好友 发表于:2010-09-10 20:35:28 7楼
 

OB35

Network 1 convert analog input to engineering unit

for the exanple .assume that there is a level transmitter at piw272 ,generating
a 4-20mA signal ,with 4mA=0 inches,and 20mA=600inches.

mineu must be set to the engineering unit value corresponding to 0 mA,which is-
12 inches .maxeu is set to the eu value corresponding to 20 mA,or600 inches.as
long as the analog input signal is between 4 to 20 mA,tank_level will be set to
the current height in inches.


CALL FB 100 , DB100    // 调模拟量输入量化程序,scale analog input to engineering units
raw :=PIW272
mineu:=0.000000e+000
maxeu:=6.000000e+006
valeu:=DB10,DBD0

 

Network 2  convert setting in engineering units to analog output

in this example ,assume that pqw272 connects to a control value that is fully
closed at 0 V output ,and fully open at 10 V output .valve_pos is a number
between 0 and 100 ,indicating the valve open percentage

 

CALL FB 101 , DB101     //调模拟量输出量化子程序,unscale fromeu range to analog output range
valeu:=DB10,DBD20
mineu:=0.000000e+000
maxeu:=1.000000e+002
raw :=PQW272

 

call fc 10                         //调用压力换算程序 ,press conversion


  回复 引用 举报
彩虹 个人主页 给TA发消息 加TA为好友 发表于:2010-09-10 20:51:29 8楼
 

FC 10 :press conversion


 
  回复 引用 举报
彩虹 个人主页 给TA发消息 加TA为好友 发表于:2010-09-10 21:25:13 9楼
 
FB100 IN 的局部变量表
name data type address initial commet
raw int 0.0 0 value from analog input card ,0..27648 range
mineu real 2.0 0.000000e+000 engineering unit value corresponding to 0 raw
maxeu real 6.0 6.000000e+006 eu value corresponding to 27648 raw
FB100 OUT 的局部变量表
name data type address initial commet
valeu real 10.0 0.000000e+000 rw ,scaled to engineering units
FB100 TEMP 的局部变量表

name
data type address commet
rawdi Dint 0.0 raw ,as 32-bit integer
rawr Real 4.0 raw ,as floating point number
rngeu Real 8.0 eu range
  回复 引用 举报
彩虹 个人主页 给TA发消息 加TA为好友 发表于:2010-09-10 21:39:31 10楼
 

FB100 :scale analog input to engineering units

 

converts integer analog input value from 0..27648 range to mineu..mineu range
.coversion equation is:

valeu =raw*(maxeu-mineu)/27648+mineu

Network 1 convert raw to real

 L #raw
ITD
T #rawdi
L #rawdi
DTR
T #rawr

 

Network 2  calcuate eu span

 L #maxeu
L #mineu
-R
T #rngeu

 

Network 3  convert rawr to eu range

 L #rawr
L 2.764800e+004
/R
T #rawr
L #rngeu
*R
T #rawr

 

Network 4 add eu offset

 L #rawr
L #mineu
+R
T #valeu

  回复 引用 举报
彩虹 个人主页 给TA发消息 加TA为好友 发表于:2010-09-10 22:01:17 11楼
 
FB101 IN 的局部变量表
name data type address initial commet
valeu Real 0.0 0.000000e+000 eu value corresponding to 0 raw
mineu Real 4.0 0.000000e+000 eu value corresponding to 0 raw
maxeu Real 8.0 1.000000e+002 eu value corresponding to 27648 raw
FB101 OUT 的局部变量表
name data type address initial commet
raw Int 12.0 0 analog output value in 0..27648 range
FB101TEMP 的局部变量表


name

data type address commet
rngeu Real 0.0 eu span
rawr Real 4.0 unscaled value as floating point
rawdi   Dint unscaled value as 32-bit integer
  回复 引用 举报
彩虹 个人主页 给TA发消息 加TA为好友 发表于:2010-09-10 22:14:36 12楼
 

FB101:unscale fromeu range to analog output range

 

unscales from specified eu range to 0..27648 analog output range .unscale
equation is:

raw =(valeu -mineu)*27648/(maxeu-mineu)

if valeu>maxeu or valeu <(2*mineu-maxeu) then valeu may not be convertable to a
16-bit integer if this occurs ,the output of this function is undefined .the
output is also undefined if maxeu=mineu

 

Network 1 calculate eu span

L #maxeu
L #mineu
-R
T #rngeu

 

Network 2  remove offset a convert valeu to 0..1 span

 L #valeu
L #mineu
-R
T #rawr
L #rawr
L #rngeu
/R
T #rawr

 

Network 3 convert output to 0..27648 range

 L #rawr
L 2.764800e+004
*R
T #rawr

 

Network 4  convert to integer

 L #rawr
TRUNC
T #rawdi
L #rawdi
T #raw

  回复 引用 举报
ye_w 个人主页 给TA发消息 加TA为好友 发表于:2010-09-11 10:12:08 13楼
  使用的是ABB AC500系列。CPU选择的是PM581-ETH。模拟量输入/输出模块是AX521(4AI/AO),均配置成4-20mA。

1、硬件配置,输入输出申明

1.1 CPU



1.2 AX521以及申明


 

 



1.3 模拟量输入输出的A/D D/A转换值
AI


AO

2 程序,包括主程序,工程转换程序,滤波程序
2.1 主程序


2.2 滤波程序



2.3 工程值转换,包括输入和输出



  回复 引用 举报
3CWQZ 个人主页 给TA发消息 加TA为好友 发表于:2010-09-11 14:34:34 14楼
  不知楼上几位,用这样的一个系统代价是多少,
  回复 引用 举报
ye_w 个人主页 给TA发消息 加TA为好友 发表于:2010-09-11 23:30:36 15楼
  引用3CWQZ 的回复内容:不知楼上几位,用这样的一个系统代价是多少,


当然不会简单如此一个程序就需要这样的配置。从应用本身来说,够用就行,不见得非要类似的配置。这主要是给大家一个编程的一种思维方式。
  回复 引用 举报
YZP3000 个人主页 给TA发消息 加TA为好友 发表于:2010-09-12 21:43:27 16楼
 

CPU224XP+500欧精密电阻(将电压型输入改为电流型输入)+TP177A触摸屏

  回复 引用 举报
莫子辰 个人主页 给TA发消息 加TA为好友 发表于:2010-09-12 22:57:21 17楼
 

顶一下

用西门子的多啊

  回复 引用 举报
涛声依旧 个人主页 给TA发消息 加TA为好友 发表于:2010-09-13 08:05:35 18楼
  其实我支持用其他的,不用西门子。
  回复 引用 举报
云锋 个人主页 给TA发消息 加TA为好友 发表于:2010-09-13 09:20:12 19楼
  三菱、台达,国产PLC,大家都上啊。
  回复 引用 举报
CSUNXY62 个人主页 给TA发消息 加TA为好友 发表于:2010-09-13 11:10:25 20楼
 

用西门子CPU222一台,EM235一台,就行了

  回复 引用 举报
CSUNXY62 个人主页 给TA发消息 加TA为好友 发表于:2010-09-13 13:18:58 21楼
 

请教16楼,您的程序是怎么粘贴上来的,我的程序粘不上来,谢谢!

  回复 引用 举报
云锋 个人主页 给TA发消息 加TA为好友 发表于:2010-09-13 17:05:27 22楼
  回复内容:
对:CSUNXY62 关于

请教16楼,您的程序是怎么粘贴上来的,我的程序粘不上来,谢谢!

内容的回复:

打开程序窗口,转换为图片就OK啦。
  回复 引用 举报
又想换个名字? 个人主页 给TA发消息 加TA为好友 发表于:2010-09-13 21:24:04 23楼
  我还刚开始学习s7-200,希望下几期我也有能力参与解题,支持下各位!
  回复 引用 举报
刘付工 个人主页 给TA发消息 加TA为好友 发表于:2010-09-14 13:09:55 24楼
  我用单片机做一个可以吗!可以的话,就传上来
  回复 引用 举报
彩虹 个人主页 给TA发消息 加TA为好友 发表于:2010-09-14 15:32:08 25楼
 
下面这个也可做为一种输入转换

 
  回复 引用 举报
siren 个人主页 给TA发消息 加TA为好友 发表于:2010-09-14 19:37:27 26楼
  引用刘付工 的回复内容:我用单片机做一个可以吗!可以的话,就传上来

PLC其实就是单片机加点其他的电子元器件。你可以用单片机写程序的。

  回复 引用 举报
LN369 个人主页 给TA发消息 加TA为好友 发表于:2010-09-15 18:06:23 27楼
 

现在的PLC还是不是单片机做的?还是用电脑CPU做的?

版主能不能搞个很慢的传输带/炉带测速命提?因为很慢,不必采用高速计数器。我是采用普通DI输入口,接的编码器。S7-300系统,每秒10个编码器的脉冲左右,我做出来的程序反应慢,精度又低(显示的数据跳变太大,可能是测量的脉冲数太少,每次测量多一个少一个脉冲对显示影响太大)。这里这么多高手,看看高手都是很么做的?

  回复 引用 举报
YZP3000 个人主页 给TA发消息 加TA为好友 发表于:2010-09-15 21:51:58 28楼
  回复内容:
对:CSUNXY62 关于

请教16楼,您的程序是怎么粘贴上来的,我的程序粘不上来,谢谢!

内容的回复:

打开程序画面,CTRL+《PRINT SCREEN SYSRP>,然后粘贴到ACDSEE相册,转换为GIF格式,然后上传。
  回复 引用 举报
云锋 个人主页 给TA发消息 加TA为好友 发表于:2010-09-17 09:27:06 29楼
 

一等奖1名,50MP获得者: ye_w     ye_w

二等奖3名,10MP获得者:

永不止步     wain0222
彩虹      纪强
YZP3000    yzp3000

三等奖:空缺。

  回复 引用 举报
homexuejun 个人主页 给TA发消息 加TA为好友 发表于:2011-04-15 16:56:49 30楼
 
DB2.DBD0里面是转化后的量,反馈压力换算不理解
  回复 引用 举报
yangyangli1990 个人主页 给TA发消息 加TA为好友 发表于:2011-08-03 15:34:06 31楼
  那位朋友能用三菱的做一个…………
  回复 引用 举报
wp8661 个人主页 给TA发消息 加TA为好友 发表于:2012-04-24 10:05:16 32楼
 

引用 永不止步 的回复内容:选用西门子314CPU,并且选用SM331.SM332两种模块,具体订货型号如下表,输入输出均为4-20MA信号采用PID调节控制压力平衡,由于FB41块比较大,故分两部分截图,具体I/O通道及程序步骤如下: 



在压力换算是,先乘100在除10000是什么意思

 

  回复 引用 举报
mhbwxl 个人主页 给TA发消息 加TA为好友 发表于:2012-04-25 07:43:54 33楼
 

引用 永不止步 的回复内容:选用西门子314CPU,并且选用SM331.SM332两种模块,具体订货型号如下表,输入输出均为4-20MA信号采用PID调节控制压力平衡,由于FB41块比较大,故分两部分截图,具体I/O通道及程序步骤如下: 



压力换算,先乘100在除10000是什么意思
  回复 引用 举报
li223152059 个人主页 给TA发消息 加TA为好友 发表于:2012-12-13 22:45:25 34楼
 

能不能直接上传PLC模拟量输入输出程序供我们这种菜鸟学习啊。谢谢

  回复 引用 举报
qinghaiyandong 个人主页 给TA发消息 加TA为好友 发表于:2015-05-04 23:16:08 35楼
 

学习了。。。。。。,。。

  回复 引用 举报
cai鸟求学 个人主页 给TA发消息 加TA为好友 发表于:2015-09-30 15:26:26 36楼
 


回复内容:

对: mhbwxl 引用 永不止步 的回复内容:选用西门子314CPU,并... 内容的回复!

个人感觉不用乘以100,直接除以10000,然后在屏上显示两位小数点。不知道想的对不

  回复 引用 举报

周点击排行
周回复排行
最新求助
Advertisement