分業とその結果について

数年前、私たちはガスメーターの開発に参加する機会がありました。 顧客と仕事を始めたとき、彼はすでにいくつかのベストプラクティスを有していました。 そして、これらの開発は、能力に応じて失敗した分業の結果を示す非常に興味深い例のように思われました。 カットの下で、分離が失敗した理由と、結果として生じた問題をどのように解決したかを説明します。



3人の専門家がガスメーターの開発に参加しました(実際、それ以上ですが、記事の枠組み内では3つの能力にしか興味がありません)。 これらは:



  1. デザインエンジニア、計量のパートタイムスペシャリスト
  2. サーキットテクニシャン
  3. プログラマー


設計者は、特別なバルブを開閉するための信号を発するデバイスを提供しました。 次のようになりました。







バルブが開いた状態(AからBまでの距離)にある時間と、バルブが開く頻度を測定する必要がありました。



もちろん、このような信号をマイクロコントローラーで直接処理することはできないため、回路エンジニアは次の信号を生成する中間コンバーターを開発する必要がありました。







デバイスはバッテリー電源で動作するため、ほとんどの場合、マイクロコントローラーはスリープモードになります。 そのため、プログラマーは割り込みピンで信号を開始し、対応するポートから割り込みをかけてマイクロコントローラーを起動するように設定し、割り込みハンドラーでタイマーを開始/停止するように要求しました。



これまでのところすべてがよさそうだ、各専門家は自分の仕事をし、それをうまくやった。 ここでのみ、デバイス全体の品質は多くの人々に適合しませんでした。 一定の流量では、デバイスは著しい分散を伴う証拠を提供し、その理由は完全には明らかではありませんでした。



なぜこれが起こったのですか?



開発の初期段階で、流量計の誤動作が発見されました。 このようなエラーが発生するので、心配する必要はありません。 別のことは怖いです、エラーがどこにあり、それを見つける方法を誰も知りませんでした。



流量計の精度不足の理由は次のとおりです。



  1. バルブ設計と入力信号発生器のエラー
  2. 入力信号変換回路のエラー
  3. ソフトウェアのバグ


さらに、開発者は、問題が原理的に発生することを完全に確信していませんでした。これは、流量計の特性が基準ベンチを使用して決定されたためです。



その結果、遅かれ早かれ、チームの各メンバーは、彼らの仕事の結果の非の打ちどころのないことに自信を持ち、隣人のパンを砕く状況になります。 一方、上級管理職はプロジェクト全体を認識し、チーム全体に不満を抱いています。 チーム内で競合、注目を集める紛争、分離が発生します。 設計者はプログラムにエラーがあると言い、プログラマーはバルブの設計にエラーがあると言います。



どうする



流量計の開発ははるかに複雑であり、顧客は新しい専門家を引き付けることを決めました。 だから私たちは仕事に取り掛かりました。



問題を解決する2つの方法を見ました。



  1. 各チームメンバーの作業の完全なテストと承認
  2. マンバンド


最初のオプションは、ソフトウェア開発の分野ではかなり標準的で非常に人気があります。 たとえば、ソフトウェアパーツをチェックするには、コンバーターの出力で生成された信号の高精度ジェネレーターを購入または開発し、それをマイクロコントローラーに送り、さまざまな条件下での読み取り値をジェネレーターの読み取り値と比較します。 解決策は最も安価ではなく、時には最速からは程遠いが、非常に効果的です。



入力信号コンバータの操作性と品質は、適切に調整された適切なオシロスコープを使用して評価することもできます。 または、コンバージョン分析用の特別なデバイスを開発します。



しかし、バルブの動作をチェックすると、すべてがより複雑になります。固定流量を適用し、バルブ信号を変換し、専用の周波数計を使用して信号を測定する必要があります。 実際、これはすでに持っていた流量計と大差ありません。



残念ながら、お客様はこの方法を採用する準備ができていませんでした。特にバルブと信号発生器をチェックするためのアルゴリズムを開発できなかったため、より洗練されたソリューションが必要でした。



したがって、顧客には、回路と計測によるプログラミングの両方の能力を持つ従業員が提供されました。 彼の仕事は、状況を全体として分析し、チームがお互いを責める機会から守ることでした。



ボンネットの下を見てください。 そして、私たちのマンバンドはプロジェクトの分析を始めました。 分析は入力信号コンバーターから始まりました。







元のスキームは保存されていませんが、その本質は写真で見ることができます。 ご覧のとおり、回路はトリガー(4013)とオプトカプラーで構成されています。 ツェナーダイオードD1とRCチェーンの助けを借りて、誤検出を排除しました。



この回路は、バルブからの入力信号を非常によく変換します。 しかし、それが構築されたとき、回路は最終目標と信号の詳細を考慮しませんでした。



問題の本質は、タスクを回路に設定するときに、入力信号のオシログラムと出力の予想される形式が提供されたことでした。 オシログラムによると、回路設計者は、キーフロントAとBの急峻さがフォトカプラの安定したタイムリーなトリガーを保証するには不十分であることを理解できませんでした。 実際、変換回路を正しく動作させるには、コンパレータを使用する必要がありました。 そのようなソリューションは、回路にはあまり適していませんでした。 コンパレータは回路を複雑にし、消費電力を増やす可能性があります。 多くの点で、この恐怖は、プログラマと協力せずに、またマイクロコントローラの機能を使用せずに、割り当てられたタスクを回路のみで解決する習慣に関連しています。



すべてがプログラムでスムーズに進んだわけではありません。 一方では、マイクロコントローラが常に起動している場合、割り込みを受信し、即座にタイマーを開始/停止します。 ただし、省エネモードをオンにすると、それがどのように奇妙に始まりました。 マイクロコントローラのデータシートを見ると、マイクロコントローラのウェイクアップ時間は多くの要因に依存しており、これが測定の精度に大きく影響することがわかりました。 タイマーの開始と停止は、入力信号より大幅に遅れていました。 プログラマーは、ウェイクアップ時間がバルブが開いた状態の時間に匹敵することを知っていましたが、入力信号に対するタイマーの開始/停止時間の均一なシフトにつながることを期待していました。 実際、省エネ型および覚醒型のマイクロコントローラーの測定値には大きなばらつきがあります。 気象学者にとって、この問題は明らかですが、彼はソフトウェア開発に参加しませんでした。 そのような専門知識を持っていませんでした。



バルブ操作分析を実行できませんでした。 信号を変換および測定することなく、バルブをテストし、その動作を評価することは困難または不可能でした。 コンバーターとプログラムの問題に対処し、疑問を引き起こさない測定および計算ユニットを取得し、結果のブロックを使用してバルブをテストすることにしました。



マンバンド



プロジェクト全体を理解したので、明らかな問題の解決に取り掛かりました。 最も簡単な方法は、ソフトウェアの問題を解決することでした-タイマーの開始と停止。 使用したマイクロコントローラーには、マイクロコントローラーが起動するまで、また必要に応じて起動しなくても、ハードウェアで開始および停止できるゲート制御タイマーがありました。 プログラマーが計測に興味を持っていた場合、彼自身がずっと前にそのような解決策を見つけて、それを実装しようとしました。 しかし、多くの場合、プログラマーはプログラミングにのみ興味があります。 さらに、プログラマーによる失敗した決定の採用に大きく影響する2つの要素がありました。



  1. プログラマーはアクティブな省電力モードでは動作しませんでした。 彼は単に、マイクロコントローラのウェイクアップが遅いという問題に遭遇せず、これに関連して明らかにされた効果
  2. プログラマーはすでにゲート制御タイマーを使用しており、単に動作しないという事実に直面しています。 そのため、その後のすべてのプロジェクトで、彼はこの機能を避け、火のように恐れていました。 結局のところ、すべてのプログラマーがエラッタを読んで、マイクロコントローラーのリビジョンを追跡するわけではありません。 マイクロコントローラの初期の改訂版では、この機能は実際には機能しませんでした。


途中で、入力信号の変換の精度に触れました。 私たちにとって、フォトカプラからコンパレータへの移行の必要性は明らかでした。 消費者は消費の増加の問題を心配していましたが、彼はすでにそれを回路から聞いていました。 回路設計者は彼の主題分野に精通していましたが、プロジェクトで使用されているマイクロコントローラーの機能についてさえ考えませんでした。 マイクロコントローラにはすでに2つのコンパレータが含まれているだけでなく、そのうちの1つで十分であることが判明しました。追加の外部スイッチを使用せずに、基準電圧の下位レベルと上位レベルをプログラムで切り替えるだけです。 低消費電力が私たちが使用するマイクロコントローラの重要な利点の1つであることを考えると、コンパレータのコストは非常に安くなります(約8μA)。 また、コンパレータの入力インピーダンスが高いため、かなり安価な基準電圧のセット(10μA以下)を作成できました。 その結果、非常に単純な入力信号処理スキームができました。







なぜなら 信号は、正と負の両方のバルブから来ます。抵抗R1とR2を使用して信号をバイアスします。 分圧器R3-R5を使用して、基準電圧を設定します。 バッテリーの電圧が低下すると、基準電圧とR1およびR2のバイアスが同期して低下するため、信号変換の精度にはほとんど影響しません。



ゲート制御技術の使用によりタイマーを開始および停止するために、マイクロコントローラはスリープモードを終了せずにハードウェアレベルでコンパレータを使用してゲート開閉信号を生成します。 マイクロコントローラのRA5ポートを使用してゲートをプログラムで制御できるため、RCチェーンはキャンセルされました。 コンパレータ出力はCLKトリガー入力に接続されています。 コンパレータの基準電圧はソフトウェアによって切り替えられます(バルブが開くか閉じるかによって、C12IN0-またはC12IN1-が接続されます)。



結果は何ですか?



独自の信号変換回路とマイクロコントローラファームウェアを開発することにより、ガス流量の測定精度を大幅に改善しました。 また、流量計の設計者を支援しました。 これで、バルブと信号発生器の動作の欠陥に簡単に気付くことができたので、問題は自分の側にあるのではないと考える必要がなくなりました。 たとえ質問があったとしても、それについて議論する誰かがいた。 計測の観点から信号変換および測定アルゴリズムを常に記述し、必要に応じて何かを修正することができます。



コンピテンシーによるタスクの分離により、チームメンバーはそれぞれの分野で非常に高いレベルの開発を達成できますが、遅かれ早かれ、スペシャリストがお互いを理解しなくなるという結論に達します。 この状況では、プロジェクトに関連するすべての分野に精通している人を手元に置いておくと非常に便利です。 各スペシャリストほど個々には優れていないかもしれませんが、全体像を見ることができます。 また、このプロジェクトの経験から、このようなスペシャリストはスペシャリストの相互作用に非常に良い影響を与え、エンジニアがお互いに協力することに興味を持っていることがわかりました。 プログラマーと回路設計者は測定エラーについてより頻繁に考え始めました、回路エンジニアはマイクロコントローラーの周辺機器を使用する新しい可能性を発見しました、計量設計者は彼の同僚を信頼し、彼らの仕事の結果を積極的に使用してハードウェアを分析し始めました。

また、幅広い分野で表面的な知識を持っているため、インタビュー段階の個人オーケストラは、プログラマーの観点からも、気象学者および回路技術者の観点からも魅力的に見えないという事実にも注目したいと思います。 しかし実際、彼は困難な状況で重要な役割を果たすことができます。



All Articles