2023年06月08日
スマートエイジングサポート(以下SASと呼ぶ)は、製品やカスタム品設計の受託を行っています。
お客様が満足できる「納期 と 品質」をお届けできるようにするため、5年前から「SASブランド」を立ち上げ、社員全員で力を合せて日々の業務を行っています。
その活動をご紹介する「SASブランド」シリーズの、今回は第4回になります。
第1回から第3回に続き「SASブランドとは何か」という中で、回路設計においての中心的な考え方となる「シンプルな回路設計の手法」についてご紹介します。
連載記事はこちら → 第1回 第2回 第3回(第4回)第5回 第6回 第7回
【シンプルな回路設計 とは】
回路図を見た時に回路(信号)の流れがすぐに見えることやどのような機能が有るか、どのくらいの性能であるか、製品がどのような物(基板)なのかを理解できること。
更に担当設計者のみではなく、他の誰が見ても分かりやすく書かれた回路図を作ることが、シンプルな回路設計であると考えています。
【シンプルな回路設計の手法 とは】
SASが考えるシンプルな回路設計の手法とは、簡潔に言えば
- 回路は左から右へ回路の流れが見えるように配置する
- 回路は入力回路、出力回路は別々に配置する
- 回路は機能毎にブロック単位で図面へ配置する
- 回路へは設計メモや計算結果等も配置する
- 配線はクロスさせず行先を見やすくする
- 配線は折り曲げたりせず可能な限り一直線とする
- 配線は間隔、距離を一定にする
- シビアな回路は配線仕様を明示する
- 大電流配線は線の太さを上げる
- 部品が何者か、何をしているものかを明示する
- 配線クロス等を防ぐため多ピンのもの(CPU等)は信号ラベルで配置する
- 信号ラベルは信号方向を合わせ、直近に信号意味合いを記載する
- 信号ラベルは回路規模により直近にページ数も記載する
- コネクタ類は端へ配置する
- コネクタ類は相手側に接続されるものを記載する
- コネクタ類はそこに何の信号が来ているかを記載する
- コネクタ類の相手側が複雑なものは相手側の回路も枠囲みで記載する
- 部品位置は基板レイアウトも考え部品配置をする
- AC帯の配線仕様を明示する
- 電源混在回路は分離箇所を明示する
- 混在する電源は電源・GNDのシンボルを分ける
- シンボルの空きピンは省かず全て配置する
- シンボルは信号に関係しない固定用の端子等も全て配置する
- シンボルはピンがあるのみではなく内部回路まで表現する
といったことが挙げられます。
第1回から第4回は、「SASブランド」についての紹介をしてきました。次回からは、「SASブランド活動の実績」についてご紹介をしたいと思います。各担当の実施状況や考え方、製品に対する想いなどを紹介出来ればと思います。ご期待ください。
2023年06月01日
スマートエイジングサポート(以下SASと呼ぶ)は、製品やカスタム品設計の受託を行っています。
お客様が満足できる「納期 と 品質」をお届けできるようにするため、5年前から「SASブランド」を立ち上げ、社員全員で力を合せて日々の業務を行っています。
その活動をご紹介する「SASブランド」シリーズの、今回は第3回になります。
第1回から第2回に続き「SASブランドとは何か」という中で、制御ソフト設計においての中心的な考え方となる「シンプルなソフト設計の手法」についてご紹介します。
連載記事はこちら → 第1回 第2回(第3回)第4回 第5回 第6回 第7回
【シンプルな制御ソフトとは】
制御ソフトに求められる品質において、SASが最も重要と考えるものは「分かりやすさ」になります。
それを別の言葉で言うと「見える化されている」に言い換えられると思います。
それは、要求仕様の機能面だけでなく、性能面(処理速度や精度)も把握できている度合が高いものが良い品質であると考えています。
【シンプルなソフト設計の手法 とは】
それを実現するための「基本思想」としては、
㋐ 構造が重要
- 構造設計 = タイミング設計である
- データ構造を中心に考える
- 処理(挙動)が分かりやすい = 挙動の見える化
㋑ 処理は軽く
㋒ 機能単位で設計する
- 機能単位で関数をまとめる
- 関数型プログラミングも併用する
- 出来る限り部品化/流用できるようにする
㋓ 制御対象の特性を十分に理解する
といったことが挙げられます。もう少し、具体的な設計手法について紹介をする前にソフトウェア技法について参考文献から抜粋してご紹介しておきます。
① 構造化プログラミング
構造化定理:プログラムは、「順次・選択・繰り返し」の3つの基本構造を組み合わせた、1つの入り口と1つの出口を持つ形式で記述できる。
(中略)
これは、システム全体では複雑な処理に見えても、細かく分割していけば単純な処理の積み重ねにできる、というものです。
https://thinkit.co.jp/article/904/1
より引用
② 関数型プログラミング
関数型プログラミングは、関数の組み合わせでコーディングするプログラミング方法です。問題の性質を数学的な表現で記述できるため、研究目的での利用に適しています。
(中略)
関数型プログラミングは簡潔な関数の組み合わせでプログラミングします。
個々の関数は独立しており、実行中の処理の影響を受けません。
そのため、コード全体がシンプルで人が見て分かりやすく、保守性や再利用性に優れています。
(中略)
関数型プログラミングで記述されたコードは、同じ入力に対し常に同じ結果を返します。
命令型プログラミングでは変数の値が動いていくことなどによって結果が変わりますが、関数型では実行中に変数の値の変更が起きません。
そのため、入力と出力の関係をシンプルにとらえることができ、テストが簡単です。
https://it-trend.jp/development_tools/article/32-0053
より引用
③ オブジェクト指向プログラミング
システム全体の機能を、オブジェクト間の相互作用で表現する、すなわち「オブジェクトに分割していく」という考え方が、オブジェクト指向と言えます。ここで言うオブジェクトとは、データと処理を持つモジュールという風に考えてください。
このオブジェクト指向は、ますます大規模化、複雑化するソフトウエアの開発効率を上げるには部品化によるモジュールの再利用化が不可欠であり、それは構造化技法だけでは実現できない、という背景があり普及していきました。
https://thinkit.co.jp/article/904/1
より引用
【SAS独自のソフトウェア手法】
上記①~③のソフトウェア技法の「いい所どり」をして、「分かりやすいプログラム」をつくるための「基本思想」が生まれました。もう少し、具体的な設計手法については、
- システムの初期化(変数の初期化・周辺デバイスの初期化)をはじめに行う
- 変数は出来る限り機能単位の構造体とする
- 処理のコメントは必ず書く。値は意味(計算式)を書く
- 不要なコメントは必ず削除して分かりやすくする
- 定数はDEFINE定義を基本とする
- オブジェクト名は意味が分かる名称とする
- メインループに機能単位の処理をまとめる
- 各機能を処理サイクル時間別にまとめタイミングを明確にする
- タイマ割込みはできる限りタイミング生成用タイマの処理にして軽くする
- メインループ時間は 1ms以内 を目標にする
- メインと割込み間のタイミングは 1ビットフラグで同期を取り変数の受渡しを確実にする
- 各機能の処理時間やタイミングを見える化するために外部に出力して検証できる準備する
- ドキュメントは必要最低限に抑えコメントを含めてプログラム内の正確性を上げる
といったことが挙げられます。また、他の人が見てもコードが追えることを目指して、コーディング規約にはプログラミングの基本的な指針のみを明記しています。
次回は、回路設計においての「シンプルな回路設計の手法」についてご紹介したいと思います。
2023年05月24日
スマートエイジングサポート(以下SASと呼ぶ)は、製品やカスタム品設計の受託を行っています。
お客様が満足できる「納期 と 品質」をお届けできるようにするため、5年前から「SASブランド」を立ち上げ、社員全員で力を合せて日々の業務を行っています。
その活動をご紹介する「SASブランド」シリーズの、今回は第2回になります。
前回(第1回)に続き「SASブランドとは何か」という中で、ブランドを築くための中心的な考え方となる「シンプル化の手法」についてご紹介します。
連載記事はこちら → 第1回(第2回) 第3回 第4回 第5回 第6回 第7回
【シンプル化の手法 とは】
日々業務を行っている中で、さまざまな事態が発生します。
製品設計の場合でも、要求される機能を実現させるだけに留まらず、性能を向上させたい…、納期を守りたい…、製品コストを下げたい…、今まで起きた問題点を改良したい…、費用を膨らませたくない…と言った要求も合わさってきます。
また、タイトなスケジュールで業務を行っている時に、何らかの問題が発生する場合もあります。
第1番目は、設計業務に限らず様々のシーンで使っている「シンプルに考える手法」です。
① シンプルに考える手法
複数の事象が重なりあっている場合や要求される事が複数ある場合に、その中にも相反するものがあったり、
優先されていることがあったりします。
何が重要であるか、何が本当の問題であるかを明確にしていくことが、早くより良い結果を出せる
という考え方に基づいています。
簡潔に言えば
- 目的・目標を明確にする/問題を正しく定義する
- 構成要素(パラメータ)に分解する/定義する
- 要求事項を明確にする/定義する
- 重要な要素を明確にする/クリティカルな要素を明確にする
- 妥協点を見つける
- 絞り込み/切り落とし(そぎ落とす)
といったことが挙げられます。
次に、製品設計やモノづくりにおいては、
② シンプルに設計する
要求仕様や性能、クリティカル工程の対処方法などを明確にした後に、本設計を開始します。
まず、ピラミッド型となるように設計する項目を決めて、その土台から順番に作り上げて行きます。
基礎の作り方で全体の出来栄えが変わってくると考えています。
構造をしっかりと考えて分かりやすく単純にしていくことで、基礎の上に積み上げていく各ブロックの機能やそれらの繋がり、信号や処理の流れが見えやすくなります。
その1つ1つをきちっと積み上げていくようにしたシンプルな設計を行うようにしています。
- 単純な構造とする = 分かりやすくする(機能毎にまとめる)
- 構造設計をはじめに行い、しっかり作り上げる
- 部品化する = 流用性を上げる
- 処理の流れが見えるようにする(見える化する)
- 図面/コードは見やすくする
- 機能ブロックの処理内容を図面/コードに記録する
- 無駄な資料は作らない、増やさない
図面やコードの中には、各工程で検討した内容もできるだけ記載し、後工程でその検討内容を利用できるようにしています。
後々になってそれを思い出したり、それを担当者に聞いたりする手間や無駄な時間を減らすようにします。
設計中はもとより、設計が完了した後でも設計変更は少なからず発生します。
その時に、簡潔に見やすく思い出しやすく丁寧にドキュメントや図面、製品を作っていると比較的スムーズに設計変更ができるようになっています。
はじめからゴチャゴチャしたものでは、設変を行うにも時間がかかり、十分に理解せずに修正を行うことで潜在的な不具合を作り込んでしまう恐れもあります。
つまり、
設計中の作業を細部に渡って丁寧に成果物を作り上げていくことで、後工程になればなるほど、その効果は「時間短縮と出来栄え」
という面で大きく表れてきます。それは、「手離れが良い」という言い方もできます。
- 製造時には、分かりやすく、ミスをしにくい。また、確認するための時間を減らせる
- 設変時には、分かりやすく、変更が容易でミスが出にくい。また、確認するための時間を減らせる
③ シンプルな物づくりをする
- 美しく綺麗に仕上げる ⇒ 後になればなるほど、効率が良くなる
- 単純な構造とする ⇒ 部品数や種類を減らす/部品化する/共通化する
- 土台から作り上げる ⇒ 銘板シールをきちっと貼付けて作業をする
モノづくりでも基礎となる土台から作ります。
例えば、部品や端子台の銘板シールの貼り付けをはじめに行うことで、その後の部品取り付け、配線作業はそれを見て行う事が出来るようにします。出来る限り頭の中で覚えて作業することを減らし、勘違いによる配線ミスを省くようにしています。
作業完了後のチェックでミスが分かり修正を行うことは、余分な時間が発生するだけでなく、一度綺麗に仕上げたものを変える事となり、その時には配線長さの違いにより仕上がり具合が修正前より悪くなるのが殆どです。
- 綺麗に作られたものは、部品の交換や部品の追加が容易で、ミスも減らすことができる
第1回と第2回は、「SASブランド」についての紹介をしました。次回は、制御ソフト設計においての「シンプルなソフト設計の手法」についてご紹介したいと思います。ご期待ください。