CHODOSブロー成形機の例を使用した産業機械でのSTM32の適用(チェコ共和国)

私が働いている企業のワークショップの一つに、プラスチック容器を作る機械があります。 このマシンはブローマシンと呼ばれます。 1988年にCHODOSによってカルロヴィヴァリでリリースされました。



画像



サイクルは、TTLロジックチップ(タイプK155(555)またはSN74xx)上の電子機器によって制御されます。 カットの下で、前世紀の電子機器をSTM32マイクロコントローラーに置き換えた方法を説明します。



送風機の動作原理は簡単に次のとおりです。ホッパーから出てくるプラスチックのパン粉が溶け、ノズルを介して圧力下のネジで絞り出され、「スリーブ」を形成します。 その後、「スリーブ」は切断され、ブロー型に供給されます。ブロー型では、供給された空気の圧力下で製品が形成されます(私の場合はプラスチックボトルです)。



マシンは、数十個のTTLロジックボード、バルブとスターターを切り替えるための7ボルトのロードスイッチボード、リミットスイッチの入力レベルコンバーターのボードによって制御されます。 すべてのボードは、制御キャビネット内のコネクタでバスケットに挿入されます。 バスケットでは、すべてがラッピング方式で接続されています。 TTLロジックボードは、TESLAチップ(アナログK155(555)またはSN74XX)で組み立てられています。



サイクルの状態を示すものは事実上存在しないため、その強いグリッチの間、何が起こっているのかを理解することはほとんど不可能です。 さらに、ボードは時間の経過とともに故障し、それらを修復する前に、マルチメーターと大量の紙の回路を使用して、不快なポーズでも無限のクエストを実行する必要があります。



ボード付きバスケットの写真(2写真)








鋳造サイクルの制御と管理をマイクロコントローラーに移すことが決定されました。 最初の実験的コントローラーはArduino Mega 2560でした。コントローラーは、スターターと電気モーターからの強力な電磁バーストの条件で動作するように非常に「穏やか」であることが判明しました。 彼は望んだときに電話を切った。 コントローラー自体のシールドも、リミットスイッチから接地されたMKESh 3x0.5へのすべてのケーブルの交換も役に立たなかった。 そしてもちろん、機械の配線全体が完全に交換されました。 フリーズの問題に対する解決策の1つは、ウォッチドッグ機能を有効にしてArduinoのoptibootブートローダーを使用し、EEPROMに状態を保存し、リセット後のサイクルを継続して状態を復元することでした。 しかし、これも助けにはなりませんでした。



一般に、Atmegaを放棄してSTM32に切り替えることが決定されました。



NUCLEO-F401REコントローラーはSTM32として購入しました。 リミットスイッチからのすべての信号は、 PC817オプトカプラーを介して収集されました電磁弁とスターターの制御は、SSR SHARP S202S02で行われました( MOC3061 + BT138のペアを使用することもできます)。



画像



LCD12864(ST7920)は、Aliexpressでインジケーターとして注文および支払われましたが、売り手はLCD 20x4を送信し(紛争中、返金され、ディスプレイはそのままでした)、それを適用することにしました。



プログラムは、オンラインコンパイラmbedで作成されました。



mbedでのこのコントローラーのプログラミング方法について少し説明します。 リミットスイッチ、負荷制御からの信号を操作し、タイマーを操作します。



コードカット
すべてのコードは約2000行かかります。 広めません。 サービス情報は、COMポート(自分用に作られた)を介してコントローラーから常に出ていると言えます。



キーフラグメントのみを表示します。



//初期設定

//プログラムがeepromメモリに保存するプログラム制御変数。

#include "_24LCXXX.h" // eepromメモリチップを操作するためのライブラリ

_24LCXXX eeprom(&i2c、0x50); // eepromチップを接続します

DigitalIn S41(PC_8); // S41トレーラーは、フォトカプラを介してコントローラのPC_8端子に接続されます

DigitalOut Y43(PA_13); //端子PA_13を介した油圧バルブ制御Y43(220Vコイル)

タイマー T48; // T48-キャストサイクルで使用されるタイマー

float SetT48 = 15.0; //オペレータにより調整可能な変数。 T48タイマーが開始する時間。

...

ボイド設定()

{

...

S41.mode(プルダウン); //プルアップ抵抗を入れます

...

}

int main() //メインループ{

...

//トレーラーからの信号を処理する方法

if(S41 == LOW){ //トレーラーのステータスを確認する

...

}

...

//負荷管理方法

Y43 == 1; //油圧バルブY43をオンにします

Y43 == 0; //油圧バルブY43をオフにします

...

//タイマーを操作します

T48.reset(); // T48タイマーをリセットします

T48.start(); //タイマーT48を開始します

...

CurrentT48 = T48.read(); //タイマーT48のカウントの現在の値を読み取ります

if(CurrentT48> SetT48){ //指定された値と比較

T48.stop();

}

// LCDにタイマーの動的状態を表示します

lcd.printf( "T48 =%4.1f"、CurrentT48);

...

// eepromの操作方法:

eeprom.nbyte_read(0x00、&SetT48、4); //業界から4バイトを0x00から読み取り、割り当てられたSetT48変数のメモリに内容を書き込みます(フロート変数のタイプは4バイトです)

eeprom.nbyte_write(0x00、&SetT48、4); //割り当てられたSetT48変数のメモリ値のアドレス0x00から始まる4バイトを業界に書き込みます(フロート変数のタイプは4バイトです)

...

}



コントローラーが点滅します。 NUCLEOは非常に簡単にフラッシュできます。 NUCLEO USBケーブルをコンピューターに接続すると、コンピューターにリムーバブルディスクが表示されます。 オンラインコンパイラでのコンパイル後に取得したバイナリをそこにコピーします。それだけです。ファームウェア自体がクリスタルに注がれます。 OTGケーブルを介してGalaxy Nexusからバイナリを直接アップロードする必要があった場合がありました。



LUT法を使用してプリント基板を作成しました。 はんだ付け。 機械のキャビネットに取り付けられています。 立ち上げました。 調整オペレーターを教えた。



写真の結果




結果ビデオ




今日、「走行距離」は10万サイクル以上です! 電子機器の故障による単一の障害ではありません。



結果。 送風機のコントローラーには、光学的分離を備えた13個の入力、光学的分離を備えた11個の出力があり、それぞれ最大8Aの負荷を切り替えます。 鋳造サイクルのプログラム編成。 入力および出力のLED表示。 画面にさまざまな情報を表示します。 自動および手動制御モード。 手動モードでは、緊急状態に対するソフトウェア保護(たとえば、機械機構の1つの三相モーターの反転スターターの制御)を使用して各出力を個別にオンおよびオフにして、個々の機械コンポーネントの状態を診断することができます。



3台のマシンがあります。 他の2つもコントローラーに転送されます。



価格については書きません。 コースはジャンプしています。 そしてすべての詳細は、私がすべてを買ったAliexpressで見つけることができます。



ありがとう 質問にお答えします。



PS次の段階では、ネジの6つのゾーンとマシンの「ヘッド」の古代の加熱制御を最新の電子機器(6xMAX6675 + Atmega328 + 6xMOC3061 + 6xBT138-600 + LCD20x4)に置き換えます。 私はすべてを小さな箱に集めて、最終的に巨大な制御キャビネットを捨てます。



All Articles