今回の記事ではCodesysのUtilライブラリにあるLIN_TRAFO Function Blockを使用し、アナログ信号を線形変換を行います。
さ、FAを楽しもう。

Reference Link
前書き
いつも私の技術ブログとYouTubeチャンネルをご覧いただき、心より感謝申し上げます。また、いまFullさん(full@桜 八重 (@fulhause) / X)と共に毎週水曜日の夜にお届けしている「高橋クリス」ラジオ番組を運営しています。
現在、私達の活動はほぼ無償で続けており、より多くのコンテンツを提供するためには、皆様の温かいご支援が大変重要です。もし可能であれば、以下のリンクから応援していただけると大変嬉しく思います。
高橋クリスのメンバーシップ
こちらはFullさん(full@桜 八重 (@fulhause) / X)と共にやっているラジオにメンバーシップを登録いただけます。
https://note.com/fulhause/membership/join
AMAZON ギフトリスト
こちらは自分のブログのコンテンツ制作や設備の充実に大いに役立てさせていただきます。
https://www.amazon.co.jp/hz/wishlist/ls/H7W3RRD7C5QG?ref_=wl_share
Patreon
こちらは自分のブログのコンテンツ制作や設備の充実に対する小さな応援の気持ちのPatreonです。
https://www.patreon.com/user?u=84249391
皆様のサポートが、私たちの活動をより充実させる力となります。
どうぞよろしくお願いします。
メールアドレス(*=@)
X
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でもデータ変換の波形を確認することができます。