このシリーズでは昔からずっと言われてた構造化プログラムを、実際どうやって作ればよいのか少し簡単な例を書こうと思っています。ちょっと申し訳ございませんがシーメンスのS71500で説明させていただきます。
ここでみんなさんに伝えておきたいのはどこのメーカーのCPUでも単なるツールに過ぎません。大切なのは考え方を理解すること、です。
各記事にもGithubのLinkが貼っており、それで始まりのときとその終わりのときのプロジェクトをダウンロードすることができます。では始まりましょう。
Project000_Start
空のProjectです。今回のStart-Pointになります。
https://github.com/soup01Threes/SiemensStructureProgramming/blob/main/Project000_Start.zap15_1
まず最初は構成を説明します。
S71515FがシーメンスのS210トライブ2台でProfienet IRT通信で制御します。そしてタッチパネルTP900 ComfortがOperatorの操作・表示用するのデバイスになります。
S71515FのとなりにInputモジュール16点とOutputモジュール16点があります。
軸1は同期軸で軸2は位置決め軸になります。
Profinet IRTはなんなのかまた近いうちに別文章で説明させていただきます。
CPU追加
まずTIAを開いて頂いて、Add new deviceします。
そこでControllersを選びます。別にCPU1515じゃなくてもOKです。
シミュレーターでやりますので、そんな差がありません。今回CPU151F-2PN V2.6を使用します。
そして入力モジュールと出力モジュールを1つずつ追加します。
各モジュールにも名前変更できますので、ここで自分ルールで合わせてやります。
InputモジュールにESTOPとResetのTagを追加します。
Drive追加
次はS210を追加します。シミュレーターでやりますので、型式は適度でOKです。
先書いてた構成通り、2つ追加しました。
ProfinetのIRT通信で制御しますので、2つのS210も共にCPU 1515F-2 PNと繋がります。
ネットワーク構成はこうになります。
IRT設定
Profinet IRT通信には少し細かい設定が必要になりますので、ここで丁寧に説明します。
CPUを選んで、General>PROFINET Interface[X1]>Advanced Options>Real time settings>SynchorizationのTabを開きます。
ちなみにシーメンスのCPUは1つ以上のIP持ってるものが多いですが、大体X1、X2、X3のように分けています。すべでのPortもProfinetのReal Time通信ができますが、IRT通信は大体X1しかできません。なので、ネットワーク構築するときは注意する必要があります。
Sync masterを選んでください。
次は、IRT通信するにはどっちのPortからどっちのPortに接続してるかを設定する必要があります。Topology viewに切り替えます。
いまはこんな風に接続します。
CPUのX1 Port1 >>Unit1.a01 Port1>>Unit1.a01.Port2>>Unit1.a02 Port1
Technology Objects
Technology Objects>Add new object
位置決め軸追加
TO_PositioningAxisは位置決め軸です。このTO_PositioningAxisを選び、Nameを変更し、OKします。
Telegramを設定します。
TelegramというのはCPUとDrive通信するとき使うのプロトコルのことです。
Telegramは番号で分別し、Telegram1なら一番簡単な速度制御、Telegram105は簡単位置決め、Telegram30はSafety 用など。
Driveのところに先追加したUnit1.a02を割り付けましょう。
これはOKです。
同期軸追加
同期軸の追加でも操作基本同じです。
TO_SynchronousAxisを選び、OK。
Driveのところに先追加したUnit1.a01を割り付けましょう。
HMI
R00.m99.HMIを追加します。
今回使ったのはTP900 V15.1.0.0です。
HMIとCPUの通信Connectionsを設定します。
Browseをクリックします。
CPUを選びます。
Finishを押して終了します。
最後
こっちらは今回のプロジェクトになります。
Project000_End
今回終わったプロジェクトです。
Hardware-Configurationが完成し、コンパイルエラーない。
https://github.com/soup01Threes/SiemensStructureProgramming/blob/main/Project000_End.zap15_1
あとがき
みんなさんはここでみて頂いてありがとうございます。
多分数多の中に?が浮かんでると思いますが、このプロジェクトのCPU追加などは構造化となんの関係あるの?と思われるかもしれません。
ですが、よく考えたら、
”どんな種類の軸でもできるだけ同じ操作しよう”
”HMIとCPUは同じのエンジニアリングツールで完結しましょう”
”DriveとCPUは同じのエンジニアリングツール”で完結しましょう”
”CPU,Drive,HMIの名前もXX.YY.ZZ.AAのように構造なっていこう”
”入力TagもXX.YY.ZZのように構造なっていこう”
とか、小さいところから構造化をしています。
最後は積み木のように、大きなプロジェクトになります。
構造化構造化って、よく言われましたが、客にとっては同じなものかもしれません。客にとってほしいのは装置が正常で効率よく動くだけです。逆に、構造化になってしまって慣れない方にとってなんでそんな難しい書き方するの?に突っ込まれたときもあると思います。
ですが、構造化になると、各Unitの切り離れ、標準化、変更箇所を最小限に、拡張性、ライブラリ管理、マルチでプロジェクト作成などを考えると、遠い目からみますとメリットはデメリットより多きだと、信じています。
次は実際構造化のプログラムを組み始めますので、どうぞよろしくおねがいします。
はーい、お疲れ様です。