S7-300模拟量编程问题
1,我采集4-20mA信号,对应值为0-27648,请问我怎么把它转为工程量(比如0-10mg/L)?看到有的朋友说用FC105,请问哪位朋友详细地说明一下,谢谢.
2.模拟量输出,要求输出4-20mA,控制变频器,请哪位高手详细讲一下上位机给出的0-50Hz的整数如何输出到变频器,谢谢了!
3个回复
-
plc电工爱好者
1.举个例子
CALL "SCALE"
IN :=PIW100 //你的模拟采集地址
HI_LIM :=1.000000e+001 //上限对应10mg
LO_LIM :=0.000000e+000 //下限对应0mg
BIPOLAR:=FALSE //这个为false,
RET_VAL:=MW20 //返回值,主要看有没有错误
OUT :=MD30 //你转换后的输出值2.也可以用fc106来控制,注意变频器接4-20ma信号,而且最大频率为50hz
CALL "UNSCALE"
IN :=MD10 //你上位机给的频率,浮点数
HI_LIM :=5.000000e+001 //最高频率
LO_LIM :=0.000000e+000 //最低频率
BIPOLAR:=FALSE //flase
RET_VAL:=MW20 //返回值
OUT :=PQW200 //模拟量输出,接变频器如果你上位机给的是整数,要转成浮点数,比如转后送给MD10
2年前 我来评论 -
plc学习
1.1、FC105
SCALE功能接受一个整型值(IN),并将其转换为以工程单位表示的介于下限和上限(LO_LIM和HI_LIM)之间的实型值。将结果写入OUT。SCALE功能使用以下等式:OUT = [ ((FLOAT (IN) -K1)/(K2-1)) * (HI_LIM-O_LIM)] + LO_LIM
常数K1和K2根据输入值是BIPOLAR还是UNIPOLAR设置。
BIPOLAR:假定输入整型值介于 7648与27648之间,因此K1 = -7648.0,K2 = +27648.0
UNIPOLAR:假定输入整型值介于0和27648之间,因此K1 = 0.0,K2 = +27648.0
如果输入整型值大于K2,输出(OUT)将钳位于HI_LIM,并返回一个错误。如果输入整型值小于K1,输出将钳位于LO_LIM,并返回一个错误。
通过设置LO_LIM > HI_LIM可获得反向标定。使用反向转换时,输出值将随输入值的增加而减小。
FC105参数
参数 说明 数据类型 存储区 描述
EN 输入 BOOL I、Q、M、D、L 使能输入端,信号状态为1时激活该功能。
ENO 输出 BOOL I、Q、M、D、L 如果该功能的执行无错误,该使能输出端信号状态为1。
IN 输入 INT I、Q、M、D、L、P、常数 欲转换为以工程单位表示的实型值的输入值。
HI_LIM 输入 REAL I、Q、M、D、L、P、常数 以工程单位表示的上限值。
LO_LIM 输入 REAL I、Q、M、D、L、P、常数 以工程单位表示的下限值。
BIPOLAR 输入 BOOL I、Q、M、D、L 信号状态为1表示输入值为双极性。信号状态0表示输入值为单极性。
OUT 输出 REAL I、Q、M、D、L、P 转换的结果。
RET_VAL 输出 WORD I、Q、M、D、L、P 如果该指令的执行没有错误,将返回值W#16#0000。对于W#16#0000以外的其它值,参见"错误信息"。
错误信息如果输入整型值大于K2,输出(OUT)将钳位于HI_LIM,并返回一个错误。如果输入整型值小于K1,输出将钳位于LO_LIM,并返回一个错误。ENO的信号状态将设置为0,RET_VAL等于W#16#0008。
2.FC106UNSCALE功能接收一个以工程单位表示、且标定于下限和上限(LO_LIM和HI_LIM)之间的实型输入值(IN),并将其转换为一个整型值。将结果写入OUT。
UNSCALE功能使用以下等式:OUT = [ ((IN-O_LIM)/(HI_LIM-O_LIM)) * (K2-1) ] + K1
,并根据输入值是BIPOLAR还是UNIPOLAR设置常数K1和K2。
BIPOLAR:假定输出整型值介于 ?7648和27648之间,因此,K1 = -7648.0,K2 = +27648.0
UNIPOLAR:假定输出整型值介于0和27648之间,因此,K1 = 0.0,K2 = +27648.0
如果输入值超出LO_LIM和HI_LIM范围,输出(OUT)将钳位于距其类型(BIPOLAR或UNIPOLAR)的指定范围的下限或上限较近的一方,并返回一个错误。
FC106参数
参数 说明 数据类型 存储区 描述
EN 输入 BOOL I、Q、M、D、L 使能输入端,信号状态为1时激活该功能。
ENO 输出 BOOL I、Q、M、D、L 如果该功能的执行无错误,该使能输出端信号状态为1。
IN 输入 REAL I、Q、M、D、L、P、常数 欲转换为整型值的输入值。
HI_LIM 输入 REAL I、Q、M、D、L、P、常数 以工程单位表示的上限。
LO_LIM 输入 REAL I、Q、M、D、L、P、常数 以工程单位表示的下限。
BIPOLAR 输入 BOOL I、Q、M、D、L 信号状态1表示输入值为双极。信号状态0表示输入值为单极。
OUT 输出 INT I、Q、M、D、L、P 转换结果。
RET_VAL 输出 WORD I、Q、M、D、L、P 如果该指令的执行没有错误,将返回值W#16#0000。对于W#16#0000以外的其它值,参见"错误信息"。
错误信息如果输入值超出LO_LIM和HI_LIM范围,输出(OUT)将钳位于距其类型(BIPOLAR或UNIPOLAR)的指定范围的下限或上限较近的一方,并返回一个错误。
ENO的信号状态将设置为0,RET_VAL等于W#16#0008。2年前 我来评论 -
plc电工爱好者
1.
CALL "SCALE"
IN :=PIW100 //你的模拟采集地址
HI_LIM :=1.000000e+001 //上限对应10mg
LO_LIM :=0.000000e+000 //下限对应0mg
BIPOLAR:=FALSE //这个为false,
RET_VAL:=MW20 //返回值,主要看有没有错误
OUT :=MD30 //你转换后的输出值2.可以用fc106来控制,注意变频器接4-20ma信号,而且最大频率为50hz
CALL "UNSCALE"
IN :=MD10 //你上位机给的频率,浮点数
HI_LIM :=5.000000e+001 //最高频率
LO_LIM :=0.000000e+000 //最低频率
BIPOLAR:=FALSE //flase
RET_VAL:=MW20 //返回值
OUT :=md30 //转换成0~50HZ之间的值
然后进行运算:(27648*MD30)/50.0 然后将所得结果取整后送PQW输出到变频器2年前 我来评论