---NCコード作成 渦巻(ヘリカル)切削 (3)---

 NCVCのサポート掲示板で、変数は使えないのか、問い合わせ
 てみました。早速の回答があり、スクリプトを使うと、マクロや
 変数を含んだGコードを使えるようになるとのことで、早速ため
 してみました。
   O2
   G00X18.Y5.
   G00Z#1F100(#1の深さで切削)
   G02X12.I-3.
   X20.I4.
   X10.I-5.
   X22.I6.
   X8.I-7.
   X24.I8.
   X6.I-9.
   X24.I9.
   #1=[#1-0.2](#1の値を-0.2だけ増やす)
   G00Z10.
   G00X18.Y5.
   M97
  「#1」というMACH3でも使える変数を使って過日の
  プログラムを書き換えたものですが、私には、わかりや
  すくなりました。「G92Z0.」という基準点をその都度変えて
  いたのでは、大本の原点が分からなくなるので、
  メインテナンスがしづらくなると思います。「IF」文も
  使えると、回数を数えなくてもいいのですが、MACH3でも
  「IF」文を使うには、マクロ(VBスクリプト等)を使う必要
  があるようなので、変数が使えるだけで、デバックが
  しやすくなります。

---NCコード作成 渦巻(ヘリカル)切削 (2)---

 MACH3のサポートフォーラムをあれこれ探しました。
 サブルーチンの呼び出し方と、ループの方法が分かりま
 した。サブルーチンの先頭には、「O」(オー)と番号をつけます。
 たとえば「O1」のようにします。呼び出すには、「M98」を
 使い、「M98 P1」のように記述います。「P1」は、
 サブルーチンの「O1」を呼び出すという意味です。
 また、呼び出す時に、繰り返しの回数も記述できます。
 「L」を使い、繰り返す回数を「L5」のように記述します。
 「L5」だと5回サブルーチンを呼び出すということになります。
 この繰り返しを使うと、やりたいことに一歩近づきました。
 % (プログラムの開始) 
 (2014/11/29 15:43)・・()はコメント
 G90G54G92X0Y0Z10.
 
 M08
 S3000
 M03
 O1・・メインルーチン名 
 M98 P2 L5 (L ha,kurikaesi,kaisu)・・サブルーチンO2を
                       5回呼び出す

 M98 P3・・サブルーチンO3を呼び出す。
        O3は終わりの処理
 
 O2・・サブルーチン「渦巻き処理」
 G00X18.Y5.(START-POS)
 G00Z-0.2F100.(0.2mm DEPYH)
 G02X12.I-3.
 X20.I4.
 X10.I-5.
 X22.I6.
 X8.I-7.
 X24.I8.
 X6.0I-9.
 X24.I9.
 G92Z0.・・(0.2mm掘り下げた位置を基準点0にする)
 G00Z10.
 G00X18.Y5.(START-POS)
 M99・・(サブルーチンの終わり)
 O3
 M09
 M05
 X0Y0
 M30・・(プログラム実行の終了)
 %(プログラムの終わり)
 
 このような、Gコード(NCコード)で、渦巻き状に1mmほり
 下げるプログラムにできました。「IF」と「変数」が使えると
 楽なんですが、変数は、MACH3では、使えるようですが、
 NCVCでは使えませんでした。後で、サポート掲示板で、
 問い合わせしてみようと思います。
 ちなみにMACH3で変数は、「#1」のように数字に#を
 つけると、変数の扱いにできるようで、この変数の操作は、
 #1=[#1-1](変数を1減らす)
 #1=15(変数に15を代入)
 のようにします。これで「IF」が使えると楽なんですが。
 「IF」が使えないので、0.2mm掘り下げて、その位置
 をその都度「0」(ゼロ)の基準点に変更することで、
 だんだん切削点を下げてます。
 NCVCで、上記のプログラムを読み込んでみると、

 

 のようになります。エミュレートしてみても、
 いいようです。

---NCコード作成 渦巻(ヘリカル)切削---

 渦巻き状に切削するNCコードの作成がしたくて、検索しましたが、
 お手軽にできるものは、見つかりませんでした。
 NKさんのHPに「渦巻きソフト」がありましたが、WINDOWS7では、
 動きませんでした。
 MACH3のプラグインソフトの「Circular Pocket」で渦巻き
 のNCコードを作成できるようでしたので、いろいろ作って、
 動かしてみました。コードと、逐次変化する画像をみていると、
 円を半分にしたものを組み合わせていることに気付きまし
 た。もうちょっと難しいことをやってるのかと、思いましたが
 円の組み合わせということで、目から鱗でした。
 MACH3で作った渦巻きのコードは、NCVCでは、うまく読み
 込めないようでしたので、NCコードをいろいろいじって、
 渦巻きを作ることができました。

 

 この渦巻きのコードの一部は、
      G00X18.Y5.(18.5のXY座標に移動)
      G01Z-0.2F100.(-0.2mmまで、垂直に切削)
      G02X12.I-3.
        (18.5の座標から、半径3mmで、
         12のZ座標まで下半分の半円を切削)
      X20.I4.
        (半径4mmで、X20の座標まで、
         上半分の半円を切削)
      X10.I-5.
        (半径5mmで、X10の座標まで、
         下半分の半円を切削)
      X22.I6.
        (半径6mmで、X22の座標まで、
         上半分の半円を切削)
      X8.I-7.
        (半径7mmで、X8の座標まで、
         下半分の半円を切削)
      X24.I8.
        (半径8mmで、X24の座標まで、
         上半分の半円を切削)
      X6.0I-9.
        (半径9mmで、X6の座標まで、
         下半分の半円を切削)
      X24.I9.
        (半径9mmで、X24の座標まで、
         上半分の半円を切削)
 の意味のようです。
 これをサブルーチンとして活用できれば、楽になります。
 NCコードでも、サブルーチンの呼び出しができるようですが、
 細かい文法が分かりません。研究課題です。

--「PIC」プログラミング再び (21)---

 ===AD変換後の割り込み===
 また、また、はまりました。
 ステッピングモーターのコントローラーは、一応完成しましたが、
 
 ステッピングモーターの速度の可変がスムーズにいかないの
 で、再度、PWMでのパルス発生とAD変換の組み合わせで、
 プログラムの変更を試みてます。
 諸兄のHPには、AD変換後、割り込みを発生できるとありますが、
   ADIF = 0;//AD割り込みフラグクリアー
   ADIE = 1;//AD割り込み許可
   GIE= 1;//割り込み全体の許可
 の記述をしても、AD変換後の割り込みが発生しません。
 ヘッダーファイルを眺めたり、ネットで検索しまっくりました。
 約一日あれこれやりましたが、やっとヒットしました。

 ここに、その記述がありました。

 

 なんと、周辺機器の割り込みの許可もしないと、AD変換後
 の割り込みをしないんだそうです。
   ADIF = 0;//AD割り込みフラグクリアー
   ADIE = 1;//AD割り込み許可
   PEIE=1;//周辺機器の割り込み許可
   GIE= 1;//割り込み全体の許可
 赤の周辺機器の割り込みの許可を記述すると、すんなり、割り込み
 発生。
 割り込みのロジック図を見るとすぐ分かったんですね。今まで
 見方がわかりませんでした。

 

 ロジック図を見ると、AD割り込みは、PEIE割り込みの下部にあり
 ますので、PEIEの許可が必要なことがわかります。

--「PIC」プログラミング再び (20)---

 ===「LCD表示ライブラリー」===
 PICのプログラムを組んで、検証するのに、LCDの表示が便利
 です。秋月のSD1602というLCDを使ってますが、これを使うに
 あたって、表示のためのライブラリーが必要です。

 諸先輩のHPを参考に動かしていましたが、
 使用ピンを変更したくて、あれこれやりました。
 プログラムを見ると、
           #define LCD_DATA PORTB
           void lcd_write(unsigned char c){
          __delay_us(40);
          LCD_DATA = ( ( c >> 4 ) & 0x0F );
 //上位4ビットを右に4回シフトしてRB0~RB3に書き込む
          LCD_STROBE();
          LCD_DATA = ( c & 0x0F );
 //下位4ビットをRB0~RB3に書き込む
          LCD_STROBE();
           }
 という項目があり、データをBレジスタで書き込んでいる
 ようですので、ここを書き換えるといいはずでした。
 プログラムでは、8ビットのデータを2回に分けてRB0~RB3
 に書き込んでいるようでしたので、ここを変更すれば、
 違う端子から書き込みができるはずでした。
 ここを、RB4~RN7に変更すべく、
           void lcd_write(unsigned char c){
          // 送信データのバイト列上位4ビットを処理
          RB4 = ( ( c >> 4 ) & 0x01 ) ;
          RB5 = ( ( c >> 5 ) & 0x01 ) ;
          RB6 = ( ( c >> 6 ) & 0x01 ) ;
          RB7 = ( ( c >> 7 ) & 0x01 ) ;
           LCD_STROBE() ;
          // 送信データのバイト列下位4ビットを処理
          RB4 = ( ( c ) & 0x01 ) ;
          RB5 = ( ( c >> 1 ) & 0x01 ) ;
          RB6 = ( ( c >> 2 ) & 0x01 ) ;
          RB7 = ( ( c >> 3 ) & 0x01 ) ;
          LCD_STROBE() ;
          }
 と変更してみましたが、うまくいきませんでした。考え方は、
 これでいいみたいでしたが、ネットでくぐると、
 別な方のHPに同じ考えのライブラリーが載ってました。
 最初の#defineのところで、使用ポートを記述すればいいので、
 便利だと思います。
 今日も一つ勉強しました。
 ライブラリー用に編集したものをここに掲載します。
 ヘッダーファイルは、HITEC-Cのサンプルのを
 そのまま使います。

NCVCで原点レイヤーが読み込めない。

 ステッピングモーターのコントローラーをケースいれるために、
 パネルの加工をしています。
 形状のちょっと複雑な電源の差し込みコネクターの穴を開け
 るのにsable2015を使おうと思い、Gコードの作成にかかった。
 いつもの通り、「花子→JWCAD→NCVC」とデータを作成した
 が、NCVCで「原点レイヤーが読めない。」と怒られてしまう。
 あれこれやってネットでも検索して、JWCADのデーターを
 そのまま読み込むときちんと原点レイヤーも読み込まれる。
 JWCADで、DXFファイルに変更すると原点レイヤーが読み
 こまれなくなる。
 あれこれさがして、JWCADのレイヤーの書き込みか、と
 あたりをつけて、設定のところを見てみると、

 

 ありました。オプションのところに「レイヤーに番号を付加する」
 オプションがあり、しっかりチェックが入っていました。
 ここを外して、保存して、読み込むと、あっさりよみこめました。
 めでたし、めでたし。
 ちなみに、新しくNCVCとJWCADをインストールしたばかり
 でした。デフォルトでは、だめだったんですね。

--「PIC」プログラミング再び (19)---

 全面パネルの加工が終わり、スイッチ類を取り付けました。
 全部が丸い穴でしたので、ドリルで開けて、19mmの穴は、
 テーパーリーマで広げました。
 パネル表示、うまくいったのですが、レオ(愛犬)がそばで、
 動いていたので、気がついたら、レオの毛をはさんでしまい
 ました。まあ、愛嬌で、よしとします。

 

 スイッチ類と基板は、ワンタッチのコネクターですので、この後
 基板を固定して、スイッチ類を接続します。
 基板は、穴を開けないで、両面テープのスペーサーを
 使います。

 

 

 後は、背面のパネルの加工ですが、穴開けの形状がちょっと
 複雑なので、sable2015を使います。

--「PIC」プログラミング再び (18)---

 何カ所か変更して、やっと次のように落ち着きました。

 

 抵抗やらコンデンサーは、正確な計算はしていません
 ので、とりあえず動くといったレベルだと思います。
 今回、丁寧に回路図を書きましたが、事前に書いておくと
 チャックやら、制作が能率よくいくようです。
 なんでもそうでしょうけど、事前の準備は大切
 なんですねえ。

--「PIC」プログラミング再び (17)---

 ほぼ満足のいく結果になってきたので、ケースの操作パネル
 の作成にかかります。
 操作パネル作成のフリーソフトを探しましたが、見つけられま
 せんでしたので、花子で作りました。

 

 エーワンの屋外でも使えるラベルあたりに印刷して、
 使おうかと思います。
 それにしても、操作パネル作成のフリーソフト、ありそうな
 きがするのですが。結構需要あると思うのです。

---「玉掛け」講習---

 重量物(工作機械)を将来買ったときの運搬のために、
 「玉掛け」と「小型移動クレーン」の講習を受けたいなと思って
 ました。
 手始めに、「玉掛け」の講習を受けてきました。
 講習の空きをインターネットで確認し、インターネットで申し込むと、
 申し込み用紙が送られてきました。必要事項を書き込んで、当日、
 本籍の確認できる住民票と写真を持って、行ってきました。
 場所が不安でしたが、駐車場につくと、

 

 表示がありその方向に行くと、入り口が表示してありました。

 

 建物の中に入ると学校の教室のようでした。

 

 ここで、一日目は、5時近くまで講義。二日目は、講義と
 筆記試験でした。三日目は、周りにたくさんおいてある重機
 に囲まれたちょっとした広場で実技をしました。

 

 実技の後は、3人一組で、代わる代わるリーダーと
 補助者になりながら、リーダーとして玉掛けの指示と実際
 の移動の試験で、6時過ぎまでかかりました。
 実技試験では、うまくできなかった部分もありますが、
 それとなくヒントがでたりで、無事合格できました。
 基本的に、落とす試験ではないようです。
 免許証大の写真入りの修了証とヘルメットに
 貼るステッカーをもらってきました。

 

 無事取得できましたが、久しぶりに疲れました。
 次回は、たぶん来年でしょうが、小型移動式クレーン(ユニック)
 の講習を受けたいです。
 玉掛けは、3日間で、2福沢諭吉4野口英世でした。
 ちなみに、移動式小型クレーンは、4野口英世割引で、
 4福沢諭吉ですから、ジェジェジェです。