ただ、IEC61131-3言語のみを使用する場合、いくつか制限があります。
- 割込の処理が出来ません。
- 同一のI/O出力ポートには1サイクルタイム中に1回しかデータを出力できません。
- 1個のプログラム上に続けてI/O出力の命令を書いても、後に書いた方の値が出力されるだけです(下図をご覧ください)。
- 連続アクセスが必要な周辺ICなどへのアクセスにはプログラム上工夫が必要になります。
- 同一のI/O入力ポートは,1サイクル中はISaGRAFアプリケーションから見た場合、I/Oの値は変化しません(下図をご覧ください)。
-
I/O(入力)値を入力スキャンで内部バッファにコピーします。PLCプログラム実行値はこの内部バッファの値を参照しています。I/O(出力)も同様で、プログラム実行中はとりあえず内部バッファに値が書き込まれ、出力スキャンで実際の出力が行われます。
- C言語のライブラリにあるようなOSのファンクションコールなどの命令はありません。
- 各種I/OにアクセスするためのI/O開発キット(オプション)でドライバを作る。
- C言語ファンクション/ファンクションブロック(CF/FB)を作り、その中でパソコンをコントロールする。ただし、OS依存のプログラムになってしまいます。また、制御のサイクルタイムが保証できなくなります。
- マルチタスクOS、例えばWindowsNTを使い、制御以外の部分を別言語で作る。