So-net無料ブログ作成

回路図とのノードの不具合チェック Part.2 [EXCEL Macro(J)]

主にDとQなどでノード名をAKやECBではなくて123などの数字で指定している場合を
チェックするEXCELマクロを作成しました。
AVRなども4ピンぐらいまではアサインが不規則な場合もあるのでUでもチェックできる
ようにしました。

それ以外に指定したフットプリントとコメント欄に完全一致したものも追加で含めます。
それはCRは通常は1や2などのピンアサインなのでリストに加えると増えるので除外します。
しかし、電解コンデンサなどでPとNではなくて1と2とされる顧客もいらっしゃいます。
それに対応するにはこのように個別に型番で指定する必要があったからです。

下記の画像がその結果ですが、同じフットプリントやコメントはどれか一つを調べることで
確認することが多いので、代表するものは黒でそれ以外は灰色にしました。

ノードは自動で発行してリンク先が存在していたら記載して、更にハイパーリンクを貼って
います。

これまでに使用したことがないEXCELの関数やメソッドを使用したので非常に勉強になりました。

Node_check_Macro.png

nice!(0)  コメント(0) 

PnPファイルと一緒にBOM [Altium Delphi (E/J)]

パターン設計が完了するとピックアンドプレースファイルを出力して一緒に送る場合が多いでしょう。
しかし、その時点で回路設計者から部品実装会社に部品表が提出されているとは限らないでしょう。
定番部品の部品手配が部品実装会社の場合は部品表が届いていないというのは不安です。

そこでPCBCAD側から部品表を出力して同梱する方がいいでしょう。
しかし、「Altium Designer」からの部品表出力はバージョンによっては自動ではなくて手順が必要です。
その代わりになるのが昔から地味ながら存在している「Simple BOM」です。
この「Simple BOM」を同梱すればいいでしょう。
ただ、AD18ぐらいからはこの「Simple BOM」がメニューからも消えてしまいました。
そこで、「Run Process」の情報をスクリプトに書き換えて処理します。

弊社ではガーバーデータのフォルダ内にFABという製造用フォルダを設けています。
その中にサブフォルダとしてBOMを作ってそこに入れています。

続きを読む


nice!(0)  コメント(0) 

マクロは人の為ならず [ETC (J)]

知り合いの会社からの要望でEXCELのマクロを空き時間を利用して作成することが
時々あります。
しかし、それはその方の為ではなくて、自分用でもあります。

自分の発想では限界があるので、そういう別の目線も重要です。
パターン設計も慣れると余り考えなくてもパターンを引くことが可能ですが
マクロのプログラミングの場合はそういう訳にはいかず、計算や発想をする
必要があります。

脳のトレーニングのためにもプログラミングは役に立っています。


nice!(1)  コメント(0) 

メニュー内のRun Processはどこに [AD18(J)]

AD18ぐらいからメニュー内に「Run Process」の項目が無くなったようです。
これまでに「Run Process」を直接試すことは動作テスト以外にはないのですが
無くなると困ります。

Altiumのサイト内で「Run Process」を探すのもバージョンが上がってくると
それへの対応なのか、ややこしくなっています。

弊社では「Run Process」を利用して、情報が少ないScriptのコマンドの代わりに
記述をScriptに書き換えています。

「Run Script」の項目があるのでそれでその書き換えたScriptを実行しています。


nice!(0)  コメント(0) 

REF番号の検索 [EXCEL Macro(J)]

REF番号を検索するEXCELのVBAでは、Instr関数を使います。
しかし、REF番号特有でR5を検索しようとすると
VR5も該当してしまいます。
トランジスタはQが多いですがTR*であればそれも該当します。
L*を検索すると、RL*も該当するなど含まれます。

こういう点に気をつける必要があります。
Instr関数では文字の始まりの位置を返すので完全一致は指定できません。

そこでFINDメソッドで完全一致を指定することになります。
ただ、FINDメソッドでは前回の条件を覚えているようなので引数を指定しておかないと
検索結果に再現性がなくなるようです。

SEARCH関数というものもありますが、こちらは大文字小文字を区別してくれないので
これまでに使用したことはありません。


nice!(0)  コメント(0) 

EXCELでのハイパーリンク [EXCEL Macro(J)]

これまでURLなどの情報をセルに書き込むことはしていましたが
セルの文字列に対して、同じファイル内の別のシートにリンクすることに挑戦しました。

実際にはネットのノードをクリックすると別のネット名があるシートにジャンプして
他のノードとの接続関係を見るためです。

このハイパーリンクに気が付かなかったら、表示(表現)が複雑になっていたところです。

しかし、これは手動での話しです。
これをVBAで自動処理するにはどうしたらいいか、まだトライしていません。

先日、触れたネットリスト内のノード名の宣言などのミスをチェックするEXCELのマクロに
利用しようと思っています。

実際に処理をしてみると、セルの座標(i、j)などの指定では処理できず、通常のECXELのように
A1、B4などの記述でないと動作しないようです。
j部分ををアルファベットに変換するようにプログラミングして対処します。


nice!(0)  コメント(0) 

ライブラリエディタ画面からの印刷 [ALTIUM DESIGNER(J)]

フットプリントを編集する画面からの印刷の話です。
Summer09では印刷できなくて上部のアイコン画面も薄くなっています。
少なくともAD14.3以降では印刷可能です。

AD19では寸法図を入れられますが、それを顧客に提出する場合は、PCBエディタ画面では
寸法レイヤが消えるのでNGです。
そこで、提出書類作成するにはライブラリエディタ画面からの印刷が必須になります。

単品であればそれで問題ありませんが、複数のフットプリントを集めて印刷するのは
新規フットプリント名をつけるか、単体のPCBLIBを作成して処理することになるでしょう。
スクリプトができればありがたいことですが、まだその案は浮かんでいません。


nice!(0)  コメント(0) 

A3ビジネスプリンター [Computer (J)]

電気店でエプソン製のプリンターを見てきました。
パソコンやその周辺機器はインターネットよりは実際に家電売り場でチェックした方が
いいからです。

そこで気に入ったのがPX-M5041Fという機種です。
https://www.epson.jp/products/bizprinter/pxm5041f/feature_2.htm

つい最近の機種という訳ではなさそうですが、価格も実売は3万円台です。
弊社で使用しているインクジェットプリンターも7年ぐらい経っているのでそろそろ故障する
のではないかと思って、次の候補をチェックし始めています。

別のスキャナーの付いていたA4の機種も壊れてしまったのでコピー機能は自宅では無理なのですが
この機種ではそれも可能です。

これ以外の機種でCMでお馴染みのエコタンクのシリーズは本体価格が高いようです。
交換インクで儲けることができないので本体価格を高めにするしかないでしょう。


nice!(0)  コメント(0) 

ドラフトマンでのパターン [AD19(J)]

AD19ではマウント図にパターンを加味できます。
下図ではデフォルトではなくてシルクを選択し、トポロジーでパターンを重ねています。
部品面はなしで、基準となる部品が少ない半田面だけでパターンの追加をしています。
レジストはレイヤの優先順位を下げないと全体に被るので未使用です。

AD19_DM_PTN.png


nice!(0)  コメント(0) 

PnP_Reportスクリプト [Altium Delphi (E/J)]

ピックアンドプレース(PnP)ファイルを生成する2つのスクリプトを合成してメニューで選べるように
しようとプログラミングしました。
スクリプトで出力することで、パターン設計をしているALtium Designerのバージョンに依存せず
安定したピックアンドプレース(PnP)ファイルを顧客に提出できます。

いざプログラミングを始めると、当初の考えとは違ってAD14風、AD18風、アドバンスという3つから
ラジオボタンで選択できるようにするのがベストだと感じました。

3つ目をアドバンスにしたのは省略するとADになるからで、ファイル名の作成時にADの文字を追加
しても違和感がありません。All Data(TOP/BOTの両面)の略とも取れます。

AD14では2行目が空白行になっているのでそれに準拠しました。チェックボタンでダミーの
Ref-xyとPad-xyを追加できますが内容はMid-xyと同じです。

AD18では2行目が空白行は止め、部品のセンターの名前がMid *ですがCenter*に変更しています。
3種類の中では一番コンパクトです。

アドバンスではSMDかどうかをチェックし「Type」という項目を設けて表示し、更にコメント欄を
左から3番目とし、フットプリント(2番目)の横に移動して部品の内容を再確認しやすくしてあります。
顧客によってはトップとボトムを別々のファイルにして欲しいという要望もありますがそれにも
チェックボタンひとつで対処ができます。


ファイル名は、それぞれ*_AD14、*_AD18、*_ADです。その*_ADのデータを各面で分割したものは
名前が長くなるので単純に*_TOP、*_BOTとしてあります。

このスクリプトはSummer09では動作しないようですが、それ以外のAD14-19までは問題なく
動作します。

PnP_Report.png


nice!(0)  コメント(0) 

SMDとディスクリートのPCB内での区別 Part.2 [ALTIUM DESIGNER(J)]

記事のアップが遅くなったので話が前後しますが、下記のように解決しました。

表面実装のコネクタで位置決めのNTHがある場合も、前出のSMDだけ出力するスクリプトでは
ディスクリート扱いでした。

下記のマルチレイヤだったらSMDではないという構文がそうしていました。
If Pad.Layer = eMultiLayer Then
SMDcomponent := False;

そこで上段を下記のように更にメッキ穴だったらと追加しました。
If Pad.Plated = True Then

これで解決はしたのですが一部でそうではないものが登場してしまいました。
SMDとして作成したフットプリントにてToplayerのパッドに対して誤ってPlate部分にチェックが
入っていたのです。

という訳で下記のように書き換えて解決しました。
If (Pad.Layer = eMultiLayer) And (Pad.Plated = True) Then

フットプリントを作成する場合にディスクリートのパッドを修正してSMD用のパッドに流用する
場合は、Plate部分にチェックがあるのを消し忘れるミスが発生するのでご注意ください。

SMD_IMD_SCR.png

nice!(0)  コメント(0) 

漆を衝撃波で抽出 [Technology (J)]

伝統工芸の番組で時々、日本の漆が貴重で価格も収穫量も少ないことを耳にします。
中国産は価格も量も問題ないのですが耐久性がなくて、塗り替えの頻度が増したり
職人には納得できないものだったりするようです。

人工的に合成できないのか、また収穫量を上げられないのか気になっていました。
そこで目にしたのがこちらの記事です。
https://www.iwate-np.co.jp/article/2018/12/22/41590

10年ものの漆の木ではなくて5年ものの木でも「衝撃波破砕技術」で木を粉砕することで
収穫量を上げるという画期的なものです。
こちらの「衝撃波破砕技術」もTV番組で見かけたことがあって、その時は外形状を維持したままの
りんごジュースをストローで飲む映像でした。

こちらにもその「衝撃波破砕技術」が掲載されています。
https://www.okinawatimes.co.jp/articles/-/23181

以前に見たのは爆薬を爆発させたものの衝撃波でしたが、この記事では電気的に衝撃波を起こして
いるようで、これなら衝撃波をコントロールしやすいでしょう。


nice!(0)  コメント(0) 

回路図とのノードの不具合チェックをするには [PCB Design(J)]

外部の回路設計者のSCHCADで出力したネットリストでパターン設計すると
デバイスのノードに信頼度がありません。
特に、デジトラ、ダイオード、AVRなどです。

知り合いのパターン設計業者との会話で、REF番号でアルファベットがDやQなどの場合は
ノードを表示させ、関連する3つぐらいのネットリストの一部を表示するマクロを作成したら
どうかという話になりました。
元にするデータはネットリストそのものです。

AVRなどはアルファベット部分がIC、Uとなるので通常のICとの区別が付かないので
全部調べることになってしまいます。
そこで、例としてU2-4などノード部分(ハイフンの後の数字)が4までで止まっていればAVRなどの
チェックしておいた方がいいデバイスとすることにしました。

ダイオードやトランジスタなどのノードが数字なら要チェックとなります。
EXCELのマクロでどこまで怪しいREF番号を抽出してリスト化できるか楽しみです。

フットプリントなどの型番でもソートし、同じ部品なのにノード名が違っていたり、混在している
ものも抽出できるといいでしょう。


nice!(0)  コメント(0) 

PnP関連のスクリプト2種の合成 [Altium Delphi (E/J)]

2種類のPnP関連のスクリプトをその都度、選択するというは面倒です。
そこで、メニューフォームを作成してラジオボタンで選択する方がいいでしょう。

しかし、それだけでは済まないでしょう。
SMDの場合(SMD)
TOP/BOTを別のファイルとして出力するかの選択も必要でしょう。

通常の場合(Normal)
ADからのPnPと同じものにするのか、SMD/THD(IMD)を区別するためにTypeの項目を設けるのか。
(THD(IMD)とはディスクリート部品のことです。)

こちらでも、TOP/BOTを別のファイルとして出力するかの選択です。

恐らくSMD<--->Normalの切替がラジオボタンで、Typeの項目追加がチェックボタンに
なるでしょう。
TOP/BOTを別のファイルとしてどう出力するのか、プログラミングで悩むことでしょう。


nice!(1)  コメント(0) 

PnP関連のスクリプト2種の改版完了 [Altium Delphi (E/J)]

DelphiスクリプトによるPnP出力するこちらのマクロの再修正が完了しました。

SMD専用ですが、ディスクリートを含めた通常のPnPで、SMD/THDを区別をする2種類を用意しました。
PnP_ALL2.PAS
PnP_SMD2.PAS

Component.detailの部分は下記のようにしてREF番号とコメントを抽出して記載してあります。

******************************************************************
DET := Component.detail ;
// REF
DES := Copy (DET , 11 , Pos(' Comment:',DET) - 11 ) ;
// Comment
CMT := Copy (DET , Pos(' Comment:',DET) + 9 , (Pos(' Footprint: ',DET) - Pos(' Comment:',DET) - 9 )) ;
******************************************************************

これによりREF番号を調整するためのSCHとのリンクも不要です。
EXCELでコメント欄を修正するマクロも不要となりました。

危うく途中で断念するところでしたが粘ってよかったです。

プログラム的には、内容を追記する方式なのでREF番号がバラバラだったのでソートしました。
それに伴いヘッダー部分を後から追加する方式に変更しました。


nice!(0)  コメント(0) 

PnPスクリプトの修正のヒント [ALTIUM DESIGNER(J)]

PnPスクリプトのコメント欄として下記のようにしていましたがこれはSCH由来の情報です。
Component.SourceLibReference

PCB由来のコメントが欲しいので、スクリプトを色々と弄くってみたらこちらの記述が浮かびました。

Component.Detail

この結果は、RA18の場合は下記のように出力されます。
Component RA18 Comment:EXB38V473JV Footprint: EXB38V

つまり、Detailの情報にはDesignator、Comment、Footprintが混在で記述されていました。
この文字列を事前に加工すればSCH由来ではなくてPCB由来のものにできそうです。

PnP_Scr_Hint.png
nice!(0)  コメント(0) 

表層パッドのメッキの修正 [AD19(J)]

以前の記事で触れたように、スクリプトで生成するPnPではTopLayerでメッキ(Plate)が掛かって
いなければSMDということにしていました。

しかし、手持ちのPCBLIB内にTopLayerでメッキが掛かっているものがありました。
通常のマルチレイヤのPADから修正して利用したがらだと思っていましたが、そうではなくて
知り合いからまとめて貰ったPCBLIB内のフットプリントを修正して再利用したものとわかりました。

その知り合いのPCBLIBはDRCの都合からTopLayerのPADにもメッキ(Plate)をチェックしているそうです。
弊社ではそれを事前に修正して置く必要があると考えました。
スクリプトで一括修正するプログラムを作る方法もあると途中まで考えましたが、かなり面倒な工程を
取るので中断しています。

そのPCBLIB自体はファイルサイズが大きい(収納フットプリント数が多い)代わりにファイル数は少ない
ようなので手動で一括修正しました。(Wholeをオン)

SMD部品なのでBottomLayerでメッキが掛かっているものもあるかもしれないと思っていたら、一部の
フットプリントに存在していました。

AD18以降はプロパティ部分が修正されましたが、そこではTopLayerなどではそもそもメッキ(Plate)
という項目がないのでミスはありません。
しかし、そのPCBLIBをSummer09などで使用するとTopLayerのパッドがメッキ(Plate)にチェックが
入ってしまうのでご注意ください。

AD19以降に使えるようになった寸法線も、Summer09は表示されないのでPCBLIBに互換性はあるようです。


nice!(1)  コメント(0) 

SMDとディスクリートのPCB内での区別 [ALTIUM DESIGNER(J)]

通常、Altiumから出力されるピックアンドプレースファイルではSMDかディスクリートかの区別は
できません。

前出の記事のDelphiスクリプトでは区別をされていますが、どう区別をするかを考察しました。
ここのフットプリント内のパッドをチェックして、一つでもマルチレイヤのパッドがあったら
どのフットプリント(デバイス)はディスクリート部品と解釈していました。

ネットリストに関連するパッドはSMDのように片側でも取り付け穴がマルチレイヤーパッドの
USBコネクタなどもディスクリート部品扱いです。

SMDのコネクタで位置出しのNTHの穴がある場合もスクリプトではディスクリートと解釈されてしまい
ました。


nice!(0)  コメント(0) 

PnPスクリプトのコメント欄の修正マクロ [EXCEL Macro(J)]

SCHとリンクを取ったPCBの場合は前出のPnPスクリプトでのコメント欄はSCH由来のものとなります。
しかし、場合によっては値が入っていないことがあります。

特にORCADから変換したSCHの場合は、値ではなくてLIB_REFらしい名称が出力されてしまいます。
本来、スクリプトはありがたいのですが、このスクリプトはAPIとの絡みもあってPCBのコメント欄を
出力することができないお粗末な仕様です。

そこで通常出力したPnPファイル(ミリ系でCSV形式)を読み込んでそのコメント欄をVlookup関数を
使用して差し替えるマクロを作成しました。

前出のPnPスクリプトから出力されたファイルはタブ形式なので、事前に同じフォルダに収めて
置いても、選択時に間違えることは少ないというEXCELマクロの仕様です。
通常は、2行目は空白ですが、3行目のデータを上に詰めております。


nice!(0)  コメント(0) 

ドラフトマンでのパターン印刷 [PCB Design(J)]

通常の印刷ではPDF印刷すると検図資料としてはあまり良い品質ではありません。
そこでドラフトマンでレイヤを合成して作成してPDF印刷すると綺麗です。

ドラフトマンであれば印刷の位置やサイズを調整可能です。
レジストに関してはどうしても追加したいのであれば、パターンより下に色を薄めの緑などに
すれば良いでしょう。

ただ、図面を作成するのには手間が掛かるでしょう。
初めての取引や細かいパターンの確認をする場合はこちらの手法の方がいいでしょう。

弊社では、通常の印刷時にパッドセンターにネット名を表示させているのでドラフトマンの
図面ではそれは不可能なので併用することになりそうです。


nice!(0)  コメント(0)