今回はPilz PSS4000 紹介の第3話です。前回はST Resourceのプログラムの作成や簡単なツールの操作を紹介しました。次はいよいよPilzの本業、Safety プログラムの作成や変数などのコンセントを説明していきたいと思っています。
よろしくお願いします。
Thanks!
この記事で使用するRevPI ConnectはPILZ JAPANが貸してくださった機材です。
PILZ
PILZは安全およびオートメーション技術のソリューションでトータルソリューションサプライヤとしてのFA現場を支え、人の安全だけではなく、機械、および環境の安全を保証し、機械や設備をいかに安全に稼働させます。ピルツは全世界に42の現地法人や支社を設置し、包装、自動車産業、ロボットアプリケーション、さらに風力発電、鉄道技術など様々な分野で活躍しています。
Office:
ピルツジャパン株式会社
〒222-0033
横浜市港北区新横浜3-17-5
いちご新横浜ビル 4階
HP
Reterence Link
Data types
PilzのCPUは他のメーカーと同じく変数は必ずデータタイプを宣言する必要があります。PilzのCPUでデータ・タイプを宣言することによって、
- 変数の範囲を制限(USINT/INTとか)
- 使用できるアプリケーションエリアも分かれる(FS/ST Resource)
- データ・タイプにより占有するメモリエリア
注意するのはFS Data Typeの変数はST Resourceで使用できません。
FS data types
こちらはPilz CPUのFS Data TypeでSafetyアプリケーションで使用する変数タイプになります。注意するのは一旦FS Data Typeに定義された変数はFS Resourceのみで使用できます。
- SAFEBOOL
- SAFEBYTE
- SAFEWORD
- SAFEDWORD
- SAFELWORD
- SAFESINT
- SAFEDINT
- SAFELINT
- SAFESINT
- SAFEYUINT
- SAFEUDINT
- SAFEULINT
あと細かい話になりますが、
- FS Data Typeの変数はST Data Typeの関数でも使用可能です。例えばFunction blockにBOOL変数のパラメータが要求される場合、SAFETBOOLを使用してもOKだし、BYTE_TO_WORDのIECプログラム変換機能もSAFEBYTE_TO_SAFEWORDに使用できます。
- FS Data Typesの変数は新しい与えを更新するにはSAFE#47のような表現でOK。
IEC61131-3
PilzだけではなくIEC61131 Programming中にはUser Programには3種類のPOUsがあります。前回と今回の記事で使用してたのはPRG(Programs)ですが、他にまだFB(Function Block)とFunctions(FC)があり、構造化のプログラムでPRGの中にFBを呼び出ししたりしています(マルチCallの深さは最大12回まで、注意するのは回帰はできません)。また今度の機会で紹介させていただきます。
プログラム作成の流れですが、Function BlockやFunctionを作成することによりPRGの中に何回も再利用できます。
FunctionBlock
Flowの中に”Instance”という項目がありますが、InstanceはCPUの中にメモリを確保し該当するFBの演算結果を記録できるようにするためです。
また、Instanceはあくまでもメモリで、大事なのはFunction Blockです。車にたとえにすると、Function Blockは車の設計図で、Instanceはその設計図に沿って作られた車です。
Function
FunctionはFunction Blockと異なり、Instanceからメモリの確保がいりません。その代わりに演算結果は次のサイクルに残らないんです。
PI variables
PI 変数はPRG・FC・FBの中に定義でき、その変数を使用しHardware IOデータにアクセスするだけではなくPOUs間のデータ交換も可能です。PI 変数とI/O データの接続はI/O Mappingから設定します。
I-PI Variables
こちらの変数はModules BusのI-Data(例えばHardware-Input)から外部I-Dataや他のPOUのO-PI Variablesに転送します。
Statement
<Variable name >AT %i* <Data Type>;
ESTOP Input1 AT %i*:BOOL; |
O-PI Variables
こちらの変数はModules BusのO-Data(例えばHardware-Output)から外部O-Dataや他のPOUのI-PI Variablesに転送します。
Statement
<Variable name >AT %Q* <Data Type>;
ESTOP Input1 AT %Q*:BOOL; |
Resource assignment
前回TutorialではResource AssignmentからST ResourceをTaskに振り分けましたね。そのResource AssignmentはどんなプログラムをどんなTaskに実行するかを設定する意味で、大体プログラムがの作成完成してから振り分けるでしょう。
補足ですが、POUは周期で、Event-Baseで、自由TriggerでもOKです。
Validity of process data
こちらのData flowはData SourceやData Sinkの流れを説明しています。青い色の部分(Data Source)から灰色の部分(Data Sink)にデータを転送するとき必ず通信エラーのときがあります。Data Sink信号が現在値の有効性を確認するmたにえ”Valid Bit”というデバイスがあり、Valid=FalseならData Source は無効か、データSourceにアクセスできないか。
Valid=TrueならData Sourceが有効です。
Valid BitがFalseには様々な原因があり、例えば
- Module bus I-Dataなら、入力エラー・I/Oモジュールエラー・Module Busエラー・起動中
- External I -dataなら通信が停止中か、エラー発生か
- O-Pi variablesなら、TaskやResourceがStop状態になっています。
Module bus I-data
FS/STモジュールBusからの入力データになります。
External I-data
外部通信からの入力データになります(例えばPROFIBUS-DP)。
O-PI variables
O−PI VariablesはPSS 4000リソースから来ます。(ST ResourceやFS Resource)
I-data from cross-project SNp Communication
PSS 4000プロジェクトからの出力データです。(例えばO-PI変数)
Module bus O-data
FS/STモジュールBusに書き込みの出力データになります。
External O-data
外部通信に出力するデータになります(例えばPROFIBUS-DP)。
I-PI variables
I−PI VariablesはPSS 4000リソースから来ています。(ST ResourceやFS Resource)
O-data from cross-project SNp Communication
PSS 4000プロジェクトからの入力データです。(例えばO-PI変数)
Add Safety IO Modules
まずプロジェクトからI/O Moduleを追加します。
Hardware Configuration>Device_Name>Module busをクリックします。
PSSu E F 4DO 0.5
右のPaletteからPSSu E F 4DO 0.5を検索し、PSSu E F 4DO 0.5をCPUにDropします。
このような操作です。
PSSu E F 4DI
右のPaletteからPSSu E F 4DIを検索し、PSSu E F 4DO 0.5をCPUにDropします。
このような操作です。
それでHardware Configuration構築完了しました。
Add Safety Program
これからSafetyプログラムを作成していきます。IEC 61131 programmingを右クリック>New>POUで新しいPOUを作成します。
Programming LanguageをLD(ラダー)に選択し、TypeはProgramでOKします。
LadderプログラムのIDE画面が表示されました。
Define Safety Process I/O
最初はSafety Process I/Oを定義します。
Programming
Network1
A接点をクリックします。
このようにデバイスを接点に割り付けます。
Networkにもう一つのA接点を追加します。右のPalette>Contacts and coils>N/O contactがあります。
N/O contactをそのままNetwork1にひっばります。
このような操作です。
定義されてない変数を接点に入力したら赤くなります。
よし、これでOKです。
Network2
IDEの白い部分を右クリック>Add Networkで新しいNetworkを追加します。
PaletteからTON(Delay ON)を検索し、そのままNetwork2にひっばります。
TON Function Blockが追加されました。
TONのInstanceを定義します。
Function Blockの<>部分はInstanceを入力するFieldです。
このような操作でTONのInstanceを入力しましょう。
Network3
最後はもうひとつのNetworkを追加し、Delay TimerのQ(出力)がTrueになると別のCoilを出力するようにします。
Comment
緑文字の部分はCommentを入力することができ、各Networkに簡単な説明を入れます。
IO Mapping
IO Mappingから先程追加したFDO/FDIとUser programをMappingできます。
Mapping画面からPI VariablesとI/O Data Module busをMappingできます。
Hardware Configurationではすでに複数の入出力があります。
モジュールの出力を選び、そのままFS ResourceとMappingしたい変数にひっばればよいです。
PI 変数とI/O Dataの出力部分がMapping完成しました。
安全入力も同じく、モジュールの出力を選び、そのままFS ResourceとMappingしたい変数にひっばればよいです。
Done!
Add FS Source
FS ResourceにSafety programを追加します。
先程作成したSafety ProgramをFS ResourceにDropします。
このような操作でFS Resourceに安全プログラムを追加しました。
Configure Task
FS ResouceのTask設定を行います。前回の標準TaskでCycle Time・Priority設定できなかったが、FS Resourceならそれらの設定ができます。
Compile
Project>Close All Editorsで一旦すべてのEditorsを閉じます。
次はBuild>Build Allでプロジェクトをコンパイルします。
そしてProjectをCPUにDownloadしましょう。