- IL言語の命令"JMP"や"RET"では修飾子"C"と"N"の両方が使えますが、修飾時のルールのようなものがありますか?
ISaGRAFのユーザズマニュアルの言語リファレンスに記載がありませんが、IL言語の命令と修飾子には以下のようなルールがあります。
修飾子"N"(反転)は命令"JMP"(ジャンプ)と"RET"(リターン)と組み合わせて使用できますが、その際には必ず修飾子"C"(条件チェック)と一緒に使用します。
すなわち、以下のような組合わせとなります:
JMPC
ILレジスタ(現在の結果)の値がTRUEの時ジャンプ
JMPCN
ILレジスタの値がFALSEの時ジャンプ
JMPNC
JMPCNと同じ
RETC
ILレジスタの値がTRUEの時リターン
RETCN
ILレジスタの値がFALSEの時リターン
RETNC
RETCNと同じ
命令"JMPN" と "RETN" というものは存在しませんので、"JMPCN" や "RETCN"を使用してください。
...
- IL言語による入力変数IX0_1のオン・オフによってc0をインクリメントするようなカウンタの実現方法は?
下図のようになります。ただし、このプログラムの ローカル論理値変数 に pre を使用しますので、辞書で登録しておいてください。
LD IX0_1 (* 現在の IX0_1を取り込み、 *)
XOR pre (* 前回と入力値が変化無しなら無視。 *)
JMPNC L999
LD IX0_1 (* 現在値を、 *)
ST pre (* 保存し、 *)
JMPNC L999 (* 立ち下がりなら無視。 *)
LD c0 (* カウンタ値を、 *)
ADD 1 (* 1増やし、 *)
ST c0 (* 保存する。*)
L999:
...
- ISaGRAF Ver.4/5では、I/Oデバイスはどのようにして追加するのですか?
1.ドライバの定義
1. TDBuildユーティリティを起動します。TDBuildはワークベンチのインストールフォルダの "Bin" の下にインストールされているユーティリティです。
2. 新しい定義を作成します。
3. "Insert" で新しいI/Oデバイスを挿入します。
4. デバイスの名前を変更します。(例: DigitOutDev)
5. ボードパラメータを定義します。
(例:パッケージ名:MyPack、ドライバ名:driver_name、ボードの方向:入力ボード、チャンネル数: 8チャンネル等)
6. I/Oドライバのソースファイルの生成
TDBuild の "Tools" - "Generate 'C' code" コマンドを実行すると、ソースファイルのテンプレートが生成されます。
生成されるファイル名は、
ドライバ名.c (例:driver_name.c)
ドライバ名.h (例:driver_name.h)
です。
これらはターゲットのパッケージ用フォルダにコピーしておきます。
7. ISaGRAF Ver.4/5のプロジェクトへインポートするためのテキストファイルを作成します。
TDBuild の "Build" ...
- ISaGRAF Ver. 4/5のI/Oドライバの命名方法とアドレスの取得方法
(この機能は、ISaGRAF PRO開発ツールキット、またはISaGRAF I/O開発キットを使用して実装します)
I/Oドライバを開発時には、I/Oのハードウェアを操作するC言語の関数をいくつか作ることになります。これらの関数名は、"パッケージ名/ドライバ名/デバイス名"に実行するアクションの種別(IosInit/IosExit 等)をつけたものにします。
【例】
パッケージ名:CJI
ドライバ名 :IBS
装置機器名 :CPX2B8IO
単一デバイス名:SPL8IB
アクション :IosInit(初期化)、IosRead(チャネルのリード)等
この場合、作成する関数名は
cjiibsIosInit
cjiibscpx2b8iospl8ibIosRead
等になります。
カーネル内部では、まずワークベンチのコンパイラが作ったデータを元に、これらの名前を組み立ます。さらに、名前をもとに関数のアドレスを得ています。
この部分のコードはカスタマイズ可能で、ソースファイル
IsaKer\DIOS0CUS.c
の中に記述されています。ソースの中で、以下の関数群をカスタマイズできます。
初期化
下記の関数はI/O全体の初期化時、各I/Oドライバの初期化前にコールされます。
typSTATUS iosCusInit(
strRtIoDrv* pRtIoDrv, /*In: 最初のI/OドライバのランタイムI/O構造体 */
uint16 huNbRtIoDrv, /*In: I/Oドライバの数 */
strKIoXParam* pKIoXParam /*In: 追加のパラメ-タ */
)
終了
下記の関数はI/O全体の終了処理時、各I/Oドライバのexit処理後にコールされます。
void iosCusExit(
strRtIoDrv* pRtIoDrv, /*In: 最初のI/OドライバのランタイムI/O構造体 */
uint16 huNbRtIoDrv, /*In: ドライバの数 ...
- ISaGRAF Ver.4/5 コンパイラ型ターゲットのビルド方法
ISaGRAF Ver.4/5 WindowsNTターゲットの、コンパイラ型ターゲットのビルドと実行方法を説明した資料です。
クリックしてダウンロード→
...
- ISaGRAF Ver.4/5のSFCエディタの使い方を教えてください
SFCエディタでプログラムを能率的に開発するための作業手順とアドバイスです。
第一レベルのダイアグラムを作成する
新しいSFCプログラムを作成すると、既にイニシャルステップが配置されています。
●トランジションとステップ
トランジションのアイコンを選び、イニシャルステップの後ろに配置します。
イニシャルステップの下をクリックします。
トランジションは自動的にイニシャルステップにリンクされ、次のステップが配置できるようになります。トランジションの配置と同様の手順で、ダイアグラムの作成を続けてください。
●分岐
分岐には2種類あります。
選択(OR)分岐 :シングルラインのアイコン を選び、ステップの後に配置します。
並列(AND)分岐 :ダブルラインのアイコンを選び、トランジションの後に配置します。
●新しい分岐を追加する
分岐を3つ以上にする場合は、
1. まず既存の分岐に続く要素を配置します。
2. 分岐を選択します。
3. ツールバーの「新規分岐」アイコン をクリックします。
●結合
結合にも2種類あります。
選択(OR)結合 :シングルラインのアイコンを選び、トランジションの後に配置します。
並列(AND)結合:ダブルラインのアイコンを選び、ステップの後に配置します。
配置するときは分岐の左端の下をクリックします。
●ヒント
上記の手順でうまく行かない場合
「元に戻す」(Undo)を行わずに、以下の操作をして下さい。
1. 削除する要素を選択します。
2. "Delete" キーを押して削除します。
3. もう一度ダイアグラムを作りなおします。
既存のダイアグラムの途中にステップやトランジションを挿入する場合
1. ...
- IL言語による入力変数IX0_1のオン・オフによってc0をインクリメントするようなカウンタの実現方法は?
下図のようになります。ただし、このプログラムの ローカル論理値変数 に pre を使用しますので、辞書で登録しておいてください。
LD IX0_1 (* 現在の IX0_1を取り込み、 *)
XOR pre (* 前回と入力値が変化無しなら無視。 *)
JMPNC L999
LD IX0_1 (* 現在値を、 *)
ST pre (* 保存し、 *)
JMPNC L999 (* 立ち下がりなら無視。 *)
LD c0 ...
- ISaGRAFで開発を行うために必要なものと価格を教えてください。
ISaGRAF Ver.4/5
必須のもの
(1)ワークベンチ(開発パック)
制御アプリケーション開発用のツールです。1開発環境に必ず1個必要です。
(2)ランタイムライセンス
ターゲットのランタイムライセンスです。1コンピュータにつき1本必要です。
移植用ツール類
(3)ISaGRAF Ver.4/5 I/O開発キット
WindowsNTターゲットで標準対応以外のI/Oドライバを開発するためのツールです。
(4)ISaGRAF Ver.4/5開発ツールキット
ターゲットを移植・カスタマイズしたい場合に必要です。
この商品は(1)のワークベンチと(3)のISaGRAF Ver.4/5 I/O開発キットを含みます。
なお、コンパイラ型でターゲット実行する場合や(3)(4)を使う場合、あわせて、ターゲットOS用のCコンパイラも必要になります。詳細はこちらをご覧ください。
価格
こちらをご覧下さい。
...
- ISaGRAFの製品名の由来
ISaGRAFという製品名は1990年代はじめにICS Triplex ISaGRAF Inc.(現在のICS Triplex ISaGRAF Inc.)によって考案されました。
当時はIEC61131-3標準はまだ存在せず、IEC-848のみがオートメーションの標準規格でした。IEC-848はプログラム言語として GRAFCET(グラフセ)を定義していました。これはIEC61131-3ではSFCと呼ばれています。
"ISaGRAF"の"GRAF"は、もっとも高レベルの言語であったこの"GRAFCET"に由来します。
"ISa"は、オブジェクト指向に関連のある "is a" を表わします。
つまり"ISaGRAF"は"IS a GRAFCET"、「グラフセの一種」という意味です。
商品名で'a'が小文字になるのはこのためです。
...
- ISaGRAFの使い方について、セミナーなどは実施しているか?
定期的には開催していません。
ただしお客様のご要望により、製品のデモによるご説明、もしくはトレーニング(有料)を開催いたします。
...
- ISaGRAF Ver.4/5のシングルタスク版ターゲット実行時にはどのくらいのメモリが必要でしょうか?
このドキュメントはVer4.10 から提供されるISaGRAF Ver.4/5シングルタスク版ターゲットの実行に必要なメモリサイズを事前に見積もるためのガイドラインです。
注意:ターゲット上で複数の ISaGRAF Ver.4/5バーチャルマシンを起動する場合には適用しないで下さい。
実行時に変更されないデータのサイズ
ROMやファイルに配置可能なデータです。
カーネルのプログラム(サイズの詳細については後述)エラーメッセージファイル
カーネルがエラー発生時の詳細を表示するためのものです。ターゲットがコンソールなどの標準出力を利用できる場合に、printf関数で出力する文字列を格納します。標準出力を持たない場合は不要です。
ファイルは4種類あります。
1. 標準のエラー
2. 標準の警告
3. インテグレータが追加したエラー
4. インテグレータが追加した警告
データ保存用に必要なサイズ
フラッシュメモリやファイル等に配置可能です。
ダウンロードしたIECアプリケーション+リソース構成(詳細については後述)オンライン修正用の領域
この領域のディフォルトサイズは、ターゲットの移植時に決定します。ただし、このディフォルト値はエンドユーザが変更する場合があります。ワークベンチの「リソースプロパティ」-「拡張」タブより後から変更することができます。
ダウンロードしたアプリケーションのシンボルテーブル
ワークベンチに作成される<リソース名>_SymbolsTarget.xtcファイルのサイズと等しくなります。
なお、通常はシングルタスク版ではアプリケーションシンボルテーブルのダウンロードは不要です。
ダウンロードされたIECアプリケーションのソース
後でワークベンチへアプリケーションをアップロードする場合のもので、圧縮されています。アップロード機能を使わない場合は不要なデータです。
エンドユーザがアップロードを使用する場合はワークベンチの「リソースプロパティ」上のオプションで設定します。
アプリケーション変数に保持属性を設定した場合の変数値の格納領域
RAMとして必要なサイズ
カーネルの実行ファイルは通常RAMにロードされます。これは、一般的にROM上での場合に比べ実行速度が速いためです。
効率的にアプリケーションを実行するためには、RAMに十分な容量が必要です。
カーネルのプログラム(サイズの詳細については後述)カーネルのC言語の変数用の領域(VxWorksターゲットの場合、約10KB)カーネルがRAM上に確保するメモリ領域のサイズダウンロードされたIECアプリケーションコードサイズ+リソース構成(後述します)変数の値(=リアルタイムデータベース 詳細は後述)オンライン修正用メモリ領域
カーネルのプログラムのサイズ
以下に示すのは、ISaGRAF Ver.4/5 シングルタスク版のカーネルの実装サイズの概算です(単位:KB)。
WindowsNTの場合
ISa.exe
ISaSYS.DLL
エラーメッセージファイル
合計
156
76
40+7+2+3
232+52=284
ISaGRAF Ver.4/5 WindowsNT版カーネルの場合、実行ファイルの総サイズは
ISa.exe ...
- ISaGRAF Ver.4/5ターゲットは32ビットアプリケーションか16ビットか
ターゲットそのものについて
ターゲットのソースは、ANSI Cの規格に準拠したC言語で記述されています。そのため、ターゲットのCPUが16ビットでも32ビットでもコンパイラさえANSI Cに準拠していればコンパイルは可能です。
標準の WindowsNT版ターゲットは32ビットアプリケーション(WIN32)です。
アプリケーションコードのメモリモデル
なお、アプリケーションコードには、プロジェクトの変数を独自のアドレッシング方法で管理します。これには2種類のメモリモデルがあります。
ミディアム
変数は16ビットのアドレスで管理されます。変数の合計のサイズは64Kを超えることができません。
ラージ
変数は32ビットのアドレスで管理されます。
これらのメモリモデルにあわせて、ターゲットも2種類あります。
Ver4.00~Ver4.02のターゲットでは、ミディアムにのみ対応しています。
ターゲット内のシステムレイヤが管理する変数を格納する共有メモリは、いわゆるセグメント方式のメモリにも対応できるようになっています。そのため、セグメントサイズの小さいCPUでも、ラージモデルのターゲットを移植することができます。
ちなみに、標準の WindowsNT版ターゲットでは共有メモリはフラットなメモリ空間として扱っています。
...
- ISaGRAFでは他のプログラム言語同様、パソコンのハードウェア(シリアルポートやディスク)も制御できるか?
可能です。ファイル入出力の命令もあります。
ただ、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を使い、制御以外の部分を別言語で作る。
...
- ISaGRAFの機能を他の言語で開発したプログラムから呼び出して使えるか?
開発環境
ISaGRAFの開発環境ソフト(ワークベンチ)はそれ自体で完結しているソフトです。他のプログラムからあるプログラムをコールするといった使い方はできません。
実行環境
ISaGRAF実行環境は,ターゲットOSによってはISaGRAFの変数の読み書きや、停止などをサポートしているものもあります。たとえば、WindowsNTターゲットはDDEに対応しており、ほかのプログラムから変数の読み書きが可能です。
...
- IXLクライアントが同時接続できる上限の数について
<注意>
ISARSI(シリアル通信)の場合は、同時に1個のIXLクライアントしか受け付けません。
ISaGARF Ver.4.03以前の場合
ETCPネットワークドライバ経由でターゲットへ同時に接続できるIXLクライアントの数は3つに限られていました。4つめのクライアントを接続しようとすると、失敗します。
この制限を拡張するには、PRDK(ISaGRAF Ver.4/5 開発ツールキット)を使用して、ターゲットの以下のソースの修正が必要です
ETCP
ソース "detc0mai.c" のマクロ ETCP_SRV_MAX_CLT_QUEUE の数値を大きくします。
(ディフォルト=3)
ISaGRAF Ver.4.10以降の場合
1.ETCP(イーサネット)を使用する場合
ETCP経由でターゲットへ接続できるIXLクライアントの数を増やす場合には、通信タスクのスタートアップパラメータNbIxlClt で指定します。
【Windows NTターゲットの場合】
例えば、NTターゲットで10個のIXLクライアントをETCP経由で接続する場合は、以下のように設定します。
1. ターゲットに"ETCP.INI" ファイルがなければ作成します。
2. "ETCP.INI" ファイルに以下のセクションを追加します。
[APP]
NbIxlClt=10
【VxWorksターゲットの場合】
putEnvコマンドを使用してください:
putEnv("ETCP_NBIXLCLT=10")
【OS9ターゲットの場合】
setenvコマンドを使用してください:
setenv("ETCP_NBIXLCLT=10")
※使用するIXLクライアントの数に応じてIXDとETCPのパラメータを変更する必要がある場合は、FAQ 「ターゲットの起動時のパラメータについて」も合わせてご覧ください。
2.HSD(ローカル)を使用する場合
バージョンV4.1XでローカルのHSDプロトコルで接続するIXLクライアントの数を増やす場合、各バーチャルマシンのスタートアップパラメータCnxNBr(サーバコンポーネント)を使用します:
【Windows NTターゲットの場合】
例えば、NTターゲットで10個のIXLクライアントをETCP経由で接続する場合は、ISAVM.iniファイルに以下のように設定してください:
[SRV]
CnxNbr=10
【VxWorksターゲットの場合】
putEnvコマンドを使用してください:
putEnv("ISAVM_SRV_CNXNBR=10")
【OS9ターゲットの場合】
setenvコマンドを使用してください:
setenv("ISAVM_SRV_CNXNBR=10")
HSDの場合、アンサーの数やバーチャルマシンのサイクルもSRVのパラメータ:MAXSCAN で設定することが可能です。
...
- IXLクライアントからISaGRAF Ver.4/5ターゲットにリクエストを送信したい。応答があるまで多少時間がかかるが、その間、クライアント側に他の処理をさせたい。
IXLクライアントアプリケーションでは、ターゲットへのリクエストの送信にノンブロッキングメソッドを使うこともできます。この方法では、あらかじめコールバック関数を準備しておきます。
そして、IXLの初期化の段階でコールバック関数のアドレスをセットしておきます。
クライアントは、リクエストを送信した後、できるだけ頻繁に ixlCallbackActive() 関数をコールするようにします。
リクエストが完了した時点でコールバック関数がコールされるので、クライアントはそれまでの間、他の処理を行うことができます。
アンサーの準備ができた時点でコールバック関数はコールされます。コールバック関数内では受信した応答は、
指定したリクエストコード通知識別子対応するixlOnNotifXxx()関数
を使って処理するようにします。
下記はクライアントプログラムの一例です。
main ()
{
... ixlInit(... ,dtstIxlCallback,....);
.... ドライバ初期化 ....
... 接続 ...
... ダイアログの確立 ...
while (....)
{
if (.... ) /* 読みこみを行う場合 */
{
ixlRead(...);
...
}
else if (..) ...
- IXLで一度にアクセスできる変数の数は?
IXLで1度に書きこみ/読みこみが行える変数の最大数を "huNbrOfVar" とします。
この数は、通信バッファのサイズと、変数のタイプ(文字列かどうか)によって異なります。
デフォルトでは、
送信バッファサイズ=512 Byte
受信バッファ=1024 Byte
となっています。このサイズだと、huNbrOfVarの最大数は下の表のようになります。
非文字列型データの読みこみ
39
文字列型データの読みこみ
3
非文字列型データの書きこみ
30
文字列型データの書きこみ
1
...
- ISaGRAF Ver.4/5のIXLとはなにか
IXL(ISaGRAF Exchange Layer:ISaGRAF交換レイヤー)とは、クライアントアプリケーションからISaGRAF Ver.4/5のターゲットのあらゆるオブジェクトにアクセスするためのAPI群です。
構成
クライアントは、ターゲットと同じマシン上で動作する別のタスクやプロセスでも構いませんし、ネットワークで接続された異なるOSのリモートマシン上にあってもかまいません。以下の図は、APIの一般的なアーキテクチャを示したものです。
IXL:クライアントが利用できる様々なサービスです。
使用するISXLドライバ種別の指定、ターゲットへの接続、変数の読み書きなどがあります。
ISXL:ISaGRAFシステム交換レイヤー(ISaGRAF System Exchange Layer)。
各クライアントサービスと、対応するドライバサービスとをリンクさせる部分です。
標準ターゲットのほとんどが次のハードウェアに対応したISXLのドライバをもっています。
共有メモリ(HSD:Host System Driver): ローカルマシン内での通信に使用します。
TCP/IP: ネットワーク上のリモートマシン間の通信に使用します。
RS-232C: シリアル通信を利用した1対1の通信です。その他、デバイスに合わせたドライバを開発することで、新たなネットワークへの対応が可能です。
IXS:ターゲット側のAPIライブラリ。
クライアントからの接続の受け付け、リクエストの取得などサービスがあります。
ISXS:サーバ側のネットワークドライバ。
クライアント側のISXLと対応する部分です。
ISaIXD:ディスパッチャ。
クライアントのリクエストを解析し、指定のPLCタスク(=リソース)に配信するタスクです。
従って、クライアントアプリケーションは接続時に以下の項目を指定することになります。
使用するデバイスドライバ(ISXL)デバイスドライバアクセスのメソッド
・・・
IXL APIはスケーラブルです。すなわち、ドライバなどの部分は簡単に削除できるようにしてあります。
これは、API初期化時にドライバを登録しないようにすること(define宣言で)可能になります。(また、リンカの方式によっては、関連するオブジェクトモジュールを削除する/しないことで可能です。)
サービスセットといった他の部分も、コンパイル時にdefine宣言で削除できます。
なお、デバイスドライバによっては、利用できないメソッドがあります。また、メソッドとデバイスドライバによって、利用できないサービスがあります。
機能
PLCがISaGRAF ...
- ISaGRAF Ver.4/5のIXL(ISaGRAF eXchange Layer)の仕様は公開しているか?
ISaGRAF Ver.4/5開発ツールキットのマニュアル(オンラインヘルプ)にて公開しています。
IXLとは、ISaGARF Ver.4/5ターゲットの変数にアクセスしたり、ターゲットの動作を制御するためのプロトコルの仕様です。
...
- I/OドライバからISaGRAF Ver.4/5のシステム変数にアクセスすることはできますか?
注意
システム変数のバーチャルアドレス(VA)はターゲットのヘッダファイルdsys0def.hで定義されていて、先頭に ISA_SYSVA_ が付加された文字列です。
アクセス方法
まず、変数テーブル(バーチャルマシンのリアルタイムデータベース)の先頭アドレスを取得します。I/Oドライバ内部からアクセスする場合は、I/Oデバイスのチャンネルへのポインタがあるはずです。これを pChannel とします。
strRtIoChan* pChannel;
uchar *curBfData = NULL;
pChannel = pRtIoSplDvc->pRtIoChan;
curBfData = (uchar*)pChannel->pvKerData - pChannel->KerVa;
これで curBfData に先頭の変数へのポインタが格納されます。これ以降は、下記のマクロで任意の変数にアクセスできるようになります。
BF_BOOL(BfData,va)
BF_SINT(BfData,va)
BF_DINT(BfData,va)
BF_REAL(BfData,va)
BF_TIME(BfData,va)
'va'はアクセスする変数のバーチャルアドレスです。
【例】
BF_DINT(curBfData,ISA_SYSVA_TCYCURRENT)
※ISaGRAF Ver.4/5ワークベンチ上では、システム変数名は"__SYSVA_**"と表示されます。
...
- ISaGRAF Ver.4/5ターゲットの通信タスクにシリアル通信を使う場合の起動方法について
コンフィギュレーションマネージャ(CMG)を起動する時に以下のようにパラメータを設定してシリアルリンクを使用可能にできます。
ISaGRAF -RSI=[ポート名]:[ボーレート]:[パリティ]:[ストップビット]:[ハードウェアによるフロー制御] -NoETCP
この設定でETCPタスクは起動されなくなります。
例1: Windows NTでの例 コマンドラインで起動する場合
ISaGRAF -RSI=COM1:19200:N:1:OFF -NoETCP
例2: Windows NTでの例 'isagraf.ini’ファイルに以下の設定を行えば、コマンドラインの場合と同様の設定でCMGを起動できます。
[APP]
NoETCP=1
ResNbr=20
s=1
RSI=COM1:19200:N:1:OFF
その他のOS(OS-9、VxWorks)の場合のコマンドラインについてはISaGRAF Ver.4/5 I/O開発キットや開発ツールキットのCD-ROMの各ターゲットのディレクトリにある "Target.txt"を 、起動パラメータに関する一般情報についてはISaGRAF Ver.4/5ターゲットの起動時のパラメータのページをご覧下さい。
...
- ISaGRAFにアプリケーションコードをダウンロードした後通信が遮断状態になり、再度ダウンロードできなくなる。
この現象は、次のようなときに起こります。
ISaGRAFアプリケーションに無限ループがある。
ハングアップしているのと同じ状態。
サイクルタイムの実際の値が設定値にかなり近いか、越えている。
SFCの選択分岐で、複数のトランジションが同時に成立してしまっている
原因を特定できない場合、以下の処理を試してみてください:
1. C言語ファンクションを作る。内容は、パラメータの変数の値を表示させる。
2. beginセクションに、ある整数変数をサイクルタイム毎に1ずつ増やし、1.のファンクションで表示させる
これでサイクルタイム毎に画面に数字が表示されなければ,どこかに無限ループがある、ということになります。
...
- ISaGRAF Ver.4/5ではコンフィギュレーション=ターゲットハードウェアをネットワーク経由で複数台設定できますが、マシンのIPアドレスをどのように設定しますか?
ワークベンチのプロジェクト内では、ターゲットプラットフォームとは、1つの「コンフィギュレーション」に該当します。
このコンフィギュレーションにIPアドレスを設定するには、
1. ハードウェアアーキテクチャウィンドウでETCP(Enhanced TCP/IP)ネットワークを挿入します。
2. コンフィギュレーションと挿入したネットワークを接続します。
コンフィギュレーションは非選択状態(タイトルバーがグレーの状態)にします(空白エリアのどこかををクリックしておきます)。
コンフィギュレーションからドラッグ&ドロップの動作でネットワークへの接続を実行します。(選択モードでドラッグ&ドロップを行うと、コンフィギュレーションの位置が移動してしまいます。)
3. 「接続プロパティ」で "IP Adress" の値を設定します。(例: 127.0.0.1)
値を設定したら、「OK」を押してダイアログボックスを抜けます。
4. 操作の詳細については、ヘルプの下記のセクションをご覧下さい。
「ワークベンチ」-「プロジェクトマネージャ」-「ハードウェアアーキテクチャの表示」接続接続プロパティ
...
- ISaGRAF Ver.4/5のワークベンチからターゲットへダウンロードされるデータはどのようなものですか?
リソース(プラットフォーム上のリソース毎)
リソース構成ファイル
ワークベンチ上でのファイル名=RESOURCENAME_Conf.xtc
ターゲット上でのファイル名(またはメモリスペース名)=ISPxxx03(XXはリソース番号(16進)
リソースシンボルファイル
これは、「リソースプロパティ」-「ターゲット/コード」タブの「シンボルテーブルの埋め込み」オプションがチェックされている場合にだけダウンロードします。内容は変数名等の情報を含むリソースシンボルファイルです。
ワークベンチ上でのファイル名=RESOURCENAME_SymbolsTarget.xtc (縮小テーブル/完全なテーブルをリソースプロパティのオプションで選択できます)
ターゲット上でのファイル名(またはメモリスペース名)=IDSxxx01(XXはリソース番号(16進)
POU(リソース上のPOU毎)
アプリケーションコード
ワークベンチ上の全POUのアプリケーションコードファイル(ファイル名=ResourceName_POUName_xtc)は1つのファイルに結合されます。結合の順番はワークベンチ上のファイル ResourceName_DWLOrder.xtc に記されています。
ハードウェア上でのファイル名=ISPxxx01
コンフィグレーション(ハードウェアプラットフォーム毎)
ハードウェア構成ファイル
ワークベンチ上では、このファイルはプロジェクトのコンフィグレーション名のディレクトリに保存されています。
ワークベンチ上でのファイル名=ConfigName_NetworkConf.xtc
ハードウェア上でのファイル名=ISPffe0d
注意:このドキュメントではオンライン修正用のファイル(ISPxxx15)については言及していません。
...
- ISaGRAFの辞書エディタで変数の「保持」を設定できるようになっているが、保持を設定した変数はターゲット稼働中に電源を切っても保持されるのか?また、保持型の変数を使用した場合、再起動時は保持値の方が初期値より優先するのか?
これは、ターゲットに依存する機能です。サポートしていないターゲットもあります。
ターゲットコンピュータにバックアップメモリや外部記憶装置が搭載され、かつ、オプションソフトの「ターゲット開発キット」によってISaGRAFのカーネルにその機能が実装されている場合に有効です。
再起動時は、保持値が初期値よりも優先されます。
ISaGRAF Ver.4/5の保持変数について
ISaGRAF Ver.4/5 の本数保持機能については、"ProDk.chm"-ISaGRAF Ver.4/5ターゲット開発キットのマニュアルに詳細が記述されています。
ISaGRAF Ver.4/5 NTターゲット
現状ではサンプルとしてファイルに変数値をバックアップする機能はあります。ただしあくまでサンプルであり、実際のご使用は推奨しません。
...
- ISaGRAF Ver.4/5 ターゲット移植のためのガイドライン
ISaGRAF Ver.4/5 開発ツールキットを使用してVer.4/5のターゲットを移植する際にVer.4/5のヘルプ(ProDk.chm)を読む前に、以下の移植のガイドラインをご覧下さい。
【内容】
(1)基本的なシステム要件
(2)移植のファーストステップの概要
(3)移植のヒント
(1)基本的なシステム要件
Ver4.03以降のISaGRAF Ver.4/5 ターゲットでは、移植を行うシステムに必要な項目は以下の通りです。
1.マルチタスクOS
2.ANSI Cによる開発環境を使用可能なターゲットシステムであること
3.以下のような機能をもつこと
TCP/IP BSD ソケットインタフェース
ワークベンチとターゲット間の通信、またはターゲットどうしのバインディングリンク用です。
シリアル通信ドライバ
シリアル通信ポートを制御するドライバ。基本的には、キャラクタ単位の読み書きを行います。ワークベンチとの通信にのみ使用します。
時間管理
一定周期のものであれば何でも構いません。システムティックなどを利用します。
ISaGRAF Ver.4/5の時間の単位はミリ秒です。つまり、最大の精度は1ミリ秒になります。
共有メモリ
複数のタスクから同じメモリエリアをアクセスできること。
セマフォ
タスク間の同期を取るためにバイナリセマフォを使います。
複数タスクからのデータアクセス制御のためにはミューテックスセマフォ(排他セマフォ)を使います。
メッセージキュー
タスクどうしはメッセージをやり取りして通信します。メッセージの内容は移植時に気にする必要はありません。
メッセージキューは、セマフォで管理された共有のFIFOバッファと見なすことができ、複数のタスクからアクセスが可能です。
タスク管理
各タスクは、アプリケーションのコンフィギュレーションやデバッグコマンドにともない、スタート/終了させる必要があります。
補助記憶装置(ハードディスク、RAMディスク、フラッシュメモリ等)
アプリケーション情報の保存用の媒体管理。アプリケーションコードや、シンボルテーブル等の保存のために使います。
また、アプリケーションコードが保存されているリソースの一覧を取得するためのシンプルなブラウズ機能も必要です。
以上の機能は、一連のシステムルーチンを経由してコールされます。これらのルーチンのインタフェース仕様は、ISaGRAF Ver.4/5開発キットのヘルプファイルをご覧下さい。
ISaGRAF ver.4/5開発ツールキットの"NewOS"フォルダ内には、これらのルーチンのソースのひな型をコメント付きで収録してあります。
実際の移植のおもな作業は、このひな型の内容を埋める、つまり、ISaGRAF Ver.4/5に必要な機能をターゲットOSに合わせる作業ということになります。
4.スタティックなデータの配置
全ての関数から参照可能な変数があります。これは通常、スタックには格納されないグローバル変数です。
また、複数のタスクが同じ実行コードを共有する場合があります。
これはおもに
バーチャルマシンのタスクが複数回起動する場合あらゆるタスクからコールされる、システムレイヤのライブラリ
です。このような場合、OSはタスクのインスタンス毎にスタティックデータ用のメモリを割り当てられる必要があります。
これは、「カーネル」ライクなOSやマルチスレッドOSといったものにはあてはまりません。
この機能を実現するために、OSは最低限の機能として、タスクのコンテキスト切替時に数個のポインタ(3、4個)をストアできなければなりません。したがって、タスクの初期化の第一段階で、データの割り当てを行うようなプログラミングをすることになります。 VxWorks版ターゲットのソースには、そのような例が含まれています。
(2)移植のファーストステップ
1.これまでに示した最小の機能要件が満たされていることを確認してください。
2.ISaGRAF Ver.4/5開発ツールキット(NSS-I4-PRDK)のCD-ROMから、"NewOS" フォルダの内容を開発環境にコピーしてください。
3.ターゲットに関する定義を行います。
ターゲットの定義は、ワークベンチ側、ターゲット側ともに必要です。
ワークベンチ側では、PLCtools.mdb または TDBuild.exe ツールを使って、新しいターゲットの定義をおこないます。
ターゲット側では、IsaSys\dsys0def.h の中の定義を修正します。
もちろん、双方の設定内容は一致していなければなりません。
dsys0def.h ファイルの ...
- ISaGRAFで割り込みを使用することはできますか?
ISaGRAFターゲットの処理は、大きく分けて次の2つのものから成り立ちます。
カーネルのメインループ(プログラムの同期処理)
物理的なI/Oとのデータの更新処理
つまり、ターゲット処理は元々割り込み処理をハンドルするような構造になっていません。
マルチタスクOSの場合なら、ISaGRAFのサイクル処理の入力スキャンの段階でブロックし、ハードウェア割り込みを待つようにすることも可能ではあります。これは割り込みによって1サイクル実行を行う最も簡単な方法です。
ただし、通常ISaGRAFによって計測されているサイクルタイム値は、全く意味がなくなってしまう点に注意してください。
一般的に、割り込み処理はハードウェアに依存する処理をC言語で記述し、その内容は非常にシンプルで短時間で終わる処理となります。このような処理は、C言語ファンクションブロックとして実装すれば、ISaGRAFのサイクル内でコントロールできるようになります。
...
- IXLクライアントが同時接続できる上限の数について
<注意>
ISARSI(シリアル通信)の場合は、同時に1個のIXLクライアントしか受け付けません。
ISaGARF Ver.4.03以前の場合
ETCPネットワークドライバ経由でターゲットへ同時に接続できるIXLクライアントの数は3つに限られていました。4つめのクライアントを接続しようとすると、失敗します。
この制限を拡張するには、PRDK(ISaGRAF Ver.4/5 開発ツールキット)を使用して、ターゲットの以下のソースの修正が必要です
ETCP
ソース "detc0mai.c" のマクロ ETCP_SRV_MAX_CLT_QUEUE の数値を大きくします。
(ディフォルト=3)
ISaGRAF Ver.4.10以降の場合
1.ETCP(イーサネット)を使用する場合
ETCP経由でターゲットへ接続できるIXLクライアントの数を増やす場合には、通信タスクのスタートアップパラメータ NbIxlClt で指定します。
【Windows NTターゲットの場合】
例えば、NTターゲットで10個のIXLクライアントをETCP経由で接続する場合は、以下のように設定します。
1. ターゲットに"ETCP.INI" ファイルがなければ作成します。
2. "ETCP.INI" ファイルに以下のセクションを追加します。
[APP]
NbIxlClt=10
【VxWorksターゲットの場合】
putEnvコマンドを使用してください:
putEnv("ETCP_NBIXLCLT=10")
【OS9ターゲットの場合】
setenvコマンドを使用してください:
setenv("ETCP_NBIXLCLT=10")
※使用するIXLクライアントの数に応じてIXDとETCPのパラメータを変更する必要がある場合は、FAQ 「ターゲットの起動時のパラメータについて」も合わせてご覧ください。
2.HSD(ローカル)を使用する場合
バージョンV4.1XでローカルのHSDプロトコルで接続するIXLクライアントの数を増やす場合、各バーチャルマシンのスタートアップパラメータ CnxNBr(サーバコンポーネント)を使用します:
【Windows NTターゲットの場合】
例えば、NTターゲットで10個のIXLクライアントをETCP経由で接続する場合は、ISAVM.iniファイルに以下のように設定してください: ...
- IXLクライアントからISaGRAF Ver.4/5ターゲットにリクエストを送信したい。応答があるまで多少時間がかかるが、その間、クライアント側に他の処理をさせたい。
IXLクライアントアプリケーションでは、ターゲットへのリクエストの送信にノンブロッキングメソッドを使うこともできます。
この方法では、あらかじめコールバック関数を準備しておきます。
そして、IXLの初期化の段階でコールバック関数のアドレスをセットしておきます。
クライアントは、リクエストを送信した後、できるだけ頻繁に ixlCallbackActive() 関数をコールするようにします。
リクエストが完了した時点でコールバック関数がコールされるので、クライアントはそれまでの間、他の処理を行うことができます。
アンサーの準備ができた時点でコールバック関数はコールされます。コールバック関数内では受信した応答は、
指定したリクエストコード通知識別子対応する ixlOnNotifXxx() 関数
を使って処理するようにします。
下記はクライアントプログラムの一例です。
main ()
{
... ixlInit(... ,dtstIxlCallback,....);
.... ドライバ初期化 ....
... 接続 ...
... ダイアログの確立 ...
while (....)
{
if (.... ) /* 読みこみを行う場合 */
{
ixlRead(...);
...
}
else ...
- ISaGRAF Ver.4/5のIXLとはなにか?
IXL(ISaGRAF Exchange Layer:ISaGRAF交換レイヤー)とは、クライアントアプリケーションからISaGRAF Ver.4/5のターゲットのあらゆるオブジェクトにアクセスするためのAPI群です。
構成
クライアントは、ターゲットと同じマシン上で動作する別のタスクやプロセスでも構いませんし、ネットワークで接続された異なるOSのリモートマシン上にあってもかまいません。以下の図は、APIの一般的なアーキテクチャを示したものです。
IXL:クライアントが利用できる様々なサービスです。
使用するISXLドライバ種別の指定、ターゲットへの接続、変数の読み書きなどがあります。
ISXL:ISaGRAFシステム交換レイヤー(ISaGRAF System Exchange Layer)。
各クライアントサービスと、対応するドライバサービスとをリンクさせる部分です。
標準ターゲットのほとんどが次のハードウェアに対応したISXLのドライバをもっています。
共有メモリ(HSD:Host System Driver): ローカルマシン内での通信に使用します。
TCP/IP: ネットワーク上のリモートマシン間の通信に使用します。
RS-232C: シリアル通信を利用した1対1の通信です。その他、デバイスに合わせたドライバを開発することで、新たなネットワークへの対応が可能です。
IXS:ターゲット側のAPIライブラリ。
クライアントからの接続の受け付け、リクエストの取得などサービスがあります。
ISXS:サーバ側のネットワークドライバ。
クライアント側のISXLと対応する部分です。
ISaIXD:ディスパッチャ。
クライアントのリクエストを解析し、指定のPLCタスク(=リソース)に配信するタスクです。
従って、クライアントアプリケーションは接続時に以下の項目を指定することになります。
使用するデバイスドライバ(ISXL)デバイスドライバアクセスのメソッド
・・・
IXL APIはスケーラブルです。すなわち、ドライバなどの部分は簡単に削除できるようにしてあります。
これは、API初期化時にドライバを登録しないようにすること(define宣言で)可能になります。(また、リンカの方式によっては、関連するオブジェクトモジュールを削除する/しないことで可能です。)
サービスセットといった他の部分も、コンパイル時にdefine宣言で削除できます。
なお、デバイスドライバによっては、利用できないメソッドがあります。また、メソッドとデバイスドライバによって、利用できないサービスがあります。
機能
PLCがISaGRAF Ver.4/5であれば、変数値のほか、I/Oの状態、SFCのステップ、SFCのブレークポイントなどにもアクセスできます。
ISaGRAF Ver.4/5以外のPLC用のドライバを作って対応することも可能ですが、通常は変数の読み込み、書きこみのみに制限されます。
...
- ISaGRAF Ver.4/5では、ターゲットに関する各種の定義はどこで行われていますか?また、プラットフォームに合わせて、どのように変更すればいいのでしょうか?
ISaGRAF Ver.4/5 ソースの "dsy0def.h" ファイル内の以下の部分は、ターゲットの重要な定義を行う部分です。
ISaGRAF Ver.4/5ターゲットを新しいOSに移植する場合、プラットフォームの仕様に合わせて定義します。
この内容は、ワークベンチ側での設定と必ず一致させる必要があります。
#define INTEL /* TO DO: システムがINTELベースの場合。それ以外はこの定義を外す。 */
#define MOTOROLA /* TO DO: システムがMOTOROLA ベースの場合。それ以外はこの定義を外す。 */
#define TARGET_NAME "MYTARGETNAME" /* TO DO: ...
- ISaGRAFのターゲット環境はROM上で実行することはできますか?
RAMでもROMでも、いずれも可能です。
ISaGRAF Ver.4/5の場合
ISaGRAF Ver.4/5のバーチャルマシンは、フラッシュメモリ等、RAMでない領域にあるリソースコードを直接実行することもできます。例えば、ダウンロードコードを保存する場所として、フラッシュメモリをバッテリバックアップメモリのように使う場合です。
注意事項としては、dsysSpcSave ルーチン(指定のメモリスペースの内容を補助記憶装置に保存)がダウンロードされたTICコードをフラッシュメモリに保存する前に、全リソースのコードがRAMにある情報と一致している必要があります。
...
- ISaGRAF Ver.4/5 のシングルタスク版ターゲットとは、どのようなものですか?
ISaGRAF Ver.4.10 より、シングルタスク版のターゲットが提供されるようになりました。
ISaGRAF Ver.4/5ターゲットの移植を行う場合、PRDK(ISaGRAF Ver.4/5開発ツールキット)の CD-ROMの target\newOS\MonoTask ディレクトリのソースを使用します。
シングルタスク版の制限事項
以下のようになります。
ターゲットのIXLライブラリにシンボルテーブルにアクセスするためのルーチンがありません。
したがって、シンボルテーブルをロードする、変数名からバーチャルアドレスを取得するといった機能は利用できません。シンボルテーブルをターゲットへダウンロードすること自体は可能です。
通信ファンクションブロック(Connect, URCV_S, USEND_S)は使用できません。1台のハードウェアプラットフォーム上で、複数個のISaGRAF Ver.4/5ターゲットを起動することはできません。これはOSがマルチタスクであってもです。
この理由は、ターゲットのコンフィギュレーションマネージャにあります。通常、同一プラットフォーム上では複数のコンフィギュレーションマネージャは同時に起動できないためです。ディフォルトの設定では、バインディングは使用できません。
使用できるようにするには、 IsaSys\dsys0def.h ファイルで "ITGTDEF_KVB" を #define する必要があります。
TCP/IPネットワークに関する注意事項
シングルタスク版はディフォルトで ISaRSI (RS-232Cのシリアル通信)通信のみをサポートしています。ただし、修正を加えればTCP/IP経由で通信することも可能です。以下を参照してください。
移植先のプラットフォーム上でイーサネットなどの通信ポートと、ノンブロッキングのTCP/IPスタックを使用可能であることが条件です。
isxsDrvsRegistrationルーチン(IsaSrvフォルダのdixs0reg.cファイルにあります)のコメントを削除し、ETCPドライバの登録を有効にすれば、TCP/IPが使用可能になります。 以下の行を有効にして下さい。
/* ETCP driver */
isxsEtcpRegister(pIxsId);
イーサネットなどが使えない場合は、エンドユーザがワークベンチでETCPドライバを選択できないようにする必要があります。
使用するワークベンチプロジェクトのテンプレート(ワークベンチインストールフォルダの "Tpl" ...
- ISaGRAF Ver.4.10以降では、ソケットライブラリを使用することが標準的な仕様となった。Ver4.03のソースをアップグレードする手順はどうなるか?
下記の内容は一般的なアップグレードの手順であることをあらかじめご了承下さい。PRDKに付属するTarget\\NewOs\\MultiTask\\Release.txt ファイルにもこの内容が書かれています。
一般的なターゲットの移植の手順は下記のようになります。
1. 新しいOS用の新バージョンのソースファイルをコピーする。
2. システム依存する部分のファイル(移植時に空の関数内を記述したファイル)をコピーする。
3. 他に追加のコンポーネント(C言語POUやI/Oドライバ)のソースを作成済みなら、それもコピーする。
4. dsys0def.h ファイルを編集しなおして、Ver4.10の新規の定義に合うようにする(前述のファイルの内容をご覧下さい)
5. その他のAlterSys Europe提供のファイルで独自の変更を加えたものがあれば、修正する(通常はこの作業は必要ないはずです)
6. その他、各バージョンのリリースノートの詳細にある項目を実施する。
基本的に ISaGRAF Ver4.10のソケットを移植するには2種類の方法があります。
方法1
Ver4.10のソースコードに付属する AlterSys Europe作成の det0soc.c ファイルをそのまま、修正せずに使います。Ver4.10からはこのファイルはシステムに依存しないものとなっており、修正は不要です。このファイルでは新たに ISysSocライブラリを使用しており、移植時には dsys0soc.c ファイルを使用します(オンラインヘルプ PRODK.CHMの「TCP/IPインタフェース」のページをご覧下さい)ので、この内部をシステムに合わせて書き換えます。また、新しい ISysSoc.lib ファイルを生成するためのメイクファイルの修正も必要です(Target\\NewOs\\MultiTask\\MakPrdk.txtファイルをご覧下さい)
移植時には ISaGRAF 4.10 ...
- ISaGRAF Ver.4/5のターゲットをオリジナルのOSに移植するときOSにはどのような機能が必要か?
全ての機能を実装するには、マルチタスクOSで、下記の機能が必要です。
共有メモリ管理
メッセージキュー(ローカルデータ管理用)
セマフォタイマー管理TCP/IPソケットインタフェース(ETCP通信を使わない場合は不要)
タスク管理(タスク生成、起動、終了など)
ファイルシステム
ISaGRAF Ver.4.10以降では、一部制限事項もありますがシングルタスクOSへの移植にも対応しています。
...
- ISaGRAFの辞書エディタで変数の「保持」を設定できるようになっているが、保持を設定した変数はターゲット稼働中に電源を切っても保持されるのか?また、保持型の変数を使用した場合、再起動時は保持値の方が初期値より優先するのか?
これは、ターゲットに依存する機能です。サポートしていないターゲットもあります。
ターゲットコンピュータにバックアップメモリや外部記憶装置が搭載され、かつ、オプションソフトの「ターゲット開発キット」によってISaGRAFのカーネルにその機能が実装されている場合に有効です。
再起動時は、保持値が初期値よりも優先されます。
ISaGRAF Ver.4/5の保持変数について
ISaGRAF Ver.4/5 の本数保持機能については、"ProDk.chm"-ISaGRAF Ver.4/5ターゲット開発キットのマニュアルに詳細が記述されています。
ISaGRAF Ver.4/5 NTターゲット
現状ではサンプルとしてファイルに変数値をバックアップする機能はあります。ただしあくまでサンプルであり、実際のご使用は推奨しません。
...
- ISaGRAF Ver.4/5 のIXLとはなにか
IXL(ISaGRAF Exchange Layer:ISaGRAF交換レイヤー)とは、クライアントアプリケーションからISaGRAF Ver.4/5のターゲットのあらゆるオブジェクトにアクセスするためのAPI群です。
構成
クライアントは、ターゲットと同じマシン上で動作する別のタスクやプロセスでも構いませんし、ネットワークで接続された異なるOSのリモートマシン上にあってもかまいません。以下の図は、APIの一般的なアーキテクチャを示したものです。
IXL:クライアントが利用できる様々なサービスです。
使用するISXLドライバ種別の指定、ターゲットへの接続、変数の読み書きなどがあります。
ISXL:ISaGRAFシステム交換レイヤー(ISaGRAF System Exchange Layer)。
各クライアントサービスと、対応するドライバサービスとをリンクさせる部分です。
標準ターゲットのほとんどが次のハードウェアに対応したISXLのドライバをもっています。
共有メモリ(HSD:Host System Driver): ローカルマシン内での通信に使用します。
TCP/IP: ネットワーク上のリモートマシン間の通信に使用します。
RS-232C: シリアル通信を利用した1対1の通信です。その他、デバイスに合わせたドライバを開発することで、新たなネットワークへの対応が可能です。
IXS:ターゲット側のAPIライブラリ。
クライアントからの接続の受け付け、リクエストの取得などサービスがあります。
ISXS:サーバ側のネットワークドライバ。
クライアント側のISXLと対応する部分です。
ISaIXD:ディスパッチャ。
クライアントのリクエストを解析し、指定のPLCタスク(=リソース)に配信するタスクです。
従って、クライアントアプリケーションは接続時に以下の項目を指定することになります。
使用するデバイスドライバ(ISXL)デバイスドライバアクセスのメソッド
・・・
IXL APIはスケーラブルです。すなわち、ドライバなどの部分は簡単に削除できるようにしてあります。
これは、API初期化時にドライバを登録しないようにすること(define宣言で)可能になります。(また、リンカの方式によっては、関連するオブジェクトモジュールを削除する/しないことで可能です。)
サービスセットといった他の部分も、コンパイル時にdefine宣言で削除できます。
なお、デバイスドライバによっては、利用できないメソッドがあります。また、メソッドとデバイスドライバによって、利用できないサービスがあります。
機能
PLCがISaGRAF ...
- ISaGRAF Ver.4/5 では、シミュレーションモードとデバッグモードはどのように切りかえるのでしょうか?
ワークベンチのバージョンによって方法が異なります。
ISaGRAF Ver.4.10以降
シミュレーション実行の場合はメニューの「デバッグ」-「シミュレーション」を実行します。
実際のターゲットをデバッグする場合は、ターゲットを起動した後、メニューの「デバッグ」-「デバッグ」を実行します。
ISaGRAF Ver.4.10未満
新たにプロジェクトを作成した直後は、ディフォルトの実行モードはシミュレーションになっています。「テスト」コマンドを実行すると、ワークベンチはシミュレーションを開始します。
デバッグモードに切り替えるには、プロジェクト中の全てのリソースの「プロパティ」ウィンドウを開きます。「実行」タブで、「オンライン」を選択します。
この操作の後、グレー表示されて選択できなかった「ダウンロード」スイッチが有効になります。また、もしこれがグレー表示のままなら、まだ「シミュレート」モードのリソースが残っていることを意味します。
実ターゲット上でデバッグを行うためには、次の手順で行います。
1. アプリケーションコードを生成します。
2. ターゲットを起動します。
3. ワークベンチで「デバッグ」メニューの「ダウンロード」、またはツールバーのダウンロードボタンをクリックします。
そしてアプリケーションコードをダウンロードします。
4. 「テスト」ボタンまたは「デバッグ」-「テスト」メニューからワークベンチをデバッグモードにします。
...
- ISaGRAF Ver4.12ワークベンチで作成したプログラムをターゲットにダウンロードしようとしたが、ダウンロード処理が途中で停止し、エラーとなって終了してしまう。
ISaGRAF Ver4.12では、比較的大きなサイズのプログラムを作成しダウンロードした場合、途中で処理が停止するという現象が発生するようです。
これはダウンロード処理モジュールのタイムアウトの時間に関係するようです。
#マシンの環境にもよりますが、アプリケーションのサイズが350Kを超えるてくると発生する場合があるようです。
#ちなみに400Kのアプリケーションはラダ-のラングに換算して約40000本程度のボリュームになります。
これらの問題を改善したモジュールをメンバサポートページに掲載していますので、こちらを御使用下さい。
...
- IXLクライアントが同時接続できる上限の数について
<注意>
ISARSI(シリアル通信)の場合は、同時に1個のIXLクライアントしか受け付けません。
ISaGARF Ver.4.03以前の場合
ETCPネットワークドライバ経由でターゲットへ同時に接続できるIXLクライアントの数は3つに限られていました。4つめのクライアントを接続しようとすると、失敗します。
この制限を拡張するには、PRDK(ISaGRAF Ver.4/5 開発ツールキット)を使用して、ターゲットの以下のソースの修正が必要です
ETCP
ソース "detc0mai.c" のマクロ ETCP_SRV_MAX_CLT_QUEUE の数値を大きくします。
(ディフォルト=3)
ISaGRAF Ver.4.10以降の場合
1.ETCP(イーサネット)を使用する場合
ETCP経由でターゲットへ接続できるIXLクライアントの数を増やす場合には、通信タスクのスタートアップパラメータ NbIxlClt で指定します。
【Windows NTターゲットの場合】
例えば、NTターゲットで10個のIXLクライアントをETCP経由で接続する場合は、以下のように設定します。
1. ターゲットに"ETCP.INI" ファイルがなければ作成します。
2. "ETCP.INI" ファイルに以下のセクションを追加します。
[APP]
NbIxlClt=10
【VxWorksターゲットの場合】
putEnvコマンドを使用してください:
putEnv("ETCP_NBIXLCLT=10")
【OS9ターゲットの場合】
setenvコマンドを使用してください:
setenv("ETCP_NBIXLCLT=10")
※使用するIXLクライアントの数に応じてIXDとETCPのパラメータを変更する必要がある場合は、FAQ 「ターゲットの起動時のパラメータについて」も合わせてご覧ください。
2.HSD(ローカル)を使用する場合
Ver.4.1XでローカルのHSDプロトコルで接続するIXLクライアントの数を増やす場合、各バーチャルマシンのスタートアップパラメータ CnxNBr(サーバコンポーネント)を使用します:
【Windows ...
- ISaGRAFを Ver3.23にバージョンアップしたら、PIDファンクションブロックが使えなくなっている。
PIDファンクションブロックは、旧バージョン(Ver3.0X以前)には標準ファンクションブロックに含まれておりましたが、Ver3.20以降、標準ファンクションブロックから外れました。
その理由は、このファンクションブロックはパラメータの設定等により非常に動きに幅があり、開発元のICS Triplex ISaGRAF Inc.で動作保証できないと判断したためです。
PID処理に関しては、お客様の責任で、ユーザーファンクションブロックを作成して機能実現していただくことになります。
(参考)PIDファンクションブロックの仕様
このファンクションブロックは制御で使用される、いわゆるPID制御機能を持っています。パラメータは、次の意味を持ちます。
パラメータ名
意味
PV
制御する値
SV
制御目標値
KP
比例ゲイン
TR
積分ゲイン
RD
微分ゲイン
cycle
現在値のサンプリング周期
例えば図1のブロック図の制御を実現するような場合には、図2の様なFBDを記述します。
図1
図2
...
- ISaGRAFにアプリケーションコードをダウンロードした後通信が遮断状態になり、再度ダウンロードできなくなる。
この現象は、次のようなときに起こります。
ISaGRAFアプリケーションに無限ループがある。ハングアップしているのと同じ状態。サイクルタイムの実際の値が設定値にかなり近いか、越えている。SFCの選択分岐で、複数のトランジションが同時に成立してしまっている
原因を特定できない場合、以下の処理を試してみてください:
1. C言語ファンクションを作る。内容は、パラメータの変数の値を表示させる。
2. beginセクションに、ある整数変数をサイクルタイム毎に1ずつ増やし、1.のファンクションで表示させる
これでサイクルタイム毎に画面に数字が表示されなければ,どこかに無限ループがある、ということになります。
...
- ISaGRAFのワークベンチをパソコンにインストールしたが、プロテクションキーを認識せず、正しく動作しない。
プロテクションキーが正しく装着されている場合には、以下のような原因が考えられます。
ISaGRAF Ver.4/5の場合
Windows2000上で動作させる場合
ISaGRAF Ver.4/5の場合
1.ワークベンチは Windows 98 または NT上で動作しているか
ISaGRAF Ver.4/5の場合、プロテクションキーのドライバはワークベンチと同時にインストールされます。
ドライバが正しくインストールされており、かつプロテクションキーが正しく装着されていれば、ワークベンチは起動時にバージョン(V4.10等)を表示して起動するはずです。
プロテクションキーを装着していない状態(装着したキーがまったく認識されていない)の場合は、ワークベンチはデモンストレーションモード(15日間有効)で立ち上がります。この場合、標準で提供されているサンプルプロジェクトはシミュレーションしかできません。また、そのワークベンチで作成したプロジェクトしか編集することはできません。
インストール後15日間経過していると「プロテクションキーが必要です」というメッセージが表示され、ワークベンチは起動しません。
Windows2000上で動作させる場合も参照してください。
2.認識しているワークベンチの型番は正しいか
ワークベンチメニューの「ヘルプ」-「バージョン情報」でご使用の製品の型番の表示が正しいかチェックしてください。ISaGRAF PROでは、ワークベンチの型番をプロテクションキーを通じて認識します。
それぞれ以下のように表示されます。
製品型番
表示されるバージョン情報
PRD(点数無制限 分散制御対応版)
ISaGRAF PRO+
PRS(点数無制限 シングルハードウェア対応版)
ISaGRAF PRO MultiScan
PRL(点数無制限 シングルターゲット対応版)
ISaGRAF PRO
PR2(点数128点 シングルターゲット対応版)
ISaGRAF PRO ...
- ISaGRAF Ver4.12をインストールしたが、辞書、ラダ-エディタのコメント等の日本語が正しく表示されない。
この問題はISaGRAF Ver4.12の場合に発生するようです。
<対処方法>
文字化けなどが発生しているエディタ(ラダ-エディタ、辞書等)を表示(&選択)すると、メニューバー内の上部左側にある「A」アイコンがアクティブになります。
これを押下すると文字フォントが選択できるダイアログが表示されますので、御使用になるフォントを設定して下さい。
...
- ISaGRAF Ver4.12ワークベンチで作成したプログラムをターゲットにダウンロードしようとしたが、ダウンロード処理が途中で停止し、エラーとなって終了してしまう。
ISaGRAF Ver4.12では、比較的大きなサイズのプログラムを作成しダウンロードした場合、途中で処理が停止するという現象が発生するようです。
これはダウンロード処理モジュールのタイムアウトの時間に関係するようです。
#マシンの環境にもよりますが、アプリケーションのサイズが350Kを超えるてくると発生する場合があるようです。
#ちなみに400Kのアプリケーションはラダ-のラングに換算して約40000本程度のボリュームになります。
これらの問題を改善したモジュールをメンバサポートページに掲載していますので、こちらを御使用下さい。
...
- ISaGRAFではファンクションからファンクションブロックを呼び出せるのか?またその逆は可能か?
ISaGRAF Ver.4/5ではファンクションブロックからファンクションブロックのコールは許されるようになりました。
<ファンクション(サブプログラム)/ファンクションブロックの呼び出し方のルール>
製品
呼び出し元
呼び出し先
記述可能かどうか
注意事項・例外
ISaGRAF Ver.4未満
ファンクション
ファンクション
○
自分自身のコール(再帰コール)はできません。
ファンクションブロック
○
複数の呼び出し元がある場合、同じファンクションブロックのインスタンスを参照することになるので使用すべきでない場合があります。
ファンクションブロック
ファンクション
○
ファンクションブロック
×/○
Ver3.40以降では、インラインファンクションブロック機能で実現可能
ISaGRAF Ver.4/5
ファンクション
ファンクション
○
自分自身のコール(再帰コール)はできません。
ファンクションブロック
○
複数の呼び出し元がある場合、同じファンクションブロックのインスタンスを参照することになるので使用すべきでない場合があります。
ファンクションブロック
ファンクション
○
ファンクションブロック
○
なお、ISaGRAF Ver.4/5では、サブプログラムとファンクションの区別がなくなっています。
...
- ISaGRAFで割り込みを使用することはできますか?
ISaGRAFターゲットの処理は、大きく分けて次の2つのものから成り立ちます。
カーネルのメインループ(プログラムの同期処理)物理的なI/Oとのデータの更新処理
つまり、ターゲット処理は元々割り込み処理をハンドルするような構造になっていません。
マルチタスクOSの場合なら、ISaGRAFのサイクル処理の入力スキャンの段階でブロックし、ハードウェア割り込みを待つようにすることも可能ではあります。これは割り込みによって1サイクル実行を行う最も簡単な方法です。ただし、通常ISaGRAFによって計測されているサイクルタイム値は、全く意味がなくなってしまう点に注意してください。
一般的に、割り込み処理はハードウェアに依存する処理をC言語で記述し、その内容は非常にシンプルで短時間で終わる処理となります。このような処理は、C言語ファンクションブロックとして実装すれば、ISaGRAFのサイクル内でコントロールできるようになります。
...
- ISaGRAF ver.4/5のSFCエディタの使い方を教えてください
SFCエディタでプログラムを能率的に開発するための作業手順とアドバイスです。
第一レベルのダイアグラムを作成する
新しいSFCプログラムを作成すると、既にイニシャルステップが配置されています。
●トランジションとステップ
トランジションのアイコンを選び、イニシャルステップの後ろに配置します。
イニシャルステップの下をクリックします。
トランジションは自動的にイニシャルステップにリンクされ、次のステップが配置できるようになります。トランジションの配置と同様の手順で、ダイアグラムの作成を続けてください。
●分岐
分岐には2種類あります。
選択(OR)分岐 :シングルラインのアイコン を選び、ステップの後に配置します。
並列(AND)分岐 :ダブルラインのアイコンを選び、トランジションの後に配置します。
●新しい分岐を追加する
分岐を3つ以上にする場合は、
1. まず既存の分岐に続く要素を配置します。
2. 分岐を選択します。
3. ツールバーの「新規分岐」アイコン をクリックします。
●結合
結合にも2種類あります。
選択(OR)結合 :シングルラインのアイコンを選び、トランジションの後に配置します。
並列(AND)結合:ダブルラインのアイコンを選び、ステップの後に配置します。
配置するときは分岐の左端の下をクリックします。
●ヒント
上記の手順でうまく行かない場合
「元に戻す」(Undo)を行わずに、以下の操作をして下さい。
1. 削除する要素を選択します。
2. "Delete" キーを押して削除します。
3. もう一度ダイアグラムを作りなおします。
既存のダイアグラムの途中にステップやトランジションを挿入する場合
1. ...
- ISaGRAF Ver.4/5 のプロジェクトデータベース"Prjlibrary"のバージョンをチェックする方法について
1. "prjlibrary.mdb" (ワークベンチプロジェクトデータベース)を MS-Access 97で開きます。
2. 「ファイル」-「データベースプロパティ」を実行してください。'データベースプロパティ' ウィンドウが開き、タブがいくつか表示されます
3. 'ユーザ設定' タブを選べば、「一覧」に 'PRJversion' が表示されます。
...
- ISaGRAF ver.4/5 のプログラムをメモ帳で、テキスト形式で編集したい。
ISaGRAF Ver.4/5 のプロジェクトマネージャで、プログラム(POU)を選択してから 'ALT'+'CTRL'+'N' キーを押すとプログラムファイルをメモ帳でテキスト形式で開くことができます。これはどの言語でも同じです。
<注意>
プログラムの内容は変更しないで下さい。変更を加えると標準のワークベンチのエディタからプログラムを開けなくなる可能性があります。
...
- ISaGRAFを Ver3.23にバージョンアップしたら、PIDファンクションブロックが使えなくなっている。
PIDファンクションブロックは、旧バージョン(V3.0X以前)には標準ファンクションブロックに含まれておりましたが、Ver3.20以降、標準ファンクションブロックから外れました。
その理由は、このファンクションブロックはパラメータの設定等により非常に動きに幅があり、開発元のICS Triplex ISaGRAF Inc.で動作保証できないと判断したためです。
PID処理に関しては、お客様の責任で、ユーザーファンクションブロックを作成して機能実現していただくことになります。
(参考)PIDファンクションブロックの仕様
このファンクションブロックは制御で使用される、いわゆるPID制御機能を持っています。パラメータは、次の意味を持ちます。
パラメータ名
意味
PV
制御する値
SV
制御目標値
KP
比例ゲイン
TR
積分ゲイン
RD
微分ゲイン
cycle
現在値のサンプリング周期
例えば図1のブロック図の制御を実現するような場合には、図2の様なFBDを記述します。
図1
図2
...
- ISaGRAF Ver.4/5ではファンクション・ファンクションブロックのパラメータ数に制約はありますか? また、それを変更することは可能でしょうか?
ISaGRAF Ver.4/5では、標準の製品ではファンクション/ファンクションブロックのパラメータの総数は合計128個以内という設定になっています。
また、ファンクションブロックのパラメータの総数=ファンクションブロックのローカル変数+入出力パラメータと計算します。
ただし、この総合計数は設定によって変更することが可能です。以下の手順でワークベンチ側の変更ができますが、ターゲットもこの設定に対応するためにはオプションの 「ISaGRAF Ver.4/5 開発ツールキット」が必要です。
1. ISaGRAF Ver.4/5フォルダのBinの下の "PLCTools.mdb"を開く。 ※1
2. 対象となるプロジェクト "Prjlibrary.mdb"を選択する
3. "Form"-"target" メニューを選ぶ
4. "MaxPara" の数字を変更する
5. ターゲットフォルダの下の ISaSys フォルダの dsys0def.h の下記のパラメータ数の部分の設定を変更する
/* Functions call parameter passing: Max nbr of parameters ...
- ISaGRAFではファンクションからファンクションブロックを呼び出せるのか?またその逆は可能か?
ISaGRAF Ver.4/5ではファンクションブロックからファンクションブロックのコールは許されるようになりました。
<ファンクション(サブプログラム)/ファンクションブロックの呼び出し方のルール>
製品
呼び出し元
呼び出し先
記述可能かどうか
注意事項・例外
ISaGRAF Ver.4未満
ファンクション
ファンクション
○
自分自身のコール(再帰コール)はできません。
ファンクションブロック
○
複数の呼び出し元がある場合、同じファンクションブロックのインスタンスを参照することになるので使用すべきでない場合があります。
ファンクションブロック
ファンクション
○
ファンクションブロック
×/○
Ver3.40以降では、インラインファンクションブロック機能で実現可能
ISaGRAF Ver.4/5
ファンクション
ファンクション
○
自分自身のコール(再帰コール)はできません。
ファンクションブロック
○
複数の呼び出し元がある場合、同じファンクションブロックのインスタンスを参照することになるので使用すべきでない場合があります。
ファンクションブロック
ファンクション
○
ファンクションブロック
○
なお、ISaGRAF ver.4/5では、サブプログラムとファンクションの区別がなくなっています。
...
- ISaGRAF Ver.4/5 で実数型のデータを文字列型に変換する方法はありますか?
ISaGRAF Ver.4/5では、非文字列型のデータを文字列型に変換する "ANY_TO_STRING" という標準演算子があります。
ただし現状では、 ANY_TO_STRING は変換元のデータ型がREAL(実数型)だと文字列型に変換できません。
下記の代替手段を使用してください:
ターゲットのシステムでこのような変換をサポートする場合は、同様の機能を実現するC言語ファンクションを実装します。以下のファンクションをST言語で記述して使用します。
パラメータ
パラメータ名
タイプ
方向
RealValue
Real
Input
StringToReal
String (255)
Output
ファンクションのプログラム(ST言語)
StringToReal := any_to_string(any_to_dint(RealValue *100000.0)/100000) + '.' + any_to_string(mod(any_to_dint(abs(RealValue *100000.0)), 100000) );
...
- Integral というファンクションブロックは、どのように使用するのですか?
実数値を積分する場合に使います。
パラメータ
名前
型
意味
RUN
ブール型
モード。TRUEなら積分動作、FALSEならホールド
R1
ブール型
上書きリセット
XIN
実数型
入力値
X0
実数型
初期値
CYCLE
タイマー型
サンプリング周期
Q
ブール型
R1の結果の反転出力
XOUT
実数型
積分結果の出力
詳細
実数値を積分します。
アルゴリズム
/* delay=現在のターゲットサイクル値
"CYCLE"パラメータの値がISaGRAFアプリケーションのサイクルタイムより短い場合は、
サンプリング間隔はサイクルタイムの値に合わせられます */
IF (delay > CYCLE) THEN
date = LAST_DATE;
Q = NOT R1;
IF (R1) THEN XOUT = X0;
ELSE THEN
IF (RUN) THEN
XOUT = ...
- ISaGRAF ver.4/5で変数をデバイスにチャネリングしますが、1デバイスの最大チャネル数に制限はありますか?
基本的にIOドライバ(デバイス)はユーザにより作成していただくことになりますが、デバイス1つあたりの最大チャネル数は128チャネルとなります。
...
- ISaGRAF Ver.4/5 のプロジェクトデータはデータベースMicrosoft Access形式のファイルですが、どのようなデータベース構造になっているのでしょうか?
ISaGRAF Ver.4/5 のプロジェクトのデータベースは、リレーショナルデータベースの構造を取っています。
つまり、データベースの各レコードは、必ず「一意な」データと関連付けられているということです。
データは複数のテーブルに分けて格納され、各テーブル間はリンクされています。重複したデータを持つことを極力避けるため、また、各データをデータ名でなく一意な番号で識別するためにこのような構成を取っています。
【例】
ブール型変数 "Var1" のデータはあるテーブル内では以下のように定義されています:
Name : Var1 Type : 1
また別のテーブルでは、レコードを "1 = BOOL" とするかわりに以下のような形式でデータを管理しています:
Name: Var1 Type : BOOL
全てのオブジェクトへの参照は、テーブル内で一意な番号で表現されます。この番号はデータベースでのキーとして使用されます。このキーによってデータ要素を容易に参照することができます。
このような種類のデータは、1つか2つのテーブルにまとめて保存されているよりも、複数のテーブルに分割された形態で保存されている方が、結果として必要な情報をすばやく探し出すことができます。
データベース内部の「リクエスト」処理自体は高速です。もしパフォーマンスに問題がある場合は、データベース自体よりも、プログラム側の問題であるケースが多いです。
また、データベース内では複数の単純リクエストを別々に発行するよりも、組み合わせた命令を1回だけ発行する方が高速です。これはデータベースアクセスを行うにはそれなりの時間がかかるので、アクセス回数を制限した方がトータルの時間が短くて済むためです。このため、データベースに検索リクエストの高速化を計るためのインデックスフィールドが追加されている場合があります。
プロジェクトデータの詳細については、「ISaGRAF Ver.4/5 開発ツールキット」のユーザーズマニュアルの「ワークベンチ」-「MS Accessデータベース」の章をご覧下さい。
...
- ISaGRAF Ver3.XX から ISaGRAF Ver4.10へのアプリケーションの移行はどのように行うのでしょうか?
1. ISaGRAF Ver.4/5 インストールフォルダの "Bin" フォルダにあるIAC.exeを起動します。
(IAC:ISaGRAF Application Converter)
2. "File"-"Open Project" メニューでISaGRAF 3.XXのプロジェクトディレクトリを選択します。
例: C:\ISAWIN\Smp 等
3. "Build"-"Verify" メニューで、選択された内容でVer.4/5への移行が可能かチェックを行います。
ここで移行時の問題が見つかった場合は以下のどちらかの対処を行ってください。
・ISaGRAF Ver.3.XXアプリケーションの問題を修正後、再度 1. の操作からやりなおします。
・ISaGRAF Ver.4/5への移行が完了してから、Ver.4/5上で修正を行います。
4. "Build"-"Build Exhange file" を実行します。ダイアログボックスに表示される内容にしたがって操作します。
5. ISaGRAF Ver.4/5のワークベンチを開き、既存のプロジェクトを開くか、新規でプロジェクトを作成します。
6. ワークベンチの "ファイル"-"インポート"-"リソース" ...
- ISaGRAF Ver.4/5のIXLとはなにか
IXL(ISaGRAF Exchange Layer:ISaGRAF交換レイヤー)とは、クライアントアプリケーションからISaGRAF Ver.4/5のターゲットのあらゆるオブジェクトにアクセスするためのAPI群です。
構成
クライアントは、ターゲットと同じマシン上で動作する別のタスクやプロセスでも構いませんし、ネットワークで接続された異なるOSのリモートマシン上にあってもかまいません。以下の図は、APIの一般的なアーキテクチャを示したものです。
IXL:クライアントが利用できる様々なサービスです。
使用するISXLドライバ種別の指定、ターゲットへの接続、変数の読み書きなどがあります。
ISXL:ISaGRAFシステム交換レイヤー(ISaGRAF System Exchange Layer)。
各クライアントサービスと、対応するドライバサービスとをリンクさせる部分です。
標準ターゲットのほとんどが次のハードウェアに対応したISXLのドライバをもっています。
共有メモリ(HSD:Host System Driver): ローカルマシン内での通信に使用します。
TCP/IP: ネットワーク上のリモートマシン間の通信に使用します。
RS-232C: シリアル通信を利用した1対1の通信です。その他、デバイスに合わせたドライバを開発することで、新たなネットワークへの対応が可能です。
IXS:ターゲット側のAPIライブラリ。
クライアントからの接続の受け付け、リクエストの取得などサービスがあります。
ISXS:サーバ側のネットワークドライバ。
クライアント側のISXLと対応する部分です。
ISaIXD:ディスパッチャ。
クライアントのリクエストを解析し、指定のPLCタスク(=リソース)に配信するタスクです。
従って、クライアントアプリケーションは接続時に以下の項目を指定することになります。
使用するデバイスドライバ(ISXL)デバイスドライバアクセスのメソッド
・・・
IXL APIはスケーラブルです。すなわち、ドライバなどの部分は簡単に削除できるようにしてあります。
これは、API初期化時にドライバを登録しないようにすること(define宣言で)可能になります。(また、リンカの方式によっては、関連するオブジェクトモジュールを削除する/しないことで可能です。)
サービスセットといった他の部分も、コンパイル時にdefine宣言で削除できます。
なお、デバイスドライバによっては、利用できないメソッドがあります。また、メソッドとデバイスドライバによって、利用できないサービスがあります。
機能
PLCがISaGRAF ...
- ISaGRAF ver.4/5のSFCエディタの使い方を教えてください
SFCエディタでプログラムを能率的に開発するための作業手順とアドバイスです。
第一レベルのダイアグラムを作成する
新しいSFCプログラムを作成すると、既にイニシャルステップが配置されています。
●トランジションとステップ
トランジションのアイコンを選び、イニシャルステップの後ろに配置します。
イニシャルステップの下をクリックします。
トランジションは自動的にイニシャルステップにリンクされ、次のステップが配置できるようになります。トランジションの配置と同様の手順で、ダイアグラムの作成を続けてください。
●分岐
分岐には2種類あります。
選択(OR)分岐 :シングルラインのアイコン を選び、ステップの後に配置します。
並列(AND)分岐 :ダブルラインのアイコンを選び、トランジションの後に配置します。
●新しい分岐を追加する
分岐を3つ以上にする場合は、
1. まず既存の分岐に続く要素を配置します。
2. 分岐を選択します。
3. ツールバーの「新規分岐」アイコン をクリックします。
●結合
結合にも2種類あります。
選択(OR)結合 :シングルラインのアイコンを選び、トランジションの後に配置します。
並列(AND)結合:ダブルラインのアイコンを選び、ステップの後に配置します。
配置するときは分岐の左端の下をクリックします。
●ヒント
上記の手順でうまく行かない場合
「元に戻す」(Undo)を行わずに、以下の操作をして下さい。
1. 削除する要素を選択します。
2. "Delete" キーを押して削除します。
3. もう一度ダイアグラムを作りなおします。
既存のダイアグラムの途中にステップやトランジションを挿入する場合
1. ...
- ISaGRAF Ver.4/5でのコード生成の手順はどのようになりますか?
ISaGRAF Ver.4/5 のプロジェクトをコンパイル(=コード生成)を行う場合は、以下の「リソースプロパティ」の「ターゲット/コード」タブを選択してください。
リソースのプロパティは、リンクアーキテクチャウィンドウからも、ハードウェアアーキテクチャの「コンフィギュレーション」の中のリソースのどちらからも設定できます。
(1)「ターゲット」プルダウンリストからターゲットの種類を選択します。
(2) "TIC code" (中間コード)のチェックボックスを選択します。
(3)「プロジェクト」メニューの「アプリケーションコードの生成」を実行します。
...
- ISaGRAFでの制御アプリケーションの開発の流れはどのようになるか?
大まかな流れは次のようになります。
1. 制御プログラムを作成(IEC61131-3言語使用)
2. 使用するI/Oドライバの種別(DI,DO,A/D,D/A,リモートI/Oなど)やメーカを選択する。
3. プログラム中のI/O変数をI/Oボードに割り付け(I/Oアドレスとかビット位置)設定
4. 実行コード作成
5. 開発環境でシミュレーション・デバッグ
6. 実行環境にシリアルポート/タスク間通信で実行コードをダウンロード
7. 実行環境+開発環境でリモートデバッグ
8. 実行環境で稼働
...
- ISaGRAF Ver.4/5ではコンフィギュレーション=ターゲットハードウェアをネットワーク経由で複数台設定できますが、マシンのIPアドレスをどのように設定しますか?
ワークベンチのプロジェクト内では、ターゲットプラットフォームとは、1つの「コンフィギュレーション」に該当します。
このコンフィギュレーションにIPアドレスを設定するには、
1. ハードウェアアーキテクチャウィンドウでETCP(Enhanced TCP/IP)ネットワークを挿入します。
2. コンフィギュレーションと挿入したネットワークを接続します。
コンフィギュレーションは非選択状態(タイトルバーがグレーの状態)にします(空白エリアのどこかををクリックしておきます)。
コンフィギュレーションからドラッグ&ドロップの動作でネットワークへの接続を実行します。(選択モードでドラッグ&ドロップを行うと、コンフィギュレーションの位置が移動してしまいます。)
3. 「接続プロパティ」で "IP Adress" の値を設定します。(例: 127.0.0.1)
値を設定したら、「OK」を押してダイアログボックスを抜けます。
4. 操作の詳細については、ヘルプの下記のセクションをご覧下さい。
「ワークベンチ」-「プロジェクトマネージャ」-「ハードウェアアーキテクチャの表示」接続接続プロパティ
...
- IEC61131-3で定められているFormal specifications of language elements の形式での5言語の各言語のプログラムソース出力機能はありますか?
内部的にテキストファイルを生成してはいますが、現在のバージョンではファイルに出力する機能はサポートしていません。
IL言語のみ、テキストファイルを作成することができます。
...
- ISaGRAF Ver.4/5で、別のプロジェクトへプログラムをコピーしたいのですが?
バージョンによって手順が異なります。
ISaGRAF Ver.4.10以降
他のプロジェクトへプログラムだけをコピーするコマンドは用意されていませんが、リソース単位でならコピーができます。それを利用します。
1. コピー元のプログラムを含むリソースを選択し、「ファイル」-「エキスポート」メニューを実行する。リソースのデータが1個のファイルとして作成されます。
2. コピー先のプロジェクトを開き、「ファイル」-「インポート」-「リソース」メニューを実行し、1.のファイルをとりこみます。
3. プロジェクトにリソースが追加されます。
4. 不要なプログラムや変数オブジェクトを削除します。
ISaGRAF Ver.4.10未満
他のプロジェクトへプログラムをコピーする標準的なコマンドは用意されていません。
手間はかかりますが、方法はあります。
1. コピー先のプロジェクトに、オリジナルのプロジェクトのプログラムと同じ名前、同じ言語のプログラムを新たに作っておきます。
2. オリジナルのプロジェクトの「リソース」ディレクトリより、 "ppp.stf" ファイル( "ppp" はコピーするプログラムの名前です。)をコピー先のプロジェクトのリソースディレクトリへコピーします。
3. 変数はコピーされませんので、プログラムのローカル変数と新しいプロジェクトで必要なグローバル変数を宣言します。
...
- ISaGRAFのワークベンチをパソコンにインストールしたが、プロテクションキーを認識せず、正しく動作しない。
プロテクションキーが正しく装着されている場合には、以下のような原因が考えられます。
ISaGRAF Ver.4/5の場合
Windows2000上で動作させる場合
ISaGRAF Ver.4/5の場合
1.ワークベンチは Windows 98 または NT上で動作しているか
ISaGRAF Ver.4/5の場合、プロテクションキーのドライバはワークベンチと同時にインストールされます。
ドライバが正しくインストールされており、かつプロテクションキーが正しく装着されていれば、ワークベンチは起動時にバージョン(V4.10等)を表示して起動するはずです。
プロテクションキーを装着していない状態(装着したキーがまったく認識されていない)の場合は、ワークベンチはデモンストレーションモード(15日間有効)で立ち上がります。この場合、標準で提供されているサンプルプロジェクトはシミュレーションしかできません。また、そのワークベンチで作成したプロジェクトしか編集することはできません。
インストール後15日間経過していると「プロテクションキーが必要です」というメッセージが表示され、ワークベンチは起動しません。
Windows2000上で動作させる場合も参照してください。
2.認識しているワークベンチの型番は正しいか
ワークベンチメニューの「ヘルプ」-「バージョン情報」でご使用の製品の型番の表示が正しいかチェックしてください。ISaGRAF PROでは、ワークベンチの型番をプロテクションキーを通じて認識します。
それぞれ以下のように表示されます。
製品型番
表示されるバージョン情報
PRD(点数無制限 分散制御対応版)
ISaGRAF PRO+
PRS(点数無制限 シングルハードウェア対応版)
ISaGRAF PRO MultiScan
PRL(点数無制限 シングルターゲット対応版)
ISaGRAF PRO
PR2(点数128点 シングルターゲット対応版)
ISaGRAF PRO ...
- ISaGRAF Ver5をインストールしたが、辞書の日本語が正しく表示されない。
この問題はISaGRAFのディフォルトフォント設定により生じます
<対処方法>
「オプション」メニューの「カスタマイズ」を選択し、「色とフォント」タブの「辞書」の項目でフォントを日本語フォントに変更してください。
...
- ISaGRAF Ver.4/5のワークベンチからターゲットへダウンロードされるデータはどのようなものですか?
リソース(プラットフォーム上のリソース毎)
リソース構成ファイル
ワークベンチ上でのファイル名=RESOURCENAME_Conf.xtc
ターゲット上でのファイル名(またはメモリスペース名)=ISPxxx03(XXはリソース番号(16進)
リソースシンボルファイル
これは、「リソースプロパティ」-「ターゲット/コード」タブの「シンボルテーブルの埋め込み」オプションがチェックされている場合にだけダウンロードします。内容は変数名等の情報を含むリソースシンボルファイルです。
ワークベンチ上でのファイル名=RESOURCENAME_SymbolsTarget.xtc (縮小テーブル/完全なテーブルをリソースプロパティのオプションで選択できます)
ターゲット上でのファイル名(またはメモリスペース名)=IDSxxx01(XXはリソース番号(16進)
POU(リソース上のPOU毎)
アプリケーションコード
ワークベンチ上の全POUのアプリケーションコードファイル(ファイル名=ResourceName_POUName_xtc)は1つのファイルに結合されます。結合の順番はワークベンチ上のファイル ResourceName_DWLOrder.xtc に記されています。
ハードウェア上でのファイル名=ISPxxx01
コンフィグレーション(ハードウェアプラットフォーム毎)
ハードウェア構成ファイル
ワークベンチ上では、このファイルはプロジェクトのコンフィグレーション名のディレクトリに保存されています。
ワークベンチ上でのファイル名=ConfigName_NetworkConf.xtc
ハードウェア上でのファイル名=ISPffe0d
注意:このドキュメントではオンライン修正用のファイル(ISPxxx15)については言及していません。
...
- ISaGRAF ver.4/5 のプログラムをメモ帳で、テキスト形式で編集したい。
ISaGRAF Ver.4/5 のプロジェクトマネージャで、プログラム(POU)を選択してから 'ALT'+'CTRL'+'N' キーを押すとプログラムファイルをメモ帳でテキスト形式で開くことができます。これはどの言語でも同じです。
<注意>
プログラムの内容は変更しないで下さい。変更を加えると標準のワークベンチのエディタからプログラムを開けなくなる可能性があります。
...
- ISaGRAFでは辞書で宣言した以外にも変数が作成されるケースがあるとのことですが、それはどのようなものですか?
ISaGRAF Ver3.3X以降のバージョンでは、プログラム中で使用しているかどうかにはかかわらず、辞書で宣言されている全ての変数がアプリケーションコードとシンボルテーブルの中に格納されます。これは、オンライン更新を容易にするための工夫です。
つまり、アプリケーションの変更に備えて、未使用の変数であってもメモリ領域を確保するということです。
I/O変数が割り付けられていないI/Oチャネルに対しても、ISaGRAFのコンパイラは宣言されていない変数を自動的に割り付けます。すなわち、空のI/Oチャネルも宣言された変数が割り付けられた場合と同様に、1つの変数を消費すると言うことになります。この宣言されていない変数は、 "%・・・" という固定的な名前が割り振られ、該当するI/Oチャネルとして、IEC言語のアプリケーションから操作することが可能です。これを直接表現変数と言います。
この変数に関しては、コンパイル後にAPPLI.TST(シンボルテーブルファイル)の中に保存されているシンボルとして、実際にプログラム中で使用されているかいないかの情報はありません。
実際に辞書中でプログラマによって宣言されている変数や直接表現変数以外に、辞書で宣言されておらず、Cソース生成時等に”_”(アンダースコア)で始まる変数が存在する場合がありますが、これはコンパイラによって自動的に割り付けられるテンポラリな変数で、シンボルテーブルの中にも現れません。
...
- ISaGRAF Ver4.12ワークベンチで作成したプログラムをターゲットにダウンロードしようとしたが、ダウンロード処理が途中で停止し、エラーとなって終了してしまう。
ISaGRAF Ver4.12では、比較的大きなサイズのプログラムを作成しダウンロードした場合、途中で処理が停止するという現象が発生するようです。
これはダウンロード処理モジュールのタイムアウトの時間に関係するようです。
#マシンの環境にもよりますが、アプリケーションのサイズが350Kを超えるてくると発生する場合があるようです。
#ちなみに400Kのアプリケーションはラダ-のラングに換算して約40000本程度のボリュームになります。
これらの問題を改善したモジュールをメンバサポートページに掲載していますので、こちらを御使用下さい。
...
- IEC61131-3言語間でプログラムの変換が可能ですか?
現状のISaGRAFではサポートしていません。
なお、一方向変換のみを考える場合は、Cソース生成機能で、プログラムはC言語に変換されます。
...
- ISaGRAF Ver.4/5では、ファンクションブロックからファンクションブロックをコールすることが可能になったが、どのように行うのか?
ISaGRAF Ver.4/5では、ファンクションブロックからファンクションブロックをコールすることができるようになりました。
手順は以下の通りです。
(1)リンクアーキテクチャウィンドウのリソース上ので呼び元のファンクションブロックを選び、右クリックして「パラメータ」のウインドウを開く。
(2)「Type」でコールするファンクションブロックをプルダウンメニューから選び、「Direction」は "Local"にする。
(3)プログラム中にコールするファンクションブロックを配置する時は、ブロックのリストから該当するファンクションを選び、次にウィンドウの右下の「インスタンス」のプルダウンメニューから先ほど登録したインスタンス名を選ぶ。
(4)エディタ上にインスタンス名のついたファンクションブロックが配置されます。
...
- ISaGRAF Ver3.XX から ISaGRAF Ver4.10へのアプリケーションの移行はどのように行うのでしょうか?
1. ISaGRAF Ver.4/5 インストールフォルダの "Bin" フォルダにあるIAC.exeを起動します。
(IAC:ISaGRAF Application Converter)
2. "File"-"Open Project" メニューでISaGRAF 3.XXのプロジェクトディレクトリを選択します。
例: C:\ISAWIN\Smp 等
3. "Build"-"Verify" メニューで、選択された内容でVer.4/5への移行が可能かチェックを行います。
ここで移行時の問題が見つかった場合は以下のどちらかの対処を行ってください。
・ISaGRAF Ver.3.XXアプリケーションの問題を修正後、再度 1. の操作からやりなおします。
・ISaGRAF Ver.4/5への移行が完了してから、Ver.4/5上で修正を行います。
4. "Build"-"Build Exhange file" を実行します。ダイアログボックスに表示される内容にしたがって操作します。
5. ISaGRAF Ver.4/5のワークベンチを開き、既存のプロジェクトを開くか、新規でプロジェクトを作成します。
6. ワークベンチの "ファイル"-"インポート"-"リソース" ...
- ISaGRAFで作ったプログラムを他のソフトウェアPLCに変換できるか?
現在のところ直接変換はできませんが、文字記述型のIL,STのみクリップボード経由などで変換できます。それ以外の言語は対応していません。現在あるフォーマットが提唱されており、それが規定されたのち対応する予定ではあります。
...
- ISaGRAF Ver.4未満で作ったプログラムをISaGRAF Ver.4/5用に移植する際に注意する項目は?
言語仕様、機能、コンバート時の手順等で以下のような点に注意してください。
言語仕様
ISaGRAF Ver.4/5では、廃止されたり名前が変更になった機能があるので注意が必要です。
廃止された命令・ファンクション類
下記の命令、ファンクション、ファンクションブロック類はISaGRAF Ver.4/5ではサポートしていません。
TSTART(タイマ変数の起動)
TSTOP(タイマ変数の停止)
REDGE (立ち上がりエッジ検出)
FEDGE (立ち下がりエッジ検出)
SEMA(セマフォ)
ARCREATE(配列の作成)
ARREAD(配列の読み込み)
ARWRITE(配列への書込)
CAT(複数の文字列を1つに結合)
ファイル関連の全てのファンクション(F_ROPEN,F_WOPEN,
F_CLOSE,F_EOF,FA_READ,FA_WRITE,FM_READ,FM_WRITE)
DAY_TIME(文字列で日時、曜日の取得)
OPERATE (I/Oチャネルへのアクセス)
※OPERATE命令とはISaGRAF Ver.3.XXで提供されている機能で、実装はハードウェアベンダやインテグレータによりI/Oドライバに対して行われます。この機能もISaGRAF Ver.4/5では廃止されました。このため、OPERATE命令の実装自体は通常、インテグレータによってVer.4/5用に修正されます。ISaGRAF Ver.4/5のアプリケーション側ではOPERATE命令を使用している部分を削除し、代りにインテグレータから提供されるISaGRAF Ver.4/5用のC言語変換ファンクションを使用する等の変更が必要です。
名前が変わったファンクション
型変換のファンクションの名前が変わりました。
BOO → ANY_TO_BOOLANA → ANY_TO_DINTREAL →
ANY_TO_REALTMR → ANY_TO_TIMEMSG → ANY_TO_STRING
これらはISaGRAF Ver.4未満のプロジェクトをISaGRAF Ver.4/5に移行時に自動的に変換されます。(IACツール)
変換ツールの制限事項
ISaGRAF Ver.4/5のバージョンによって、変換ツールの仕様に多少違いがあります。
変数型の変換
自動的に以下のように型が変換されます。
ISaGRAF Ver.3.XX
ISaGRAF Ver.4/5 ...
- ISaGRAFはIEC1131-3のシステム定義に準拠しているか?
IEC1131-3(SFC,IL,LD,ST,FBDの文法)に準拠しています。そのうち IL言語に関してはPLCOpenの認証を得ています。なお、ST言語で一部独自に機能拡張している部分もあります。
ISaGRAF Ver.4/5
■タスクの概念
タスクはありません。1個のリソース内ではすべてのプログラムは同じ周期(サイクルタイム)で実行されます。
■変数のスコープ
グローバル変数のスコープ(適用範囲)は、1個のリソース内のすべてのプログラムです。規格で定められているように、あるプログラムでグローバル変数を宣言し、それ以下のサブプログラムにおいてグローバルになる、といったものは作れません。
■変数
外部参照変数は未サポート。変数型は以下のものは未サポート。
BYTE,WORD,DWORD,LWORD,LINT,LREAL,すべての符号無し整数・実数,日付型,時刻型,すべてのANY型タイマー変数は、演算結果やタイマー動作の結果が24時間以上になると24時間を引いた値に戻ります。また、マイナス値もありません。文字列型の最大長さは255バイトです。列挙宣言,変数宣言時の範囲宣言,一時変数,I/O変数の直接表現での64ビット変数,変数のAT属性は未サポート。アクセス変数は明確に宣言できません。(辞書で「ネットワークアドレス)を宣言したものがそうなります)
■プログラムの制限
プログラムのインスタンスは設定できません。パラメータのモードは入出力型はありません。入力か出力のいずれかしか宣言できません。パラメータのオーバーロードや型にANY型は指定することはできません。パラメータの数は可変には出来ません。ST言語でファンクションやサブプログラムをコールするとき、パラメータの設定の順序は変更できません。サブプログラムのパラメータを省略することは出来ません。
■ファンクションブロック
SFC要素で記述することが出来ません。
■ST言語
下記のISaGRAF独自の命令/ファンクションを追加しています。
命令:GSTART,GKILL,GFREEZE,GRST
ファンクション:GSTATUS変数の宣言をプログラム中に記述できません(辞書エディタで行います)。
■LD言語
プログラム中にファンクションブロックを配置した場合、第1のパラメータがブール型でない場合、強制的に入力"en"が付加されます。
■SFC要素
イニシャルステップを1プログラム中に複数個、記述できてしまいます。トランジションをFBD言語で記述できません。ステップをFBD言語で記述できません。遷移コネクタは未サポート。命名済み遷移は未サポート。>ステップのアクションで下記のものは未サポート。 L,D,SD,DS,SL選択分岐で複数の遷移条件が同時成立する場合、優先順位の概念がありません。そのため、SFCのトークン(活性化状態の状態)が増えてしまい、アプリケーションによっては動作が不安定になる場合があります。
...
- ISaGRAFで通常のシーケンサのようなタイマーやカウンタは使えるか?
標準のファンクションブロックを使用します。
タイマーに相当するのはTPファンクションブロック、カウンタはCTUファンクションブロックが相当します。
...
- ISaGRAF Ver.4/5 で実数型のデータを文字列型に変換する方法はありますか?
ISaGRAF Ver.4/5では、非文字列型のデータを文字列型に変換する "ANY_TO_STRING" という標準演算子があります。
ただし現状では、 ANY_TO_STRING は変換元のデータ型がREAL(実数型)だと文字列型に変換できません。
下記の代替手段を使用してください:
ターゲットのシステムでこのような変換をサポートする場合は、同様の機能を実現するC言語ファンクションを実装します。以下のファンクションをST言語で記述して使用します。
パラメータ
パラメータ名
タイプ
方向
RealValue
Real
Input
StringToReal
String (255)
Output
ファンクションのプログラム(ST言語)
StringToReal := any_to_string(any_to_dint(RealValue *100000.0)/100000) + '.' + any_to_string(mod(any_to_dint(abs(RealValue *100000.0)), 100000) );
...
- ISaGRAFの中間コードの仕様は拡張性が考慮されているか?
ISaGRAFは、もとのIEC61131-3言語が何であるかにかかわらず、非常に単純な命令のみ(代入、比較、四則演算、論理演算、分岐など)で構成されたコードを生成します。従ってソースの言語の命令が追加されても中間言語の命令の種類が増えるわけではありません。
なお、厳密には中間コードは次の2種類を選択して生成することになります。
(a)非常に単純な命令のみ(四則演算や論理演算など)で構成された中間コード。
....SFCをサポートしないターゲットのためのコードです。SFCのプログラムはすべて単純な命令に変換されます。
(b)SFC要素の部分を最適化したコード+単純な命令のコード。
....標準ターゲットのためのコードです。SFCの部分のパフォーマンスが高くなります。
...
- ISaGRAFでは変数に配列は使えるか?
ISaGRAF Ver.4/5の場合
ユーザ定義データ型として配列・構造体がサポートされています。
...
- ISaGRAFの「プロジェクト」の概念はIEC61131-3のソフトウェアモデルにおいて、IECのプログラムに相当しているようですが,コンフィギュレーション、リソース、タスクのサポート予定は具体的にありますか?
その際、コンフィギュレーション間の通信もサポートされますか?
ISaGRAF Ver.4/5
コンフィギュレーションやリソースの概念を持っています。
タスクに付いては、リソース単位でサイクルタイムを設定できるようになっています。
...
- ISaGRAF Ver.4/5 コンパイラ型ターゲットのビルド方法
ISaGRAF Ver.4/5 WindowsNTターゲットの、コンパイラ型ターゲットのビルドと実行方法を説明した資料です。
クリックしてダウンロード→
...
- ISaGRAF Ver.4/5ターゲット移植のためのガイドライン
ISaGRAF Ver.4/5 開発ツールキットを使用してVer.4/5のターゲットを移植する際に
Ver.4/5のヘルプ(ProDk.chm)を読む前に、以下の移植のガイドラインをご覧下さい。
【内容】
(1)基本的なシステム要件
(2)移植のファーストステップの概要
(3)移植のヒント
(1)基本的なシステム要件
Ver4.03以降のISaGRAF Ver.4/5 ターゲットでは、移植を行うシステムに必要な項目は以下の通りです。
1.マルチタスクOS
2.ANSI Cによる開発環境を使用可能なターゲットシステムであること
3.以下のような機能をもつこと
TCP/IP BSD ソケットインタフェース
ワークベンチとターゲット間の通信、またはターゲットどうしのバインディングリンク用です。
シリアル通信ドライバ
シリアル通信ポートを制御するドライバ。基本的には、キャラクタ単位の読み書きを行います。ワークベンチとの通信にのみ使用します。
時間管理
一定周期のものであれば何でも構いません。システムティックなどを利用します。
ISaGRAF ver.4/5の時間の単位はミリ秒です。つまり、最大の精度は1ミリ秒になります。
共有メモリ
複数のタスクから同じメモリエリアをアクセスできること。
セマフォ
タスク間の同期を取るためにバイナリセマフォを使います。
複数タスクからのデータアクセス制御のためにはミューテックスセマフォ(排他セマフォ)を使います
メッセージキュー
タスクどうしはメッセージをやり取りして通信します。メッセージの内容は移植時に気にする必要はありません。
メッセージキューは、セマフォで管理された共有のFIFOバッファと見なすことができ、複数のタスクからアクセスが可能です。
タスク管理
各タスクは、アプリケーションのコンフィギュレーションやデバッグコマンドにともない、スタート/終了させる必要があります。
補助記憶装置(ハードディスク、RAMディスク、フラッシュメモリ等)
アプリケーション情報の保存用の媒体管理。アプリケーションコードや、シンボルテーブル等の保存のために使います。
また、アプリケーションコードが保存されているリソースの一覧を取得するためのシンプルなブラウズ機能も必要です。
以上の機能は、一連のシステムルーチンを経由してコールされます。これらのルーチンのインタフェース仕様は、ISaGRAF Ver.4/5開発キットのヘルプファイルをご覧下さい。
ISaGRAF Ver.4/5開発ツールキットの"NewOS"フォルダ内には、これらのルーチンのソースのひな型をコメント付きで収録してあります。
実際の移植のおもな作業は、このひな型の内容を埋める、つまり、ISaGRAF Ver.4/5に必要な機能をターゲットOSに合わせる作業ということになります。
4.スタティックなデータの配置
全ての関数から参照可能な変数があります。これは通常、スタックには格納されないグローバル変数です。
また、複数のタスクが同じ実行コードを共有する場合があります。これはおもに
バーチャルマシンのタスクが複数回起動する場合あらゆるタスクからコールされる、システムレイヤのライブラリ
です。このような場合、OSはタスクのインスタンス毎にスタティックデータ用のメモリを割り当てられる必要があります。
これは、「カーネル」ライクなOSやマルチスレッドOSといったものにはあてはまりません。
この機能を実現するために、OSは最低限の機能として、タスクのコンテキスト切替時に数個のポインタ(3、4 個)をストアできなければなりません。したがって、タスクの初期化の第一段階で、データの割り当てを行うようなプログラミングをすることになります。 VxWorks版ターゲットのソースには、そのような例が含まれています。
(2)移植のファーストステップ
1.これまでに示した最小の機能要件が満たされていることを確認してください。
2.ISaGRAF Ver.4/5開発ツールキット(NSS-I4-PRDK)のCD-ROMから、"NewOS" フォルダの内容を開発環境にコピーしてください。
3.ターゲットに関する定義を行います。
ターゲットの定義は、ワークベンチ側、ターゲット側ともに必要です。
ワークベンチ側では、PLCtools.mdb または TDBuild.exe ツールを使って、新しいターゲットの定義をおこないます。
ターゲット側では、IsaSys\dsys0def.h の中の定義を修正します。
もちろん、双方の設定内容は一致していなければなりません。
dsys0def.h ファイルの "TO DO" マークは最初のステップで何を行うべきかを示す印になっています。
また、"#error"プラグマは、重要な情報をソース中に記述し忘れた場合、コンパイルエラーを起こして注意を促すためのものです。
4.メイクファイルの作成 ...
- ISaGRAF Ver.4/5の通信の概要について
ワークベンチ、ターゲットとアプリケーションの関係は以下のようになります:
ワークベンチでアプリケーションのビルドとTICコードの生成を行います。TICコードは標準またはインテグレータが提供するネットワーク経由でVer.4/5のターゲットにダウンロードされます。(標準で提供されているのはETCP(Enhanced TCP/IP)とシリアル(ISaRSI)です。)
ISaGRAF Ver.4/5では、リソース間でローカル(複数のリソースが同じハードウェア上に存在する状態)またはリモートでコミュニケーションすることができます。このコミュニケーションを「バインディング」と呼び、いろいろなネットワーク経由で実現できます。(標準で提供しているのはリモート=ETCP、ローカル=HSDです。)
ISaGRAF Ver.4/5のバーチャルマシンの変数データベースとユーザのクライアントアプリケーション用に「IXL」というC言語で実現可能なインタフェースを用意しています。
...
- IXLで一度にアクセスできる変数の数
IXLで1度に書きこみ/読みこみが行える変数の最大数を "huNbrOfVar"とします。この数は、通信バッファのサイズと、変数のタイプ(文字列かどうか)によって異なります。
デフォルトでは、
送信バッファサイズ=512 Byte
受信バッファ=1024 Byte
となっています。このサイズだと、huNbrOfVarの最大数は下の表のようになります。
非文字列型データの読みこみ
39
文字列型データの読みこみ
3
非文字列型データの書きこみ
30
文字列型データの書きこみ
1
...
- ISaGRAF Ver.4/5のIXLとはなにか
IXL(ISaGRAF Exchange Layer:ISaGRAF交換レイヤー)とは、クライアントアプリケーションからISaGRAF Ver.4/5のターゲットのあらゆるオブジェクトにアクセスするためのAPI群です。
構成
クライアントは、ターゲットと同じマシン上で動作する別のタスクやプロセスでも構いませんし、ネットワークで接続された異なるOSのリモートマシン上にあってもかまいません。以下の図は、APIの一般的なアーキテクチャを示したものです。
IXL:クライアントが利用できる様々なサービスです。
使用するISXLドライバ種別の指定、ターゲットへの接続、変数の読み書きなどがあります。
ISXL:ISaGRAFシステム交換レイヤー(ISaGRAF System Exchange Layer)。
各クライアントサービスと、対応するドライバサービスとをリンクさせる部分です。
標準ターゲットのほとんどが次のハードウェアに対応したISXLのドライバをもっています。
共有メモリ(HSD:Host System Driver): ローカルマシン内での通信に使用します。
TCP/IP: ネットワーク上のリモートマシン間の通信に使用します。
RS-232C: シリアル通信を利用した1対1の通信です。その他、デバイスに合わせたドライバを開発することで、新たなネットワークへの対応が可能です。
IXS:ターゲット側のAPIライブラリ。
クライアントからの接続の受け付け、リクエストの取得などサービスがあります。
ISXS:サーバ側のネットワークドライバ。
クライアント側のISXLと対応する部分です。
ISaIXD:ディスパッチャ。
クライアントのリクエストを解析し、指定のPLCタスク(=リソース)に配信するタスクです。
従って、クライアントアプリケーションは接続時に以下の項目を指定することになります。
使用するデバイスドライバ(ISXL)デバイスドライバアクセスのメソッド
・・・
IXL APIはスケーラブルです。すなわち、ドライバなどの部分は簡単に削除できるようにしてあります。
これは、API初期化時にドライバを登録しないようにすること(define宣言で)可能になります。(また、リンカの方式によっては、関連するオブジェクトモジュールを削除する/しないことで可能です。)
サービスセットといった他の部分も、コンパイル時にdefine宣言で削除できます。
なお、デバイスドライバによっては、利用できないメソッドがあります。また、メソッドとデバイスドライバによって、利用できないサービスがあります。
機能
PLCがISaGRAF ...
- ISaGRAF Ver.4/5のIXL(ISaGRAF eXchange Layer)の仕様は公開しているか?
ISaGRAF Ver.4/5開発ツールキットのマニュアル(オンラインヘルプ)にて公開しています。
IXLとは、ISaGARF Ver.4/5ターゲットの変数にアクセスしたり、ターゲットの動作を制御するためのプロトコルの仕様です。
...
- IL言語の命令"JMP"や"RET"では修飾子"C"と"N"の両方が使えますが、修飾時のルールのようなものがありますか?
ISaGRAFのユーザズマニュアルの言語リファレンスに記載がありませんが、IL言語の命令と修飾子には以下のようなルールがあります。
修飾子"N"(反転)は命令"JMP"(ジャンプ)と"RET"(リターン)と組み合わせて使用できますが、その際には必ず修飾子"C"(条件チェック)と一緒に使用します。
すなわち、以下のような組合わせとなります:
JMPC
ILレジスタ(現在の結果)の値がTRUEの時ジャンプ
JMPCN
ILレジスタの値がFALSEの時ジャンプ
JMPNC
JMPCNと同じ
RETC
ILレジスタの値がTRUEの時リターン
RETCN
ILレジスタの値がFALSEの時リターン
RETNC
RETCNと同じ
命令"JMPN" と "RETN" というものは存在しませんので、"JMPCN" や "RETCN"を使用してください。
...
- IL言語による入力変数IX0_1のオン・オフによってc0をインクリメントするようなカウンタの実現方法は?
下図のようになります。ただし、このプログラムの ローカル論理値変数 に pre を使用しますので、辞書で登録しておいてください。
LD IX0_1 (* 現在の IX0_1を取り込み、 *)
XOR pre (* 前回と入力値が変化無しなら無視。 *)
JMPNC L999
LD IX0_1 (* 現在値を、 *)
ST pre (* 保存し、 *)
JMPNC L999 (* 立ち下がりなら無視。 *)
LD c0 (* ...
- ISaGRAF Ver.4では、I/Oデバイスはどのようにして追加するのですか?
1.ドライバの定義
1. TDBuildユーティリティを起動します。TDBuildはワークベンチのインストールフォルダの "Bin" の下にインストールされているユーティリティです。
2. 新しい定義を作成します。
3. "Insert" で新しいI/Oデバイスを挿入します。
4. デバイスの名前を変更します。(例: DigitOutDev)
5. ボードパラメータを定義します。
(例:パッケージ名:MyPack、ドライバ名:driver_name、ボードの方向:入力ボード、チャンネル数: 8チャンネル等)
6. I/Oドライバのソースファイルの生成
TDBuild の "Tools" - "Generate 'C' code" コマンドを実行すると、ソースファイルのテンプレートが生成されます。
生成されるファイル名は、
ドライバ名.c (例:driver_name.c)
ドライバ名.h (例:driver_name.h)
です。
これらはターゲットのパッケージ用フォルダにコピーしておきます。
7. ISaGRAF Ver.4のプロジェクトへインポートするためのテキストファイルを作成します。
TDBuild の "Build" ...
- ISaGRAF Ver. 4のI/Oドライバの命名方法とアドレスの取得方法
(この機能は、ISaGRAF Ver.4開発ツールキット、またはISaGRAF I/O開発キットを使用して実装します)
I/Oドライバを開発時には、I/Oのハードウェアを操作するC言語の関数をいくつか作ることになります。これらの関数名は、"パッケージ名/ドライバ名/デバイス名"に実行するアクションの種別(IosInit/IosExit 等)をつけたものにします。
【例】
パッケージ名:CJI
ドライバ名 :IBS
装置機器名 :CPX2B8IO
単一デバイス名:SPL8IB
アクション :IosInit(初期化)、IosRead(チャネルのリード)等
この場合、作成する関数名は
cjiibsIosInit
cjiibscpx2b8iospl8ibIosRead
等になります。
カーネル内部では、まずワークベンチのコンパイラが作ったデータを元に、これらの名前を組み立ます。さらに、名前をもとに関数のアドレスを得ています。
この部分のコードはカスタマイズ可能で、ソースファイル
IsaKer\DIOS0CUS.c
の中に記述されています。ソースの中で、以下の関数群をカスタマイズできます。
初期化
下記の関数はI/O全体の初期化時、各I/Oドライバの初期化前にコールされます。
typSTATUS iosCusInit(
strRtIoDrv* pRtIoDrv, /*In: 最初のI/OドライバのランタイムI/O構造体 */
uint16 huNbRtIoDrv, /*In: I/Oドライバの数 */
strKIoXParam* pKIoXParam /*In: 追加のパラメ-タ */
)
終了
下記の関数はI/O全体の終了処理時、各I/Oドライバのexit処理後にコールされます。 ...
- ISaGRAF Ver.4 コンパイラ型ターゲットのビルド方法
ISaGRAF Ver.4 WindowsNTターゲットの、コンパイラ型ターゲットのビルドと実行方法を説明した資料です。
クリックしてダウンロード→
...
- ISaGRAF Ver.4のSFCエディタの使い方を教えてください
SFCエディタでプログラムを能率的に開発するための作業手順とアドバイスです。
第一レベルのダイアグラムを作成する
新しいSFCプログラムを作成すると、既にイニシャルステップが配置されています。
●トランジションとステップ
トランジションのアイコンを選び、イニシャルステップの後ろに配置します。
イニシャルステップの下をクリックします。
トランジションは自動的にイニシャルステップにリンクされ、次のステップが配置できるようになります。トランジションの配置と同様の手順で、ダイアグラムの作成を続けてください。
●分岐
分岐には2種類あります。
選択(OR)分岐 :シングルラインのアイコン を選び、ステップの後に配置します。
並列(AND)分岐 :ダブルラインのアイコンを選び、トランジションの後に配置します。
●新しい分岐を追加する
分岐を3つ以上にする場合は、
1. まず既存の分岐に続く要素を配置します。
2. 分岐を選択します。
3. ツールバーの「新規分岐」アイコン をクリックします。
●結合
結合にも2種類あります。
選択(OR)結合 :シングルラインのアイコンを選び、トランジションの後に配置します。
並列(AND)結合:ダブルラインのアイコンを選び、ステップの後に配置します。
配置するときは分岐の左端の下をクリックします。
●ヒント
上記の手順でうまく行かない場合
「元に戻す」(Undo)を行わずに、以下の操作をして下さい。
1. 削除する要素を選択します。
2. "Delete" キーを押して削除します。
3. もう一度ダイアグラムを作りなおします。
既存のダイアグラムの途中にステップやトランジションを挿入する場合
1. ...
- IL言語による入力変数IX0_1のオン・オフによってc0をインクリメントするようなカウンタの実現方法は?
下図のようになります。ただし、このプログラムの ローカル論理値変数 に pre を使用しますので、辞書で登録しておいてください。
LD IX0_1 (* 現在の IX0_1を取り込み、 *)
XOR pre (* 前回と入力値が変化無しなら無視。 *)
JMPNC L999
LD IX0_1 (* 現在値を、 *)
ST pre (* 保存し、 *)
JMPNC L999 (* 立ち下がりなら無視。 *)
LD c0 ...
- ISaGRAF Ver.4のシングルタスク版ターゲット実行時にはどのくらいのメモリが必要でしょうか?
このドキュメントはVer4.10 から提供されるISaGRAF Ver.4シングルタスク版ターゲットの実行に必要なメモリサイズを事前に見積もるためのガイドラインです。
注意:ターゲット上で複数の ISaGRAF Ver.4バーチャルマシンを起動する場合には適用しないで下さい。
実行時に変更されないデータのサイズ
ROMやファイルに配置可能なデータです。
カーネルのプログラム(サイズの詳細については後述)エラーメッセージファイル
カーネルがエラー発生時の詳細を表示するためのものです。ターゲットがコンソールなどの標準出力を利用できる場合に、printf関数で出力する文字列を格納します。標準出力を持たない場合は不要です。
ファイルは4種類あります。
1. 標準のエラー
2. 標準の警告
3. インテグレータが追加したエラー
4. インテグレータが追加した警告
データ保存用に必要なサイズ
フラッシュメモリやファイル等に配置可能です。
ダウンロードしたIECアプリケーション+リソース構成(詳細については後述)オンライン修正用の領域
この領域のディフォルトサイズは、ターゲットの移植時に決定します。ただし、このディフォルト値はエンドユーザが変更する場合があります。ワークベンチの「リソースプロパティ」-「拡張」タブより後から変更することができます。
ダウンロードしたアプリケーションのシンボルテーブル
ワークベンチに作成される<リソース名>_SymbolsTarget.xtcファイルのサイズと等しくなります。
なお、通常はシングルタスク版ではアプリケーションシンボルテーブルのダウンロードは不要です。
ダウンロードされたIECアプリケーションのソース
後でワークベンチへアプリケーションをアップロードする場合のもので、圧縮されています。アップロード機能を使わない場合は不要なデータです。
エンドユーザがアップロードを使用する場合はワークベンチの「リソースプロパティ」上のオプションで設定します。
アプリケーション変数に保持属性を設定した場合の変数値の格納領域
RAMとして必要なサイズ
カーネルの実行ファイルは通常RAMにロードされます。これは、一般的にROM上での場合に比べ実行速度が速いためです。
効率的にアプリケーションを実行するためには、RAMに十分な容量が必要です。
カーネルのプログラム(サイズの詳細については後述)カーネルのC言語の変数用の領域(VxWorksターゲットの場合、約10KB)カーネルがRAM上に確保するメモリ領域のサイズダウンロードされたIECアプリケーションコードサイズ+リソース構成(後述します)変数の値(=リアルタイムデータベース 詳細は後述)オンライン修正用メモリ領域
カーネルのプログラムのサイズ
以下に示すのは、ISaGRAF Ver.4 シングルタスク版のカーネルの実装サイズの概算です(単位:KB)。
WindowsNTの場合
ISa.exe
ISaSYS.DLL
エラーメッセージファイル
合計
156 ...
- ISaGRAF Ver.4ターゲットは32ビットアプリケーションか16ビットか
ターゲットそのものについて
ターゲットのソースは、ANSI Cの規格に準拠したC言語で記述されています。そのため、ターゲットのCPUが16ビットでも32ビットでもコンパイラさえANSI Cに準拠していればコンパイルは可能です。
標準の WindowsNT版ターゲットは32ビットアプリケーション(WIN32)です。
アプリケーションコードのメモリモデル
なお、アプリケーションコードには、プロジェクトの変数を独自のアドレッシング方法で管理します。これには2種類のメモリモデルがあります。
ミディアム
変数は16ビットのアドレスで管理されます。変数の合計のサイズは64Kを超えることができません。
ラージ
変数は32ビットのアドレスで管理されます。
これらのメモリモデルにあわせて、ターゲットも2種類あります。
Ver4.00~Ver4.02のターゲットでは、ミディアムにのみ対応しています。
ターゲット内のシステムレイヤが管理する変数を格納する共有メモリは、いわゆるセグメント方式のメモリにも対応できるようになっています。そのため、セグメントサイズの小さいCPUでも、ラージモデルのターゲットを移植することができます。
ちなみに、標準の WindowsNT版ターゲットでは共有メモリはフラットなメモリ空間として扱っています。
...
- ISaGRAFでは他のプログラム言語同様、パソコンのハードウェア(シリアルポートやディスク)も制御できるか?
可能です。ファイル入出力の命令もあります。
ただ、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を使い、制御以外の部分を別言語で作る。
...
- ISaGRAFの機能を他の言語で開発したプログラムから呼び出して使えるか?
開発環境
ISaGRAFの開発環境ソフト(ワークベンチ)はそれ自体で完結しているソフトです。他のプログラムからあるプログラムをコールするといった使い方はできません。
実行環境
ISaGRAF実行環境は,ターゲットOSによってはISaGRAFの変数の読み書きや、停止などをサポートしているものもあります。たとえば、WindowsNTターゲットはDDEに対応しており、ほかのプログラムから変数の読み書きが可能です。
...
- IXLクライアントが同時接続できる上限の数について
<注意>
ISARSI(シリアル通信)の場合は、同時に1個のIXLクライアントしか受け付けません。
ISaGARF Ver.4.03以前の場合
ETCPネットワークドライバ経由でターゲットへ同時に接続できるIXLクライアントの数は3つに限られていました。4つめのクライアントを接続しようとすると、失敗します。
この制限を拡張するには、PRDK(ISaGRAF Ver.4 開発ツールキット)を使用して、ターゲットの以下のソースの修正が必要です
ETCP
ソース "detc0mai.c" のマクロ ETCP_SRV_MAX_CLT_QUEUE の数値を大きくします。
(ディフォルト=3)
ISaGRAF Ver.4.10以降の場合
1.ETCP(イーサネット)を使用する場合
ETCP経由でターゲットへ接続できるIXLクライアントの数を増やす場合には、通信タスクのスタートアップパラメータNbIxlClt で指定します。
【Windows NTターゲットの場合】
例えば、NTターゲットで10個のIXLクライアントをETCP経由で接続する場合は、以下のように設定します。
1. ターゲットに"ETCP.INI" ファイルがなければ作成します。
2. "ETCP.INI" ファイルに以下のセクションを追加します。
[APP]
NbIxlClt=10
【VxWorksターゲットの場合】
putEnvコマンドを使用してください:
putEnv("ETCP_NBIXLCLT=10")
【OS9ターゲットの場合】
setenvコマンドを使用してください:
setenv("ETCP_NBIXLCLT=10")
※使用するIXLクライアントの数に応じてIXDとETCPのパラメータを変更する必要がある場合は、FAQ 「ターゲットの起動時のパラメータについて」も合わせてご覧ください。
2.HSD(ローカル)を使用する場合
Ver4.1XでローカルのHSDプロトコルで接続するIXLクライアントの数を増やす場合、各バーチャルマシンのスタートアップパラメータCnxNBr(サーバコンポーネント)を使用します:
【Windows NTターゲットの場合】
例えば、NTターゲットで10個のIXLクライアントをETCP経由で接続する場合は、ISAVM.iniファイルに以下のように設定してください:
[SRV]
CnxNbr=10
【VxWorksターゲットの場合】
putEnvコマンドを使用してください:
putEnv("ISAVM_SRV_CNXNBR=10")
【OS9ターゲットの場合】
setenvコマンドを使用してください:
setenv("ISAVM_SRV_CNXNBR=10")
HSDの場合、アンサーの数やバーチャルマシンのサイクルもSRVのパラメータ:MAXSCAN で設定することが可能です。
...
- IXLクライアントからISaGRAF Ver.4ターゲットにリクエストを送信したい。応答があるまで多少時間がかかるが、その間、クライアント側に他の処理をさせたい。
IXLクライアントアプリケーションでは、ターゲットへのリクエストの送信にノンブロッキングメソッドを使うこともできます。この方法では、あらかじめコールバック関数を準備しておきます。
そして、IXLの初期化の段階でコールバック関数のアドレスをセットしておきます。
クライアントは、リクエストを送信した後、できるだけ頻繁に ixlCallbackActive() 関数をコールするようにします。
リクエストが完了した時点でコールバック関数がコールされるので、クライアントはそれまでの間、他の処理を行うことができます。
アンサーの準備ができた時点でコールバック関数はコールされます。コールバック関数内では受信した応答は、
指定したリクエストコード通知識別子対応するixlOnNotifXxx()関数
を使って処理するようにします。
下記はクライアントプログラムの一例です。
main ()
{
... ixlInit(... ,dtstIxlCallback,....);
.... ドライバ初期化 ....
... 接続 ...
... ダイアログの確立 ...
while (....)
{
if (.... ) /* 読みこみを行う場合 */
{
ixlRead(...);
...
}
else if ...
- IXLで一度にアクセスできる変数の数は?
IXLで1度に書きこみ/読みこみが行える変数の最大数を "huNbrOfVar" とします。
この数は、通信バッファのサイズと、変数のタイプ(文字列かどうか)によって異なります。
デフォルトでは、
送信バッファサイズ=512 Byte
受信バッファ=1024 Byte
となっています。このサイズだと、huNbrOfVarの最大数は下の表のようになります。
非文字列型データの読みこみ
39
文字列型データの読みこみ
3
非文字列型データの書きこみ
30
文字列型データの書きこみ
1
...
- ISaGRAF Ver.4のIXLとはなにか
IXL(ISaGRAF Exchange Layer:ISaGRAF交換レイヤー)とは、クライアントアプリケーションからISaGRAF Ver.4のターゲットのあらゆるオブジェクトにアクセスするためのAPI群です。
構成
クライアントは、ターゲットと同じマシン上で動作する別のタスクやプロセスでも構いませんし、ネットワークで接続された異なるOSのリモートマシン上にあってもかまいません。以下の図は、APIの一般的なアーキテクチャを示したものです。
IXL:クライアントが利用できる様々なサービスです。
使用するISXLドライバ種別の指定、ターゲットへの接続、変数の読み書きなどがあります。
ISXL:ISaGRAFシステム交換レイヤー(ISaGRAF System Exchange Layer)。
各クライアントサービスと、対応するドライバサービスとをリンクさせる部分です。
標準ターゲットのほとんどが次のハードウェアに対応したISXLのドライバをもっています。
共有メモリ(HSD:Host System Driver): ローカルマシン内での通信に使用します。
TCP/IP: ネットワーク上のリモートマシン間の通信に使用します。
RS-232C: シリアル通信を利用した1対1の通信です。その他、デバイスに合わせたドライバを開発することで、新たなネットワークへの対応が可能です。
IXS:ターゲット側のAPIライブラリ。
クライアントからの接続の受け付け、リクエストの取得などサービスがあります。
ISXS:サーバ側のネットワークドライバ。
クライアント側のISXLと対応する部分です。
ISaIXD:ディスパッチャ。
クライアントのリクエストを解析し、指定のPLCタスク(=リソース)に配信するタスクです。
従って、クライアントアプリケーションは接続時に以下の項目を指定することになります。
使用するデバイスドライバ(ISXL)デバイスドライバアクセスのメソッド
・・・
IXL APIはスケーラブルです。すなわち、ドライバなどの部分は簡単に削除できるようにしてあります。
これは、API初期化時にドライバを登録しないようにすること(define宣言で)可能になります。(また、リンカの方式によっては、関連するオブジェクトモジュールを削除する/しないことで可能です。)
サービスセットといった他の部分も、コンパイル時にdefine宣言で削除できます。
なお、デバイスドライバによっては、利用できないメソッドがあります。また、メソッドとデバイスドライバによって、利用できないサービスがあります。
機能
PLCがISaGRAF ...
- ISaGRAF Ver.4のIXL(ISaGRAF eXchange Layer)の仕様は公開しているか?
ISaGRAF Ver.4開発ツールキットのマニュアル(オンラインヘルプ)にて公開しています。
IXLとは、ISaGARF Ver.4ターゲットの変数にアクセスしたり、ターゲットの動作を制御するためのプロトコルの仕様です。
...
- I/OドライバからISaGRAF Ver.4のシステム変数にアクセスすることはできますか?
注意
システム変数のバーチャルアドレス(VA)はターゲットのヘッダファイルdsys0def.hで定義されていて、先頭に ISA_SYSVA_ が付加された文字列です。
アクセス方法
まず、変数テーブル(バーチャルマシンのリアルタイムデータベース)の先頭アドレスを取得します。I/Oドライバ内部からアクセスする場合は、I/Oデバイスのチャンネルへのポインタがあるはずです。これを pChannel とします。
strRtIoChan* pChannel;
uchar *curBfData = NULL;
pChannel = pRtIoSplDvc->pRtIoChan;
curBfData = (uchar*)pChannel->pvKerData - pChannel->KerVa;
これで curBfData に先頭の変数へのポインタが格納されます。これ以降は、下記のマクロで任意の変数にアクセスできるようになります。
BF_BOOL(BfData,va)
BF_SINT(BfData,va)
BF_DINT(BfData,va)
BF_REAL(BfData,va)
BF_TIME(BfData,va)
'va'はアクセスする変数のバーチャルアドレスです。
【例】
BF_DINT(curBfData,ISA_SYSVA_TCYCURRENT)
※ISaGRAF Ver.4ワークベンチ上では、システム変数名は"__SYSVA_**"と表示されます。
...
- ISaGRAF Ver.4ターゲットの通信タスクにシリアル通信を使う場合の起動方法について
コンフィギュレーションマネージャ(CMG)を起動する時に以下のようにパラメータを設定してシリアルリンクを使用可能にできます。
ISaGRAF -RSI=[ポート名]:[ボーレート]:[パリティ]:[ストップビット]:[ハードウェアによるフロー制御] -NoETCP
この設定でETCPタスクは起動されなくなります。
例1: Windows NTでの例 コマンドラインで起動する場合
ISaGRAF -RSI=COM1:19200:N:1:OFF -NoETCP
例2: Windows NTでの例 'isagraf.ini’ファイルに以下の設定を行えば、コマンドラインの場合と同様の設定でCMGを起動できます。
[APP]
NoETCP=1
ResNbr=20
s=1
RSI=COM1:19200:N:1:OFF
その他のOS(OS-9、VxWorks)の場合のコマンドラインについてはISaGRAF Ver.4 I/O開発キットや開発ツールキットのCD-ROMの各ターゲットのディレクトリにある "Target.txt"を 、起動パラメータに関する一般情報についてはISaGRAF Ver.4ターゲットの起動時のパラメータのページをご覧下さい。
...
- ISaGRAFにアプリケーションコードをダウンロードした後通信が遮断状態になり、再度ダウンロードできなくなる。
この現象は、次のようなときに起こります。
ISaGRAFアプリケーションに無限ループがある。
ハングアップしているのと同じ状態。
サイクルタイムの実際の値が設定値にかなり近いか、越えている。
SFCの選択分岐で、複数のトランジションが同時に成立してしまっている
原因を特定できない場合、以下の処理を試してみてください:
1. C言語ファンクションを作る。内容は、パラメータの変数の値を表示させる。
2. beginセクションに、ある整数変数をサイクルタイム毎に1ずつ増やし、1.のファンクションで表示させる
これでサイクルタイム毎に画面に数字が表示されなければ,どこかに無限ループがある、ということになります。
...
- ISaGRAF Ver.4ではコンフィギュレーション=ターゲットハードウェアをネットワーク経由で複数台設定できますが、マシンのIPアドレスをどのように設定しますか?
ワークベンチのプロジェクト内では、ターゲットプラットフォームとは、1つの「コンフィギュレーション」に該当します。
このコンフィギュレーションにIPアドレスを設定するには、
1. ハードウェアアーキテクチャウィンドウでETCP(Enhanced TCP/IP)ネットワークを挿入します。
2. コンフィギュレーションと挿入したネットワークを接続します。
コンフィギュレーションは非選択状態(タイトルバーがグレーの状態)にします(空白エリアのどこかををクリックしておきます)。
コンフィギュレーションからドラッグ&ドロップの動作でネットワークへの接続を実行します。(選択モードでドラッグ&ドロップを行うと、コンフィギュレーションの位置が移動してしまいます。)
3. 「接続プロパティ」で "IP Adress" の値を設定します。(例: 127.0.0.1)
値を設定したら、「OK」を押してダイアログボックスを抜けます。
4. 操作の詳細については、ヘルプの下記のセクションをご覧下さい。
「ワークベンチ」-「プロジェクトマネージャ」-「ハードウェアアーキテクチャの表示」接続接続プロパティ
...
- ISaGRAF Ver.4のワークベンチからターゲットへダウンロードされるデータはどのようなものですか?
リソース(プラットフォーム上のリソース毎)
リソース構成ファイル
ワークベンチ上でのファイル名=RESOURCENAME_Conf.xtc
ターゲット上でのファイル名(またはメモリスペース名)=ISPxxx03(XXはリソース番号(16進)
リソースシンボルファイル
これは、「リソースプロパティ」-「ターゲット/コード」タブの「シンボルテーブルの埋め込み」オプションがチェックされている場合にだけダウンロードします。内容は変数名等の情報を含むリソースシンボルファイルです。
ワークベンチ上でのファイル名=RESOURCENAME_SymbolsTarget.xtc (縮小テーブル/完全なテーブルをリソースプロパティのオプションで選択できます)
ターゲット上でのファイル名(またはメモリスペース名)=IDSxxx01(XXはリソース番号(16進)
POU(リソース上のPOU毎)
アプリケーションコード
ワークベンチ上の全POUのアプリケーションコードファイル(ファイル名=ResourceName_POUName_xtc)は1つのファイルに結合されます。結合の順番はワークベンチ上のファイル ResourceName_DWLOrder.xtc に記されています。
ハードウェア上でのファイル名=ISPxxx01
コンフィグレーション(ハードウェアプラットフォーム毎)
ハードウェア構成ファイル
ワークベンチ上では、このファイルはプロジェクトのコンフィグレーション名のディレクトリに保存されています。
ワークベンチ上でのファイル名=ConfigName_NetworkConf.xtc
ハードウェア上でのファイル名=ISPffe0d
注意:このドキュメントではオンライン修正用のファイル(ISPxxx15)については言及していません。
...
- ISaGRAFの辞書エディタで変数の「保持」を設定できるようになっているが、保持を設定した変数はターゲット稼働中に電源を切っても保持されるのか?また、保持型の変数を使用した場合、再起動時は保持値の方が初期値より優先するのか?
これは、ターゲットに依存する機能です。サポートしていないターゲットもあります。
ターゲットコンピュータにバックアップメモリや外部記憶装置が搭載され、かつ、オプションソフトの「ターゲット開発キット」によってISaGRAFのカーネルにその機能が実装されている場合に有効です。
再起動時は、保持値が初期値よりも優先されます。
ISaGRAF Ver.4の保持変数について
ISaGRAF Ver.4 の本数保持機能については、"ProDk.chm"-ISaGRAF Ver.4ターゲット開発キットのマニュアルに詳細が記述されています。
ISaGRAF Ver.4 NTターゲット
現状ではサンプルとしてファイルに変数値をバックアップする機能はあります。ただしあくまでサンプルであり、実際のご使用は推奨しません。
...
- ISaGRAF Ver.4 ターゲット移植のためのガイドライン
ISaGRAF Ver.4 開発ツールキットを使用してVer.4のターゲットを移植する際にVer.4のヘルプ(ProDk.chm)を読む前に、以下の移植のガイドラインをご覧下さい。
【内容】
(1)基本的なシステム要件
(2)移植のファーストステップの概要
(3)移植のヒント
(1)基本的なシステム要件
Ver4.03以降のISaGRAF Ver.4 ターゲットでは、移植を行うシステムに必要な項目は以下の通りです。
1.マルチタスクOS
2.ANSI Cによる開発環境を使用可能なターゲットシステムであること
3.以下のような機能をもつこと
TCP/IP BSD ソケットインタフェース
ワークベンチとターゲット間の通信、またはターゲットどうしのバインディングリンク用です。
シリアル通信ドライバ
シリアル通信ポートを制御するドライバ。基本的には、キャラクタ単位の読み書きを行います。ワークベンチとの通信にのみ使用します。
時間管理
一定周期のものであれば何でも構いません。システムティックなどを利用します。
ISaGRAF Ver.4の時間の単位はミリ秒です。つまり、最大の精度は1ミリ秒になります。
共有メモリ
複数のタスクから同じメモリエリアをアクセスできること。
セマフォ
タスク間の同期を取るためにバイナリセマフォを使います。
複数タスクからのデータアクセス制御のためにはミューテックスセマフォ(排他セマフォ)を使います。
メッセージキュー
タスクどうしはメッセージをやり取りして通信します。メッセージの内容は移植時に気にする必要はありません。
メッセージキューは、セマフォで管理された共有のFIFOバッファと見なすことができ、複数のタスクからアクセスが可能です。
タスク管理
各タスクは、アプリケーションのコンフィギュレーションやデバッグコマンドにともない、スタート/終了させる必要があります。
補助記憶装置(ハードディスク、RAMディスク、フラッシュメモリ等)
アプリケーション情報の保存用の媒体管理。アプリケーションコードや、シンボルテーブル等の保存のために使います。
また、アプリケーションコードが保存されているリソースの一覧を取得するためのシンプルなブラウズ機能も必要です。
以上の機能は、一連のシステムルーチンを経由してコールされます。これらのルーチンのインタフェース仕様は、ISaGRAF Ver.4開発キットのヘルプファイルをご覧下さい。
ISaGRAF ver.4開発ツールキットの"NewOS"フォルダ内には、これらのルーチンのソースのひな型をコメント付きで収録してあります。
実際の移植のおもな作業は、このひな型の内容を埋める、つまり、ISaGRAF Ver.4に必要な機能をターゲットOSに合わせる作業ということになります。
4.スタティックなデータの配置
全ての関数から参照可能な変数があります。これは通常、スタックには格納されないグローバル変数です。
また、複数のタスクが同じ実行コードを共有する場合があります。
これはおもに
バーチャルマシンのタスクが複数回起動する場合あらゆるタスクからコールされる、システムレイヤのライブラリ
です。このような場合、OSはタスクのインスタンス毎にスタティックデータ用のメモリを割り当てられる必要があります。
これは、「カーネル」ライクなOSやマルチスレッドOSといったものにはあてはまりません。
この機能を実現するために、OSは最低限の機能として、タスクのコンテキスト切替時に数個のポインタ(3、4個)をストアできなければなりません。したがって、タスクの初期化の第一段階で、データの割り当てを行うようなプログラミングをすることになります。 VxWorks版ターゲットのソースには、そのような例が含まれています。
(2)移植のファーストステップ
1.これまでに示した最小の機能要件が満たされていることを確認してください。
2.ISaGRAF Ver.4開発ツールキット(NSS-I4-PRDK)のCD-ROMから、"NewOS" フォルダの内容を開発環境にコピーしてください。
3.ターゲットに関する定義を行います。
ターゲットの定義は、ワークベンチ側、ターゲット側ともに必要です。
ワークベンチ側では、PLCtools.mdb または TDBuild.exe ツールを使って、新しいターゲットの定義をおこないます。
ターゲット側では、IsaSys\dsys0def.h の中の定義を修正します。
もちろん、双方の設定内容は一致していなければなりません。
dsys0def.h ...
- ISaGRAFで割り込みを使用することはできますか?
ISaGRAFターゲットの処理は、大きく分けて次の2つのものから成り立ちます。
カーネルのメインループ(プログラムの同期処理)
物理的なI/Oとのデータの更新処理
つまり、ターゲット処理は元々割り込み処理をハンドルするような構造になっていません。
マルチタスクOSの場合なら、ISaGRAFのサイクル処理の入力スキャンの段階でブロックし、ハードウェア割り込みを待つようにすることも可能ではあります。これは割り込みによって1サイクル実行を行う最も簡単な方法です。
ただし、通常ISaGRAFによって計測されているサイクルタイム値は、全く意味がなくなってしまう点に注意してください。
一般的に、割り込み処理はハードウェアに依存する処理をC言語で記述し、その内容は非常にシンプルで短時間で終わる処理となります。このような処理は、C言語ファンクションブロックとして実装すれば、ISaGRAFのサイクル内でコントロールできるようになります。
...
- IXLクライアントが同時接続できる上限の数について
<注意>
ISARSI(シリアル通信)の場合は、同時に1個のIXLクライアントしか受け付けません。
ISaGARF Ver.4.03以前の場合
ETCPネットワークドライバ経由でターゲットへ同時に接続できるIXLクライアントの数は3つに限られていました。4つめのクライアントを接続しようとすると、失敗します。
この制限を拡張するには、PRDK(ISaGRAF Ver.4 開発ツールキット)を使用して、ターゲットの以下のソースの修正が必要です
ETCP
ソース "detc0mai.c" のマクロ ETCP_SRV_MAX_CLT_QUEUE の数値を大きくします。
(ディフォルト=3)
ISaGRAF Ver.4.10以降の場合
1.ETCP(イーサネット)を使用する場合
ETCP経由でターゲットへ接続できるIXLクライアントの数を増やす場合には、通信タスクのスタートアップパラメータ NbIxlClt で指定します。
【Windows NTターゲットの場合】
例えば、NTターゲットで10個のIXLクライアントをETCP経由で接続する場合は、以下のように設定します。
1. ターゲットに"ETCP.INI" ファイルがなければ作成します。
2. "ETCP.INI" ファイルに以下のセクションを追加します。
[APP]
NbIxlClt=10
【VxWorksターゲットの場合】
putEnvコマンドを使用してください:
putEnv("ETCP_NBIXLCLT=10")
【OS9ターゲットの場合】
setenvコマンドを使用してください:
setenv("ETCP_NBIXLCLT=10")
※使用するIXLクライアントの数に応じてIXDとETCPのパラメータを変更する必要がある場合は、FAQ 「ターゲットの起動時のパラメータについて」も合わせてご覧ください。
2.HSD(ローカル)を使用する場合
バージョンV4.1XでローカルのHSDプロトコルで接続するIXLクライアントの数を増やす場合、各バーチャルマシンのスタートアップパラメータ CnxNBr(サーバコンポーネント)を使用します:
【Windows NTターゲットの場合】
例えば、NTターゲットで10個のIXLクライアントをETCP経由で接続する場合は、ISAVM.iniファイルに以下のように設定してください: ...
- IXLクライアントからISaGRAF Ver.4ターゲットにリクエストを送信したい。応答があるまで多少時間がかかるが、その間、クライアント側に他の処理をさせたい。
IXLクライアントアプリケーションでは、ターゲットへのリクエストの送信にノンブロッキングメソッドを使うこともできます。
この方法では、あらかじめコールバック関数を準備しておきます。
そして、IXLの初期化の段階でコールバック関数のアドレスをセットしておきます。
クライアントは、リクエストを送信した後、できるだけ頻繁に ixlCallbackActive() 関数をコールするようにします。
リクエストが完了した時点でコールバック関数がコールされるので、クライアントはそれまでの間、他の処理を行うことができます。
アンサーの準備ができた時点でコールバック関数はコールされます。コールバック関数内では受信した応答は、
指定したリクエストコード通知識別子対応する ixlOnNotifXxx() 関数
を使って処理するようにします。
下記はクライアントプログラムの一例です。
main ()
{
... ixlInit(... ,dtstIxlCallback,....);
.... ドライバ初期化 ....
... 接続 ...
... ダイアログの確立 ...
while (....)
{
if (.... ) /* 読みこみを行う場合 */
{
ixlRead(...);
... ...
- ISaGRAF Ver.4のIXLとはなにか?
IXL(ISaGRAF Exchange Layer:ISaGRAF交換レイヤー)とは、クライアントアプリケーションからISaGRAF Ver.4のターゲットのあらゆるオブジェクトにアクセスするためのAPI群です。
構成
クライアントは、ターゲットと同じマシン上で動作する別のタスクやプロセスでも構いませんし、ネットワークで接続された異なるOSのリモートマシン上にあってもかまいません。以下の図は、APIの一般的なアーキテクチャを示したものです。
IXL:クライアントが利用できる様々なサービスです。
使用するISXLドライバ種別の指定、ターゲットへの接続、変数の読み書きなどがあります。
ISXL:ISaGRAFシステム交換レイヤー(ISaGRAF System Exchange Layer)。
各クライアントサービスと、対応するドライバサービスとをリンクさせる部分です。
標準ターゲットのほとんどが次のハードウェアに対応したISXLのドライバをもっています。
共有メモリ(HSD:Host System Driver): ローカルマシン内での通信に使用します。
TCP/IP: ネットワーク上のリモートマシン間の通信に使用します。
RS-232C: シリアル通信を利用した1対1の通信です。その他、デバイスに合わせたドライバを開発することで、新たなネットワークへの対応が可能です。
IXS:ターゲット側のAPIライブラリ。
クライアントからの接続の受け付け、リクエストの取得などサービスがあります。
ISXS:サーバ側のネットワークドライバ。
クライアント側のISXLと対応する部分です。
ISaIXD:ディスパッチャ。
クライアントのリクエストを解析し、指定のPLCタスク(=リソース)に配信するタスクです。
従って、クライアントアプリケーションは接続時に以下の項目を指定することになります。
使用するデバイスドライバ(ISXL)デバイスドライバアクセスのメソッド
・・・
IXL APIはスケーラブルです。すなわち、ドライバなどの部分は簡単に削除できるようにしてあります。
これは、API初期化時にドライバを登録しないようにすること(define宣言で)可能になります。(また、リンカの方式によっては、関連するオブジェクトモジュールを削除する/しないことで可能です。)
サービスセットといった他の部分も、コンパイル時にdefine宣言で削除できます。
なお、デバイスドライバによっては、利用できないメソッドがあります。また、メソッドとデバイスドライバによって、利用できないサービスがあります。
機能
PLCがISaGRAF ...
- ISaGRAF Ver.4では、ターゲットに関する各種の定義はどこで行われていますか?また、プラットフォームに合わせて、どのように変更すればいいのでしょうか?
ISaGRAF Ver.4 ソースの "dsy0def.h" ファイル内の以下の部分は、ターゲットの重要な定義を行う部分です。
ISaGRAF Ver.4ターゲットを新しいOSに移植する場合、プラットフォームの仕様に合わせて定義します。
この内容は、ワークベンチ側での設定と必ず一致させる必要があります。
#define INTEL /* TO DO: システムがINTELベースの場合。それ以外はこの定義を外す。 */
#define MOTOROLA /* TO DO: システムがMOTOROLA ベースの場合。それ以外はこの定義を外す。 */
#define TARGET_NAME "MYTARGETNAME" /* TO DO: ...
- ISaGRAFのターゲット環境はROM上で実行することはできますか?
RAMでもROMでも、いずれも可能です。
ISaGRAF Ver.4の場合
ISaGRAF Ver.4のバーチャルマシンは、フラッシュメモリ等、RAMでない領域にあるリソースコードを直接実行することもできます。例えば、ダウンロードコードを保存する場所として、フラッシュメモリをバッテリバックアップメモリのように使う場合です。
注意事項としては、dsysSpcSave ルーチン(指定のメモリスペースの内容を補助記憶装置に保存)がダウンロードされたTICコードをフラッシュメモリに保存する前に、全リソースのコードがRAMにある情報と一致している必要があります。
...
- ISaGRAF Ver.4 のシングルタスク版ターゲットとは、どのようなものですか?
ISaGRAF Ver.4.10 より、シングルタスク版のターゲットが提供されるようになりました。
ISaGRAF Ver.4ターゲットの移植を行う場合、PRDK(ISaGRAF Ver.4開発ツールキット)の CD-ROMの target\newOS\MonoTask ディレクトリのソースを使用します。
シングルタスク版の制限事項
以下のようになります。
ターゲットのIXLライブラリにシンボルテーブルにアクセスするためのルーチンがありません。
したがって、シンボルテーブルをロードする、変数名からバーチャルアドレスを取得するといった機能は利用できません。シンボルテーブルをターゲットへダウンロードすること自体は可能です。
通信ファンクションブロック(Connect, URCV_S, USEND_S)は使用できません。1台のハードウェアプラットフォーム上で、複数個のISaGRAF Ver.4ターゲットを起動することはできません。これはOSがマルチタスクであってもです。
この理由は、ターゲットのコンフィギュレーションマネージャにあります。通常、同一プラットフォーム上では複数のコンフィギュレーションマネージャは同時に起動できないためです。ディフォルトの設定では、バインディングは使用できません。
使用できるようにするには、 IsaSys\dsys0def.h ファイルで "ITGTDEF_KVB" を #define する必要があります。
TCP/IPネットワークに関する注意事項
シングルタスク版はディフォルトで ISaRSI (RS-232Cのシリアル通信)通信のみをサポートしています。ただし、修正を加えればTCP/IP経由で通信することも可能です。以下を参照してください。
移植先のプラットフォーム上でイーサネットなどの通信ポートと、ノンブロッキングのTCP/IPスタックを使用可能であることが条件です。
isxsDrvsRegistrationルーチン(IsaSrvフォルダのdixs0reg.cファイルにあります)のコメントを削除し、ETCPドライバの登録を有効にすれば、TCP/IPが使用可能になります。 以下の行を有効にして下さい。
/* ETCP driver */
isxsEtcpRegister(pIxsId);
イーサネットなどが使えない場合は、エンドユーザがワークベンチでETCPドライバを選択できないようにする必要があります。
使用するワークベンチプロジェクトのテンプレート(ワークベンチインストールフォルダの "Tpl" ...
- ISaGRAF Ver.4.10以降では、ソケットライブラリを使用することが標準的な仕様となった。Ver4.03のソースをアップグレードする手順はどうなるか?
下記の内容は一般的なアップグレードの手順であることをあらかじめご了承下さい。PRDKに付属するTarget\\NewOs\\MultiTask\\Release.txt ファイルにもこの内容が書かれています。
一般的なターゲットの移植の手順は下記のようになります。
1. 新しいOS用の新バージョンのソースファイルをコピーする。
2. システム依存する部分のファイル(移植時に空の関数内を記述したファイル)をコピーする。
3. 他に追加のコンポーネント(C言語POUやI/Oドライバ)のソースを作成済みなら、それもコピーする。
4. dsys0def.h ファイルを編集しなおして、Ver4.10の新規の定義に合うようにする(前述のファイルの内容をご覧下さい)
5. その他のAlterSys Europe提供のファイルで独自の変更を加えたものがあれば、修正する(通常はこの作業は必要ないはずです)
6. その他、各バージョンのリリースノートの詳細にある項目を実施する。
基本的に ISaGRAF Ver4.10のソケットを移植するには2種類の方法があります。
方法1
Ver4.10のソースコードに付属する AlterSys Europe作成の det0soc.c ファイルをそのまま、修正せずに使います。Ver4.10からはこのファイルはシステムに依存しないものとなっており、修正は不要です。このファイルでは新たに ISysSocライブラリを使用しており、移植時には dsys0soc.c ファイルを使用します(オンラインヘルプ PRODK.CHMの「TCP/IPインタフェース」のページをご覧下さい)ので、この内部をシステムに合わせて書き換えます。また、新しい ISysSoc.lib ファイルを生成するためのメイクファイルの修正も必要です(Target\\NewOs\\MultiTask\\MakPrdk.txtファイルをご覧下さい)
移植時には ISaGRAF Ver.4.10 ...
- ISaGRAF Ver.4のターゲットをオリジナルのOSに移植するときOSにはどのような機能が必要か?
全ての機能を実装するには、マルチタスクOSで、下記の機能が必要です。
共有メモリ管理
メッセージキュー(ローカルデータ管理用)
セマフォタイマー管理TCP/IPソケットインタフェース(ETCP通信を使わない場合は不要)
タスク管理(タスク生成、起動、終了など)
ファイルシステム
ISaGRAF Ver.4.10以降では、一部制限事項もありますがシングルタスクOSへの移植にも対応しています。
...
- ISaGRAFの辞書エディタで変数の「保持」を設定できるようになっているが、保持を設定した変数はターゲット稼働中に電源を切っても保持されるのか?また、保持型の変数を使用した場合、再起動時は保持値の方が初期値より優先するのか?
これは、ターゲットに依存する機能です。サポートしていないターゲットもあります。
ターゲットコンピュータにバックアップメモリや外部記憶装置が搭載され、かつ、オプションソフトの「ターゲット開発キット」によってISaGRAFのカーネルにその機能が実装されている場合に有効です。
再起動時は、保持値が初期値よりも優先されます。
ISaGRAF Ver.4の保持変数について
ISaGRAF Ver.4 の本数保持機能については、"ProDk.chm"-ISaGRAF Ver.4ターゲット開発キットのマニュアルに詳細が記述されています。
ISaGRAF Ver.4 NTターゲット
現状ではサンプルとしてファイルに変数値をバックアップする機能はあります。ただしあくまでサンプルであり、実際のご使用は推奨しません。
...
- ISaGRAF Ver.4 のIXLとはなにか
IXL(ISaGRAF Exchange Layer:ISaGRAF交換レイヤー)とは、クライアントアプリケーションからISaGRAF Ver.4のターゲットのあらゆるオブジェクトにアクセスするためのAPI群です。
構成
クライアントは、ターゲットと同じマシン上で動作する別のタスクやプロセスでも構いませんし、ネットワークで接続された異なるOSのリモートマシン上にあってもかまいません。以下の図は、APIの一般的なアーキテクチャを示したものです。
IXL:クライアントが利用できる様々なサービスです。
使用するISXLドライバ種別の指定、ターゲットへの接続、変数の読み書きなどがあります。
ISXL:ISaGRAFシステム交換レイヤー(ISaGRAF System Exchange Layer)。
各クライアントサービスと、対応するドライバサービスとをリンクさせる部分です。
標準ターゲットのほとんどが次のハードウェアに対応したISXLのドライバをもっています。
共有メモリ(HSD:Host System Driver): ローカルマシン内での通信に使用します。
TCP/IP: ネットワーク上のリモートマシン間の通信に使用します。
RS-232C: シリアル通信を利用した1対1の通信です。その他、デバイスに合わせたドライバを開発することで、新たなネットワークへの対応が可能です。
IXS:ターゲット側のAPIライブラリ。
クライアントからの接続の受け付け、リクエストの取得などサービスがあります。
ISXS:サーバ側のネットワークドライバ。
クライアント側のISXLと対応する部分です。
ISaIXD:ディスパッチャ。
クライアントのリクエストを解析し、指定のPLCタスク(=リソース)に配信するタスクです。
従って、クライアントアプリケーションは接続時に以下の項目を指定することになります。
使用するデバイスドライバ(ISXL)デバイスドライバアクセスのメソッド
・・・
IXL APIはスケーラブルです。すなわち、ドライバなどの部分は簡単に削除できるようにしてあります。
これは、API初期化時にドライバを登録しないようにすること(define宣言で)可能になります。(また、リンカの方式によっては、関連するオブジェクトモジュールを削除する/しないことで可能です。)
サービスセットといった他の部分も、コンパイル時にdefine宣言で削除できます。
なお、デバイスドライバによっては、利用できないメソッドがあります。また、メソッドとデバイスドライバによって、利用できないサービスがあります。
機能
PLCがISaGRAF ...
- ISaGRAF Ver.4 では、シミュレーションモードとデバッグモードはどのように切りかえるのでしょうか?
ワークベンチのバージョンによって方法が異なります。
ISaGRAF Ver.4.10以降
シミュレーション実行の場合はメニューの「デバッグ」-「シミュレーション」を実行します。
実際のターゲットをデバッグする場合は、ターゲットを起動した後、メニューの「デバッグ」-「デバッグ」を実行します。
ISaGRAF Ver.4.10未満
新たにプロジェクトを作成した直後は、ディフォルトの実行モードはシミュレーションになっています。「テスト」コマンドを実行すると、ワークベンチはシミュレーションを開始します。
デバッグモードに切り替えるには、プロジェクト中の全てのリソースの「プロパティ」ウィンドウを開きます。「実行」タブで、「オンライン」を選択します。
この操作の後、グレー表示されて選択できなかった「ダウンロード」スイッチが有効になります。また、もしこれがグレー表示のままなら、まだ「シミュレート」モードのリソースが残っていることを意味します。
実ターゲット上でデバッグを行うためには、次の手順で行います。
1. アプリケーションコードを生成します。
2. ターゲットを起動します。
3. ワークベンチで「デバッグ」メニューの「ダウンロード」、またはツールバーのダウンロードボタンをクリックします。
そしてアプリケーションコードをダウンロードします。
4. 「テスト」ボタンまたは「デバッグ」-「テスト」メニューからワークベンチをデバッグモードにします。
...
- ISaGRAF Ver4.12ワークベンチで作成したプログラムをターゲットにダウンロードしようとしたが、ダウンロード処理が途中で停止し、エラーとなって終了してしまう。
ISaGRAF Ver4.12では、比較的大きなサイズのプログラムを作成しダウンロードした場合、途中で処理が停止するという現象が発生するようです。
これはダウンロード処理モジュールのタイムアウトの時間に関係するようです。
#マシンの環境にもよりますが、アプリケーションのサイズが350Kを超えるてくると発生する場合があるようです。
#ちなみに400Kのアプリケーションはラダ-のラングに換算して約40000本程度のボリュームになります。
これらの問題を改善したモジュールをメンバサポートページに掲載していますので、こちらを御使用下さい。
...
- ISaGRAF WorkbenchはWindows VISATA/7に対応していますか?
ISaGRAF Workbench Ver 5.22まではWindows NT系OSの Windows XP SP3及びWindeows Server 2003までに対応しています。
現在開発中のISaGRAF Workbench Ver 6にてWindows VISTA/7に対応します。(32bit/64bit両モード対応)
また将来リリース予定のISaGRAF Workbench Ver 5.23(仮Version番号)も Windows VISTA/7に対応予定です。(32bitモードのみ対応)
...
- ISaGRAF WorkbenchをWindows 7で使用するにはどうしたらよいでしょうか?
Version 5.2までのISaGRAF WorkbenchをWindows 7で使用する場合、XP modeを使用してください。
Windows VIST/7にはISaGRAF 6が正式対応しているので、こちらをご使用ください。
注意事項:
ここに記す内容は、弊社のテスト環境にて確認したものであり、開発元がこの内容を保証するものでは
ありません。
ISaGRAF Workbench Version 5.2またはこれ以前のVersionはWindows 7に対応していません。
しかし、Microsoftが提供しているWindows XP modeを用いることで、これらのWorkbenchを
Windows 7の下でも使用することができます。
方法としてはWindows XP modeを起動し、この環境下で通常の手順でISaGRAF Workbenchを
インストールするだけです。
(インストール手順はインストーラの表示に従ってください。patchを当てる手順も同様です。)
注意事項:
Windows XP modeにインストールしたISaGRAF Workbenchは、既に起動された
Windows XP modeの中でしか起動できません。
これはWindows XP modeの仕様による制限です。
Windows 7の「スタートメニュー」から
「すべてのプログラム」→「Windows Virtual ...
- ISaGRAF 6 WorkBenchを購入しましたが、プロテクトキーが見当たりません、何故でしょう。
ISaGRAFはVersion 6からソフトウェアライセンスのみとなりました。このため、ハードウェアキーは付属しません。
...
- ISaGRAFはVersion 6からソフトウェアライセンスのみとなりました。このため、ハードウェアキーは付属しません。
ISaGRAF 6ではライセンスを設定していない状態では"ISaGRAF Free"版として動作します。ISaGRAF Freeではプログラムサイズ3KB以下のプロジェクトしか作成できません。また、ターゲットもISaGRAF Free版用ターゲットしか使用できません。
...
- ISaGRAF Workbench 6.1でライセンスを登録しようとしましたが、ヘルプメニューにライセンス登録の項目が見当たりません。
ISaGRAF Workbench 6.1の既知の不具合で、起動後最初にヘルプメニューを開いた時には"Licensing CAM5"の項目が表示されませんが、二度目以降は表示されます。なお、ISaGRAF WorkbenchはVersion 6.2がリリースされましたので、こちらへのupgradeをお勧めいたします。
...
- ISaGRAF PROやISaGRAF Version 5で作成したプロジェクトは、どのようにすれば読み込めるのでしょう。
プロジェクトのインポート方法を簡易にまとめた資料を用意しています。弊社サポートまでお問い合わせください。
...
- IL言語が使用できない様なのですが?
ISaGRAF WorkBench 6.2の時点ではIL言語に未対応です
将来のバージョンで対応する予定であるため、今しばらくお待ちください。
...
- ISaGRAF Woekbenchの使い方が良く判りません。
ISaGRAF WorkBench 6.2をフルインストールすると、チュートリアルビデオが
インストールされます。
まずはこちらをご参照ください。
(但し、説明の音声は英語となるので予めご了承ください。)
チュートリアルビデオはWorkBenchのトップ画面に再生用アイコンが表示されていますので、
こちらをクリックして開いていただければ、再生が始まります。
...
- ISaGRAF WorkBench 6の動作環境を教えてください。
ISaGRAF WorkBench 6は以下の環境で動作します。
OS:
Microsoft Windows XP (SP3以降)
Microsoft Windows Server 2003
Windows Vista(32/64bit)
Microsoft Windows Server 2008 (32/64bit)
WIndows 7 (32/64bit)
ハードウェア:
最小環境
x86/x64 系で 1.6 GHz CPU, RAM 384 MB, ...
- ISaGRAFでコンフィグレーション、リソースそれにPOUはそれぞれいくつ作成できますか。
ISaGRAF WorkBenchで作成できるコンフィグレーション数とリソース数はそれぞれ以下の数となります。
コンフィグレーション:72
リソース: 4095
POU: 65535
もしこれ以上のコンフィグレーション・リソースが作れることを確認された場合、
不具合の可能性がありますので、弊社ISaGRAFサポートまでご連絡ください。
...
- ISaGRAF WorkBench 6でISaGRAF 4で作成したプロジェクトをインポート・ビルドするとビルドエラーが生じます。
ISaGRAF 4ではエラーが生じなかったのですが、なぜでしょう。
ISaGRAF WorkBench 6ではAND_MASKの仕様が変更となりました。
以前はAND_MASKはDINT型変数を扱っていましたが、これがUDINT型変数を扱うように変わりました。
従いまして、AND_MASK前後で扱う変数をUDINT型に変更するか、あるいはANY_TO_UDINTを通した値を
AND_MASKへ入力し、AND_MASKの出力をANY_TO_DINTを通すように修正してください。
...
- ISaGRAF WorkBenchとfirmware(ターゲット)のバージョンが異なるようですが?
ISaGRAF WorkBench Version 6を使用するとき、Version表記にVersion 5とVersion 6が混在します。
これは以下の理由によるものなのであらかじめご承知おきください。
1. ISaGRAF WorkBenchという製品のバージョン番号は2013年現在Version 6となっております。
2. ISaGRAF WorkBench内部で使用されているコンパイラのバージョン番号は、2013年現在Version 5.3となっております。
3. ISaGRAF firmwareのバージョン番号は、2013年現在Version 5.4となっております。
4. "3."に従い、PRDK及びIODKのバージョン番号は2013年現在Version 5.4となっております。
5. ISaGRAF WorkBench Version 6が標準対応しているISaGRAF firmwareはVersion 5.3以降となっております。
これらの理由から、ISaGRAF WorkBench Version 6を使用する際にはバージョン表記に5と6が混在します。
...
- ISaGRAF TICの実行速度を上げる方法はありませんか?
ISaGRAFはWorkBench Version 5.1以降でコンパイル時の最適化オプションが追加されました。
これはリソースごとに設定可能で、こちらを有効にしていただければ、
そのリソース内でのプログラム実行が高速化されます。
(ディフォルトでは無効となっております。)
なお、この最適化オプションは二種類あり、両方を有効にするには
WorkBench/firmwareともVersion 5.22以降を使用する必要があります。
この機能を有効にするには、リソースのプロパティにあるコンパイラオプションで
「コードの最適化を有効にする」
「ターゲットが最適化されたTICコードをサポート(5.22以降で選択可能)」
をそれぞれ有効にしてください。
これらを有効にすると、場合によってはTICの実行速度が4倍以上早くなります。
効率が良い条件では、Cコードと大差ない実行速度が得られるようになります。
...
- ISaVIEWというものがありますが、これは何でしょうか?
ISaVIEWは将来リリース予定のHMIデザインソフトISaVIEWのサブセットを
ISaGRAF WorkBenchに内蔵させたものです。
ISaVIEWで作成したHMIはISaGRAF WorkBench内でしか使用できませんが、
将来リリース予定のISaVIEW/Embeddedに取り込み、ビルドすることで独立した
HMIが作成可能となります。
(製造終了したHiBeamとのプロジェクト互換性はありません。)
...
- ISaGRAFを他のHMI/SCADAから制御することは可能でしょうか。
可能です。
ISaGRAF WorkBench Install DVD-ROMに同梱されている
"OPC DA Server"を用いると、ISaGRAFが使用している”ETCP"を
”OPC"に変換することができます。
従いまして、"OPC”対応のHMI/SCADAからISaGRAFの動作を
制御することが可能です。
...
- ISaGRAF WorkBenchの使い方を詳しく知りたいのですが。
ISaGRAF WorkBenchの使い方については、都度有償トレーニングを開催しております。
トレーニングの費用・日程につきましては弊社の御社担当営業までお問い合わせください。
必要に応じ、出張トレーニングも行っております。
...