今回の記事ではCodesysのUtilライブラリにあるLIN_TRAFO Function Blockを使用し、アナログ信号を線形変換を行います。
さ、FAを楽しもう。
Reference Link
Util.LIN_TRAFO
Util.LIN_TRAFOを使用すれば、線形変換を行うことができます。またその変換は、入力の最小値と最大値を用いて出力値を線形近似することになります。
例えば、温度センサーは入力値を提供し、これらは摂氏温度の値(出力OUT)に変換されます。その入力値の範囲はIN_MIN=0とIN_MAX=10で定義されます。出力(摂氏)値の範囲はOUT_MIN=20とOUT_MAX=40で定義されます。従って、5Vの入力の場合、摂氏温度は10度と変換します。
VAR_INPUT
IN | REAL | 入力値 |
IN_MIN | REAL | 最小入力値 |
IN_MAX | REAL | 最大入力値 |
OUT_MIN | REAL | 最小出力値 |
OUT_MAX | REAL | 最大出力値 |
VAR_OUTPUT
OUT | REAL | 出力値 |
ERROR | BOOL | TRUE: IN_MIN = IN_MAX または IN が入力範囲外 |
Implementation
Add library
Library ManagerからBLINK ライブラリを追加します。
Add Libraryをクリックします。
Utilライブラリを追加しましょう。
Program
今回の記事でもLD2を使用します。ToolboxからBlockをRung1に追加しましょう。
Add Util.LIN_TRAFO
Editor上で数のようなEmpty Blockが追加されました。
???のところにUtil.LIN_TRAFOを入力します。
Done!Util.LIN_TRAFO Blockが追加されました。
次はUtil.LIN_TRAFOのFB上にある???をクリックし、VARエリアで定義したUtil.LIN_TRAFOインスタンスを選択してください。
Done!
最後はすべてのパラメータを変数と紐つけましょう。
Add ST Block
LD2のプログラム中にもST コードを直接実行できます。ToolbarにST BlockをEmptyのRungに追加しましょう。
Done!
次は先程追加したEmpty Rungをクリックします。
テキストEditorが表示されるので、このエリアでSTコードを書きましょう。
Done!
Result
Util.LIN_TRAFOの関数がエラーなく実行できました、またrSensorINの入力値に沿ってOutがScalingできます。
Traceでもデータ変換の波形を確認することができます。