自動バッファ制御プログラムドキュメント

PLCプログラム

はじめに

このプログラムドキュメントは10年以上前に某基板搬送装置の一部バッファー装置として設計したものです。ドキュメントは受注先の要求でプログラムをわかりやすく説明することを目的に製作しました。今回アップしたのは,FIFOやステッププログラムの手法を流用してほしいと考えております。ちなみに完成後納入した先の装置1式は試運転はしたが生産はほぼせずになくなってしまったので、ほかの装置で少しでも運用していただければ思います。

本プログラムのプログラミング手法と構成について

概要説明

PLC国際標準規格IEC61131-3(=JIS B3503)の基本である「IL,ST,LD,FBDの4言語+SFC1要素」「POU(プログラム構成単位、タスクによる独立実行」を考慮し、弊社で標準化を進めるプログラム手法を取り入れて、設計をしております。

その基本となる動作シーケンスには、単なるステップ(工程歩進)でなく、条件判断処理で自由度が高く、メンテナンス性の高いプログラム手法を用いております。

本ドキュメントは、そのステッププログラムを中心に説明を致します。

動作状態の説明動画

プログラム構成について

プログラム-ブロックについて

プログラム名称                                                            内容

P00 主回路                                                  自装置モード切替、GOT表示、パスワード他

P01 基板情報処理1                                    基板在荷、禁止情報設定

P02 基板情報処理2                                    基板良品、NG情報

P03 格納先FIFO検索処理                          基板格納先FIFO処理

P04 基板廃却処理                                       基板廃却処理

P09 異常回路                                              異常処理

P10 取り出しデータ処理                             基板時刻情報、基板取出検索処理

P11 ステータス変更                                    基板発生処理

P20 位置データ処理                                    ラックティーチング情報、バッファ速度情報

P21 原点復帰処理                                       原点復帰シーケンス処理

P22 手動ステップ                                       手動運転シーケンス処理

P23 手動運転                                              メンテ運転命令

P24 基板受入動作ステップ                         基板受入チャックシーケンス処理

P25 基板払出動作ステップ                         基板払出チャックシーケンス処理

P27 自動運転ステップ                                自動運転シーケンス処理

P29 トラッキング処理                                トラッキング処理             

P30 SM_ST10[走行]                                   走行サーボ運転処理

P31 SM_ST12[昇降]                                   昇降サーボ運転処理

P32 SM_ST14[チャック1]                         チャック1サーボ運転処理

P33 SM_ST16[チャック2]                         チャック2サーボ運転処理                           

P40 自動動作ログ                                       自動運転時搬送記録処理

P44 クロスCV44制御                                クロスコンベヤ44手動運転処理

P50 34モード選択                                      搬送ライン3/4との運転モード

P90 在荷情報テーブル                                上位通信在荷情報テーブル

P99 IE/NetH通信                                       自装置IE/NetH変換処理

プログラム内容の詳細コメントについて

プログラムの詳細内容については、P(ポインタ)にコメントを記載しています。

一部Call命令としても使用しています。

ポインタNo.内容
P0デバッグ用ダミー回路
P2制御電源・運転準備入切回路
P4モード切替・条件回路
P5各機器の原点及び原点復帰指令回路
P6装置全体自動運転起動・停止回路
P7タッチパネル初期設定及び画面切替回路
P8接点増幅・接点置換回路
P9各ブロック毎自動運転回路及び手動回路
P10異常検出回路
P11表示・ブザー・パトライト
P12生産実績・上位通信
P13ワークシフト(PLC内部ワークメモリ)回路
P90基板滞留状態確認
P100データ初期化、内部ファイルレジスタ一括初期化
P130基板在荷情報
P131ラック内基板情報***
P132ラック内段情報作成処理
P133ラック段レシピ情報格納(良品or NG)
P134ラック使用状況(在荷/禁止)
P170基板情報編集処理***
P171基板情報編集
P172基板情報削除
P173基板情報発生
P174基板情報処理位置
P175基板情報削除実行処理
P176基板情報発生実行処理
P200廃却基板処理***
P201廃却基板情報書込
P202廃却基板処理実行
P203全廃却基板処理
P204廃却基板情報Word情報処理
P205廃却基板処理条件処理
P208廃却基板Swap実行処理(基板情報で廃却データを戻す処理)
P210全廃却基板処理
P220廃却基板データ復元処理
P221廃却基板データ復元処理(上書)
P260***受入スロットFIFO処理***
P261FIFOデータエリア初期化[良品基板]
P262FIFOデータエリア初期化[NG基板]
P270FIFOデータ書込処理[良品基板]
P271FIFOデータ書込処理[NG基板]
P275受入スロット検索中処理
P278FIFO呼出[良品基板スロット]
P279FIFO呼出[NG基板スロット]
P280時刻読出
P281時刻変換処理
P282変換時刻 書込処理
P290取出スロット検索処理
P300転送処理(日付データ検索処理用)
P301カセットステータス変更 カセット1
P302カセットステータス変更 カセット2
P303カセットステータス変更 カセット3
P304カセットステータス変更 カセット4
P305カセットステータス変更 CV自動バッファ
P310基板ステータス呼出
P311基板ステータスBit設定上位ワード
P312基板ステータスBit設定下位ワード
P313基板ステータス基板種別設定
P314基板ステータス対象機種設定
P315基板ステータス定義(良品/NG)設定
P316基板ステータス予備1設定
P317基板ステータス予備2設定
P318基板ステータス設定WOR処理
P319基板ステータス設定確定処理
P320基板ステータス設定キャンセル処理
P321基板ステータスLP表示 上位ワード
P322基板ステータスLP表示 下位ワード
P323基板ステータス情報書込処理
P324自動付番処理
P350原点復帰[一括原点]
P351チャック状態
P352はみ出し検知
P353基板在荷
P360原点復帰[初期状態]
P361原点復帰処理 
P362原点復帰監視時間
P363原点復帰 走行指示
P364原点復帰 昇降指示
P365原点復帰 チャック2後退指示
P366原点復帰 チャック1後退指示
P371手動受取LP処理
P372手動払出LP処理
P373ステップ運転[手動]
P374連続運転[手動]
P375在荷チェック[手動]
P379在荷チェック[手動]
P380*手動[ステップ/連続]*
P381手動ベース画面変更→ローダーモード
P382手動実行中信号
P383手動画面表示動作コメント
P390手動位置データ書込処理
P391手動昇降位置一致確認処理
P392手動昇降移動指示
P394手動走行位置一致確認
P395手動走行移動指示
P396手動チャック2移動指示
P397手動チャック1移動指示
P400手動運転***
P401手動走行昇降移動PB処理
P403手動走行移動処理
P404手動移動実行処理PB LP処理
P405画面インターロック
P406走行ブレーキ手動解放
P407チャック位置移動メンテナンス画面
P408チャック_メンテ位置移動指示
P409画面インターロックモーター駆動中
P410基板受入動作STEP**
P411昇降中点移動処理[受入STEP]
P412チャック1移動動作指示[受入STEP]
P413チャック2移動動作指示[受入STEP]
P419昇降中点移動指示[受入]
P420基板受入STEP処理[受入STEP]
P422チャック1一時停止処理
P428基板受入監視時間
P429基板受入完了処理
P430チャック2移動mm判断処理=チャック1連動
P440基板払出動作STEP***
P441昇降中点移動処理[払出STEP]
P442チャック2移動動作指示[払出STEP]
P443チャック1移動動作指示[払出STEP]
P450払出STEP処理
P458基板払出タイムオーバ監視
P459基板払出完了処理
P460自動運転STEP****
P461自動モード昇降位置確認
P462昇降位置移動処理[自動モード]
P463走行移動動作処理[自動モード]
P464チャック1移動動作指示[自動モード]
P465チャック2移動動作指示[自動モード]
P470自動運転STEP初期
P471自動運転STEP動作判断
P472自動運転在荷判断処理
P473自動運転モード判断処理
P474自動運転ラック収納処理
P475自動運転CV44へ払出処理
P476自動運転チャック移動処理
P477チャック待機位置移動後判断処理在荷無
P478自動運転CV44より受取処理
P479自動運転 ラックから取出処理
P480自動運転CV44 移動データ作成処理
P481自動運転ラック点行先データ処理[良品]
P482自動運転ラック点行先データ処理[NG]
P483在荷チェック処理
P484ラックから受入データ処理
P490トラッギング処理
P491基板情報トラッキング受取完了
P492基板情報トラッキング払出完了
P500サーボ走行制御モジュール
P501サーボ運転可能
P502サーボアラーム発生処理
P503サーボJOG運転指令
P504原点位置設定処理
P505原点位置データ書込処理
P506JOG速度データ書込処理
P507JOG運転
P508原点指示
P509位置指令処理
P510アラームリセット[走行サーボ]
P511サーボON[走行サーボ]
P512自動・手動選択[走行サーボ]
P513正転始動[走行サーボ]
P514逆転始動[走行サーボ]
P515位置・速度選択方式[走行サーボ]
P516ポジションテーブル選択クリア[走行サーボ]
P517モニタ処理[走行サーボ]
P518サーボブレーキ回路[走行サーボ]
P519ストロークエンド[走行サーボ]
P520サーボ走行制御モジュール
P521サーボ運転可能
P522サーボアラーム発生処理
P523サーボJOG運転指令
P524原点位置設定処理
P525原点位置データ書込処理
P526JOG速度データ書込処理
P527JOG運転
P528原点指示
P529位置指令処理
P530アラームリセット[昇降サーボ]
P531サーボON[昇降サーボ]
P532自動・手動選択[昇降サーボ]
P533正転始動[昇降サーボ]
P534逆転始動[昇降サーボ]
P535位置・速度選択方式[昇降サーボ]
P536ポジションテーブル選択クリア[昇降サーボ]
P537モニタ処理[昇降サーボ]
P538サーボブレーキ回路[昇降サーボ]
P539ストロークエンド[昇降サーボ]
P540サーボチャック1制御モジュール
P541サーボ運転可能
P542サーボアラーム発生処理
P543サーボJOG運転指令
P544原点位置設定処理
P545原点位置データ書込処理
P546JOG速度データ書込処理
P547JOG運転[チャック1]
P548サーボ一時停止後手動自動切替
P549位置指令処理
P550アラームリセット[C1サーボ]
P551サーボON[C1サーボ]
P552自動・手動選択[C1サーボ]
P553正転始動[C1サーボ]
P554逆転始動[C1サーボ]
P555位置・速度選択方式[C1サーボ]
P556ポジションテーブル選択クリア[C1サーボ]
P557モニタ処理[C1サーボ]
P558サーボブレーキ回路[C1サーボ]
P559ストロークエンド[C1サーボ]
P560サーボチャック2制御モジュール
P561サーボ運転可能
P562サーボアラーム発生処理
P563サーボJOG運転指令
P564原点位置設定処理
P565原点位置データ書込処理
P566JOG速度データ書込処理
P567JOG運転[チャック2]
P568原点指示[チャック2]
P569位置指令処理
P570アラームリセット[C2サーボ]
P571サーボON[C2サーボ]
P572自動・手動選択[C2サーボ]
P573正転始動[C2サーボ]
P574逆転始動[C2サーボ]
P575位置・速度選択方式[C2サーボ]
P576ポジションテーブル選択クリア[C2サーボ]
P577plsモニタ処理[C2サーボ]
P578サーボブレーキ回路[C2サーボ]
P579ストロークエンド[C2サーボ]
P600ティーチング計算書込
P601ティ-チングデータ書込処理
P602昇降補正値書込
P610ローダティーチングデータ処理
P611カセットスロットNo.変換処理1-200(INDEX)
P612CV44No.変換処理K0(INDEX)
P613表示ティーチングデータ読込
P620カセット/CV44選択切替
P621ティーチングデータ書込処理
P622現在値データ書込処理
P630チャック1ティ-チングデータ書込処理
P631チャック2ティ-チングデータ書込処理
P632昇降補正位置制限
P633昇降補正位置データ書込処理
P635走行速度初期値書込
P636走行速度演算処理(回転数)
P638昇降速度初期値書込
P639昇降速度演算処理(回転数)
P641チャック1速度初期値書込
P642チャック1速度演算処理(回転数)
P644チャック2速度初期値書込
P645チャック2速度演算処理(回転数)
P700入出庫記録
P7103/4ライン通信処理****
P711運転モード切替処理[運転モード]
P712運転モード切替処理[ストックモード]
P713運転モード切替処理[排出モード]
P720CV44-自動バッファ[3/4通信]
P730集中管理 時刻変換処理 [年月]
P731集中管理 時刻変換処理 [日時]
P732集中管理 時刻変換処理[分秒曜日]
P733時刻合わせ処理
P734時刻書込み処理
P739PLC時刻合 Net/H報告用
P740在荷テーブル作成処理
  • 補足事項

①.チャック1は下の駆動、チャック2は、上の駆動となります。

②.PBは押しボタン、LPはランプを意味します。

③.C1は、チャック1、C2はチャック2を意味します。

タスクについて(ステップシーケンス処理部)

 原点復帰、手動運転、自動運転、受取処理(チャック動作)、払出処理(チャック動作)が主な動作です。

タスク構成について

①原点復帰処理(原点復帰時のみタスク)

②自動運転(自動運転中の処理)

③手動運転(手動動作の処理)

④受取処理(チャック動作):自動運転及び手動運転時にチャック動作(受取)要求で実行します。また、修理中の場合(復旧時のみ)、単独で実行される処理です。

⑤払出処理(チャック動作):自動運転及び手動運転時にチャック動作(払出)要求で実行します。また、処理中の場合(復旧時のみ)、単独で実行される処理です。

タスクの関連は、下記の通りです。

プログラムステップについて

概要

SFCと同じ機能をラダーで構成させることを目的としたプログラムです。

設定について

ワードデバイスに数値、連続した必要数のビットエリアを使用します。

ラダーへの記述方法

初期状態は、ワードデバイスで0とします。

ワードデバイスの数値に対応するアウトコイルを設定します。

ワードデバイスをデコードした場合のビットをアウトコイルとします。(基本)

*注意事項 ワードデバイスをすべて記述した後に、ビットのアウトコイル記述をします。

初期状態について

              初期ステップは、処理中断、電源立ち上がり、キャンセル状態等で0に戻します。

ステップの進歩方法

              ステップ、リセット条件等で初期状態になります。

              (例:自動運転STEP(D2310=0)の時、M700=On)

PB(押しボタン)や起動条件(自動運転、運転可能等)で、まずステップを1として、ステップが起動するようにします。

(例:自動運転STEP(D2310=1)の時、M701=On)

  • 注意点:リセット条件、起動条件が類似している場合、ステップが可逆する可能性があるので、ステップをMOVでなくMOVPとしたり、起動条件の立ち上がりを条件として加えるよう考慮します。

ステップが運転状態となってからは、装置の状態や実行条件分岐により、移行するステップをブロックごとに考慮して、遷移させます。

(例:自動運転STEP(D2310<=11)ローダに在荷有の場合の処理、自動運転STEP(D2310<=31)ローダに在荷無の場合の処理)

特別な条件や、ループ処理が必要な場合には、条件判断処理まで戻す記述も可能です。

(例:自動運転STEPで、3/4ライン運転モードの場合、ローダは、ラインからの要求(回収、投入)がない場合でも、処理は先行して進みます。途中で回収、投入信号が切り替わった場合、投入処理から、回収処理に切り替えすることが必要になります。

その場合には、先のローダの在荷状態での判断処理までステップを戻すことになります。)

ステップの条件分岐方法

自動運転処理は、M700(デバイス値0)から始まります。P472は、自動運転条件で運転可能となり、M710(デバイス値10)がオンした状態で、自動運転の判断処理を開始します。

P472 自動運転在荷情報処理 内容について

M710(デバイス値10)で自動運転の判断処理をします。

              M102サイクル停止信号があるとこの状態で停止します。

M349ローダの在荷状態で判断をして有の場合、自動運転STEPを11(自動運転で在荷有の条件で、ラインとのモードを判断する処理)へ移行します。

無の場合、自動運転STEPを31(自動運転で、チャック2を受け取り待機位置へ移動)へ移行します。

また、自動運転STEP38(基板受取処理)になった場合で、回収要求がなく投入要求になった場合、自動運転の判断処理に戻ってきます。

P473 自動運転モード判断処理 内容について

    M711(デバイス値11)でモード確認処理になります。

              M102サイクル停止信号があるとこの状態で停止します。

M349ローダの在荷状態である確認をします。

3/4ラインとの運転モード条件と3/4ラインからの要求信号判断で自動運転STEP12(基板収納先検索)または、自動運転STEP21(CV44への払出処理)へ移行します。

3/4との運転モードで排出モードの場合は、自動運転STEP21(CV44への払出処理)へ、ストックモードの場合は、自動運転STEP12(基板収納先検索)へ移行します。

このような判断ステップをすることで、複雑な条件処理も処理可能となります。

実行処理と戻り値の考え方について

ステップ中に判断処理、または演算処理が必要な場合は、サブルーチン呼び出しのような形で、実行処理ビットをOnします。

実行処理ビットで判断または、演算された処理結果とその戻り値として、必要な戻り値(ビットまたは、ワード)を処理中ステップに返します。

このような処理をすることで、本体のステップをより簡潔にプログラムすることになります。

動作の記録に関して

このステップ処理では、必ずアウトビットがONしているまたは、フローチャートのようにフロー以外へは、突然意向しないので、HMI(GOT等)のアラーム記録を利用してビットの遷移をロギングすることが可能になります。

このため、メンテナンス時にどの処理がどこでどうなっていたのかが明確に判断できます。

CFカードへ保存が可能なので、異常発生時にステップの状況解析ができます。

フローチャート

              参考に、原点復帰処理のシーケンス処理をフローチャート示します。

データ管理方法について

格納ラック段数処理について

D5500から201WORD分が良品基板の収納場所をFIFOで書き込みます。

D5710に良品基板収納ラックを読出します。

D5750から201WORD分がNG基板の収納場所をFIFOで書き込みます。

D5960にNG基板収納ラックを読出します。

①.自動運転処理ステップで、基板が自動バッファにあり、または

基板を受け取ります。

②.良品基板かNG基板かを判断。

③.良品基板の場合、D5500から201WORDを0クリアし、FIFOで在荷無でラック番号を転送します。

③-1.NG基板の場合、D5750から201WORDを0クリアし、FIFOで在荷無でラック番号を転送します。

④.③または、③-1が完了した後、FIFOの情報を読出します。

⑤.収納ラックがある場合は、収納先有と収納先番号を返します。ない場合は、収納先無となり、エラーとなります。

取り出しラック段数検索処理について

収納基板の時刻変換処理内容は、下記の表のようにします。

* R4000から32bitで時間情報をラックに入庫した時間情報として書き込みをします。

禁止棚または、NG収納ラックにも入庫時間があります。

FIFO時の処理方法について

①.自動運転処理STEPで、基板払い出しラック検索実行処理がされます。

②.NGまたは、禁止棚の条件でなく、基板が存在する場合、R4500へ時間情報を転送していきます。NGまたは、禁止棚の場合、H7FFFFFFFをデータに書き込みます。

③.R4500からの中で最小値=入庫日付の最も古いラック番号を検索します。

④.検索ラックがすべてH7FFFFFFFの場合は、払い出し無で戻り値を返します。上記でない場合、ラック番号と処理基板有を返します。

⑤.処理基板を払いだし動作を実行します。最小値の場所を取出しのラック番号として返します。

ティーチングデータについて

下記のようなファイルレジスタにティーチングデータ 及びサーボの速度指令データを格納しています。

基板情報処理エリアについて

基板情報は、下記のようなファイルレジスタに格納します。

搬送装置内のNet/H運用について

上位通信エリアLW,LBと自装置内LW.LBについては、重ならない範囲で設定をします。

自動バッファがCC-LINK IEの上位通信の窓口となります。

各ライン装置のプログラムでは、CC-LINK IEの上位通信と同じアドレスを使用するために、自動バッファ側で、IEとNet/Hでの変換処理をしています。

補足

装置レイアウトについて

チャック動作説明

基板の受渡の動作は、下記の通りです。

実機の写真

参考プログラムのダウンロード

※GX Develpoerのファイルをアップしてるご指摘があり、GXWorks2ファイルに変換して再アップしました。

変換処理はこちらを参考に

コメント

  1. 増田司郎 より:

    いじわるな意見です
    あまり参考にならないのでは
    どうせ標準化をするのなら、構造化プログラムを使用してはどうでしょう
    一番気になるのは、ステップ処理は即値で切り替えていますがその処理が見えにくい事です
    即値を入れた所で、それがどの処理を行なうか不明な事です
    ノートなりステートを書き込みすればすこしは良くなりますが、その分手間で、間違いの元かなと思います
    サンプルにもそのような記述がないのは残念でした
    ひさしぶりにGXでしたの、今の時代にGXと思いました
    さすがに、新規装置でGXを使用することはないでしょう、せめてWorks2で記述されたものを出された方が、別りやすいのではないでしょうか
    標準化はたいへんだと思います、100人いれば100通りのプログラムできます
    回路の標準化ではなく、なるべくドキュメントをプログラムの中に入れて(コメント、ノートステート等)、さらに詳しいドキュメントを整備するほうが近道かと思います

    • gorism1010 gorism1010 より:

      コメントありがとうございます。
      ご指摘の通り、人それぞれの部分もあるかと思います。
      その一つの意見として後進のものに提示することも必要かと存じます。
      アップしたファイルですが、GX Developerでの作成したのをそのままアップしてしまいました。
      参考に変換の記事です。
      https://gorism1010.com/?p=225
      Works2に変換して再アップしました。
      今後ともコメントがありましたら、お気軽にどうぞよろしくお願いいたします。

タイトルとURLをコピーしました