- 文字列を実数型に変換することはできますか?
製品のバージョンによって異なります。
ISaGRAF Ver.4/5の場合
標準演算子"ANY_TO_REAL" を使用して、文字列型を実数型のデータに変換することができますが、小数部分は失われます。また、数字以外の文字があらわれると、それ以降の文字は数字に変換されません。
例
123-> 123.0
123.456 -> 123.0
1/2 -> 1.0
5*8 -> 5.0
abc -> 0.0
対処方法としてはC言語ファンクションをつくってターゲットに実装するか、下記のようなの仕様のIECファンクションブロックを開発します。
<パラメータ>
パラメータ名
型
方向
コメント
StrInput
STRING(255)
入力
変換元の文字列
RealOutput
REAL
出力
変換後の実数
Status
BOOL
出力
入力文字列を変換できなかった場合、FALSE
Zero
BOOL
ローカル
文字列の先頭が '0' の場合の値はTrue
Minus
BOOL
ローカル
文字列の先頭が '-' の場合の値はTrue
TempString1
STRING(255)
ローカル
-
TempString2
STRING(255)
ローカル
-
TempReal1
REAL
ローカル
-
TempReal2
REAL
ローカル
-
TempReal3
REAL
ローカル
-
StrLength
DINT
ローカル
入力文字列の長さ
Index
DINT
ローカル
-
Code
DINT
ローカル
アスキーコードチェック用
OneChar
STRING(2)
ローカル
-
<プログラム(ST言語で記述)>
Status := TRUE; (* ...
- 文字列を実数型に変換することはできますか?
製品のバージョンによって異なります。
ISaGRAF Ver.4/5の場合
標準演算子 "ANY_TO_REAL" を使用して、文字列型を実数型のデータに変換することができますが、小数部分は失われます。また、数字以外の文字があらわれると、それ以降の文字は数字に変換されません。
例
123-> 123.0
123.456 -> 123.0
1/2 -> 1.0
5*8 -> 5.0
abc -> 0.0
対処方法としてはC言語ファンクションをつくってターゲットに実装するか、下記のようなの仕様のIECファンクションブロックを開発します。
<パラメータ>
パラメータ名
型
方向
コメント
StrInput
STRING(255)
入力
変換元の文字列
RealOutput
REAL
出力
変換後の実数
Status
BOOL
出力
入力文字列を変換できなかった場合、FALSE
Zero
BOOL
ローカル
文字列の先頭が '0' の場合の値はTrue
Minus
BOOL
ローカル
文字列の先頭が '-' の場合の値はTrue
TempString1
STRING(255)
ローカル
-
TempString2
STRING(255)
ローカル
-
TempReal1
REAL
ローカル
-
TempReal2
REAL
ローカル
-
TempReal3
REAL
ローカル
-
StrLength
DINT
ローカル
入力文字列の長さ
Index
DINT
ローカル
-
Code
DINT
ローカル
アスキーコードチェック用
OneChar
STRING(2)
ローカル
-
<プログラム(ST言語で記述)>
Status := ...
- 文字列を実数型に変換することはできますか?
製品のバージョンによって異なります。
ISaGRAF Ver.4/5の場合
標準演算子"ANY_TO_REAL" を使用して、文字列型を実数型のデータに変換することができますが、小数部分は失われます。また、数字以外の文字があらわれると、それ以降の文字は数字に変換されません。
例
123-> 123.0
123.456 -> 123.0
1/2 -> 1.0
5*8 -> 5.0
abc -> 0.0
対処方法としてはC言語ファンクションをつくってターゲットに実装するか、下記のようなの仕様のIECファンクションブロックを開発します。
<パラメータ>
パラメータ名
型
方向
コメント
StrInput
STRING(255)
入力
変換元の文字列
RealOutput
REAL
出力
変換後の実数
Status
BOOL
出力
入力文字列を変換できなかった場合、FALSE
Zero
BOOL
ローカル
文字列の先頭が '0' の場合の値はTrue
Minus
BOOL
ローカル
文字列の先頭が '-' の場合の値はTrue
TempString1
STRING(255)
ローカル
-
TempString2
STRING(255)
ローカル
-
TempReal1
REAL
ローカル
-
TempReal2
REAL
ローカル
-
TempReal3
REAL
ローカル
-
StrLength
DINT
ローカル
入力文字列の長さ
Index
DINT
ローカル
-
Code
DINT
ローカル
アスキーコードチェック用
OneChar
STRING(2)
ローカル
-
<プログラム(ST言語で記述)>
Status := TRUE; (* ...
- 文字列を実数型に変換することはできますか?
製品のバージョンによって異なります。
ISaGRAF Ver.4/5の場合
標準演算子"ANY_TO_REAL" を使用して、文字列型を実数型のデータに変換することができますが、小数部分は失われます。また、数字以外の文字があらわれると、それ以降の文字は数字に変換されません。
例
123-> 123.0
123.456 -> 123.0
1/2 -> 1.0
5*8 -> 5.0
abc -> 0.0
対処方法としてはC言語ファンクションをつくってターゲットに実装するか、下記のようなの仕様のIECファンクションブロックを開発します。
<パラメータ>
パラメータ名
型
方向
コメント
StrInput
STRING(255)
入力
変換元の文字列
RealOutput
REAL
出力
変換後の実数
Status
BOOL
出力
入力文字列を変換できなかった場合、FALSE
Zero
BOOL
ローカル
文字列の先頭が '0' の場合の値はTrue
Minus
BOOL
ローカル
文字列の先頭が '-' の場合の値はTrue
TempString1
STRING(255)
ローカル
-
TempString2
STRING(255)
ローカル
-
TempReal1
REAL
ローカル
-
TempReal2
REAL
ローカル
-
TempReal3
REAL
ローカル
-
StrLength
DINT
ローカル
入力文字列の長さ
Index
DINT
ローカル
-
Code
DINT
ローカル
アスキーコードチェック用
OneChar
STRING(2)
ローカル
-
<プログラム(ST言語で記述)>
Status := TRUE; (* ...
- 文字列型構造体メンバ使用時の制約について(Ver.4.02)
【注意】 Ver.4.03以降ではこのの機能は対応済みです。
ISaGRAF のVer.4.02以前では、構造体の配列型のメンバとして、文字列型を使用することはできません。
カーネル(バーチャルマシン)は各文字列の最大長を管理しています。このため、下記のデータに対して、コンパイラがアプリケーションコード生成時に文字列の最大長の情報を含んでいる"__INIT_MAXSTRING" テーブルを作成します。
文字列変数文字列型のフィールドを持つ構造体文字列型のフィールドを持つ構造体をメンバとして持つ構造体文字列型の配列
この制約は実際のところ、上記のうち文字列フィールドを持つ構造体を使用する場合に問題となります。
...
- 文字列を実数型に変換することはできますか?
製品のバージョンによって異なります。
ISaGRAF Ver.4の場合
標準演算子"ANY_TO_REAL" を使用して、文字列型を実数型のデータに変換することができますが、小数部分は失われます。また、数字以外の文字があらわれると、それ以降の文字は数字に変換されません。
例
123-> 123.0
123.456 -> 123.0
1/2 -> 1.0
5*8 -> 5.0
abc -> 0.0
対処方法としてはC言語ファンクションをつくってターゲットに実装するか、下記のようなの仕様のIECファンクションブロックを開発します。
<パラメータ>
パラメータ名
型
方向
コメント
StrInput
STRING(255)
入力
変換元の文字列
RealOutput
REAL
出力
変換後の実数
Status
BOOL
出力
入力文字列を変換できなかった場合、FALSE
Zero
BOOL
ローカル
文字列の先頭が '0' の場合の値はTrue
Minus
BOOL
ローカル
文字列の先頭が '-' の場合の値はTrue
TempString1
STRING(255)
ローカル
-
TempString2
STRING(255)
ローカル
-
TempReal1
REAL
ローカル
-
TempReal2
REAL
ローカル
-
TempReal3
REAL
ローカル
-
StrLength
DINT
ローカル
入力文字列の長さ
Index
DINT
ローカル
-
Code
DINT
ローカル
アスキーコードチェック用
OneChar
STRING(2)
ローカル
-
<プログラム(ST言語で記述)>
Status := TRUE; (* ...