プログラムの失敗!

実はあまり論理的では無く数学も苦手なんですよ。
ご存知かもしれませんが。

そんな私の失敗談です。



今回は2軸XYを制御でしたが別個のコントローラなので、
直線補間の速度をPLCで計算していました。

コントローラはPCON-CBのCClink仕様をハーフ直値で制御。
目標座標や動作速度、加減速などその都度指定してスタートを掛けます。
その動作速度計算での失敗です。

直線補間の速度計算はXYの移動距離と合成速度で求められます。
従って移動距離は移動するポイントごとのデータで計算しました。
ここに落とし穴!

ここで計算に使っていたのはポイントごとの絶対座標です。
本当は移動距離なので相対座標でなければいけません。
50mmから100mmに移動するのであれば移動距離は50mmです。
しかし座標そのまま100mmで計算していました。

不思議なことに社内でテストしていたときは設定したXとYの座標が絶妙だったのか
補完動作のズレに気が付きませんでした。
しかし納品後の調整中に豪快にXとYの動作がズレて発覚!

冷や汗かきながら調べてみると上記のようなミスでした。
超特急でラダーを修正してポイントごとの座標を引き算し、
移動距離を割り出して動作速度の計算に利用しました。
その場はどうにか切り抜けることができました。

しかしその後に演算エラーが発生。
座標次第では移動距離がマイナスだったり0になったりします。
そりゃ0除算はエラーになりますわな。
その辺の対応の処理までは頭が回っていませんでした。

そんなこんなで納品後もステップ数は結構増えました。
XYを指定通り動かして所定の製品を作るだけの装置ですが、
なんだかんだで4000ステップ近くなってます。
その8割くらいは座標の演算やタッチパネルの表示制御などに使ってます。
実際の自動運転で動作しているのは50行もないと思います。

インデックスレジスタなどの間接指定は使えるのですが、
FOR~NEXTがうまく使えませんでした。
この手の数値の演算を上手に処理すればもっとステップ数が減って
スッキリしたラダーになると思うんですがどうも苦手です。

あとはDMの割付についてももうちょっと工夫が必要と感じました。
割付次第ではインデックスレジスタやBMOVがもっと有効に使えたかなと反省です。
面倒な演算はタッチパネルにさせても良いんですが、
個人的にタッチパネルでの処理は好きではありません。
できるだけPLCでの処理に統一しています。

いずれにしてもプログラム組んで機械を動かすのって楽しくてやめられません。
色々キツイですが今後もがんばりたいと思います。






スポンサーサイト

comment

Secret

プロフィール

FA屋さくら♪

Author:FA屋さくら♪
FA業界に足を突っ込んで10年くらいのうっかり者です。
皆さん気軽に寄ってくださいね。
紛らわしい名前ですが♂です。

最新記事
最新コメント
月別アーカイブ
カテゴリ
今まで来てくれた物好きな方
最新トラックバック
FC2アフィリエイト
アフィリエイト・SEO対策









ジオターゲティング











リンクシェア アフィリエイト紹介プログラム


リンクさせて頂いてます
RSSリンクの表示
検索フォーム
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード