PLC模拟量转化原理及其处理
PLC模拟量
- 了解模拟量
- 信号之间关系
- 转换实现
- 通用方案的实现
了解模拟量
模拟量是指变量在一定范围连续变化的量;也就是在一定范围(定义域)内可以取任意值(在值域内)。
一般在工控领域,数字量一般是指开关信号。模拟量是指电压电流信号。
因此模拟量又分为电压型和电流型。
PLC有专门的模块接受电压和电流信号.
电压型大体的范围有0-10V,0-5V。
电流型大体范围有0-20mA,4-20mA。
注意虽然说模块是0-10V,但输入端的传感器等的范围不一定是标准的0-10V,也有可能是0-5V,但只要输入端的范围在模块范围内即可。
信号之间关系
模拟量信号接入PLC后,PLC将模拟量信号转换为了整型数据,但注意不同的PLC转换后的值不一定是一样的,这里以0-32767为例。
例如模块输入电压0-10V,转换后是0-32767。两者是线性关系
x/(10-0)=y/(32767-0)
转换实现
首先获取明确PLC是否带有模拟量输入和输出,以及通道数量。这个PLC上自带两路模拟量输入和输出,以西门子为例。
这里可以查看模拟量输入输出是电流还是电压控制。
此时需要根据关系式进行转换。
output:=input*32767/10
如果类型范围不是0-10v,转换也不是0-32767,此时用一个通用的接口接收。
定义输入接口
Input :REAL;输入的信号值
MinAccept :REAL;接受范围的最小值
MaxAccept :REAL;接受范围的最大值
Minswitsh :REAL;转换后的最小值
Maxswitsh :REAL;转换后的最大值
定义输出接口
Output :REAL;
具体公式:
把0-32767的值转换实际电压或者电流
Output:=Input*(Maxswitsh-Minswitsh)/(MaxAccept-MinAccept)
通用方案的实现
虽然我们的得到了转换之后的数值,但终究还是在一个原本规定的范围值内。假如接受的是温度,那么转换后的值还必须转换成温度,我们上面的方案缺少这一步。
还有一种特殊情况是如果传感器是0-5V的,但是模块是0-10V的。
为了考虑这些情况必须增加接口。
定义输入接口
Input :REAL;输入的信号值
MinAccept :REAL;模块接受范围的最小值(例如0-10V的0V)
MaxAccept :REAL;模块接受范围的最大值(例如0-10V的10V)
Minswitsh :REAL;PLC转换后的最小值(例如0-32767的0)
Maxswitsh :REAL;PLC转换后的最大值(例如0-32767的32767)
MinAct :REAL;传感器输出范围的最小值(例如0-5V的0V)
MaxAct :REAL;传感器输出范围的最大值(例如0-5V的5V)
MinSensor :REAL;传感器输出实际数值最小值(例如温度是0-127℃的0℃)
MaxSensor :REAL;传感器输出实际数值最大值(例如温度是0-127℃的127℃)
定义输出接口
Output :REAL;
定义中间量
Mid_1 :REAL;
Mid_2 :REAL;
具体转换:
获取实际的电压或者电流值
Mid_1:=Input*(Maxswitsh-Minswitsh)/(MaxAccept-MinAccept)
按照比例转换成实际值,例如温度
Mid_2:=Mid_1*(MaxSensor-MinSensor)/(MaxAct-MinAct)
输出值
Output:=Mid_2
Bluepferd: 写很好,方便我这种初学者一看就懂,谢谢
m0_45265299: 教程不能下载吗
破罐子不摔: 哪种类型实例的块?应该都可以从版本控制接口导出,或者调用接口导出的
weixin_44008164: 好的谢谢博主,你有试过类型实例的块怎么导出吗
破罐子不摔: 这个我是直接修改FB块导出的xml文件,有个简单的方案就是直接替换,复杂的方案就是按照它xml本身的结构,自己添加相应的节点。