前几天自己在家哄孩子,给孩子做饭,由于自己不留神造成忘记关火,锅被干烧的事故,虽然事后发现得早,但是当时我就想做一个防止干烧的小装置.
因此我们需要了解西门子PLC时如何使用模拟量的输入的.
模拟值的处理:
模拟量信号模块可以提供输入信号,或等待表示电压范围或电流范围的输出值。这些范围是
±10 V、±5 V、±2.5 V 或 0 - 20 mA。模块返回的值是整数值,其中,0 到 27648 表示电流的额定范围,-27648 到 27648 表示电压的额定范围。任何该范围之外的值即表示上溢或下溢。
在控制程序中,很可能需要以工程单位使用这些值,例如表示体积、温度、重量或其它数量
值。要以工程单位使用模拟量输入,必须首先将模拟值标准化为由 0.0 到 1.0 的实数(浮点)
值。然后,必须将其标定为其表示的工程单位的最小值和最大值。对于要转换为模拟量输出值的以工程单位表示的值,应首先将以工程单位表示的值标准化为 0.0 和 1.0 之间的值,然后将其标定为 0 到 27648 之间或 -27648 到 27648 之间(取决于模拟模块的范围)的值。
例如,假设模拟量输入的电流范围为 0 - 20 mA。模拟量输入模块返回的测量值介于 0 和 27648 之间。在此示例中,假设使用此模拟量输入值测量 50 °C 到 100 °C 的温度。几个采样值的含义如下:
0 ---50 °C
6192 ---62.5 °C
12384--- 75 °C
18576 ---87.5 °C
27648 ---100 °C
在 PLC 应用中,典型的方法是将模拟量输入值标准化为 0.0 至 1.0 之间的浮点值。然后,需要将得到的值换算为工程单位范围内的浮点值。为简单起见,以下 LAD 指令使用常数值表示范围;实际上可能选择使用变量:
比如我们在烘干炉程序中使用的FC106
UNSCALE功能接收一个以工程单位表示、且标定于下限和上限(LO_LIM和HI_LIM)之间的实型输入值(IN),并将其转换为一个整型值。将结果写入OUT。UNSCALE功能使用以下等式:
OUT = [ ((IN朙O_LIM)/(HI_LIM朙O_LIM)) * (K2朘1) ] + K1,并根据输入值是BIPOLAR还是UNIPOLAR设置常数K1和K2。
BIPOLAR:假定输出整型值介于 -27648和27648之间,因此,K1 = -27648.0,K2 = +27648.0
UNIPOLAR:假定输出整型值介于0和27648之间,因此,K1 = 0.0,K2 = +27648.0
如果输入值超出LO_LIM和HI_LIM范围,输出(OUT)将钳位于距其类型(BIPOLAR或UNIPOLAR)的指定范围的下限或上限较近的一方,并返回一个错误。
实例:
编辑:jq
全部0条评论
快来发表一下你的评论吧 !