| 作者 | 主题 |
|---|---|
|
愿我能 至圣
经验值:18535 发帖数:3006 精华帖:7 |
楼主
主题:【分享】模拟量转换真的很简单 在找答案板块中经常遇到一些新手提问关于模拟量怎样转换的问题。有的人知道西门子系统库有专门的块可以直接使用,例如模拟量输入转换块FC105。但是不明白块指令各个管脚的定义及含义。即使看了帮助文件,也搞不太明白。其实,我们完全不需要使用系统块指令,自己编写程序就可以实现。 我们都知道大多数传感器输出信号和其测量数值成比例关系,即直线关系。我们可以使用数学表达式表达:Y= k X+b 这里举个最简单的例子。有一个4线制液压压力传感器,其量程也就是测量范围是0-400bar ,输出4-20ma电流信号。即 当传感器检测到液压压力为0bar,输出4ma 电流信号,当传感器检测到液压压力为400bar,输出20ma电流信号。4-20ma对应模拟量数值0--27648 。根据上述线性关系可以画出直线。见下图; 从上图我们得知:b=0 ,k=400/27648 即 Y=400 X/27648 。由于有除法运算,为了提高运算结果精度,我们使用浮点数运算。根据数学表达式我们可以轻松得写出程序。假设模拟量输入地址是PIW 264,转换结果保存在MD0中。程序如下: L PIW264 //把PIW264装载到累加器1中低16位 ITD //整数转换双整数,结果保存在累加器1中 DTR //双整数转换浮点数,结果保存在累加器1中 L 400.0 //把400.0 装载到累加器1中,原累加器1中内容复制到累加器2中 *R //累加器2内容与累加器1内容相乘结果保存在累加器1中 L 27648.0 //把27648.0装载到累加器1中,原累加器1中内容复制到累加器2中 /R // 累加器2内容除以累加器1中内容,结果保存在累加器1中 T MD0 //累加器1中内容传送到MD0中。 当然,我们也可以使用梯形图指令实现同样的功能。因为梯形图中对数据类型有严格的要求,PIW 264 是WORD 数据类型,因此我们需要先将PIW 264赋值给整数类型变量MW10 。程序见下图: 当然,这个是最简单的模拟量转换。但是,只要我们明白了原理,再复杂的模拟量转换,我们只要画出图形,写出数学表达式,根据数学表达式就可以快速正确的编写出程序。
|
|
宁超 至圣 经验值:11564 发帖数:1009 精华帖:39 |
4楼
主题:回复:【分享】模拟量转换真的很简单1. 双极型 2. 断线超限,上冲下冲 3. 发生超限时使用替代值还是最后一次有效值等选择 4. 仿真功能 5. 简单滤波 我认为一个模拟量通道处理除了线性化的基本公式,至少还要具有以上基本功能。单纯的线性化处理,公式很短也太浅了,没什么讨论价值。可以酌情加一些其它功能,用户可以指定4~20mA的信号范围如21mA~3.6mA也是正常值范围。 使用替代值和有效值的作用不仅仅是用于自己程序逻辑,往往在跟第3方通讯时,传过去的都是值本身,大多时候,断线显示最大值,这个最大值给第3方后,对方可能将该值作为PID的PV值等,可能导致执行器输出达到最大。因为对方并不知道你断线了。 仿真功能主要应用在调试的时候,也可以在生产不得已时用于触发逻辑。 |