- 8点の接点を監視し、最初にONした接点の番号を得るには?
下記のようなファンクションをST言語で作成します。
パラメータ
プログラムコード
if X0 <> 0 then (* すでに判定済み *)
getfast := X0; (* その値を返す *)
else
if in1 then getfast:=1;
elsif in2 then getfast:=2;
elsif in3 then getfast:=3;
elsif in4 then ...
- 8ビット/16ビットなど、貧弱なCPUのプラットフォームにISaGRAFのターゲットを移植することは可能か?
これらのプロセッサ用のANSI Cコンパイラがあれば、ターゲットの移植を行う上で問題はありません。
ただし、以下のような制約に注意してください。
一部のISaGRAFの拡張的な機能(イーサネット通信、マルチタスク等)の実装は、プラットフォームシステムの機能や性能に依存します。
貧弱なOSや、そもそもOSが無いような場合は、シングルタスク(1個のメインループで全てを処理)の実装に限定されることになります。
ISaGRAFでは、整数の計算は全て32ビットで行われます。 このため、アナログ変数の演算が多いアプリケーションでは性能が低下します。
一般に、浮動小数点や文字列などといった重い処理を貧弱なCPUで行うのは現実的ではありません。
これらの処理は、カーネルのコードが大きくなり、レスポンスも低下します。
特にメモリの制約がない場合でも、使用するCコンパイラでサポートしているメモリモデルには注意が必要です。
例えば、8086のようにメモリアドレッシングを16ビットのオフセットで行うような場合は、アプリケーションの最大サイズは64KBを越えられません。
重要なのは、ISaGRAFを使用する上での最大のメリットは、C言語やアセンブラによる開発と比較して、
オープンで移植性に富む高級言語によるプログラミングが可能
ということです。このような特長を実現するためには、多くのソフトウェアレイヤを必要とし、それなりのCPUの処理能力を必要とします。
つまり、ISaGRAFを性能の低いプロセッサ環境に移植するのは可能ですが、実装する機能は最小限(主にブール型データ操作で、かつ変数の数も最小限とすること)にしなければなりません。
...
- 8点の接点を監視し、最初にONした接点の番号を得るには?
下記のようなファンクションをST言語で作成します。
パラメータ
プログラムコード
if X0 <> 0 then (* すでに判定済み *)
getfast := X0; (* その値を返す *)
else
if in1 then getfast:=1;
elsif in2 then getfast:=2;
elsif in3 then getfast:=3;
elsif in4 then ...
- 8ビット/16ビットなど、貧弱なCPUのプラットフォームにISaGRAFのターゲットを移植することは可能か?
これらのプロセッサ用のANSI Cコンパイラがあれば、ターゲットの移植を行う上で問題はありません。
ただし、以下のような制約に注意してください。
一部のISaGRAFの拡張的な機能(イーサネット通信、マルチタスク等)の実装は、プラットフォームシステムの機能や性能に依存します。
貧弱なOSや、そもそもOSが無いような場合は、シングルタスク(1個のメインループで全てを処理)の実装に限定されることになります。
ISaGRAFでは、整数の計算は全て32ビットで行われます。 このため、アナログ変数の演算が多いアプリケーションでは性能が低下します。
一般に、浮動小数点や文字列などといった重い処理を貧弱なCPUで行うのは現実的ではありません。
これらの処理は、カーネルのコードが大きくなり、レスポンスも低下します。
特にメモリの制約がない場合でも、使用するCコンパイラでサポートしているメモリモデルには注意が必要です。
例えば、8086のようにメモリアドレッシングを16ビットのオフセットで行うような場合は、アプリケーションの最大サイズは64KBを越えられません。
重要なのは、ISaGRAFを使用する上での最大のメリットは、C言語やアセンブラによる開発と比較して、
オープンで移植性に富む高級言語によるプログラミングが可能
ということです。このような特長を実現するためには、多くのソフトウェアレイヤを必要とし、それなりのCPUの処理能力を必要とします。
つまり、ISaGRAFを性能の低いプロセッサ環境に移植するのは可能ですが、実装する機能は最小限(主にブール型データ操作で、かつ変数の数も最小限とすること)にしなければなりません。
...