IECのデータ・タイプ変換の簡単説明です。
他のメーカのCPU使った方ならわかりますが、メーカーよって違いますとデータの変換なども自分の専用関数があります。それはすこく不便でしょう。そこでIECのデータタイプの変換はほぼ標準化されています。
(少なくとも、Codesys・Siemens・Beckhoffにはほぼ同じな関数を使っています。)
関数名のルール
FROM_YOUR_ORG_DATATYPE_TO_THE_DATA_TYPE_THAT_YOU_WANT
FROM_YOUR_ORG_DATATYPEは元の変数のデータ・タイプ
THE_DATA_TYPE_THAT_YOU_WANTは変換したいデータ・タイプ
になります。
Example
実数から整数に変換したいなら:
REAL_TO_INT
16BIT整数を32BIT整数に変換したいなら:
INT_TO_DINT
注意点
基本がわかった上に、次は例外を話ししましょう。
いまはUSINTの変数VarAがあります。
USINTはUnsigned Short Integerで8Bitの符号なし整数です。
いまVarAをUINTのVarBに変換します。
これは問題ないです。
では逆に、VarBをVarAに変換したらどうになります?
100%問題ないといえません。
もしVarBの値は259のであれば、VarAに変換するとどうなるでしょうか。
259=2#0001_0000_0011です。
データ変換するには左の2Bytesを削除するだけになりますので、実際は
2#0000_0011=3です。
ここでわかったのはデータ変換するにはRange大きなな変数をRange小さいな変数を変換するときにOverRangeすると全然違う値がになります。
はーい、お疲れ様です。