143
WAGO-IO-PRO 32 ハンドブック ポイント解説マニュアル このマニュアルは WAGO-IO-PRO32 ユーザのために ソフトウェアの取扱いポイントを説明したものです。 バス通信は主に 750-842Ethernet コントローラ) を中心に説明しています。 本ドキュメントの内容に関してのご質問は下記にご連絡ください。 136-0071 東京都江東区亀戸 1-5-7 日鐵 ND タワー4F ワゴジャパン株式会社 I/O グループ TEL03-5627-2059 FAX03-5627-2055 担当:竹内、西堀、吉田、松本 Ver. 04101201

WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

Embed Size (px)

Citation preview

Page 1: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

WAGO-IO-PRO 32ハンドブックポイント解説マニュアル

このマニュアルは WAGO-IO-PRO32ユーザのためにソフトウェアの取扱いポイントを説明したものです。

バス通信は主に 750-842(Ethernetコントローラ)を中心に説明しています。

本ドキュメントの内容に関してのご質問は下記にご連絡ください。

〒136-0071東京都江東区亀戸 1-5-7 日鐵 NDタワー4Fワゴジャパン株式会社 I/Oグループ

TEL:03-5627-2059 FAX:03-5627-2055担当:竹内、西堀、吉田、松本

Ver. 041012-01

Page 2: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

ii

目 次

1 IEC61131-3とは? ................................................................................................................................. 1-1

1-1 IEC規格の意図 ................................................................................................................................. 1-1

2 入出力データと変数の関係 .................................................................................................................... 2-1

2-1 ワゴ I/Oシステムの入出力データについて ....................................................................................... 2-1

2-2 IEC61131規格における変数宣言 ...................................................................................................... 2-2

3 プログラムの作成の手順........................................................................................................................ 3-1

3-1 プログラムの全体の構成 ................................................................................................................... 3-1

3-2 変数の定義 ........................................................................................................................................ 3-1

3-3 変数定義とテーブル表示 ................................................................................................................... 3-2

3-4 ステップの追加方法 .......................................................................................................................... 3-2

3-5 演算素子(Function)・ファンクションブロック(FB)の呼び出し方 .............................................. 3-3

3-6 LD(ラダー)における要素入力方法 ................................................................................................ 3-5

3-7 FBD(ファンクションブロックダイアグラム)における要素入力方法 ............................................ 3-5

3-8 LDおよび FBDにおけるジャンプ命令とリターン命令 ..................................................................... 3-6

3-9 LD(ラダー)における FBの挿入方法 .............................................................................................. 3-8

3-10 FBの追加挿入 ................................................................................................................................. 3-9

3-11 FBの信号名指定入力 ...................................................................................................................... 3-9

4 変数の特殊な扱い .................................................................................................................................. 4-1

4-1 グローバル変数とは?....................................................................................................................... 4-1

4-2 データ保持設定(リテイン) ............................................................................................................ 4-2

4-3 入出力変数 ........................................................................................................................................ 4-2

5 サブルーチンの作成 ............................................................................................................................... 5-1

サブルーチンの作り方 ............................................................................................................................... 5-1

Page 3: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

iii

5-2 メインプログラムからサブルーチンを呼び出す ................................................................................ 5-1

5-3 Enable 実行 ...................................................................................................................................... 5-2

6 作成プログラムの転送(流し込み) ...................................................................................................... 6-1

6-1 サービスポート経由の接続 ............................................................................................................... 6-1

6-2 プログラム動作のハードスイッチ ..................................................................................................... 6-4

6-3 フィールドバス経由の接続(例:Ethernetの場合)......................................................................... 6-5

6-4 モニタリング..................................................................................................................................... 6-6

6-5 データの強制設定.............................................................................................................................. 6-7

7 メモリバッファを自分で定義するには? ............................................................................................... 7-1

7-1 メモリーアレイの定義方法 ............................................................................................................... 7-1

7-2 メモリーアレイの使い方 ................................................................................................................... 7-2

8 新しい関数とライブラリ........................................................................................................................ 8-1

8-1 新規ライブラリの追加....................................................................................................................... 8-1

9 よく使われる演算素子(Function)・ファンクションブロック............................................................. 9-1

9-1 演算素子(Function) ....................................................................................................................... 9-1

演算素子 .................................................................................................................................................... 9-2ADD:加算 ...................................................................................................................... 9-2MUL:乗算 ...................................................................................................................... 9-2SUB:減算 ...................................................................................................................... 9-3DIV:除算の商 ................................................................................................................ 9-3MOD:除算の余り........................................................................................................... 9-4INDEXOF:オブジェクトインデックスを求める ............................................................ 9-5SIZEOF:変数や関数のバイトサイズを求める ............................................................... 9-5

論理演算素子 ............................................................................................................................................. 9-6AND:論理積(かつ) .................................................................................................... 9-6OR:論理和(または) ................................................................................................... 9-6XOR:ビットデータの排他的論理和 ............................................................................... 9-7NOT:ビットデータの反転 ............................................................................................. 9-8

Page 4: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

iv

ビットシフト演算素子 ............................................................................................................................... 9-9SHL:左ビットシフト ..................................................................................................... 9-9SHR:右ビットシフト .................................................................................................. 9-10ROL:ビット左回転 .......................................................................................................9-11ROR:ビット右回転 ..................................................................................................... 9-12

データ選択素子 ....................................................................................................................................... 9-13SEL:データの選択(二者択一) ................................................................................. 9-13MAX:大きい方の値の選択 ........................................................................................... 9-13MIN:小さい方の値の選択 ............................................................................................ 9-14

比較演算素子 ........................................................................................................................................... 9-16GT:Grater Than(<) ................................................................................................ 9-16LT:Less Than(>).................................................................................................... 9-16LE:Less or Equal(≦) .............................................................................................. 9-17GE:Grater or Equal(≧)........................................................................................... 9-18EQ:Equal(=) .......................................................................................................... 9-18NE:Not Equal(<>) ................................................................................................ 9-19

9-2 プログラミングに必要なファンクション .......................................................................................... 9-20

ADR:アドレスポインタ ............................................................................................... 9-20変換素子 .................................................................................................................................................. 9-21

BOOL_TO変換 ............................................................................................................. 9-22TO_BOOL変換 ............................................................................................................. 9-23整数型(INT)のタイプ変換 ......................................................................................... 9-24REAL_TO変換 .............................................................................................................. 9-25時間変換 ........................................................................................................................ 9-25文字列変換 .................................................................................................................... 9-26TRUNC:(REAL_TO_INT) ......................................................................................... 9-26

計算機能 .................................................................................................................................................. 9-27ABS:絶対値 ................................................................................................................. 9-27SQRT:Square Root(平方根) ................................................................................... 9-27LN:Natural Logarithm(自然対数)............................................................................. 9-28LOG:Logerithm(常用対数) ...................................................................................... 9-28EXP:Exponential(eの指数累乗) ............................................................................. 9-29SIN:Sine(サイン) .................................................................................................... 9-29COS:Cosine(コサイン)........................................................................................... 9-30TAN:Tangent(タンジェント) ................................................................................... 9-30ASIN:Arc Sine(アークサイン)................................................................................. 9-31ACOS:Arc Cosine(アークコサイン) ....................................................................... 9-31ATAN:Arc Tangent(アークタンジェント) ................................................................ 9-32■EXPT:Exponential Times(変数の指数累乗)............................................................ 9-32

Page 5: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

v

9-3 標準 FBD(ファンクションブロック) ........................................................................................... 9-33

ブール操作............................................................................................................................................... 9-33SR:セット優先テーブル .............................................................................................. 9-33RS:リセット優先テーブル .......................................................................................... 9-34

カウンタ .................................................................................................................................................. 9-35CTU:Count Up ............................................................................................................ 9-35CTD:Count Down........................................................................................................ 9-36CTUD:Count Up&Down .............................................................................................. 9-37

タイマ...................................................................................................................................................... 9-39TON:On Delay Timer................................................................................................... 9-39TOF:Off Delay Timer ................................................................................................... 9-40TP:Timer Pulse ........................................................................................................... 9-41

トリガ...................................................................................................................................................... 9-42R_TRIG:Trigger in Rising edge ................................................................................... 9-42F_TRIG:Trigger in Falling edge................................................................................... 9-43

9-4 文字列操作 ...................................................................................................................................... 9-44

文字列操作機能 ....................................................................................................................................... 9-44LEN:Length of Characters .......................................................................................... 9-44LEFT:Characters from Left.......................................................................................... 9-45RIGHT:Characters from Right ..................................................................................... 9-45MID:Characters from Middle ....................................................................................... 9-46CONCAT:Connect Characters .................................................................................... 9-47INSERT:Insert Characters .......................................................................................... 9-47DELETE:Delete Characters ........................................................................................ 9-48REPLACE:Replace Characters................................................................................... 9-49FIND:Find Characters ................................................................................................. 9-50

9-5 UTIL.LIBライブラリ ....................................................................................................................... 9-51

BCD変換 ................................................................................................................................................. 9-51BCD_TO_INT:............................................................................................................. 9-51INT_TO_BCD:............................................................................................................. 9-52

ビット・バイト操作 ................................................................................................................................ 9-52EXTRACT:ビット値抽出 ............................................................................................. 9-52PACK / UNPACK ........................................................................................................... 9-53PUTBIT:ビット指定変更 ............................................................................................. 9-53

微積分機能............................................................................................................................................... 9-54DERIVATIVE:微分機能 ................................................................................................ 9-54INTEGRAL:積分機能 ................................................................................................... 9-54STATISTICS_INT:標準統計 整数型入力.................................................................... 9-54STATISTICS_REAL ....................................................................................................... 9-55VARIANCE:分散値 ...................................................................................................... 9-55

Page 6: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

vi

コントローラー ....................................................................................................................................... 9-56P:比例制御 .................................................................................................................. 9-56PD:比例制御+微分制御 .............................................................................................. 9-56PID:PID制御 ............................................................................................................... 9-57

信号発生(シグナルジェネレータ) ........................................................................................................ 9-57BLINK:点滅 ................................................................................................................. 9-57GEN:シグナルジジェネレータ .................................................................................... 9-58

ヒステリシス関数 .................................................................................................................................... 9-59HYSTERESIS:ヒステリシス ....................................................................................... 9-59

10 プログラム作成例 .............................................................................................................................. 10-1

10-1 自己保持回路 ................................................................................................................................. 10-1

10-2 セット・リセット回路................................................................................................................... 10-2

10-3 クロック発生回路.......................................................................................................................... 10-3

10-4 リテイン機能を使ったカウンタ値保持回路 ................................................................................... 10-4

10-5 ST(ストラクチャード・テキスト)を使った温度データ変換の例............................................... 10-6

10-6 ST(ストラクチャード・テキスト)におけるその他の公式の解説............................................. 10-12

11 外部との通信(Ethernet) ................................................................................................................ 11-1

11-1 プログラム駆動中の Ethernetコントローラへのデータ受け渡し ...................................................11-1

11-2 BROADWIN標準 Modbus/TCPドライバを使用した場合...............................................................11-3

11-3 発紘電機(株)社製タッチパネルとの Modbus/TCPによる接続 ...................................................11-5

12 ピアーツーピア通信 ........................................................................................................................... 12-1

12-1 概要 ............................................................................................................................................... 12-1

12-2 ライブラリと使用関数名 ............................................................................................................... 12-2

12-3 ライブラリとサンプルプログラムのダウンロードとコピー .......................................................... 12-3

12-4 プログラム内容の解説(1対 1通信) .......................................................................................... 12-3

12-5 Polling通信のプログラム内容の解説 ............................................................................................ 12-6

12-6 COS通信(Change Of State)のプログラム解説 ......................................................................... 12-7

Page 7: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

vii

13 シリアル通信モジュールの制御 ......................................................................................................... 13-1

13-1 概要 ............................................................................................................................................... 13-1

13-2 750-650、750-653(標準モジュール)用のライブラリと通信ファンクションブロック ................ 13-1

13-3 750-650/003-000, 750-653/003-000(通信条件可変モジュール)の通信 FBD.............................. 13-3

13-4 ハードウェアの接続 ...................................................................................................................... 13-5

13-5 750-650,750-653(標準モジュール)による通信サンプルプログラムの解説 ............................... 13-6

13-6 750-650/003-000, 750-653/003-000(通信条件可変モジュール)

   による通信サンプルプログラムの解説 .......................................................................................... 13-7

14 LONバスコントローラーによる PID空調制御のサンプルプログラム................................................ 14-1

14-1 概要 ............................................................................................................................................... 14-1

14-2 システム構成と使用ツール............................................................................................................ 14-1

14-3 プログラムの説明.......................................................................................................................... 14-2

14-4 LONプラグインツール TOPLON PRIOの立ち上げ ...................................................................... 14-4

14-5 TOPLON-PRIO プラグインツールによる変数設定 ....................................................................... 14-8

14-6 データのモニタとデバック.......................................................................................................... 14-13

Page 8: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

1-1

1 IEC61131 -3 とは?

1-1 IEC規格の意図

  これまで世界の多くのベンダーが制御用 PLCのプログラミング言語を開発し、各国で普及が進んできましたが、ベンダー各社が独自の方言を使ってしまった為、ユーザにとっては金と時間の浪費という極めて非

効率な結果をもたらすことになってしまいました。多種多様な PLCを使っているシステム設計者にとっては各々のツールに精通したエンジニアを育成することに時間と費用がかかるだけでなく PLCを変更する際のプログラム移植については気の遠くなるような作業を強いられてきました。

  PLCのプログラミング言語の国際規格、IEC61131-3(Programmable controllers-Part 3:Programminglanguage)はもともと 1977 年にフランスで誕生した規格が、その後 1993 年に国際規格「IEC1131-3」として制定され、追って 1996 年に改定されたもので、制御用の PLC のプログラミングを行うツールのオープン化・統一化を意図するものです。

  使用できる言語と取扱いの詳細、変数の振り方、専門用語、シンボル表記などの統一を図るだけでなく

今までラダープログラムだけでは困難であった数値演算やループ演算を簡単に実行できる関数記述式の言語

も含めて規格化しています。また IEC61131-3は独立した規格ではなく、関連する通信規格や安全規格との整合性を保ちながら、より洗練されたものとするための改定作業が現在も続けられています。

オープン化や外圧に弱い日本市場にもこの波を無視できない状況になってきており、従来のベンダーソフト

ツールにも IEC61131-3準拠の言語が逐次採用されるなど、現在日本市場においても急速に普及が進んでおります。各ベンダーがこの規格に準拠するように努力することによって、ユーザをいわゆるソフトウェア・ク

ライシスから開放し、ユーザはより効率的にプログラム開発に集中できるようになることは間違いありませ

ん。その意味でもこの IEC-61131-3を勉強し、精通しておくことが大きな飛躍につながることと確信します。

  現在この PLC プログラミングツールの標準化を推進しているのが「PLCopen 協会」で、世界を代表する大手制御機器メーカが参加しており、今後益々オープン化が進むこととなります。以下は現在「PLCopen協会」に参加している企業のリストで、その他 IEC61131-3 詳細などについては「PLCopen 協会」のホームページを参照してください。

●PLCopenのサイト http://www.plcopen.org/●PLCopen Japanのサイト http://www.plcopen-japan.jp/

<PLC openに参加している企業>日本 富士電機、東芝、横河電機、オムロン、デジタル

ドイツSIEMENSを含む約 20社(ドイツ三菱電機、ドイツ松下電器産業を含む)

米国 Rockwell Software社を含む約 8社その他 欧州 ABB社を含む 10数社他 韓国、ブラジル等 数社

2004/06月現在

Page 9: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

2-1

2 入出力データと変数の関係

2-1 ワゴ I/O システムの入出力データについて

各々のモジュールは固有のビット幅(内部ビット幅)を持っています。アナログモジュールであれ

ば 1チャンネルあたり 16ビット、デジタルモジュールであれば内蔵点数に応じたビット幅を持っていますが、モジュールを組み立てた場合、組み立てた順序(コンフィグレーション)に従って入出

力のビットが割当てられて、ビット構成が決定されます。

ビット割り当てのルール

1)入力と出力は別々に割り当てを行います。2)バスカップラーに近いモジュールから順番にビットが割り当てられます。3)デジタル入出力モジュールとアナログモジュール等が混在している場合、アナログモジュールが先に、その後デジタルモジュールが割り当てられます。

4)カウンターモジュール、RS232Cモジュールは入力と出力両方にビットが割り当てられます。デジタルモジュールと混在する場合、割り当て順序は先になります。

Page 10: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

2-2

2-2 IEC61131規格における変数宣言

IEC61131 の場合、デフォルトで使える入出力変数は「%~」で始まります。入力(I)、出力(Q)内部接点(M)の 3種類があり、それぞれ最大 512ワード(8192ビット)を準備しています。これ以外にユーザが定義して使える変数(メモリ)がありますが、これについては 7章で紹介します。

各種変数と設定範囲プログラミングツール内でのアドレスの割

り当て方(IEC61131規格における変数)ワゴ I/Oモジュールへの

割り当て例

%IW0  ~  %IW1 AI 2ch(32ビット)%IW2  ~  %IW3 AI 2ch(32ビット)%IX4.0  ~  %IX4.3 DI 4ch( 4ビット)%IX4.4  ~  %IX4.7 DI 4ch( 4ビット)%IX4.8  ~  %IX4.11 DI 4ch( 4ビット)%IX4.12  ~  %IX4.15 DI 4ch( 4ビット)

ワード゙単位で指定

%IW0~%IW511∥

ビット単位で指定

%IX0.0~%IX511.15 ↓ ↓ワード番地 ビット番地

バイト単位で指定

%IB0~%IB1023

%QW0  ~  %QW1 AO 2ch(32ビット)%QW2  ~  %QW3 AI 2ch(32ビット)%QX4.0  ~  %QX4.3 DI 4ch( 4ビット)%QX4.4  ~  %QX4.7 DI 4ch( 4ビット)%QX4.8  ~  %QX4.11 DI 4ch( 4ビット)

ワード゙単位で指定

%QW0~%QW511∥

ビット単位で指定

%QX0.0~%QX511.15  ↓    ↓ワード番地 ビット番地

バイト単位で指定

%QB0~%QB1023

ワード゙単位で指定

%MW0~%MW511∥

ビット単位で指定

%MX0.0~%MX511.15  ↓    ↓ワード番地 ビット番地

バイト単位で指定

%QB0~%QB1023

左に同じ

内部で演算するための変

数(メモリ)なので入出

力モジュールとは直接関

係なし。

自己保持メモリとして最

大%MW4095まで使用できます。(※)

※自己定義した変数にリテイン機能を使用する場合は、内部接点メモリ(%M領域)は使用しないでください。両者のデータが交錯する可能性があります。内部接点は%MW0~%MW4095まで使用できますので、これをすべてリテインメモリとして使用することも可能です。

Page 11: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

3-1

3 プログラムの作成手順

3-1 プログラム全体の構成IEC61131ではプログラム構成要素(Program Organization Unit)を組み合わせてプログラム全体が構成されるようになっています。具体的にはメインプログラムの下に各プログラムやファンクションブ

ロック(FB)が配置されます。自分で作成したサブプログラムやメインプログラムについてはPLC_PRGという名前で登録します。

3-2 変数の定義プログラムチャート領域に新しい変数を書き込むと、自動的に変数定義用のウィンドウが現れます。

ここで変数の型を選択後、「OK」を押すとその名前の変数が定義されます。トップメニューから[Edit]→[Auto Declare]でもこのウィンドウを出すことができます。

Page 12: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

3-2

3-3 変数定義とテーブル表示プログラムの表示部分は変数宣言部(上半分)とプログラム部(下半分)に分かれますが、変数宣言

の部分は言語記述式がデフォルトになっていますが、右クリックをして Declarations as tablesを選ぶと、表形式の表示になります。

3-4 ステップの追加方法ラダー(LD)やファンクションブロック(FBD)でプログラムを作成時、プログラムステップ追加はトップメニュー[Insert]をプルダウンして、[Network(after)][Network(before)]で行います。

言語記述式

表形式

Page 13: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

3-3

3-5 演算素子(F unction)・ファンクションブロック(FB)の呼び出し方

演算素子は[Insert]→[Box]を選ぶと論理演算の「AND」が表示されますので、ここを書き換えることによって任意の演算素子が選択できます。標準で装備している演算素子あるいは FB の場合、ここが青色に変わりますので、タイプされた関数が存在するかどうか確認できます。

標準で装備されているFunctionあるいはユーザが作成したライブラリから探して呼び出すためには以下のようにトップメニューの[Edit]→[Input Assistance][F2]keyを押して Help Managerを表示させることによって選択します。

Page 14: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

3-4

● 予め準備されている主な Function(演算素子)には以下の様なものがあります。 <論理演算素子> <数値演算素子>

AND かつ ADD 加算

OR または MUL 乗算

XOR ビットデータ排他的論理和 SUB 減算

NOT ビットデータ反転 DIV 除算後の商

MOD 除算後の余り

SIZEOF 変数や関数のバイトサイズを求める

 <ビットシフト演算素子> <データ選択素子>SHL 左へ指定数だけビットシフト SEL 真(TRUE)偽(FALSE)、2つの値から 1つを選択SHR 右へ指定数だけビットシフト MAX 2つの値の大きい方を選択して出力ROL 左へ指定数だけビット回転 MIN 2つの値の小さい方を選択して出力ROR 右へ指定数だけビット回転

 <比較演算素子>    <変換素子>GT 比較される値が大のとき真(TRUE) BOOL_TO_INT BOOL値から整数値へLT 比較される値が小のとき真(TRUE) BOOL_TO_STRING BOOL値をそのまま文字列へLE 比較される値が以下のとき真(TRUE) BYTE_TO_BOOL BYTE値が 1以上のとき TRUEGE 比較される値が以上のとき真(TRUE) INT_TO_BOOL 0以外の整数値のとき TRUEEQ 比較して等しいとき真(TRUE) STRING_TO_BOOL ‘TRUE’の文字列入力で TRUENE 比較して等しくないとき真(TRUE) REAL_TO_INT 実数値を四捨五入して整数値へ

 <数値演算素子>

ABS 絶対値を求める COS ラジアン値を入力してコサイン値を求める

SQRT 平方根を求める TAN ラジアン値を入力しタンジェント値を求める

LN 自然対数値を求める(底は e) ASIN アークコサイン値(ラジアン)を求める

LOG 常用対数値を求める(底は 10) ACOS アークコサイン値(ラジアン)を求める

EXP eのべき乗を求める ATAN アークタンジェント値(ラジアン)を求める

SIN ラジアン値を入力してサイン値を

求めるEXPT 任意の入力値のべき乗を求める

 <文字列演算素子>

LEN 文字列の文字数を INTで出力。 CONCAT 2つの文字列を接続して 1つの文字列にする。

LEFT 入力された文字列の先頭から指定さ

れた文字数(INT)だけ出力。 RIGHT 入力された文字列の最後から指定さ

れた文字数(INT)だけ出力。

MID入力された文字列の先頭(先頭文字が

1)から数えて、指定された位置と長さの文字列を抜き出す。

INSERT入力された文字列の先頭(先頭文字が

1)から指定された位置の後に文字列を挿入。

DELETE入力された文字列の先頭(先頭文字が

1)から数えて、指定された位置と長さの文字列を削除する。

REPLACE

入力された文字列の先頭(先頭文字が

1)から数えて、指定された位置と長さの文字列を削除して、その位置に指

定された文字列を挿入。

FIND

指定された文字列がある位置を文字

列の先頭(先頭文字が 1)から数えて幾つのところにあるか。同じ文字列が

複数あるときは一番先頭の位置。

Page 15: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

3-5

3-6 LD(ラダー)における要素入力方法

LDでプログラムを作成するときはメニュー右上に要素入力のアイコンが表示されます。プログラムチャート上でカーソル指定(選択された所が点線で表示される)した後、アイコンボタンを押します。

3-7 FBD(ファンクションブロックダイアグラム)における要素入力方法

FBでプログラムを作成するときはメニュー右上に要素入力のためのアイコンが表示されます。プログラムチャート上でカーソル指定(選択された所が点線で表示される)した後、アイコンボタンを押し

ます。

右クリックで選択メニューを

表示させた場合。

トップメニューの

記号で選ぶ場合

Page 16: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

3-6

3-8 LDおよび F BD におけるジャンプ命令とリターン命令

LDあるいは FBでプログラムを作成するときにループ処理等の作成に便利なのがジャンプ命令とリターン命令です。

<1>リターン命令FBD(ファンクションブロックダイアグラム)あるいは LD(ラダー)ではステップ順に上から処理を実行していきますが、リターン素子の前の変数に「TRUE」が入力されている限りそのステップをプログラムの最終ステップと判断します。すなわちそれ以降のステップは実行しません。

上の例では「Ring_Check_ok」という BooL値変数が反転されてリターン素子に入力されていますが、「Ring_Check_ok」が「TRUE」にならない限りステップ 0012 以降のステップは実行されず、0012で折り返されます。

Ring_check_ok が「FALSE」のときは、

常に Returnに「TRUE」が入力されてい

る(反転入力されている)ので 0012 ス

テップまでしか実行されない。

Ring_check_ok が「TRUE」になると

Returnに「FALSE」が入力されるのでス

テップ 0013以降も実行される。

Page 17: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

3-7

<2>ジャンプ命令同じくステップ上でジャンプ命令を設定することができます。ジャンプ命令に入力されている値が

「TRUE」のとき、指定されたステップへジャンプを実行します。

■ LDにおけるジャンプ命令の例

kが 255以下である場合は LEの出力が TRUE になるので、

毎回ステップ 0002までジャンプします。ステップ 0003では

毎回インクリメントしているので kの値は一つずつインクリ

メントされ、k=256 になった時点で LE の出力は FALSE に

なり、ループ処理を抜けます。

<ポイント>

ここではステップ 0002 に「LOOP」という名称を設定して

います。ステップが追加されてこの部分のステップ番号が変

わっても「LOOP」の名称で指定しておけば、自動的にここ

までジャンプします。

初期値として k=0を設定してここからスタートします。

initial_bit が True の場合に

限ってステップ 0002 を飛

び越えてステップ 0003 ま

でジャンプします。

Page 18: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

3-8

3-9 LD(ラダー)における FBの挿入方法

① ライン上に直接 FBを挿入するラダープログラムの場合、左右の母線を結ぶ横線は BOOL値を示します。ここに BOOL値の入力を持つような FBを挿入することができます。

② LDにおける Enable入力FBの実行を BOOL値で制御したいときには Enable入力を行います。[Insert]のプルダウンメニューから[Box with EN]を選んで選択して関数 BOXを表示した後、挿入したい FBの名前をアルファベットの大文字でタイプします。

接点入力入力ON/OFFをカウントする回路

Page 19: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

3-9

3-10 FBの追加挿入

複数のファンクションブロックあるいはファンクションを接続していくときは後ろから入力側に追加

していきます。入力端子の付け根をカーソルで指定して右クリックをした後、「Box」を挿入していきます。

3-11 FBの信号名指定入力

ファンクションブロックの出力を別のファンクションブロックの入力端子に接続するときはファンク

ションブロック出力の「定義名.信号名」で入力します。

Page 20: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

4-1

4 変数の特殊な扱い

4-1 グローバル変数とは?変数を宣言するための定義ウィンドウにおいては Classの項目がデフォルトで「VAR」(そのルーチン中でのみ使える変数)になっています。例えばある変数をどのルーチンの中でも使えるようにするに

は VAR_GROBAL(グローバル変数)として定義します。

グローバル変数をモニタするには表示画面左下のResourcesをクリックしてResourcesメニュー画面の Grobal_Variablesを選択することによって確認・モニタすることができます。

グローバル変数の表示

グローバル変数の選択

Page 21: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

4-2

4-2 データ保持設定(リテイン)電源が切れてもデータを保持する不揮発性メモリは、8kバイト分を充てることができます。定義した変数を宣言する定義ウィンドウ右端の RETAINのチェックボックスを ONにして登録してください。尚、電源投入後はプログラムが起動され変数の値が変化してしまいますので、電源投入時の最初の 1周期内で RETAINの数値を必要な部分に代入(アサイン)するプログラムを作成する必要があります。

注)自己定義した変数にリテイン機能を使用する場合は、内部接点メモリ(%M 領域)は使用しないでください。両者のデータが交錯する可能性があります。内部接点は%MW0~%MW4095まで使用できますので、これをすべてリテインメモリとして使用することも可能です。

4-3 入出力変数変数定義テーブルでは以下の 4つの定義が可能です。

VAR_INPUT: そのサブプログラム内に外からデータを受け取

る場合に定義する変数。

VAR_OUTPUT: そのルーチン内で得られたデータを外へ渡す場

合に定義する変数。

VAR_IN_OUT: 外からデータを受け取る変数ですが、そのサブルーチン内にあるデータをこの変数に割り当

てておくと、外からデータを受け取る以外の時は出力変数として扱うことができます。

VAR_GROVAL: プログラム内のどのサブルーチン内でも使用できる共用変数。

Page 22: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

5-1

5 サブルーチンの作成

5-1 サブルーチンの作り方

5-2 メインプログラムからサブルーチンを呼び出す① トップメニューから[Insert]→[Function_Block]を選びます。

② Help Managerが出てくるので、[User defined Function Block]を選ぶと既に作成したルーチンが表示される。

③ ファンクションブロックとして選択した場合は、メインプログラムの中でこれを変数定義する。

目的の言語を選びます

左欄の POUの名前がある所へカーソルを移動して右クリックをします。

そして「Add_Object」を選択します。

①Program:データ処理がこのルーチン内で完結し、入出力変数も無い場合。②Function Block:単なる計算ルーチンではなく、プログラム中にメモリや特殊な変数あるいはタイマーなどの FBを使っていて、しかも入出力変数がある場合。③Function:プログラム中に Function(演算素子)しか使っておらず、入出力変数がある場合。

Page 23: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

5-2

5-3 Enable 実行

① トップメニューの[Insert]をプルダウンして[Box with EN]を選択します。② ANDの関数ブロックが表示されるので、挿入したい FBあるいは PRGの名前を直接タイプする。

Page 24: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

6-1

6 作成プログラムの転送(流し込み)

作成したプログラムをフィールドバスコントローラ(バスカプラ)に書き込むには、専用のサービスポートあ

るいはバス(750-842であれば Ethernet経由)のどちらかを使います。サービスポートは専用ケーブル(750-920)を挿入するための開閉扉になっています。

6-1 サービスポート経由の接続WAGO-I/O-PRO 32 とコントローラ間の通信方法はパラメータ設定にて変更できます。750-920専用ケーブルにてシリアルデータ転送を行うには以下のような手順で行います。

① 「Online」メニューから「Communication Parameters」 を選択します。初期状態ではダイアログ中にデータはありません。

サービスポートとパソコンのシリアル通信ポート

を専用ケーブルで接続する。

Page 25: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

6-2

② 通信の新チャンネルを設定するには、まず「New」ボタンを押します。そうすると、「Communication Parameters:New Channels」ダイアログが現れます。

③ 「Device」リストから「Serial(RS232)」を選択し、「Name」の欄に任意のドライバ名(自分で決めください)を入れ「OK」をクリックし、ダイアログを終了します。ここで「CommunicationParameters」ダイアログが再度表示されます。

④ このとき RS232シリアル通信の条件がフィールド内に表示されます。各値は MODBUSコントローラのデフォルト設定値に対応しています。従って、ここでは変更の必要はありません。

Page 26: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

6-3

⑤ 「OK」をクリックすると、この時点で作成したプログラムファイルの一つの設定値として RS232Cシリアル通信での接続条件として登録されます。以降このプログラムファイルを開くと、ここで選択

された通信方法の情報も自動的にロードされます。

⑥ その後、「Online」メニューから「Login」を選択すると以下のようにバスコントローラを選択する画面が出てきますので、接続しているモデルを選択して再度「Login」で接続します。

※注):シリアル通信 Modbusコントローラ(750-812, 750-814, 750-815, 750-816)をサービスポートから接続するときにはコントローラの動作モードスイッチは中央または上側に設定、アドレススイ

ッチは "00" にして下さい。

⑦ プログラムをダウンロードして良いかどうかを聞いてきますので「はい(Y)」をクリックするとダウンロードを開始します。

⑧ プログラムがロードされたら「Online」メニューから「Run」を選択します。するとプログラム処理が開始します。

⑨ 「Stop」は Running中のプログラムを一時停止します。

⑩ 「Reset」ボタンは Running中のプログラムをストップして、すべてのメモリとバッファを初期状態にし「Stop」に戻します。

⑪ 「Flash」をクリックすると、ダウンロードしたプログラムをフラッシュ領域に書き込んでプログラムを固定します。

Page 27: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

6-4

6-2 プログラム動作のハードスイッチ750-842 コントローラの上面下端に下図のようなプログラムモード操作用のスイッチが格納されている窓があります。

 このスイッチの各位置の意味は以下のとおりです。

スイッチの位置 機能

中央から上側に移動 プログラムの実行をスタートする

上側から中央に移動 プログラムの実行を停止する

下側にセット ファームウェアのローディング用、ユーザ不使用

スイッチの押し下げ

ハードウェアリセット

全出力とフラッグがリセットされる。変数は 0または FALSEまたは初期値になる。

ハードウェアリセットは Run、Stopのいずれの位置でも実行することができる。

<プログラムを 750-842内のフラッシュメモリに書き込むとき>

1. 上記のモードスイッチを中央または上側にセットします。Online-Login を選択するとプログラムが750-842にローディングされます(ロード要求に対し OKを押したとき)。

2. Online メニュー中の Flash を選択するプログラムがフラッシュメモリに書き込まれます。この後Logoutを実行します。

3. スイッチが中央にあるとき -上側に移動するとプログラムはフラッシュメモリから RAM に転送さ

れます(Run状態になる)。このとき 750-842は単独で動作します。4. スイッチが上側にあるとき -ハードウェアリセットを実行するとプログラムはフラッシュメモリか

ら RAMに転送されます。

出荷された直後でプログラムが書き込まれていない状態ではコントローラはバスカプラ(750-342)と同じ機能で動作します。

Page 28: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

6-5

6-3 フィールドバス経由の接続(例:Ethernetの場合)

① 「New」ボタンを押すと「Communication Parameters: New Channels」ダイアログが現れます。② 「Device」リストから「Ethernet_TCP_IP」を選択します。

③ 「Name」の欄に任意のドライバ名(自分で決めてください)を入れ「OK」をクリックします。Channelsボックスに新しいドライバ名が表示されます。

④ IP addressの行の Valueにターゲットの IPアドレスをタイプします。「OK」ボタンを押し、ダイアログを終了します。

⑤ 「OK」をクリックすると、この時点で作成したプログラムファイルの一つの設定値として Ethernet通信での接続条件として登録されます。以降このプログラムファイルを開くと、ここで選択された通

信方法の情報も自動的にロードされます。

Page 29: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

6-6

⑥ その後「Online」メニューから「Login」を選択すると以下のようにバスコントローラを選択する画面が出てきますので、接続しているモデルを選択して再度「Login」で接続します。

※これ以降は前項 6-1(サービスポート経由の接続)の⑦以降と同じです。

6-4 モニタリングWAGO-IO-PRO とコントローラを接続したまま RUN の状態にしますと、以下のように動作状況をモニタすることができます。定義テーブルの部分には定義した変数や関数内のパラメータがリアルタイ

ムで表示されます。また、プログラムステップ内に書かれたプログラム部分には、変数に入っている

値がリアルタイムで表示されます。

定義された関数内 ET力名やパラメ

ータの値は、

.<入出力またはパラメータ名>

で表示されます。

BOOL値は TRUE(青色)と FALSE

(黒)で表示されます。

定義した入出力変数は現在の値が

変数名=○○○○.○○

のように表示されます。

Page 30: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

6-7

6-5 データの強制設定プログラム駆動中に強制的に変数のデータを変更したい場合は、以下のような手順で行います。

トップメニューの Online をクリックしてプル

ダウンメニューを出し Force_Value にすると、

水色に表示されていた値がすべての個所で強

制入力され、その部分が赤色で表示される。

強制入力を解除するときは、Release_Forceを

クリックする。

③ 強制設定

④ 強制設定されている値の表

強制入力されている部分が赤色で表示される。

① BOOL値の場合

② 数値の場合

変更したい BOOL 値表示をダブルクリック

するとその横に<:=TRUE>のように変更

する値が青色で表示される。BOOL値の場合

は、ダブルクリックするごとに TRUE と

FALSEが交互に変わる。

BOOL値以外の変数については、ダブルクリッ

クすると変更するためのダイアログが表示さ

れるので、New_Vasule の部分に変更したい数

値を入力して OKを押す。すると変数名の横に

変更したい数値が青色で表示される。

Page 31: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

7-1

7 メモリバッファを自分で定義するには?

7-1 メモリーアレイの定義方法① 変数を定義するウィンドウが表示された時点で ARRAYを選ぶ。

② 次に Array boundariesというウィンドウが表示されるのでスタートと終了の数値(整数で)を入力

する。

③ 次に Arrayの変数型(Type)を入力する。

このボタンを押すと変数型を選択するウィンドウが表示されます。

Page 32: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

7-2

7-2 メモリーアレイの使い方メモリーアレイは通常の変数として扱えますが、一度に多くのデータを扱うときに便利です。

メモリーアレイは同じ変数型の一連のデータを大量に扱う場合に使用します。

例えば毎秒ごとに入力される WORD 型のデータがある場合、下記のように n 個のワードデータ配列として扱うことができます。各の変数を指定するには[ ]内の数値(整数)を変更するだけで簡単

に実行できます。

Buffer[1]Buffer[2]Buffer[3]  ・

  ・

  ・

Buffer[n]

特にループ処理を行う場合には、Buffer[k]として k を整数型で定義して、k=1 から k=n までを繰り返し代入するなどのプログラムが簡単に行えます。

<例>

右の例では WORD型のメモリーアレイ Buffer[0]~ Buffer[255]のデータを Data[255]~ Data[0]まで各々代入するプログラムです。

整数型で kという変数を定義してこれを[ ]内

で数式として扱って k=255に達するまでループを繰り返して各々のワードを代入する例です。

初期値の設定

代入動作

一動作毎に kをインクリメントする。

kが 255以下ならステップらステップ 0002

(LOOP)へジャンプ。

Page 33: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

8-1

8 新しい関数とライブラリ

8-1 新規ライブラリの追加標準で使える関数は、起動時に自動的に読込まれるスタンダードライブラリ(Standard.lib)のものを使っています。これ以外にも多くのライブラリを使うことができます。例えば Ethernetで独自のパケットを作ったりする場合には Ethernet.libが必要になります。必要なライブラリは以下の手順で追加します。

① トップメニューの[Window]をクリックし、プルダウンして Library Managerモードにする。

② 次にトップメニューの[Insert]をプルダウンすると[Additional Library](追加ライブラリ)を挿入するモードになります。自動的にライブラリフォルダが開きますので目的のライブラリファイルを選択します。

③ ライブラリマネージャ上で新しいライブラリ

が追加されたことが表示されます。

④ ライブラリマネージャウィンドウを閉じて、

Library Managerモードを終了します。

※注)プログラムを作成する過程でライブラリを追加していくと、そのプログラムファイルに同期し

てライブラリ情報が記録されますので、次にそのプログラムファイルを開いたときには、過去に追加

したライブラリ情報はすべて自動的に呼び出されます。

しかしながら必要のないライブラリを多く追加していくと、プログラムの容量が自動的に大きくなっ

てしまいますのでライブラリの追加は必要最小限に留めておいてください。

Page 34: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-1

9 よく使われる演算素子(Function)・ファンクションブロックこの章ではプログラムで利用する標準ライブラリを解説しています。EC標準命令WAGO-I/O-PRO 32 では全ての IEC標準命令(標準演算子)をサポートしています。

9-1 演算素子(F unction)

分類 命令 機能

ADD 加算

MUL 乗算

SUB 減算

DIV 除算後の商

MOD 除算後の余り

INDEXOF オブジェクトインデックス取得

数値演算素子

SIZEOF 変数や関数のバイトサイズを求める

AND 論理積(かつ)

OR 論理和(または)

XOR ビットデータ排他的論理和論理演算素子

NOT ビットデータ反転

SHL 左ビットシフト

SHR 右ビットシフト

ROL 左回転ビットシフト演算素子

ROR 右回転

SEL 二者択一

MAX 二者の大きい方の値を選択データ選択素子

MIN 二者の小さい方の値を選択

GT IN1 > IN2LT IN1 < IN2LE IN1 <= IN2GE IN1 >= IN2EQ IN1 = IN2

比較演算素子

NE IN1 <> IN2

Page 35: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-2

演算素子

WAGO-I/O-PRO 32は、全ての IEC演算子をサポートしています。これらの演算素子はすべてのプロジェクトにおいて使用する事が出来ます。

ADD:加算(FBでの例)

機能

加算の結果を Var1に出力します。

引数

変数の型(BYTE,WORD,DWORD,SINT,USINT,INT,UINT,DINT,UDINT)又は実数型(REAL)ここで扱われているすべての数値は同じ変数の型である必要があります。また最後の結果、Var1は 7と 2の型と同等かそれ以上の型である必要があります。

(ILでの例)LD 7ADD 2, 4, 7ST Var1

(STでの例)Var1:= 7+2+4+7;(*= 20*)

MUL:乗算(FBでの例)

機能

乗算の結果を乗算 Var1に出力します。

引数

変数の型(BYTE,WORD,DWORD,SINT,USINT,INT,UINT,DINT,UDINT)又は実数型(REAL)ここで扱われているすべての数値は同じ変数の型である必要があります。また最後の結果、Var1は 7と 2の型と同等か、それ以上の型である必要があります。

2 2

Var17

2ADD ADDADD

Var17

4 72

MUL MULMUL

Page 36: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-3

(ILでの例)LD 7MUL 2, 4, 7ST Var1

(STでの例)Var1:= 7*2*4*7;(*= 392*)

SUB:減算(FBでの例)

機能

減算の結果を Var1に出力します

引数

変数の型(BYTE,WORD,DWORD,SINT,USINT,INT,UINT,DINT,UDINT)又は実数型(REAL)ここで扱われているすべての数値は同じ変数の型である必要があります。また最後の結果、Var1は 7と 2の型と同等か、それ以上の型である必要があります。

(ILでの例)LD 7SUB 2ST Var1

(STでの例)Var1:= 7-2;(*= 5*)

DIV:除算の商(FBでの例)

機能

除算の商を Var1に出力します。

Var1

2

8DIV

Var1 7

2MUL

Page 37: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-4

引数

変数の型(BYTE,WORD,DWORD,SINT,USINT,INT,UINT,DINT,UDINT)又は実数型(REAL)ここで扱われているすべての数値は同じ変数の型である必要があります。また最後の結果、Var1は 8と 2の型と同等か、それ以上の型である必要があります。

(ILでの例)LD 8DIV 2ST Var1

(STでの例)Var1:= 8 / 2;(*= 4*)

MOD:除算の余り(FBでの例)

機能

除算の余りを Var1に出力します。

引数

変数の型(BYTE,WORD,DWORD,SINT,USINT,INT,UINT,DINT,UDINT)又は実数型(REAL)ここで扱われているすべての数値は同じ変数の型である必要があります。また最後の結果、Var1は 9と 2の型と同等か、それ以上の型である必要があります。

(ILでの例)LD 9MOD 2ST Var1

(STでの例)Var1:= 9 MOD 2;(*= 1*)

Var1

2

9MOD

Page 38: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-5

INDEXOF:オブジェクトインデックスを求める(FBでの例)

機能

POUのオブジェクトインデックスを求めます。

引数

POU名 (例 “POU2“)整数型(INT) インデックス値

(STでの例)Var1:= INDEXOF(POU2);

SIZEOF:変数や関数のバイトサイズを求める(FBでの例)

機能

指定データのサイズを求めます。

引数

変数名 (例 “Buffer“)整数型(INT) 占有バイト数

解説

結果はバイト数(INT)で返ります。

(STでの例)Var1:= SIZEOF(Buffer);

Var1Buffer SIZEOF

Var1‘POU2’ INDEXOF

Page 39: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-6

論理演算素子

AND:論理積(かつ)(FBでの例)

機能

論理積(AND)の結果を Var1に設定します。

引数

整数型(BOOL,BYTE,WORD,DWORD)

(ILでの例)Var1 BYTELD 2#0000_1111AND 2#0101_0101ST Var1

(STでの例)Var1:= 2#000_1111 AND 2#0101_0101;(*= 2#0000_0101*)

OR:論理和(または)(FBでの例)

機能

論理和(OR)の結果を Var1に出力します。

引数

整数型(BOOL,BYTE,WORD,DWORD)

(ILでの例)Var1 BYTELD 2#0000_1111OR 2#0101_0101ST Var1

Var1

2#01010101

2#00001111 AND

Var1

16#55

16#FFOR

Page 40: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-7

(STでの例)Var1:= 2#0000_1111 OR 2#0101_0101;(*= 2#0101_1111*)

XOR:ビットデータの排他的論理和(FBでの例)

機能

排他的論理和(XOR)の結果を Var1に出力します。

引数

整数型(BOOL,BYTE,WORD,DWORD)

(ILでの例)Var1 BYTELD 2#0000_1111XOR 2#0101_0101ST Var1

(STでの例)Var1:= 2#0000_1111 XOR 2#0101_0101;(*= 2#0101_1010*)

Var1

2#0101_0101

2#0000_1111XOR

Page 41: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-8

NOT:ビットデータの反転(FBでの例)

機能

反転(NOT)の結果を Var1に出力します。

引数

整数型(BOOL,BYTE,WORD,DWORD)

(ILでの例)Var1 BYTELD 2#1001_0011NOTST Var1

(STでの例)Var1:= NOT 2#1001_0011;(*= 2#0110_1100*)

Var1 2#1001_0011NOT

Page 42: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-9

ビットシフト演算素子

SHL:左ビットシフト(FBでの例)

機能

対象 inの値を指定した nビット数分左シフトします。

引数

整数型(BYTE,WORD,DWORD)in シフトされるデータ

n シフトするビット数

解説

erg:= SHL(in, n)

左シフト命令では指定の nビット分左へシフトすると共に右ビットへは 0を補充します。

例)

ergが WORDの場合00000000 01001011 の 2ビット左シフトの結果は 00000001 0010110000000000 01001011 の 4ビット左シフトの結果は 00000100 10110000

ergが BYTEの場合01001011 の 2ビット左シフトの結果は 0010110001001011 の 4ビット左シフトの結果は 10110000

(ILでの例)LD 16#45SHL 2ST erg

(STでの例)erg:= SHL(16#45, 2);

erg

n

inSHL

Page 43: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-10

SHR:右ビットシフト(FBでの例)

機能

対象 in値を指定した nビット数分右シフトし結果を ergに出力します。

引数

整数型(BYTE,WORD,DWORD)in シフトされるデータ

n シフトするビット数

解説

erg:= SHR(in, 2)

右シフト命令では指定の nビット分右へシフトすると共に左ビットへは 0を補充します。

例)

ergが WORDの場合01001011 00000000 の 2ビット右シフトの結果は 00010010 1100000001001011 00000000 の 4ビット右シフトの結果は 00000100 10110000

ergが BYTEの場合01001011 の 2ビット右シフトの結果は 0001001001001011 の 4ビット右シフトの結果は 00000100

(ILでの例)LD 16#45SHR 2ST erg

(STでの例)erg:= SHR(16#45, 2);

erg

n

   inSHR

Page 44: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-11

ROL:ビット左回転(FBでの例)

機能

対象 inの値を指定した nビット数分左回転し結果を ergに出力します。

引数

整数型(BYTE,WORD,DWORD)in 回転されるデータ

n 回転するビット数

解説

erg:= ROL(in, n)

左回転命令では指定の nビット分左へ回転します。

例)

ergが WORDの場合01001011 00000000 の 2ビット左回転の結果は 00101100 0000000101001011 00000000 の 4ビット左回転の結果は 10110000 00000100

ergが BYTEの場合01001011 の 2ビット左回転の結果は 0010110101001011 の 4ビット左回転の結果は 10110100

(ILでの例)LD 16#45ROL 2ST erg

(STでの例)erg:= ROL(16#45, 2);

erg

n

   inROL

Page 45: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-12

ROR:ビット右回転(FBでの例)

機能

対象 inの値を指定した nビット数分右回転し結果を ergに出力します。

引数

整数型(BYTE,WORD,DWORD)in 回転されるデータ

n 回転するビット数

解説

erg:= ROR(in, n)

右回転命令では指定の nビット分右へ回転します。

例)

ergが WORDの場合00000000 01001011 の 2ビット右回転の結果は 11000000 00010010

ergが BYTEの場合01001011 の 2ビット右回転の結果は 1101001001001011 の 4ビット右回転の結果は 10110100

(ILでの例)LD 16#45ROR 2ST erg

(STでの例)erg:= ROR(16#45, 2);

erg

n

   inROR

Page 46: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-13

データ選択素子

SEL:データの選択(二者択一)(FBでの例)

機能

条件 TRUEにより 3,4から 1つを選択し OUTに出力します。選択条件 TRUEなら 4, FALSEなら 3が選択されます。

引数

Var1 BOOL型整数型(BYTE,WORD,DWORD)OUT 3と同一型4 3と同一型

解説

OUT:= SEL(TRUE,3,4)Var1= FALSE のとき OUT ← 3Var1= TRUE のとき OUT ← 4

(ILでの例)LD FALSESEL 3, 4ST OUT

(STでの例)OUT:= SEL(FALSE, 3, 4);(*= 3*)

MAX:大きい方の値の選択(FBでの例)

機能

指定の変数のうち大きな値を OUTに出力します。

4

3

Var1 OUTSEL

7740

OUT90

30MAX MAXMAX

Page 47: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-14

引数

整数型、実数

30 90と同一型Var1 90と同一型

解説

OUT:= MAX(90,30)90と 30のうち大きな値が OUTに出力されます。

(ILでの例)LD 90MAX 30MAX 40MAX 77ST OUT

(STでの例)OUT:= MAX(90,30);(*= 90*)

MIN:小さい方の値の選択(FBでの例)

機能

指定の変数値で小さい方の値を OUTに出力します。

引数

整数型、実数

30 90と同一型OUT 90と同一型

解説

OUT:= MIN(90,30)90と 30のうち小さな値が OUTに出力されます。

7740

OUT90

30MIN MINMIN

Page 48: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-15

(ILでの例)LD 90MIN 30MIN 40MIN 77ST Var1

(STでの例)OUT:= MIN(90,30);(*= 30*)Var1:= LIMIT(Min, in, Max);(*= 80*)

Page 49: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-16

比較演算素子

GT:Grater Than(<)(FBでの例)

機能

20>30の比較結果を Var1に出力します。

引数

整数型、実数、日付型、文字列

30 20と同一型Var1 BOOL型

解説

20>30であれば Var1は TRUE、それ以外は Var1に FALSEが出力されます。

(ILでの例)LD 20GT 30ST Var1

(STでの例)Var1:= 20>30;(*= FALSE*)

LT:Less Than(>)(FBでの例)

機能

20<30の比較結果を Var1に出力します。

引数

整数型、実数、日付型、文字列

30 20と同一型Var1 BOOL型

Var1

30

20GT

Var1

30

20LT

Page 50: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-17

解説

20<30であれば Var1は TRUE、それ以外は Var1に FALSEが出力されます。

(ILでの例)LD 20LT 30ST Var1

(STでの例)Var1:= 20<30;(*= TRUE:)

LE:Less or Equal(≦)(FBでの例)

機能

20≦30の比較結果を Var1に出力します。

引数

整数型、実数、日付型、文字列

30 20と同一型Var1 BOOL型

解説

20<=30であれば Var1は TRUE、それ以外は Var1に FALSEが出力されます。

(ILでの例)LD 20LE 30ST Var1

(STでの例)Var1:= 20≦30;(*= TRUE*)

Var1

30

20LE

Page 51: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-18

GE:Grater or Equal(≧)(FBでの例)

機能

20≧20の比較結果を Var1に出力します。

引数

整数型、実数、日付型、文字列

20 20と同一型Var1 BOOL型

解説

20>=20であれば Var1は TRUE、それ以外は Var1に FALSEが出力されます。

(ILでの例)LD 20GE 20ST Var1

(STでの例)Var1:= 20≧20;(*= FALSE*)

EQ:Equal(=)(FBでの例)

機能

20=20の比較結果を Var1に出力します。

引数

整数型、実数、日付型、文字列

20 20と同一型Var1 BOOL型

Var1

20

20GE

Var1

20

20EQ

Page 52: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-19

解説

20=20であれば Var1は TRUE、それ以外は Var1に FALSEが出力されます。

(ILでの例)LD 20EQ 20ST Var1

(STでの例)Var1:= 20= 20;(*= TRUE*)

NE:Not Equal(<>)(FBでの例)

機能

40<>40の比較結果を Var1に出力します。

引数

整数型、実数、日付型、文字列

40 40と同一型Var1 BOOL型

解説

40<>40であれば Var1は TRUE、それ以外は Var1に FALSEが出力されます。

(ILでの例)LD 40NE 40ST Var1

(STでの例)Var1:= 40<>40;(*= FALSE*)

Var1

40

40NE

Page 53: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-20

9-2 プログラミングに必要なファンクション分類 命令 機能

アドレスポインタ ADR アドレスポインタ

BOOL_TO変換 BOOL型からの変換TO_BOOL変換 BOOL型への変換INTタイプ変換 整数型の変換

REAL_TO変換 実数型の変換

時間変換 時刻

文字列変換 テキスト情報を保存

変換素子

TRUNC 実数型かた整数型への変換

ABS 絶対値(負の値は正になる)

SQRT 平方根

LN 自然対数

LOG 常用対数

EXP eの指数累乗SIN ラジアンとしての入力 SIN値COS ラジアンとしての入力 COS値TAN ラジアンとしての入力 TAN値ASIN アーク SIN、結果はラジアンACOS アーク COS、結果はラジアンATAN アーク TAN、結果はラジアン

数値演算素子

EXPT 指定した数の累乗

ADR:アドレスポインタ(FBでの例)

機能

ADRは宣言した変数やバッファのアドレスを指定するアドレスポインタです。アドレスは DWORDで表現されますが、これはバスカプラ内でのローカルアドレスです。例えばデータアレイで定義したバッファのデータを

一括して次のファンクションに送るときなどは、このアドレスポインタでその内部アドレスを指定します。

(ILでの例)LD Var1ADRST Var2

Var2 Var1 ADR

Page 54: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-21

変換素子

概要

基本的にどんなタイプでも変換できますが、大きい変数型から小さい変数型への変換は禁じられています。

(例:INTから BYTE、または DINTからWORD)※特別な変換タイプはそれに限りません)

Syntax:<elem.Typ1>_TO_<elem.Type2>

ファンクションブロックの場合は「BOX」をクリックして ○○○○_TO_××××とタイプして、そのタイプした部分が青色になればその変換機能は有効(標準ライブラリに含まれる)であることがわかります。

あるいは Box を表示して[Edit]→[Input Assistance]で Help Manager を表示して Conversion Operatorを選択すると変換可能な関数リストが表示されるので、目的のものを選びます。

Page 55: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-22

BOOL_TO変換機能

BOOLタイプから他のタイプへ変換します。演算表が TRUEの場合、数式タイプへの結果は 1、FALSEの場合は 0となり、STRINGタイプへの結果は TRUE、又は FALSEの文字列になります。

(ILでの例)LD TRUEBOOL_TO_INTST i (結果= *1*)

LD TRUEBOOL_TO_STRINGST str (結果= *TRUE*)

LD TRUEBOOL_TO_TIMEST t (結果= *T#1ms*)

LD TRUEBOOL_TO_TODST (結果= *TOD#00:00:00.001)

LD FALSEBOOL_TO_DATEST dat (結果= *D#1970-01-01*)

LD TRUEBOOL_TO_DTST dandt (結果= *DT#1970-01-01-00:00:01*)

(STでの例)i:= BOOL_TO_INT(TRUE); (結果= *1*)str:= BOOL_TO_STRING(TRUE); (結果= *TRUE*)t:= BOOL_TO_TIME(TRUE); (結果= *T#1ms*)tof:= BOOL_TO_TOD(TRUE); (結果= *TOD#00:00:00.001)dat:= BOOL_TO_DATE(FALSE); (結果= *D#1970*)dandt:= BOOL_TO_DT(TRUE); (結果= *DT#1970-01-01-00:00:01*)

Page 56: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-23

(FBでの例)

TO_BOOL変換機能

他のタイプから BOOL値へ変換します。入力が 0以外の場合は TRUE、又、0と等しい場合は FALSEになります。STRINGタイプ入力の場合は、文字列が在る時は TRUE、文字列が存在しないときは FALSEになります。

(ILでの例)LD 213 (結果= *TRUE*)BYTE_TO_BOOLST b

LD 0 (結果= *FALSE*)INTO_TO_BOOLST b

LD T#5ms (結果= *TRUE*)TIME_TO_BOOLST b

LD ‘TRUE‘ (結果= *TRUE*)STRING_TO_BOOLST b

iTRUEBOOL_TO_INT

(結果= *1*)

strTRUEBOOL_TO_STRING

(結果= *TRUE*)

tTRUEBOOL_TO_TIME

(結果= *T#1ms*)

Page 57: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-24

(FBでの例)

(STでの例)b:= BYTE_TO_BOOL(2#11010101); (結果= *TRUE*)b:= INT_TO_BOOL(0); (結果= *FALSE*)b:= TIME_TO_BOOL(T#5ms); (結果= *TRUE*)b:= STRING_TO_BOOL(TRUE); (結果= *TRUE*)

整数型(INT)のタイプ変換機能

整数型タイプから他の数式タイプへ変換します。

大きい変数型から小さい変数型タイプへ変換を行う場合、情報を失う恐れがあります。また、数式の列の範囲

限度を越えて転換した場合、最初のバイトは数式が無効となります。

(ILでの例)LD 2INT_TO_REALMUL 3.5

(STでの例)si:= INT_TO_SINT(4223);(結果= *127*)

4223(10進法)を SINTに変換すると、127(16進法)として現れます。

b 213BOOL_TO_BOOL

(結果= *TRUE*)

b 0IN_TO_BOOL

(結果= *FALSE*)

b T#5msTIME_TO_BOOL

(結果= *TRUE*)

b TRUESTRING_TO_BOOL

(結果= *TRUE*)

si4223INT_TO_SINT

(結果= *TRUE*)

Page 58: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-25

REAL_TO変換機能

REAL変数値から違うタイプへ変換します。STRING,BOOL タイプ以外の変数値は、一番近い整数値に変換されます。大きい変数型から小さい変数型へ変換を行う場合、情報を失う恐れがあります。

(ILでの例)LD 2.7REAL_TO_INTGE %MW8

(STでの例)I:= REAL_TO_INT(1.5);(結果= *2*)j:= REAL_TO_INT(1.4);(結果= *1*)

時間変換機能

時刻(TIME値)、または持続時間(TIME_OF_DAY値)タイプから違うタイプへ変換します。

(FBでの例)

i 1.5LREAL_TO_INT

T#5ms dwTIME_TO_DWORD

sTOD#00:00:00.012TOD_TO_SINT

T#12ms strTIME_TO_STRING

Page 59: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-26

(ILでの例)LD T#12ms (結果= *T#12ms*)TIME_TO_STRINGST str

LD T#300000ms (結果= *300000*)TIME_TO_DWORDST dw

LD TOD#00:00:00.012 (結果= *12*)TOD_TO_SINTST is

(STでの例)str:= TIME_TO_STRING(T#12ms); (結果= *T#12ms*)dw:= TIME_TO_DWORD(T#5m); (結果= *300000*)str:= TOD_TO_SINT(TOD00:00:00.012); (結果= *12*)

文字列変換機能

文字列変数値(STRING値)から違うタイプへ変換します。文字列変数値(STRING値)が有効な数値表現でなかった場合は演算の結果は 0になります。

(STでの例)b:= STRING_TO_BOOL(TRUE); (結果= *TRUE*)w:= STRING_TO_WORD(abc34); (結果= *0*)t:= STRING_TO_TIME(T#127ms); (結果= *T#127ms*)

TRUNC:(REAL_TO_INT)機能

REAL値から INT値へ変換します。小数点以下の値は無視されます。

(ILでの例)LD 2.7TRUNCGE %MW8

(STでの例)i:= TRUNC(1.9); (結果= *1*)i:= TRUNC(-1.4); (結果= *1*)

Page 60: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-27

計算機能

ABS:絶対値機能

絶対値を求めます。

(ILでの例)LD 2ABSST i

(STでの例)i:= ABSI(-2);(結果= *2*)

SQRT:Square Root(平方根)(FBでの例)

機能

平方根を設定します。

引数

変数の型(BYTE,WORD,DWORD,INT,DINT,REAL,SINT,USINT)又は実数型(REAL)

(ILでの例)LD 16SQRTST q

(STでの例)q:= SQRT(16); (結果= *4*)

q 1

SQRT

Page 61: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-28

LN:Natural Logarithm(自然対数)(FBでの例)

機能

自然対数を求めます。

引数

変数の型(BYTE,WORD,DWORD,INT,DINT,REAL,SINT,USINT,UINT,UDINT,OUT)又は実数型(REAL)

(ILでの例)LD 45LNST q

(STでの例)q:= LN(45); (結果=*3.80666*)

LOG:Logerithm(常用対数)(FBでの例)

機能

常用対数値(底が 10)を求めます。

引数

変数の型(BYTE,WORD,DWORD,INT,DINT,REAL,SINT,USINT,UINT,UDINT,OUT)又は実数型(REAL)

(ILでの例)LD 314.5LOGST q

(STでの例)q:= LOG(314.5) (結果= *2.49762*)

q 45

LN

q314.5

LOG

Page 62: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-29

EXP:Exponential(eの指数累乗)(FBでの例)

概要

eの累乗を求めます。

引数

変数の型(BYTE,WORD,DWORD,INT,DINT,REAL,SINT,USINT,UINT,UDINT,OUT)又は実数型(REAL)

(ILでの例)LD 2EXPST q

(STでの例)q:= EXP(2); (結果= *7.389056*)

SIN:Sine(サイン)(FBでの例)

概要

サイン(正弦)値を求めます。

引数

変数の型(BYTE,WORD,DWORD,INT,DINT,REAL,SINT,USINT,UINT,UDINT,OUT)又は実数型(REAL)

(ILでの例)LD 0.5SINST q

(STでの例)q:= SIN(0.5); (結果= *0.479426*)

q 2

EXP

q 0.5

SIN

Page 63: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-30

COS:Cosine(コサイン)(FBでの例)

機能

コサイン値を求めます。

引数

変数の型(BYTE,WORD,DWORD,INT,DINT,REAL,SINT,USINT,UINT,UDINT,OUT)又は実数型(REAL)

(ILでの例)LD 0.5COSST q

(STでの例)q:= COS(0.5); (結果=*0.877583*)

TAN:Tangent(タンジェント)(FBでの例)

機能

タンジェント(接線)を求めます。

引数

変数の型(BYTE,WORD,DWORD,INT,DINT,REAL,SINT,USINT,UINT,UDINT,OUT)又は実数型(REAL)

(ILでの例)LD 0.5TANST q

(STでの例)q:= TAN(0.5); (結果=*0.546302*)

q 0.5

COS

q 0.5

TAN

Page 64: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-31

ASIN:Arc Sine(アークサイン)(FBでの例)

機能

アークサイン値を求めます。

引数

変数の型(BYTE,WORD,DWORD,INT,DINT,REAL,SINT,USINT,UINT,UDINT,OUT)又は実数型(REAL)

(ILでの例)LD 0.5ASINST q

(STでの例)q:= ASIN(0.5); (結果=*0.523599*)

ACOS:Arc Cosine(アークコサイン)(FBでの例)

機能

アークコサイン値を求めます。

引数

変数の型(BYTE,WORD,DWORD,INT,DINT,REAL,SINT,USINT,UINT,UDINT,OUT)又は実数型(REAL)

(ILでの例)LD 0.5ACOSST q

(STでの例)q:= ACOS(0.5); (結果= *1.0472*)

q 0.5

ASIN

q 0.5

ACOS

Page 65: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-32

ATAN:Arc Tangent(アークタンジェント)(FBでの例)

機能

アークタンジェント値を求めます。

引数

変数の型(BYTE,WORD,DWORD,INT,DINT,REAL,SINT,USINT,UINT,UDINT,OUT)又は実数型(REAL)

(ILでの例)LD 0.5ATANST q

(STでの例)q:= ATAN(0.5); (結果= *0.463648*)

EXPT:Exponential Times(変数の指数累乗)(FBでの例)

機能

変数の指数累乗とその他の変数を求めます。

引数

IN1,IN2の変数型(BYTE,WORD,DWORD,INT,DINT,REAL,SINT,USINT,UINT,UDINT,OUT)又は実数型(REAL)

(ILでの例)LD 7EXPT 2ST Var1

(STでの例)q:= EXPT(7,2); (結果=*49*)

Var1

2

7

EXPT

q 0.5

ATAN

Page 66: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-33

9-3 標準 FBD(ファンクションブロック)

分類 命令 機能

SR セット優先テーブルセット/リセット

RS リセット優先テーブル

CTD ダウンカウンタ

CTU アップカウンタカウンタ

CTUD アップダウンカウンタ

TOF オフディレイタイマ

TON オンディレイタイマタイマ

TP パルスタイマ

F_TRIG 立ち下がり検出トリガ

R_TRIG 立ち上がり検出

ブール操作

SR:セット優先テーブル(FBでの例)

機能

SET1 が優先するラッチです。SET1 と RESET の両方の信号が TRUEならば、出力 VarBOOL3 は TRUE になります。

引数

SET1 BOOL型 SET1入力RESET BOOL型 RESET入力VarBOOL3 BOOL型 結果出力

解説

出力信号は入力(SET1,RESET)信号をラッチします。SET1 信号が TRUE となった時点から RESET 信号がTRUE となるまでの間、出力 VarBOOL3 信号を TRUE に保持します。但し、SET1 信号と RESET 信号が同時に TRUEとなる場合は SET1信号が優先されます

VarBOOL3

SRInst

 VarBOOL2

VarBOOL1

SR

SET1  Q1

RESET

RESET

SET1

RESET

同時の場合はセットが優先

Page 67: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-34

(ILでの例)CAL SRInst(SET 1:= VarBOOL1,RESET:= VarBOOL2)LD SRInst.Q1ST VarBOOL3

(STでの例)SRInst(SET1:= VarBOOL1,RESET:= VarBOOL2);VarBOOL3:= SRInst.Q1;

RS:リセット優先テーブル(FBでの例)

機能

RESET1 が優先するラッチです。SET と RESET1 の両方の信号が TRUE ならば、出力 VarBOOL3 は FALSEになります。

引数

SET BOOL型 SET入力RESET1 BOOL型 RESET1入力VarBOOL3 BOOL型 結果出力

解説

出力信号は入力(SET,RESET1)信号をラッチします。SET 信号が TRUE となった時点から RESET1 信号がTRUE となるまでの間、出力 VarBOOL3 信号を TRUE に保持します。但し、SET 信号と RESET1 信号が同時に TRUEとなる場合は RESET1信号が優先されます。

(ILでの例)CAL RSInst(SET1:= VarBOOL1,RESET 1:= VarBOOL2)LD RSInst.Q1ST VarBOOL3

Q1

SET

RESET1

リセットが優先される

VarBOOL3

RSInst

 VarBOOL2

VarBOOL1

RS

SET  Q1

RESET1

Page 68: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-35

(STでの例)RSInst(SET:= VarBOOL1 ,RESET1:= VarBOOL2);VarBOOL3:= RSInst.Q1;

カウンタ

CTU:Count Up(FBでの例)

機能

カウント値カウントアップしてが最大値(設定値)に達したことを知らせるカウンタです。

引数

CU BOOL型(T) カウントアップ入力(立ち上がりエッジ)

RESET BOOL型 リセット入力

PV INT型 目標値(最大値):この値に達すると Qが TRUEになります。Q BOOL型 結果

CV INT型 現在カウント値:Qに TRUEが入るとこの値は0に戻ります。

解説

入力 CUの立ち上がりの数をカウントします。カウンタはリセット入力 RESETが TRUEで現在カウント値 CVをゼロにクリアします。カウンタは設定の目標値 PVに現在カウント値 CVが達すると出力 Qを TRUEにしてカウントアップを知らせ、カウントをストップします。最大値を超えてのカウントアップは行われず、リセッ

トが入力されるまで最大値のまま保持されます。

Q

CU

PV

CV

RESET

VarINT2

 VarINT2

VarBOOL3

CTUInst

 VarBOOL2

VarBOOL1

CTU

CU    Q

RESET CV

PV

Page 69: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-36

(ILでの例)CAL CTUInst(CU:= VarBOOL1,RESET:= VarBOOL2,PV:= VarINT1)LD CTUInst.QST VarBOOL3LD CTUInst.CVST

(STでの例)CTUInst(CU:= VarBOOL1, RESET:= VarBOOL2 , PV:= VarINT1);VarBOOL3:= CTUInst.Q;VarINT2:= CTUInst.CV;

CTD:Count Down(FBでの例)

機能

プリセット値からカウントダウンしてカウント値が0に達したことを知らせるカウンタです

引数

CD BOOL型(T) カウントダウン入力(立ち上がりエッジ)

LOAD BOOL型 ロード入力:ここが TRUEになったタイミングでプリセット値が設定される。PV INT型 プリセット値:

Q BOOL型 プリセット値からカウントダウンして0になると TRUEになる。初期状態で CVが0の時も TRUEになっています。

CV INT型 現在カウント値

解説

入力 CD の立ち上がりの数をカウントします。カウンタはロード入力 LOADが TRUEでプリセット値 PVを現在カウント値 CVとして代入します。入力 CDの立ち上がり毎に現在カウント値 CVを1づつ減算し、現在カウント値 CVが 0に達すると出力 Qを TRUEにしてカウントアップを知らせ、カウントをストップします。0を下回るカウントダウンは行われず再度ロード(入力 LDの立ち上がり検出)されるまで 0のままとなります。

Q

CD

PV

CV

LOAD

VarINT2

 VarINT1

VarBOOL3

CTDInst

 VarBOOL2

VarBOOL1

CTU

CD    Q

LOAD CV

PV

Page 70: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-37

(ILでの例)CAL CTDInst(CD:= VarBOOL1,LOAD:= VarBOOL2,PV:= VarINT1)LD CTDInst.QST VarBOOL3LD CTDInst.CVST VarINT2

(STでの例)CTDInst(CD:= VarBOOL1, LOAD:= VarBOOL2 , PV:= VarINT1);VarBOOL3:= CTDInst.Q;VarINT2:= CTDInst.CV;

CTUD:Count Up&Down(FBでの例)

機能

カウント値が0あるいは最大値に達したことを知らせるカウンタです。

引数

CU BOOL型(T) カウントアップ入力(立ち上がり時)

CD BOOL型(T) カウントダウン入力(立ち上がり時)

RESET BOOL型 リセット入力(優先)

LOAD BOOL型 ロード入力

PV INT型 目標値(最大値)

QU BOOL型 結果

QD BOOL型 結果

CV INT型 現在カウント値

CTUDInst

VarBOOL4

VarBOOL6

VarBOOL3 VarINT2

VarINT

VarBOOL2 VarBOOL5

CTUD

CU Q

CD QD

RESET CV

LOAD

PV

Page 71: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-38

解説

入力 CU の立ち上がりの数でカウントアップし CD の立ち上がりの数でカウントダウンします。カウンタはロード入力 LOADが TRUEでプリセット値 PVを現在カウント値 CVとして代入します。LOADが TRUEのときにはカウントダウンは行いません。同様にリセット入力 RESET が TRUE で現在カウント値 CV をゼロにクリアします。RESETが TRUEのときにはカウントアップを行いません。カウンタは、入力 CUの立ち上がり毎に現在カウント値 CVを1づつ加算し入力 CDの立ち上がり毎に現在カウント値 CVを1づつ減算します。カウンタは、現在カウント値 CVが最大値に達すると出力 Qを TRUEに、逆に 0に達すると出力 QDを TRUEにしてカウント終了を知らせるとともにカウントをストップします。現在カウント値は、最大値を超えてもカウント

アップを行いますが、0 を下回るカウントダウンは行われず、ロード入力が TRUE にされるまでそのまま(0)となります。

(ILでの例)CAL CTUDInst(CU:= VarBOOL2,RESET:= VarBOOL3,LOAD:= VarBOOL4,PV:= VarINT1)LD CTUDInst.QST VarBOOL5LD CTUInst.CDST VarBOOL6LD CTUDInst.CVST VarINT2

(STでの例)CTUDInst(CU:= VarBOOL1,CU:= VarBOOL2,RESET:= VarBOOL3,LOAD:= VarBOOL4,PV:=VarINT1);VarBOOL5:= CTUDInst.Q;VarBOOL6:= CTUDInst.QD;VarINT2:= CTUInst.CV;

Page 72: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-39

タイマ

TON:On Delay Timer(FBでの例)

概要

入力が TRUEとなってから指定の時間が経過した後に出力を TRUEにするオンディレイタイマです。

引数

IN BOOL型 条件入力

PT TIME型 遅延時間

Q BOOL型 結果

ET TIME型 経過時間

解説

入力 IN が TRUE であり遅延時間を経過した後に出力 Q を TRUE にします。入力 IN が TRUE のとき経過時間ETが遅延時間 PTとなるまで増えていき、経過時間 ETが遅延時間 PTに達すると出力 Qを TRUEにして、出力 Q は入力 IN が TRUEの間保持されます。しかし、遅延時間に達したときに入力 IN が既に FALSEになっている場合、出力 Qは TRUEにはなりません。

(ILでの例)CAL TONInst(IN:= VarBOOL1,PT:= T#5s)LD TONInst.QST VarBOOL2

(STでの例)TONInst(IN:= VarBOOL1,PT:= T#5s);

TONInst

T#5s

VarBOOL2 VarBOOL1

TON

IN Q

PT ET

t0 t1 t2 t3 t4 t5

IN

t0+PT t1 t4+PT t5

Q

ET

t0 t1 t2 t3 t4 t5

PT

0

遅延時間に達しても、入力が

既に FALSE になっていると

きは、Qは TRUEにならない。

Page 73: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-40

TOF:Off Delay Timer(FBでの例)

機能

入力が FALSEとなってから指定の時間が経過するまで出力を FALSEとしないオフディレイタイマです。

引数

IN BOOL型 条件入力

PT TIME型 遅延時間

Q BOOL型 結果

ET TIME型 経過時間

解説

入力 INが FALSEとなってから遅延時間を経過した後に出力 Qを FALSEにします。入力 INが TRUEのときは必ず出力 Qが TRUEとなります。入力 INが TRUEから FALSEに移行すると出力 Qはすぐに FALSEに移行せず経過時間 ETが遅延時間 PTとなるまで増えていき、経過時間 ETが遅延時間 PTに達すると出力 Qを FALSEにして、INが FALSEの間は FALSEとなります。しかし遅延時間に達した時点で既に入力 INが TRUEに戻っている場合は FALSEにはなりません。

(ILでの例)CAL TOFInst(IN:= VarBOOL1,PT:= T#5s)LD TOFInst.QST VarBOOL2

(STでの例)TOFInst(IN:= VarBOOL1,PT:= T#5s);VarBOOL2:= TOFInst.Q;

TOFInst

T#5s

VarBOOL2 VarBOOL1

TOF

IN Q

PT ET

t0 t1 t2 t3 t4 t5

IN

Q

ET PT

0 t1 t2 t3 t4 t5

遅延時間に達しても、その時

点で既に入力が TRUE に戻

っている場合 Qは FALSEに

はならない。

Page 74: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-41

TP:Timer Pulse(FBでの例)

機能

指定の持続時間を持ったパルスを発生するタイマです。

引数

IN BOOL型 条件入力

PT TIME型 遅延時間

Q BOOL型 結果

ET TIME型 経過時間

解説

入力 INが TRUEに移行すると同時に出力 Qも TRUEとなります。この出力 Qは、INの状態に関わりなく、パルス時間が経過し終わるまで TRUE を保持します。経過時間 ET はパルス保持時間の間増加して、パルス出力の終結時から次のパルスが開始するまで保持され、次のパルス出力の開始時点でリセットされます。

(ILでの例)CAL TPInst(IN:= VarBOOL1,PT:= T#5s)LD TPInst.QST VarBOOL2

(STでの例)TPInst(IN:= VarBOOL1,PT:= T#5s);VarBOOL2:= TPInst.Q;

IN

t0 t1 t2 t3 t4 t5 Q

ET PT

0t0 t1 t2 t3 t4 t5

入力の立ち上がりでスタートする。

その後は入力 INの変化に関わらず、

PT幅のパルスを出す。

TPInst

T#5s

VarBOOL2 VarBOOL1

TP

IN Q

PT ET

Page 75: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-42

トリガ

R_TRIG:Trigger in Rising edge(FBの例)

機能

立ち上がりエッジ(微分)を検出します。エッジを検出したときに単一のパルスを発生します。

引数

CLK BOOL型 入力

Q BOOL型 結果出力

解説

入力(CLK)信号が TRUE に移行すると出力(Q)は TRUE となります。その後、新しい立ち上がりエッジが検出されるまで出力(Q)は FALSEになります。出力(Q)が TRUEを継続する時間は通常プログラムの一周期の時間ですので、モニタでは観測できません。通常この出力を使用する場合は TP などを使ってある一定のパルス幅を確保してください。

(ILでの例)CAL RTRIGInst(CLK:= VarBOOL1)LD RTRIGInst.QST VarBOOL2

(STでの例)RTRIGInst(CLK:= VarBOOL1);VarBOOL2:= RTRIGInst.Q;

RTRIGInst

VarBOOL2 VarBOOL1

R_TRIG

CLK Q

Q

CLK

Page 76: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-43

F_TRIG:Trigger in Falling edge (FBでの例)

機能

立ち下がりエッジ(微分)を検出します。エッジを検出したときに単一のパルスを発生します。

引数

CLK BOOL型 入力

Q BOOL型 結果出力

解説

入力(CLK)信号が FALSEに移行すると出力(Q)は TRUEとなります。その後、新しい立ち下がりエッジが検出されるまで出力(Q)は FALSEになります。出力(Q)が TRUEを継続する時間は通常プログラムの一周期の時間ですので、モニタでは観測できません。通常この出力を使用する場合は TP などを使ってある一定のパルス幅を確保してください。

(ILでの例)CAL FTRIGInst(CLK:= VarBOOL1)LD FTRIGInst.QST VarBOOL2

(STでの例)FTRIGInst(CLK:= VarBOOL1);VarBOOL2:= FTRIGInst.Q;

Q

CLK

FTRIGInst

VarBOOL2 VarBOOL1

F_TRIG

CLK Q

Page 77: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-44

9-4 文字列操作分類 命令 機能

LEN 文字列の長さ

LEFT 左からの文字列抽出

RIGHT 右からの文字列抽出

MID 文字列の中間から抽出

CONCAT 文字列の連結

INSERT 文字列の挿入

DELETE 文字列の削除

REPLACE 文字列の置換

文字列ファンクション

FIND 文字列の検索

文字列操作機能

LEN:Length of Characters(FBでの例)

機能

文字列の長さを判定します。

引数

STR 文字列

VarINT1 実数

解説

文字列 STRの長さを判定し、その値を VarINT1に出力します。

(ILでの例)LD ‘SUSI’LENST VarINT1(結果= *4*)

(STでの例)VarSTRING1:= LEN(‘SUSI’)

‘SUSI’ VarINT1

LEN

STR

Page 78: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-45

LEFT:Characters from Left(FBでの例)

機能

左からの文字列抽出をします。

引数

STR 文字列

SIZE 実数 文字数

VarSTRING1 文字列 文字出力

解説

入力文字列 STRの左端から SIZE文字分取り出して出力文字列を VarSTRING1に出力します。

(ILでの例)LD ‘SUSI’LEFT 3ST VarSTRING1(結果= *SUS*)

(STでの例)VarSTRING1:= LEFT(’SUSI’3);

RIGHT:Characters from Right(FBでの例)

機能

右からの文字列抽出をします。

引数

STR 文字列

SIZE 実数

VarSTRING1 文字列 結果出力

3

‘SUSI’ VarSTRING1

LEFT

STR

SIZE

3

‘SUSI’ VarSTRING1

RiGHT

STR

SIZE

Page 79: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-46

解説

入力文字列 STRの右端から SIZE文字分取り出して出力文字列を VarSTRING1に出力します。

(ILでの例)LD ‘SUSI’RIGHT 3ST VarSTRING1(結果= *USI*)

(STでの例)VarINT1:= RIGHT(‘SUSI’,3);

MID:Characters from Middle(FBでの例)

機能

文字列の中間から抽出します。

引数

STR 文字列

LEN 実数 文字数

POS 実数 文字抽出位置

VarSTRING1 文字列 文字出力

解説

入力文字列 STRの先頭から文字数 POSの位置にて LEN文字数分の文字を抽出し、この文字列を VarSTRING1に出力します。

(ILでの例)LD ‘SUSI’MID 2,2ST VarSTRING1(結果= *US*)

(STでの例)VarSTRING1:= MID(‘SUSI’,2,2);

2

‘SUSI’ VarSTRING1

2

MID

STR

LEN

POS

Page 80: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-47

CONCAT:Connect Characters(FBでの例)

機能

文字列の連結をします。

引数

STR1 文字列

STR2 文字列

VarSTRING1 文字列 文字出力

解説

入力文字列 STR1と STR2を結合して出力文字列を VarSTRING1に出力します。2つ以上の入力文字列が指定できます。

(ILでの例)LD ‘SUSI‘CONCAT ‘WILLI‘ST VarSTRING1(結果= *SUSIWILLI*)

(STでの例)VarSTRING1:= CONCAT(‘SUSI‘,‘WILLI‘);

INSERT:Insert Characters(FBでの例)

機能

文字列の挿入をします。

‘WILLI’

‘SUSI’ VarSTRING1

CONCAT

STR1

STR2

‘XY’

‘SUSI’ VarSTRING1

2

INSERT

STR1

STR2

POS

Page 81: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-48

引数

STR1 文字列

STR2 文字列

POS 実数 文字挿入位置

VarSTRING1 文字列 文字出力

解説

入力文字列 STR1 の先頭から POS 文字分の位置に文字列 STR2 を挿入し、出力文字列を VarSTRING1 に出力します。

(ILでの例)LD ‘SUSI’INSERT ‘XY’,2ST VarSTRING1(結果= *SUXYSI*)

(STでの例)VarSTRING1:= INSERT(‘SUSI’,’XY’,2);

DELETE:Delete Characters(FBでの例)

機能

文字列の削除をします。

引数

STR 文字列

LEN 実数 文字数

POS 実数 文字位置

VarSTRING1     文字列 文字出力

解説

入力文字列 STRに対して、文字位置 POSから長さ LEN文字分の文字列を削除して出力文字列を VarSTRING1に出力します。

2

‘SUXYSI’ VarSTRING1

2

DELETE

STR1

LEN

POS

Page 82: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-49

(ILでの例)LD ‘SUXYSI’DELETE 2,23ST VarSTRING1(結果= *SUSI*)

(STでの例)Var:= DELETE(‘SUXYSI’,2,3);

REPLACE:Replace Characters(FBでの例)

機能

文字列の置換を行います。

引数

STR1 文字列

STR2 文字列

L 実数 文字数

P 実数 文字置換位置

VarSTRING1 文字列 文字出力

解説

入力文字列 STR1の先頭から文字数 POSの位置にて LEN文字数分の文字を文字列 STR2で置換し、結果の文字列を VarSTRING1に出力します。

(ILでの例)LD ‘SUXYSI’REPLACE ‘K’,2,2ST VarSTRING1(結果= *SKYSI*)

(STでの例)VarSTRING1:= REPLACE(’SUXYSI’,’K’,2,2)

2

‘K’

‘SUXYSI’ VarSTRING1

2

REPLACE

STR1

STR2

L

P

Page 83: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-50

FIND:Find Characters(FBでの例)

機能

文字列の探索をします。

引数

STR1 文字列

STR2 文字列

VarSTRING1 実数 文字発見位置

解説

文字列 STR2が入力文字列 STR1の中で最初に発見された位置の値を VarSTRING1に出力します。

(ILでの例)LD ‘SUXYSI’FIND ‘XY’ST VarINT1(結果= *3*)

(STでの例)VarINT1:= FIND(‘SUXYSI’,’XY’);

‘XY’

‘SUXYSI’ VarINT1

FIND

STR1

STR2

Page 84: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-51

9-5 UTIL.LIB ライブラリ

分類 命令 機能

BCD_TO_INT BCDデータ変換BCD変換機能 INT_TO_BCD_ BCDデータ変換

EXTRACT ビット抽出

PACK バイトデータをビット分解

UNPACK ビットデータ→バイトデータビット・バイト操作

PUTBIT ビット指定変更

DERIVATIVE 微分機能

INTEGRAL 積分機能

STATISTICS_INT 標準統計 整数

STATISTICS_REAL 標準統計 実数

微積分機能

VARIANCE 分散

P 比例制御

PD 比例制御+微分制御PID制御PID PID制御BLINK 点滅パルス

信号発生関数 GEN 信号発生(シグナルジェネレータ)

BCD変換BCD形式のバイトデータ中には、0~99間の整数を含みます。4ビットずつ区切って各桁を 10進数で表現する方法で、例えば 10 の位の桁は、4~7ビット内に記録されます。よって BCD形式は一見 16 進数と似ていますが、唯一の違いは 16進数が各々のバイトが 0から FF(0~256)まで表現するのに対して、BCD形式の場合は各々の 4ビットが 0~9までしか変化しません。例): 整数 51を BCD形式に変換する場合について説明します。

① 2進法に直して BCDバイト 0101 0001を作ります。これは「51」を表現しています。② これに相当する 16進数は 16#51になりますので実際の数で表すと 16#51=10#81となります。③ すなわち BCD表記の「51」を通常のバイト数にすると「81」になります。

BCD_TO_INT:(FBでの例)

通常のバイト数値を BCDの桁表示に変換します。入力値は BYTEタイプ(0~9、16~153)、また出力値は INTタイプ(0~99)となり、BCDフォーマット中で変換されないバイト値については、出力値-1となります。

(STでの例)i:= BCD_TO_INT(73); (結果= *49*)k:= BCD_TO_INT(151); (結果= *97*)l:= BCD_TO_INT(15); (BCDフォーマットではない為、出力-1となる)

73 49BCD_TO_INT

Page 85: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-52

INT_TO_BCD:(FBでの例)

BCD形式で表現したい桁並び表記(0~99)をバイト値(INT:0~153)へ変換します。入力値は INTタイプ、出力値は BYTEタイプになります。入力値に変換できない値がある場合には、自動的に 255が出力されます。

(STでの例)i:= INT_TO_BCD(49); (結果= *73*)k:= BCD_TO_INT(97); (結果= *151*)l:= BCD_TO_INT(100); (エラー!出力:255)

ビット・バイト操作

EXTRACT:ビット値抽出(FBでの例)

入力値 Xを 2進法で表記した場合、N番目ビット(0値からカウントを始めます)が 1か 0のどちらになるかを BOOL値として出力します。

(STでの例)FLAG:= EXTRACT(X:= 81,N:= 4);(結果=:TRUE, 81は 2進法で 1010001となる為、第 4ビットは 1となる)

FLAG:= EXTRACT(X:= 33,N:= 0);(結果=:TRUE, 33は 2進法で 100001となる為、ビット 0は 1となる)

49 73IN_TO_BCD

4

81 FRAG

EXTRACT

K

N

Page 86: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-53

PACK / UNPACK8 つの BOOL 値入力を(B0,B1…B7)をバイトデータ(INT)に変換します。UNPACK はこの機能の逆となります。

PUTBIT:ビット指定変更(FBでの例)

この機能への入力は DWORD X 、BYTE N、そして BOOLean、B値からなります。DWORD の値 Xの Nビット目(0値からカウントを始めます)に B値をセットします。

(STでの例)A:= 38;(2進法では 100110となる)B:= PUTBIT(A,4,TRUE); (結果= *54= 2#110110*)C:= PUTBIT(A,1,FALSE); (結果= *36= 2#100100*)

TRUEPACK

B0

B1

B2

B3

B4

B5

B6

PACK

B0

B1

B2

B3

B4

B5

B6

TRUE

4

38 2#00000000000000000000000000110110

TRUE

PUTBIT

X

N

B

Page 87: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-54

微積分機能

DERIVATIVE:微分機能このファンクションブロックは微分を実行します。INには実数(REAL)でデータを入力します。TMは DWORD(最大 32ビット)で msec単位で微分時間を指定します。BOOLタイプの RESETが TRUEのときはリセット状態を保持し、FALSEに戻すと微分動作を開始します。OUT出力値は REALタイプです。

INTEGRAL:積分機能積分を実行します。DERIVATIVE と同様に、変数値 IN には REAL 値で入力します。TM は DWORD の msec積分時間指定、RESET入力値は BOOLタイプで入力します。RESET入力に TRUEを保持するとリセット状態のままで、FALSEにすると動作を再開します。出力値 OUTは REALタイプです。

STATISTICS_INT:標準統計 整数型入力標準統計値を計算します。入力値INはINT型です。入力値RESETにはBOOL値を入力しますが、これがTRUEになるタイミングで、全ての値は再び新たにイニシャライズされます。出力値MN入力されたデータ中の最小値、MXは最大値を表します。AVGは平均値を表します。3つの出力値はすべてINTタイプの出力値です。

IN OUT

INTEGRAL

IN OUT

TM

RESET

Integral

STATISTICS_INT

IN MN

RESET MX

AVG

STAT

D_INST

DERIVATIVE

IN OUT

TM

RESET

Page 88: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-55

STATISTICS_REALこのファンクションブロックは RESET を除くすべての入力が REAL タイプになります。機能はSTATISTICS_INTと同じです。

VARIANCE:分散値VARIANCEは IN入力データの分散を求めます。INは REALタイプ、RESETは BOOLタイプ、そして OUT出力値はまた REAL タイプになります。RESET が TRUE になるタイミングでデータはリセットされます。いわゆる偏差値は、VARIANCEの平方根を求めることによって簡単に計算出来ます。

Page 89: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-56

コントローラー

P:比例制御フィードバックされる入力値 ACTUALを観測しながらコントロール操作出力(OUT)を目標値 DESIREDに近づけるための比例制御 FB です。KP(比例ゲイン)は REAL タイプの入力値、コントロール操作出力(OUT)もまた同じく REALタイプで、下記の方法によって計算されます。

OUT = ACTUAL + KP × △e(偏差:△e = DESIRED - ACTUAL)

PD:比例制御+微分制御フィードバックされる入力値 ACTUAL を観測しながらコントロール操作出力(OUT)を目標値 DESIREDに近づけるための比例制御+微分制御 FBです。KP(比例ゲイン)は REALタイプの入力値、コントロール操作出力(OUT)もまた同じく REALタイプで、下記の方法によって計算されます。

OUT = ACTUAL + KP × (△e + TD・δ△

δ t )(偏差:△e = DESIRED - ACTUAL)

TDは微分データを得るための差動時間で DWORDのタイプ、msec単位で設定します。RESETは BOOLタイプで、コントローラーをリセット状態にします。RESET に入力されている値は TRUE の場合はリセット状態を保持し、FALSEにすると制御動作を再開します。

Page 90: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-57

PID:PID制御フィードバックされる入力値 ACTUAL を観測しながらコントロール操作出力(OUT)を目標値 DESIREDに近づけるための PID 制御 FB です。KP(比例ゲイン)は REAL タイプの入力値、コントロール操作出力(OUT)もまた同じく REALタイプで、下記の方法によって計算されます。

OUT = ACTUAL + KP ×(△e +1

TR ・∫△(t)dt + TD・δ△

δ t )

  比例動作 積分動作  微分動作

TRは積分時間間隔、TDは微分差動時間で各々DWORD(最高 32ビット)で msec単位で入力します。また、TD=0とすると微分動作は行わなくなりますので PIコントローラーとして使用する事が出来ます。

信号発生(シグナルジェネレータ)

BLINK:点滅BLINK は、任意周期のパルスを作ります。入力値は、時間形式の数値で TIMELOW(FALSE の継続時間)とTIMEHIGH(TRUEの継続時間)に設定します。ENABLEを TRUEにするとパルス発生がスタートします。出力値 OUTは BOOLタイプです。

TRUE

FALSE

Page 91: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-58

GEN:シグナルジジェネレータこの FBは、定常的な信号を発生させるファンクションブロックです。

<入力値の説明>

MODE TRIANGLE_POS ノコギリ波

RECTANGLE 矩形波

SINUS サイン波

COSINUS コサイン波

BASEが TRUEの時は、PERIODに入力される定義時間を基準に周波サイクルが決定されます。BASEが FALTのときは、プログラム上でこのファンクションブロックが実行される回数で周波サイクルが決定されます。し

たがって PERIOD には時間定義の数を CYCLES には整数( INT)で実行回数でサイクルを定義します。AMPLITUDEは、振幅値を入力します。また、このファンクションブロック RESET=TRUEになったと同時に信号発生を完全に停止してしまいますので、ここは FALSEにしておいてください。

SINUS:

-Amplitude

Amplitude

RECTANGLE:

-Amplitude

Amplitude

TRIANGLE_POS:

0

Amplitude

COSINUS:

-Amplitude

Amplitude

Page 92: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

9-59

ヒステリシス関数

HYSTERESIS:ヒステリシスこのファンクションブロックの入力は、IN と HIGH、そして LOW の 3 つの変数を入力します。入力変数の型は INT(整数)ですので、REAL値などは INT型に変換してください。出力値 OUTは BOOL値です。

スタート後 IN下限値 LOWより下回っている場合は、OUTは TRUEとなります。そして INに入力される値が上限値 HIGHより上回った時点で FALSEとなります。再び入力値が下がり始めて HIGHを下回ったとしても、この時点で OUTは TRUEにはなりません。LOWの値を下回ってはじめて TRUEに戻ります。

HYSTERESIS

IN   OUT

HIGH

LOW

Page 93: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

10-1

10 プログラム作成例

10-1 自己保持回路自己保持回路はラダープログラムの基本形として習う一つですが、これを WAGO-IO-PROで記述すると以下のようになります。2 つのデジタル入力と 1 つのデジタル出力を使って、出力を保持・リセットする回路です。

■in1が TRUEになると、回路が繋がって out1が一時的に TRUEになります。■out1 は in1 の並列接点としても接続されているので、一度 out1 が TRUE になると自動的に TRUEを保持します。

■in2が FALSEの時は反転しているので接続は保持されていますが、一度 TRUEになると回路が切断されて、out1の保持が解除されます。

ファンクションブロック(FB)で記述すると以下のようになります。FBの場合は関数 BOXを横に接続していきます。ステップの考え方はラダープログラムと同じです。ステップの追加はトップメニュ

ーの Insert→Network(Before),Network(After)で行います。

Page 94: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

10-2

下図の例はこれをインストラクションリスト(IL)で記述した例です。シーケンサーにおいてプロコンで編集するときに使われるニーモニックとも呼ばれている言語です。

10-2 セット・リセット回路自己保持回路のような基本的な動作については IEC の規格において既に標準 FB として準備されています。セットリセット(SR)またはリセットセット(RS)と呼ばれる FB で、以下のように一つのFBに入出力の変数にデータ入力するだけで動作します。SRはセット優先、すなわちセットとリセットが同時入力されたときにはセットが優先、RSはリセット入力が優先する FBです。

Page 95: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

10-3

FBはラダープログラムのステップ上にも取り込むことができます。下図では SRファンクションブロックを EN(Enable)としてラダーの基線上に取り込んでいます。このステップにおいては SR が実行そのままされます。基線上に接点を挿入して動作を制御する(Enable)ことも可能です。挿入の方法は本ハンドブックの 5-2を参照してください。

10-3 クロック発生回路CFC(Continuous Function Chart)は一つの平面上にファンクションブロックやプログラムを一つずつ貼り付けて配線していくプログラム方式で、データの入出力の関係などが一目でわかるようなプロ

グラム言語です。

以下の例ではタイマーオンディレイ(TON)を 2つ使用して、クロック発生回路を作っています。一つ目の TON(t1)の出力はそのまま t2 の入力へ接続し、t2 の出力は反転させて t1 の入力へフィードバックさせています。

出力は t1の出力から取り出して、2つずつ反転し出力させていますので、交互に点滅することになります。

Page 96: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

10-4

10-4 リテイン機能を使ったカウンタ値保持回路パルスカウントなどの機能においては、電源が一時的に切れたとしても不揮発性メモリにデータを保

存しておくことが重要になります。例えばデジタル入力モジュールにて、入力パルスをカウントする

には、カウンタの FB(ファンクションブロック)を使用し、これを保持するにはこの FBを RETAIN領域にて定義します。

下図では RETAINの変数として c1(CTU)を定義しています。

ところが、この CTUという FBをリテインすると約 10バイト分の不揮発性メモリ領域を消費します。不揮発性メモリの領域は%Mで表現される内部メモリも含めて 8192バイトとなっています。不揮発性メモリ領域をなるべくセーブするにはカウントの結果(16ビット分のデータ)だけを保持するようにします。16ビット(ワード)でリテインされたメモリを定義し、カウンタの出力をここへアサインするようにします。

一度電源が OFFになった場合、カウンタ CTUはリテインされていないので、電源起動時毎にリセットされますので、単純にアサイン(代入)しただけではリテインされたメモリにも改めて「0」が書き込まれることになってしまいます。そこで、電源起動時の最初の 1 回だけ、リテインされたデータを読込むようなプログラムを作成します。

Page 97: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

10-5

   

■ 電源が落ちる直前のカウンタの値は data2に入力され保持されています。■ initial_bitは最初の 1周目では FALSEになっていますので、ジャンプ命令は実行されずに、自  動的にステップ 0002へ進みます。■ ステップ 0002では data2保持された値を data1へロードしています。■ 1周目の最後にはステップ 0005は必ず実行されるので 2周目以降ステップ 0002は実行されま  せん。すなわち最初の 1周期のときだけ、data2に格納された値が data1にロードされます。■ in2が TRUEに変化したときに、カウンタ FB(c1:CTU)はリセットされますが、data1, data2  に入っているデータはクリアされませんので 0006で in2が TRUEになったときだけ 0007が  実行されて、すべてのバッファがクリアされるようにします。

Page 98: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

10-6

10-5 ST(ストラクチャード・テキスト)を使った温度データ変換の例

概要

ここでは、テキスト言語の ST「ストラクチャード・テキスト」を用いて温度データを電圧出力などのデータに変換するプログラムについて説明します。STは、PASCAL、一部 BASICによく似た言語で、数式表現を多く使う場合やループ処理を行う場合に便利です。

下図の例は温度入力モジュールの入力(%IW0)を当社出力モジュール(下記では 750-550)を使用して、-50℃~+50℃の範囲を 0~10V の範囲で出力させる、というメインルーチンを表示しています。メインルーチン PLC_PRG のステップは 1 ステップですが、「TempReal」、「RangeChanger」というサブルーチンから成り立っており、各々のサブルーチンが STで記述されています。

Page 99: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

10-7

<TempReal(FB)の解説>TempReal(FB)では入力された値(ワード)が正の値か負の値かを判定して、これを実数の値に変換して出力するという動作を行っています。

① コメント

ST言語はすべて記述式になりますが、プログラムと関係のない部分は(* と *)でくくります。この間に記述される文字列はすべてコメントとして判断され、プログラムとは直接関係が無くなりま

す。文字はすべて緑色になります。どこにでも挿入できますが、定義された変数名の途中などに入れ

ると変数名の文字列が分割されてしまいますので注意してください。

② 条件文

ST 言語でよく使われるのが条件文です。温度入力モジュールの場合、次頁表のとおり正の値は16#0000~16#7FFF、負の値は 16#FFFF~16#8000で表現されます。すなわちワード入力値が 16#8000以上の場合は負になります。

Page 100: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

10-8

  参考:(750-461、750-469のデータフォーマット)

温度(°C) バイナリ値 16進数値 10進数値

(3276.7) 0111 1111 1111 1111 7FFF 32767

850 0010 0001 0011 0100 2134 8500

100 0000 0011 1110 1000 03E8 1000

25.5 0000 0000 1111 1111 00FF 255

0.1 0000 0000 0000 0001 0001 10 0000 0000 0000 0000 0000 0

-0.1 1111 1111 1111 1111 FFFF -1

-25.5 1111 1111 0000 0001 FF01 -255-100 1111 1100 0001 1000 FC18 -1000

そこで、「IF ... THEN ... ELSE」を用いて条件分けを行います。実際の式では intemp>16#8000の結果が真か偽によって head に代入する値を変えています。

実際の式 公式

IF intemp>16#8000 THEN head:= 16#00000000;ELSE head:= 16#00010000;END_IF;

IF<ブール式(あるいはブール値)>THEN <文(真の場合の実行式)>ELSE <文(偽の場合の実行式)>

END_IF;

■ IFの後に文字式が続く場合は IFと文字式の間はスペースを空けます■ IFの後は式ではなくて BOOL値が入る変数のみでもかまいません。■ この条件式は IF~END_IFで完結します。END_IFの後は必ず「;」を入れ、条件文の完了を宣  言します。

■ 「:=」は代入を意味します。STの中では最も多く使われる式です。■ head:= 16#00000000は 16#00000000を head に代入するという意味です。■ 実行式の後は必ず「;」を入れて、式の終了を宣言します。

Page 101: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

10-9

③ 演算式

②において intempに入力された値が正の場合はこれに 16#00010000(65536)を加算後、負の場合はそのまま 65536 を減算するとその値が実数値で温度表示値の 10 倍の値になります。すなわち、実際の温度 TempRはこれを 10で割って得られます。

Adw:= head + intemp;TempR:=(DWORD_TO_REAL(adw)-65536)/10

■ 上式の意味は以下のようになります。

adw= head + intempTempR =((adwを DWORDから実数に変換した値)-65536)÷10

■ <参考>以下の演算素子は数値や式を( )でくくります。

データ選択素子 c:= MAX(a,b);データ選択素子 c:= SEL(%IX0.1,a,b);変換素子 d:= INT_TO_WORD(a + b);ビットシフト素子 d:= SHR(%IW0,2);数値演算素子 t:= LOG(a + b);数値演算素子 q:= EXPT(a,56);

■ <参考>論理演算素子は以下のように左右に並べていきます。

e:= %IX0.0 OR(%IX0.1 AND %IX0.3 AND %IX4.0);e:= NOT(%IX0.1 AND %IX0.3);

■ <参考>四則演算素子、比較演算素子は以下のようになります。

演算子 内容 例

NOT 否定 e:= NOT %QX5.0 AND %QX5.1;

* /MOD

乗算

除算

剰余(余り)

C= a*b;C= a / b;C:= a MOD b;

加算

減算

C:= a + b;C:= a-b;

<,>, <=,>= 比較演算子GT,LT,GE,LE

%QX5.0:= a>b;%QX5.1:= a<b;%QX5.2:= a<=(b + c);%QX5.3:= (a + b)>=c;

<>

等式(EQ)不等式(NE)

%QX5.0:= c =(a + b);e:= a<>(b + c);

Page 102: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

10-10

<RangeChanger(FB)の解説>

① 温度範囲の算出変換したい温度範囲を求めて Scaleという変数に実数で代入しています。

② 変換式 1OutMax という変数にはそのモジュールで出力したい最高値が、電圧や電流値の物理単位で入っていますが、これを OutMax2という計算のための中間変数に代入しています。

③ 変換式 2変換式 2を解釈すると以下のようになります。OutReal=(現在の温度-最低温度)×(出力したい最高値)× 4095÷10 ÷(変換したい温度範囲)

750-550 は 0~10V、750-552 は 0~20mA、750-554 は 4~20mA、いずれのモジュールも 12 ビット分解能(4095)なのでここでは変換したい単位温度あたりの制御数値(10進数で)が得られます。

Page 103: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

10-11

④ 条件文

ここで使用している条件文は「CASE」ですが、Moduleに入力されている 6桁のモデル名をダブルワードの整数と見なしてそれぞれをケース分けし、実行式を選択しています。条件文「CASE」の解説は以下のとおりです。

「CASE」 式の結果として整数値によって実行式(文)を実行します。公式 例

CASE Module OF 750550:(*0-10V*);<実行式>

 750552:(*0-20mA);<実行式>

 750554:(*4-20mA);<実行式>ELSE<実行式>

END_CASE;

CASE <整数式または整数値> OF <整数選択値 1>:<実行式> <整数選択値 1>:<実行式> <整数選択値 3>:<実行式>ELSE <実行式>

END_CASE;

■ CASEの後に文字式が続く場合は CASEと文字式の間はスペースを空けます。■ CASEの後は式ではなくて整数値が入る変数のみでもかまいません。■ この条件式は CASE~END_CASEで完結します。END_CASEの後は必ず「;」を入れて、条件  文の完了を宣言します。

■ 実行式の後は必ず「;」を入れて、式の終了を宣言します。

■ ELSEはどのケースにも当てはまらない場合の実行式を入れます。ELSE項は無くてもかまいませ  ん。

⑤ ビットシフト

④では実際のモジュールの分解能 12 ビット(4096)で計算してありますが、当社の出力モジュールは 1ch あたり 16 ビットになっています。そこでモジュールフォーマットにあてはまる様に左へ 3 ビットシフトさせています。

CalWord:= REAL_TO_WORD(OutReal);Calword2:= SHL(CalWord, 3);OutWord:= Calword2 + 16#0007;

■ OutRealを実数からワードに変換して CalWordに入力した時点での状態。

上位ビット    下位ビット

××××○○○○○○○○○○○○ ○:数値を表す有効ビット

×:無効ビット

Page 104: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

10-12

■ CalWordを左へ 3ビットシフトして CalWord2へ入力された時点での状態。上位ビット    下位ビット

×○○○○○○○○○○○○××× ○:数値を表す有効ビット

×:無効ビット

■ CalWord2に入っている 16ビットデータのうち、下位の 3ビットはシフトによって生じた新しいデータで、実際にはすべて FLASE(0)になっています。当社のモジュールではこの下位 3 ビットは使用しませんが、データの安全性を確保する意味ですべて TRUE(1)にします。具体的には 16#0007(2#00000111)を加算します。

上位ビット  下位ビット

×○○○○○○○○○○○○000 ○:数値を表す有効ビット

加算 2#00000111 ×:無効ビット

上位ビット  下位ビット

×○○○○○○○○○○○○111

■ 最終的に計算されたデータがこのファンクションブロックの出力変数である OutWord にアサインされて終了です。

10-6 ST(ストラクチャード・テキスト)におけるその他の公式の解説

参考:<「IF」および「CASE」以外の STの条件文>

「FOR…DO」反復変数の値に応じて、いくつかの実行式(文)を繰り返し実行します。ここで扱われる変数は SINT,INT,DINTなどの整数データ型です。

公式 例

FOR <初期化された反復変数>TO <最終値の式あるいは値>BY <増加式あるいは値>DO<実行式>;

END_FOR;

FOR k:= 0 TO 100 BY 2DOBuffer[k]:= data[100-k]END_FOR;

■ FOR~TO~BYの中に入る式(値)はすべて整数型です。■ FOR~TO~BYの後に「;」は不要です。■ BYの次に来る値はインクリメントする数を意味します。BYを省略した場合は自動的にインクリメントが 1になります。■ 実行式の後は必ず「;」を入れて、式の終了を宣言します。

Page 105: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

10-13

「REPEAT ... UNTIL」ある特定のブール式が真である間、1つ以上の文を実行します。公式 例

REPEAT<実行式>;UNTIL<ブール条件式>

END_REPEAT;

k:= 0;REPEATk:=k+1;UNTILk= 256END_REPEAT;

■ ブール式は実行式の実行後に評価され、値が真の場合は REPEAT ... UNTIL内の実行式が実行されません。

「EXIT」反復文の中で、反復ループを途中で終わらせることができます。ループ中にこの EXIT文に達すると、直ちに反復ループを抜け出します。

「RETURN」ファンクションやファンクション・ブロックの本体内で、コードの途注で直ちに終了するのに利用で

きます。ファンクション内で RETURN文を実行すると直ちに呼び元に戻ります。

参考:<ファンクションブロック(FB)の呼び出し>標準装備されている FBやライブラリの中にある FBの記述については、テンプレートを呼び出します。

① トップメニューから Insert → Function Block で挿入メニューを表示し、ソフトメニューのFunction Blockを選びます。

Page 106: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

10-14

② 目的のファンクションブロックを選びます。

③ そうすると、該当ファンクションブロックのテンプレートが表示されます。

④ ファンクションブロック(FB)の場合は、変数を定義して FB に名前を付けなければなりませんので通常の変数定義の手順で定義します。また括弧内の入力・出力変数には必要な入出力を割当てて

ください。

Page 107: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

11-1

11 外部との通信(Ethernet)

11-1 プログラム駆動中の Ethernet コントローラへのデータ受け渡し

Ethernetコントローラ(750-842)でプログラムを RUNさせながら、Ethernet経由でリアルタイムで計算結果を読み出したり、RUN中のプログラムへデータを渡すには、入出力モジュールが割り当てられていない変数領域を使用します。

Modbus/TCP プロトコルで定義されているアドレスは入出力それぞれ 256 ワード分ですが、750-842ではそれぞれ 512ワード分を準備しており、入出力モジュールが割り当てられないそれぞれ 256ワード分を外部とのデータ入出力バッファとして使用することができます。

また、プログラムが RUN 中であっても、入出力モジュールのデータは Modbus/TCP コマンド、あるいは DLL経由で読出し、書込みが可能です。但し、出力モジュールへの外部コマンドとバスカプラ内のプログラム(WAGO-IO-PROによる)が重なる場合はバスカプラ内のプログラムによるデータが優先されます。

<750-842のプログラム内部変数と通信アドレスの関係>

Ethernet-LANからのアクセス

アクセスする

ための

Modbus/TCPアドレス

WAGO-IO-PROで割り当てられる変数

内部プログラム

(WAGO-IO-PRO)による書込み

外部から

書込み

①入力モジュールのデ

ータを読み出し

0×0000~

0×00FF

%IW0~

%IW255不可 不可

バスカプラから

データ読み出し

(計算結果を読出し)

0×0100~

0×01FF

%QW256~

%QW511可 不可

③出力モジュールへ

のデータ書き込み

0×0200~

0×02FF

%QW0~

%QW255可 可

バスカプラへデータ

を書き込み

(内部プログラムへ

データを渡す)

0×0300~

0×03FF

%IW256~

%IW511不可 可

⑤バスカプラへデータ

を読み書き

0×3000~

0×3FFF

%MW0~

%MW4095可 可

Page 108: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

11-2

● 標準添付 wago_io.dllを利用した場合のデータの送受信

Ethernet TCP/IP・UDP/IP

  WAGO_SetRegData( )WAGO_GetRegData( )

WAGO_SetRegData( ) WAGO_SetDigitalData( ), WAGO_SetAnalogData( )

 WAGO_GetRegData( )   WAGO_GetRegData( ),WAGO_GetData( )

750-842内部

WAGO-IO-PRO内のプログラム

②プログラム

計算結果読出し

④プログラムへ

データを渡す

③出力モジュールへ

データ書込み

プログラムでこの値を読み込む

0x0100

0x01FF

0x0300

0x03FF

%IW256

%IW511

%QW256

%QW511

出力モジュール

入力モジュール0x0000

0x00FF

0x0200

0x02FF

%IW0

%IW255

%QW0

%QW255

0×3000

0×3FFF

%MW0

%MW4095

⑤データの読書き

両方が可能

①入力モジュール

データ読出し

Page 109: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

11-3

11-2 BROADWIN標準 Modbus/TCP ドライバを使用した場合

Braodwin の場合、入力アドレスが 30001~出力アドレスは 40001~ですが、各々最初の 256 ワードは実際の I/Oのデータをアクセスするための番地として使用します。

<750-842のプログラム内部変数と Broadwinの通信アドレスの関係>

Ethernet-LANからのアクセス

Broadwinアドレス

WAGO-IO-PROで割り当てられる

変数割り当てられるモジュール、データ

①入力モジュールの

データを読み出し

30001~

30256

%IW0~

%IW255

入力モジュールが対象(WAGO-IO-PROでこの領域には書込不可)

バスカプラからデータ

読み出し

(計算結果を読出し)

30257~

30512

%QW256~

%QW511

WAGO-IO-PROで計算したデータを書き込む

③出力モジュールへの

データ書き込み

40001~

40256

%QW0~

%QW255出力モジュールが対象

バスカプラへデータを

書き込み(内部プログ

ラムへデータを渡す)

40257~

40512

%IW256~

%IW511

WAGO-IO-PROのプログラムでデータを読み込む

Page 110: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

11-4

● Broadwin(Webaccess)経由で 750-842へのデータ受け渡し

Ethernet TCP/IP、UDP/IP

40257~40512  40001~40256

   30257~30512    30001~30256

750-842内部

出力モジュール

入力モジュール0x0000

0x00FF

0x0200

0x02FF

0x0100

0x01FF

%IW0

%IW255

%QW0

%QW255

%IW256

%IW511

%QW256

%QW511

WAGO-IO-PRO内のプログラム

①入力モジュール

データ読出し

②プログラム

計算結果読出し

④プログラムへ

データを渡す

③出力モジュールへ

データ書込み

外部へ渡したいデータをここへ書き込む

プログラムでこの値を読み込む

外部からのコマンドとプログラムで

の書込みが同時の場合はプログラム

による書込みデータが優先される

0x0300

0x03FF

Page 111: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

11-5

11-3 発紘電機(株)社製タッチパネルとの Modbus/TCPによる接続

発紘電機社製のタッチパネル(モニタッチ)で接続できる製品は現在のところ以下のとおりです。1台のタッチパネルにて最大 32台までの 750-842(750-342)が接続できます。

機種 解像度 機種 解像度

V708iSDV710iTV710iTDV710iSV710iSDV712iSV712iSD

800×600  8インチ640×480 10インチ640×480 10インチ800×600 10インチ800×600 10インチ800×600 12インチ800×600 12インチ

V712iSMV712iSMDV710iTMV710iTMDV706TMDV706CMDV706MMD

800×600 12インチ800×600 12インチ640×480 10インチ640×480 10インチ320×240 5.7インチ320×240 5.7インチ320×240 5.7インチ

※印 V706シリーズについては Ethrenetオプションが必要です。

<750-842のプログラム内部変数と通信アドレスの関係>

Ethernet-LANからのアクセス

アクセスする為

の Modbus/TCPアドレス

WAGO-IO-PROで割当てられる変数

内部プログラム

(WAGO-IO-PRO)による書込み

外部から

の書込み

①入力モジュールの

データを読み出し

300001~

300256

%IW0~

%IW255不可 不可

バスカプラから

データ読出し

(計算結果を読出し)

300257~

300512

%QW256~

%QW511可 不可

読300513~

300768③

出力モジュール

データへのデータ

読み書き書

400001~

400256

%QW0~

%QW255可 可

読300769~

301024④

バスカプラへ

データを読み書き書

400257~

400512

%IW256~

%IW511不可 可

読312289~

316384⑤

バスカプラへ

データを読み書き書

412289~

416384

%MW0~

%MW4095可 可

読 100001~ 不可

⑥デジタルビットの

読み書き

書 000001~

デジタルモジュール

が挿入されている

アドレス可

Page 112: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

11-6

● 発紘電機社製モニタッチからアクセスする場合のアドレスマップ

312289~、412289~

   300769~、400257~  400001~、300513~

300257~  300001~

750-842内部

WAGO-IO-PRO内のプログラム

0x0100

0x01FF

%QW256

%QW511

0x0300

0x03FF

%IW256

%IW511

プログラムでこの値を読み込む

出力モジュール

入力モジュール

0x0000

0x00FF

0x0200

0x02FF

%QW0

%QW255

%IW0

%IW255

0×3000

0×3FFF

%MW0

%MW4095

①/⑥入力モジュール

データ読出し

②プログラム

計算結果読出し

③/⑥出力モジュール

へデータ読書き

④プログラムへ

データ読み書き

⑤データ読み書き

両方が可能

Page 113: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

12-1

12 ピアーツーピア通信

12-1 概要ワゴ I/Oシステムの Ethernetバスカプラ同士で Modbus/TCP あるいは Modbus/UDPで相互通信を行いデータ交換を行います。交換されたデータを各々のバスカプラの先頭アドレスからデータをアサイ

ンすることによって、離れた場所に入力されたデータを手元で出力するなど、ピアーツーピア通信が

実現できます。

データ通信をさせるための上位のパソコンやコントローラは不要で、WAGO-IO-PROでプログラミングすることによって複数のノードを順番に接続してデータ通信を行う Polling 通信や自分の状態が変化したときだけパケット通信を行う COS通信(Change Of State)などが可能です。

Page 114: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

12-2

12-2 ライブラリと使用関数名ETHERNET_MODBUSMASTER 、 ま た は ETHERNET_MODBUSMASTER_UDP の 関 数 は 、

ModbusEthernet_01.libの中に収められています。ライブラリとサンプルプログラムについては、http://www.wago.co.jp/io

のソフトウェアダウンロードのページからダウンロード出来ます。

入出力端子名 変数の種類 変数の型 説明

StrIP_ADRESS 入力 文字列 通信先のバスカプラの IPアドレスを指定します。bUNIT_ID 入力 バイト 16#01に設定しておきます。(TCP通信の場合のみ)bFUNCTION_CODE 入力 バイト 16#17(データ交換用コード番号)に設定します。

wREAD_ADDRESS 入力 ワード

通信相手の入力アドレスを 16進数で設定します。16#0000の場合は相手のバスカプラ中の入力先頭アドレスを意味し

ます。

wREAD_QUANTITY 入力 ワード

上で指定したアドレスから何ワード分読むかを 16 進数で設定します。16#0003の場合は 3ワード分読み出すことを意味します。

ptREAD_DATA 入力 ポインタ

通信相手から読み出したデータを受信バッファに書き込む

ときに受信バッファのアドレスのポインタです。オペレーシ

ョン「ADR」を使用して入力してください。

wWriteAddress 入力 ワード

通信相手の出力アドレスを 16進数で設定します。16#0000の場合は相手のバスカプラ中の出力先頭アドレスを意味し

ます。

wWriteQuantity 入力 ワード

上で指定したアドレスから何ワード分書き込むかを 16 進数で設定します。16#0003の場合は 3ワード分書き込むことを意味します

ptSEND_DATA 入力 ワード

通信相手の出力アドレスにデータ書き込むときに自分の送

信バッファアドレスのポインタです。オペレーション「ADR」を使用して入力してください。

xSTART 入力 ビット通信開始の指示をビットで指定します。FALSE→TRUEの立ち上がりで通信動作を開始します。

xRESET 入力 ビット通信状態をリセット(初期状態に戻す)ときに使います。通

常は FALSEにしておいてください。

tTIME_OUT 入力 時間データタイムアウト処理時間を指定します。この時間内で通信が完

了しない場合は自動的に処理を中止します。

wERROR 出力 バイト通信エラーが発生したときにエラーコードを出力します。通

常は使用しません。

xREADY 出力 ビット通信動作が終了するとこの出力は FALSEから TRUEに変化し、動作が始まると再び FALSEに戻ります。

bRESPONSE_UNIT_ID 出力 バイト 通常は使用しません。

Page 115: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

12-3

12-3 ライブラリとサンプルプログラムのダウンロードとコピーサンプルプログラムは TCP通信と UDP通信のものがありますのでダウンロード後、以下のファイルをそれぞれのフォルダにコピーしてください。

(プログラム本体)

TCP-Trans.pro → C:¥Program Files¥WAGO-IO-PRO 32¥ProjectUDP-Trans.pro → C:¥Program Files¥WAGO-IO-PRO 32¥ProjectUDP-Poll-Trans.pro → C:¥Program Files¥WAGO-IO-PRO 32¥ProjectUDP-Cos-Trans.pro → C:¥Program Files¥WAGO-IO-PRO 32¥Project

(ライブラリ)

Ethernet.lib → C:¥Program Files¥WAGO-IO-PRO 32¥Lib2Ethernet.hex → C:¥Program Files¥WAGO-IO-PRO 32¥Lib2Ethernet.H → C:¥Program Files¥WAGO-IO-PRO 32¥Lib2ModbusEthernet01.lib → C:¥Program Files¥WAGO-IO-PRO 32¥Lib2

12-4 プログラム内容の解説(1対 1通信)

ここでは、TCP-Trans.proおよび UDP-Trans.proのプログラム内容について解説します。750-842 752-342

受信バッファの定義

通信相手の入力データを読み出してこのデータを格納しておくバッファを自己定義します。サンプル

プログラム中では Rec_Buffer という名前で 3 ワード定義しています。データ ARRAY で定義していますので、メモリ容量が許す限り何ワード分でも定義可能です。

Rec_Buffer ARRAY[1..3]OF WORD ReadAddress 16#0000ReadQuantity 16#0003

●受信バッファをワード ARRAYで定義します。ここでは 3 ワード分を定義しています。

●接続先の I/O システムの入力バッファを先頭アドレスから 3 ワード分読み込むことを意味します。

Page 116: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

12-4

送信バッファの定義

通信相手の出力バッファに送るデータを格納しておくバッファを自己定義します。サンプルプログラ

ム中では Send_Bufferという名前で 3ワード定義しています。データ ARRAYで定義していますので、メモリ容量が許す限り何ワード分でも定義可能です。

Send_Buffer ARRAY[1..3]OF WORD WriteAddress 16#0000WriteQuantity 16#0003

送信相手の IPアドレス、送信時間間隔送信相手の IPアドレス、送受信の繰り返し時間間隔を設定します。サンプルプログラムではタイマー関数を用いて時間インターバル 10msを設定しています。タイムアウトは 100msに設定しています。TCP 通信を行う場合、時間インターバルは 150ms 以上、タイムアウトは 1000ms 以上に設定してください。

この通信用ファンクションブロックは通信一回ごとにEthernetポートのオープン→送受信→クローズを繰り返します。ポートオープンは「xSTART」が「TRUE」になったタイミングで行われ、通信が終了してポートをクローズした後は Finishが「TRUE」になります。

●送信バッファをワード ARRAYで定義します。ここでは 3 ワード分を定義しています。

●接続先の I/O システムの出力バッファへ先頭アドレスから 3 ワード分書き込むことを意味します。

Page 117: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

12-5

Send_Bufferへのデータのアサイン毎回送信している Send_Bufferには自分の入力データをアサイン(割り当て)します。

Rec_Buffer内のデータのアサイン受信されたデータは Rec_Buffer に記録されますが、これを自分の出力バッファーにアサイン(割り当て)プログラムが必要になります。順番を逆にアサインすることによって相手の入力順と逆の順番

で出力させることも可能です。

Page 118: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

12-6

12-5 Polling通信のプログラム内容の解説

ここでは、UDP-Poll-Trans.proのプログラム内容について解説します。例えば複数のノードと通信してデータの送受信を行う場合は xReady(通信動作終了)の信号を利用して複数のファンクションブロックが時系列的に送受信を繰り返すようにプログラムしていきます。

(UDP-Poll-Trans.proの内容)

プログラムステップ プログラム処理内容の説明

0001~0002 Master_aに接続されている Send_Buffer_a[1]~Send_Buffer_a[2]へ、入力値領域の値 %IW0~%IW1をアサイン(代入)処理。

0003~0004 Master_bに接続されている Send_Buffer_b[1]~Send_Buffer_b[2]へ、入力領域の値 %IW2~%IW3をアサイン(代入)処理。

0005 Master_aにて’192.192.10.76’と UDP通信して Send_Buffer_aの値を送信、受信した値を Receive_Buffer_aにか格納。終了後 Finish_a(xReady)が ON。

0006

Finish_a が True に変化するとこれをスタート信号として Master_b にて’192.192.10.77’と UDP 通信して Send_Buffer_b の値を送信、受信した値をReceive_Buffer_bにか格納。終了後 Finish_b(xReady)が ON。Finish_bはステップ Master_aの通信スタート信号として使用。

007~0008 Recive_Buffer_a[1]~Recive_Buffer_a[2]に格納されたデータを出力領域 %QW0~%QW1へアサイン(代入)処理。

0009~0010 Recive_Buffer_b[1]~Recive_Buffer_b[2]に格納されたデータを出力領域 %QW2~%QW3へアサイン(代入)処理。

Page 119: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

12-7

12-6 COS通信(C hange Of State)のプログラム解説

ここでは、UDP-Cos-Trans.pro のプログラム内容について解説します。Polling 形式で通信を行わせる場合は一定時間間隔でパケット送信が行われます。これに対して当該ノードの入力に何か変化が発

生したときだけ送受信の動作を行わせる(Change of State)のがこのサンプルプログラムです。

① ステップ 0001 入力領域%IW0のデータをまず内部領域の%MW0へ代入(アサイン)します。

② ステップ 0002 内部領域の%MW0 と%MW1 のデータを比較して等しくない場合に’start’を Trueにします。

③ ステップ 0003~0005 Send_Buffer[1]~Send_Buffer[3]へ%IW0~%IW3の値をアサイン(代入)します。

④ ステップ 0006 ②で出力された‘start’が ON(True)かあるいは 10秒が経過するかのどちらかの条件で Master1の通信 FBが動作します。つまり、入力の状態が変化しなくても 10秒に一回は通信動作を行います。COS通信の場合は通信ミスをカバー するためにこのような処理が必要となります。

⑤ ステップ゚ 0007 通信動作直後に%IW0を%MW1にアサイン(代入)します。これによって%MW0と%MW1が等しくなります。プログラムはステップ 0001~0010まで常に回っていますので、入力値%IW0が1ビットでも変化するとステップ 0002で検出されて‘start’が Trueになって通信動作が行われます。

⑥ ステップ 0008~0010 Rec_Buffer[1]~ Rec_Buffer[3]に格納されたデータを%QW0~%QW3にアサイン(代入)します。

Page 120: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

13-1

13 シリアル通信モジュールの制御

13-1 概要当社のバスコントローラとWAGO-IO-PRO32を利用すると、ソフトウェア上のファンクションブロックを利用するだけで、送受信プログラムを作成することができます。シリアル通信モジュールには標

準モジュール(750-650、750-653)および通信条件可変モジュール(750-650/003-000、750-653/003-000)の 2 種類がありますが、SCHNITTSTELLE ファンクションブロックは通信条件可変モジュール専用ですのでご注意ください。

13-2 750-650、75 0-653(標準モジュール)用のライブラリと通信ファンクションブロック

標準モジュール用の通信関数 SERIELL_INTERFACEは seriel02.libの中に収められています。通信条件可変モジュールの場合であっても固定条件で使う場合はこの関数にてプログラム作成が可能です。

ライブラリは、http://www.wago.co.jp/io/の「ソフトウェアダウンロードのページ」からダウンロードしてください。

ダウンロード後、以下のファイルをライブラリフォルダにコピーしてください。

seriel02.lib → C:¥Program Files¥WAGO-IO-PRO 32¥Lib2

Page 121: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

13-2

Seriell_Interfaceファンクションブロックのパラメータ設定解説

入力パラメータ データ形式 説明

IN_DATA 文字列

IN_750_65X とタイプしてください。そしてこの文字列変数定義のアドレス番地をバイト単位(例:%IB0など)で指定してください。このアドレス番地はモジュールが挿入されてい

る最初の入力バイト番地になるように指定してください。

TRANSMIT_BUF TypBuffer(バッファ形式)

データを送信するための送信バッファの名前を定義します。

例えば○○○と文字定義すると、バッファは○○○.buffer[k]で表現されます。リングバッファサイズはデフォルトで 256バイト(kは 0~255)で、○○○.buffe_Laengeに数値を代入する(アサインする)ことによってリングバッファのサイ

ズを変更できます。また送信する場合は毎回バッファの先頭

データ、すなわち○○○.buffer[0]から送信されますのでご注意ください。

TRANSMIT_QUANTITY INTモジュールは 3 バイト分のワークエリアしかありませんが、ここに実際に送信したいバイトの数を整数で設定すると自動

的にワークエリアを動作させて、送信します。

DATA_WIDTH_65X BYTE 標準仕様のシリアル通信モジュールは 3 バイトですので通常は「3」を設定してください。

USE_SENDBUFFER BOOL 送信バッファ(16バイト)を使用するかしないかを設定します。通常は「TRUE」にしておいてください。

ERROR BYTE通信動作後の結果が返り値として表示されます。

  16#00:通信成功  16#FF:通信失敗、あるいは DATA_WIDTHの設定ミス

TRANSMIT_START BOOL送受信動作を開始するビットです。Lo→Hiの立ち上がりで動作します。ビットをアサインするときはトリガーFB「TP」を間に挿入してください。

OUT_DATA 文字列

OUT_750_65X とタイプして、そしてこの文字列変数定義のアドレス番地をバイト単位(例:%QB0 など)で指定してください。このアドレス番地はモジュールが挿入されている最

初の入力バイト番地になるように指定してください。

RECEIVE_BUF

データを受信するための受信バッファの名前を定義します。

例えば△△△と文字定義すると、バッファは△△△.buffer[k](K= 0~255)で表現されます。リングバッファサイズはデフォルトで 256 バイトで△△△.Buffer_Laenge に数値を代入する(アサインする)ことによってリングバッファのサイ

ズを変更できます。また、△△△.Buffer_Aktuellという変数は実際にバッファに格納されデータ番地+1、すなわち最終データが入力された最終メモリ番地の次の番地(INT)をリアルタイムで返します。変数としてプログラム内で扱えます。

RESET BOOL

受信バッファ、動作をリセットするビットです。。Lo→Hi の立ち上がりで動作します。ビットをアサインするときはトリガー

FB「TP」を間に挿入してください。立ち上がりで△△△.Buffer_Aktuellをゼロクリアして、データ受信バッファを初期状態に戻します。

Page 122: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

13-3

13-3 750-650/00 3-000, 750-653/003-000(通信条件可変モジュール)の通信 FBD

通信条件可変モジュールの場合の場合は SerComm.libおよび seriell_sercom.libの 2つのライブラリを使用します。これらのライブラリは「ワゴ I/O システムのユーザサポートのページ」からダウンロードしてください。ダウンロード解凍後、以下のファイルをライブラリフォルダにコピーしてください。

SerComm.lib → C:¥Program Files¥WAGO-IO-PRO 32¥Lib2seriell_sercom.lib → C:¥Program Files¥WAGO-IO-PRO 32¥Lib2

Page 123: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

13-4

Schnittstelle のパラメータ設定の解説入力パラメータ データ形式 説明

xOPEN_COM_PORT BOOL TRUEで COMポートをオープンします。通常は TRUEにセットしておいてください。

bCOM_PORT_NR BYTE

COMポートの指定を行います。「1」を設定するとサービスポート(RS232C)から

入出力が可能になります。この場合は専用ケーブル 750-920が必要となります。シリ

アル通信モジュールが接続されている場合は「2」以降を設定し、複数接続されてい

る場合はバスカプラに近い方から順番に数えます。

cbBAUDRATE COM_BAUDRATE

シリアル通信モジュールの BAUDRATEを設定します。以下のいずれかをタイプアッ

プしてください。

BAUD_ 1200 または 120

BAUD_ 2400 または 240

BAUD_ 4800 または 480

BAUD_ 9600 または 960

BAUD_19200 または 1920

cpPARITY COM_PARITY

以下のいずれかをタイプアップしてください。

PARITY_NO  または 0(パリティ無し)

PARITY_ODD  または 1(奇数パリティ)

PARITY_EVEN または 2 (偶数パリティ)

csSTOIPBIT COM_STOP BITS

以下のいずれかをタイプアップしてください。

STOP BITS_1 または 1 (ストップビット 1)

STOP BITS_2 または 2 (ストップビット 2)

cbsSBYTESIZE COM_BYTESIZE

以下のいずれかをタイプアップしてください。

BS_7 または 7(データ長 7ビット)

BS_8 または 8(データ長 8ビット)

cfFLOW_CONTROL COM_FLOW_CONTROL

以下のいずれかをタイプアップしてください。

NO_FLOW_CONTROL または 0

XON_XOFF      または 1

RTS_CTS       または 2

iBYTES_TO_SEND INT 送信したいデータのバイト数

ptSEND_BUFFER POINTER 送信したいデータバッファのポインター(内部アドレス)

xSTART_SEND BOOL 立ち上がりでデータ送信します。

utRECEIVE_BUFFER typRING_BUFFER

受信リングバッファの名前を入力します。△△△という名前を入力するとリングバッ

ファは△△△.data[k]で表現されます(kは 0~255)。受信リングバッファサイズ

は 256 バイトです。また、△△△.index という変数は実際にバッファに格納され、

データ番地+1、即ち最終データが入力された最終メモリ番地の次の番地(INT)をリ

アルタイムで返します。変数としてプログラム内で扱えます。

xINIT BOOL

受信バッファ、動作をリセットするビットで、Lo→Hiの立上がりで動作します。ビッ

トをアサインする時は、トリガーFB「TP」を間に挿入し、立上がりで△△

△.buffer_indexをゼロクリアにし、データ受信バッファを初期状態に戻します。

bERROR BYTE

シリアル通信の結果を表示します。

00:エラーなし、通信 OK

01:設定不可能な COMポート番号

03:設定不可能な BAUDRATE

09:サポートされていないパラメータが設定されている

0A:設定パラメータが意味不明

0C:初期化に失敗

0D:ハードウェアハンドシェイクに失敗

Page 124: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

13-5

13-4 ハードウェアの接続このプログラムは 750-842、750-65X(シリアル通信モジュール)、750-4XX(デジタル入力モジュール)の組み合わせで、シリアル通信モジュールから ASCIIデータ「Help me」を送信するプログラムです。例えば以下のように組み立てたとします。

750-842750-400 ← 2chデジタル入力750-650 ⇔ RS323C通信機器750-600

この場合、入出力のプロセスイメージは以下のようになります。

モジュール 入力 出力

750-650 %IW0~%IW1(= %IB0~%IB3)

%QW0~%QW1(=%QB0~%QW3)

750-401 %IX2.0および%IX2.1

パソコン側                         モジュール側

RxD(入力) 2

TxD(出力) 3

SG(グランド) 5

RTS(送信要求) 7

CTS(送信可) 8

<コンピュータ側の設定>

転送速度 : 9600ビット/秒

データビット : 8ビット

パリティ : なし

ストップビット : 1

フロー制御 : 無

TXD  RXD○ ○

RTS  CTS○ ○

GND○ ○

○ ○

CTSと RTSは短絡してください

Page 125: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

13-6

13-5 750-650,75 0-653(標準モジュール)による通信サンプルプログラムの解説

<使用関数名>

サンプルプログラム Seriel02.proおよびライブラリ Seriel02.libをhttp://www.wago.co.jp/io「ソフトウェアダウンロードのページ」からダウンロードしてください。ダウンロード解凍後、それぞれのフォ

ルダにコピーしてください。

Seriel02.pro → C:¥Program Files¥WAGO-IO-PRO 32¥ProjectSeriel02.lib → C:¥Program Files¥WAGO-IO-PRO 32¥Lib2

<プログラムの解説>

最初の 8ステップまでは、「Help me」の ASCII文字を 2桁の 16進数コードを使って文字定義しています。transbuffer.buffer[0]~transbuffer.buffer[7]まで、スペースも含めて入力(アサイン)しています。

シリアル通信モジュールは入力プロセスイメージの先頭、および出力プロセスイメージの先頭から 4バイトずつの領域を占有しますが、アナログモジュールなどは他に無いので、当該シリアル通信モジ

ュールはプロセスイメージの先頭から割り当てられます。すなわち、先頭アドレスを%IB0、%QB0で指定しています。スタートは入力ビットの 1 ビット目、%IX2.0、リセットビットは%IX2.1 で設定しています。

Page 126: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

13-7

9 ステップ目でシリアル通信の実行を行っていますが、スタートとリセットのビットはトリガーファンクションブロックにて 1 秒間の立ち上がりパルスを作って入力しています。立ち上がりパルスの時間間隔設定は送信するデータとボーレートによって、これを十分カバーできる時間に設定してくださ

い。

また、データの受信の確認はウィンドウズソフトに付属しているハイパーターミナルで確認してくだ

さい。

ハイパーターミナルから送信を行うと、ワゴ I/O 側の受信バッファでデータを受信できるのが確認できます。

13-6 750-650/00 3-000, 750-653/003-000(通信条件可変モジュール)による通信サンプルプロ

グラムの解説

<使用関数名>

通 信 条 件 可 変 モ ジ ュ ー ル の 場 合 の 場 合 は SerComm.lib   お よ び seriell_sercom.lib をhttp://www.wago.co.jp/ioの「フトウェアダウンロードのページ」からダウンロードしてください。ダウンロード解凍後、それぞれのフォルダにコピーしてください。

SerComm.lib → C:¥Program Files¥WAGO-IO-PRO 32¥Lib2

seriell_sercom.lib ............................................................................................................................................ →

サンプルプログラムは以下のディレクトリにコピーしてしてください。

Schnittstelle.pro → C:¥Program Files¥WAGO-IO-PRO 32¥Project

Page 127: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

13-8

<プログラムの解説>

シリアル通信モジュール位置指定はファンクションブロックに直接行いますのでモジュールのビット

幅などを考慮する必要はありません。BOOL 値でスタートビットを設定する場合は立ち上がりでの動作をさせるように、ファンクションブロックの「TP」を使用して立ち上がりを抽出してください。

プログラムの 1ステップ目では ’Help me’ という文字をスペースキーも含めて TransBufferにアサイン(入力)しています。TransBufferというユーザ定義変数は定義項目で文字列で定義してありますが、これはワゴ I/O 内のメモリに格納されています。このアドレスは「ADR」ファンクションブロックで抽出することが可能で、以後この TransBuffer に格納された内容は、抽出したポインタ(ここではpt_bufferで定義している)で指定することができます。

Page 128: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

13-9

TransBuffer に格納されているデータのバイト数をそのまま送信しますが、このバッファサイズは「LEN」ファンクションブロックで抽出して iBYTES_TO_SEND に入力し、ptSEND_BUFFER にアドレスポインタを入力して送信動作(startを ONにする)と送信を行います。

Page 129: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

14-1

14 LONバスコントローラーによる PID空調制御のサンプルプログラム

14-1 概要750-819 型 LON プログラマブルコントローラーは PLC として内部にプログラムを書き込めると同時にプログラム内の任意の変数(実入出力データを含む)を任意の SNVT に割当てることが可能です。今回の例では 1 系統の温度制御プログラム例と、TOPLON(ワゴ社製 LNS プラグインツール)を使用してプログラム中の変数を SNVTに割り当てる手順を説明します。

14-2 システム構成と使用ツールサンプルプログラム(lon_pid_sample.pro)を解凍して C:¥Program Files¥WAGO-IO-PRO 32¥Projecフォルダにコピーした後、WAGO-IO-PRO を立ち上げてこのプログラムを開きます。トップメニューの Project → Rebuild all を実行して一度最適化した後、再度保存(save)を行ってください。

<I/Oシステム>750-819 LONコントローラ750-461 PT100温度入力モジュール(あるいは 750-469熱電対入力)750-550 電圧出力モジュール(あるいは 750-554電流出力モジュール)750-600 終端モジュール

750-920 コントローラ用専用ケーブル

<プログラミングツール>

750-332 WAGO-IO-PRO32<LONネットワークツール>

LONmaker LNSソフトツール、エシェロン社製PCC-10 LONネットワークアダプタおよびケーブル、エシェロン社製

<プラグインツール>

TOPLON プラグインツール(フリーウェア)、ワゴ社製

<ネットワーク変数と 750-819コントローラの構成概略>

今回使用するツール等は以下のとおりです。

Page 130: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

14-2

14-3 プログラムの説明(1)PID制御部

PID関数はUtil.lib中のPID関数を使用しています。PIDの制御式は以下で与えられますが、プログラム中ではKP(比例ゲイン)は実数で入力、TR(積分時間)およびTD(微分時間)はms単位(整数、DW)で入力します。サンプルプログラム中では動作を安定させるために微分比例動作をカット、すなわち

TD=0を代入しています。

OUT= ACTUAL + KP ×(△e + 1

TR ・∫△(t)dt + TD・δ△

δ t )

比例動作   積分動作  微分動作

温度の現在値は温度モジュールから得られたワードデータ10進数に0.1を掛けて得られ、目標温度はLON経由で書き込まれたTarget_temp(SNVT_temp)から算出してPID関数に入力しています。SNVT_tempは-274.0~6279.5℃までのデータを0.1℃きざみでワード整数によって表現していますので、DESIREDに入力する値は2740を減算して0.1を掛けた値が実際の温度値となります。

(2)出力値のスケール計算PID関数から出力されたデータをそのままモジュールの出力領域に代入(アサイン)しても正常な制御は行われません。データをモジュールのスケーリングに合わせるとともに冷暖房の判定をして各々

の出力を計算しているのがサブルーチンのscaling(output_calc)です。

Page 131: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

14-3

(3)サブルーチンscaling(output_calc)における処理まず、比例ゲインと最大の想定温度差est_diffの値を用いて直線変換し、モジュール出力値の最大出力値(16#7FFF= 32767)にスケールを合わせているのがステップ0001~0002です。

目標温度が現在値よりも高い場合は pid_in(メインプログラム上の変数pid_out)の値は正となり、暖房用と判断されます。pid_inが負の場合、すなわち現在値の方が目標温度よりも高い場合には、冷房が必要となりますので warming_controlを0にします。また、暖房と判断されても暖房のスイッチが入っていないときはやはり出力が0になるように、また計算されたoutputの値が32767(アナログモジュールの最大値)を越えてしまった場合は最大値の32767に固定されるようにしています。

現在値が目標温度よりも高い場合には冷房になりますが、pid_inの値は負になっているので-1を掛けて正の値にしておきます。

Page 132: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

14-4

14-4 LON プラグインツール TOPLON PRIOの立ち上げ

ここではWAGO-IO-PROの中で宣言した変数に対してSNVTを割当てる作業について説明します。サンプルプログラムを750-819のFlashROMに書き込んだ後、サービスポートのスライドスイッチをRUN状態にします。次に PCC-10 LONネットワークアダプタを接続したパソコンから LONケーブルで 750-819に接続して LON通信ができるようにします

① ファイル名を決めて新規作成します。

② LONインタフェイスを設定します。

③ Onnet対応にします。

④ プラグインツールとして

 Echlon Lon Point Configuration TOPLON PRIO を選択して、あとは削除してください。

⑤ テンプレートはとりあえず PRIO_26_26_01(デフォルト)選択してください。

Page 133: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

14-5

⑥ LONmakerの画面が立ち上がったら図面中へDeviceをドラッグします。

⑦ このDeviceに名前をつけて、750-819を認識させる準備をします。

⑨ Auto-Detectを選択します。

⑧ デバイスを認識させるためのテン

プレートとして PRIO_26_26_01 を選びます。

Page 134: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

14-6

⑩ ASCIIを選択します。

※ 選択されたテンプレートが正しくバスカプラにインストールするために

Load Application Image のチェックボックスを必ずONにしておいてください。

⑪ サービスPINによる認識を選択します。

Page 135: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

14-7

⑫ 合図が出た後、750-819のサービスPINを押します。

⑬ LONデバイスとして認識されたあと、ここを右クリックしてPlug Insを選択します。

⑭ プラグインツールとしてTOPLON-PRIO Configuration を選択します。

Page 136: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

14-8

14-5 TOPLON-P RIO プラグインツールによる変数設定

① TOPLON-PRIOが立ち上がると以下のようなハードウェア構成設定画面が現れます。現在接続されているモジュールを順次選択して最後に右側のCloseボタンを押してください。

② するとTOPLON-PRIOの初期画面が表れます

Page 137: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

14-9

③ まず最初にWAGO-IO-PROで作成したプログラムシンボルファイル(プログラム名.SYM)を読込みます。このファイルはWAGO-IO-PROのプログラムファイルがあるフォルダ(C:¥Programfiles¥WAGO-IO-PRO32¥project)にあります。

● WAGO-IO-PROのトップメニューからOpen SYM fileを選択。

● プログラム名.SYMを読込みます。

サンプルプログラムでは「Target_temp」、「Current_temp」、「cool_sw」、「S_W」、「warm_sw」の5つの変数が下記のとおりSNVT割当てのアドレス領域に記載されています。

このアドレス領域は「template_750_819.pro」の標準テンプレートの中で、ビット、バイト、ワード、Dワード、実数ごとにそれぞれ定義されており、実際のプログラムを作成するときはこの標準テンプレートを使用してプログラム作成し、使用しないアドレスはすべて削除します。

※尚、template_750_819.proの扱い方につきましては「TOPLON PRIO操作手順マニュアル」をご覧下さい。

Page 138: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

14-10

④ SYMファイルを読込んだ後、トップメニューの Configuration→Softwareを選択します。

⑤ NVI設定画面が表れます。NVIはLONネットワークから入力される変数です。ここでnvi00~nvi03までのネットワーク変数の種類を設定します。Typeの欄のSNVT_str_ascのセルをクリックすると、Info画面が表れ、OKを押すと下記のようにSNVTの型を選択するウィンドウが出てきますのでnvi00~nvi02にはSNVT_switchを、nvi03にはSNVT_tempを選択します。

⑥ 左欄の「Bool_OUTs」を押すと、SYMファイルで読込んだ「cool_sw」、「S_W」、「warm_sw」3つのBool変数が表示されます。各々のConnected to … 欄のセルをクリックして先ほど設定したnvi00~nvi02を割当てます。

Page 139: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

14-11

⑦ nviを選択すると現在選択されているSNVTの型(下図ではSNVT_switch)が表示されますのでOKをクリックします。

⑧ デジタル(BooL値)の場合は、ONとOFFの値を設定するウィンドウが表示されます。ONの場合はstate が1、valueが200、OFFの場合はstateが0、valueが0を設定します。

注)

SNVT_switchは照明のスイッチを想定しているため、valueは0~255までの値を設定することができます。通常のON-OFFで使う場合には、valueの値は200(ON時)、0(OFF時)となります。

Page 140: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

14-12

⑨ Var_OUTsを押してBool値以外のnvi割当てを行います。SNVT_tempは16ビット(2バイト)で定義されていて0~65536が-274.0~6279.5℃に対応します。今回はTarget_tempに入力された値をバスカプラ内のプログラムにて温度変換していますので、0~65536をそのまま割り当てます。

⑩ ⑤~⑨で入力変数にnviを割当てた作業と同様に、出力変数にnvoを割当てます。今回のプログラムでは、Current_tempという出力変数をプログラムで定義していますので、これにSNVT_temp型で定義されたnvo00を設定します。スケール変換は⑨と同様に0~65536をそのまま割当てます。

Page 141: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

14-13

14-6 データのモニタとデバックTOPLON-PRIO の初期画面において NV Browser ボタン(あるいはトップメニューの View→Browser)を押すと、入出力変数のモニター画面が表れます。これは LON ネットワーク側からの変数の値をモニタ、設定機能で、LONmakerにおける Browser機能と同じものです。

① まず、設定(モニタ)したい nvi, nvoのサンプリング周期を設定します。Monitoring欄のセルはすべて「No monitoring」になっていますので、ポーリングで設定(モニタ)したい周期を各々設定します。

② 下記画面は左側にWAGO-IO-PROをRS232Cで接続したモニタ画面を示し、右側はTOPLON-PRIOでLONネットワーク上から値を設定しているところです。nvi00をONにする([0.0 0]→[100.01]に変更する)とこれに対応するcool_swという変数がTRUEになります。

Page 142: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

14-14

③ また、nvi03を30.0(℃)と設定するとこれに対応するTarget_tempは3040(=2740+300)という値を表示します。

④ また、I/Oシステムで入力されている温度が3050という値のときは、3050-2740=310、すなわち31.0℃という値がnvo00に表示されていることがわかります。

以上

Page 143: WAGO-IO-PRO 32 ハンドブック · PDF filewago-io-pro 32 ハンドブック ポイント解説マニュアル このマニュアルはwago-io-pro32ユーザのために ソフトウェアの取扱い

ワゴジャパン株式会社

I/Oグループ

〒136-0071東京都江東区亀戸 1-5-7日鐵 NDタワー4F

TEL : 03-5627-2059FAX : 03-5627-2055

E-mail:[email protected]

Web: http://www.wago.co.jp/io

Copyright © 2001, by WAGO Japan Corporation

All rights reserved.