最近、電気の友達がホストコンピュータの開発のためにC#を学び始めています。しばらく勉強した後、多くの人がこのような気持ちになります。彼らは多くの知識を学んだようですが、それを適用する方法を知らないので、私は見つけました小さな本物のPCプロジェクトで、誰もが自分の手を練習できるようにします。この記事では、主にプロジェクトのケースと開発プロセスの概要を説明します。
1.プロジェクトケースの紹介
多くの人はマイクロ波に対して特別な感覚を持っており、マイクロ波は非常に神秘的または複雑であると常に感じています。シングルチップマイクロコンピュータは、MCU、またはマイクロコントロールユニットと略され、CPU、メモリ(RAMおよびROM)、さまざまなIOインターフェイスなどをチップ上に統合してチップレベルのコンピュータを形成します。私たちの生活と仕事では、シングルチップマイクロコンピュータと言えます。どこにでも。
シングルチップMCUの使用は2つのタイプに分けられます。1つは一般にC言語プログラミングを使用する組み込み開発であるシングルチップ開発であり、もう1つはシングルチップマイクロコンピュータとの通信制御などのシングルチップアプリケーションです。ホストコンピュータ開発者として、私たちはもっと後者を支持して、ホストコンピュータは確立されたプロトコルに従ってシングルチップマイクロコンピュータを制御します。制御システムのユーザーはオペレーターであり、シングルチップマイクロコンピューターを直接操作することはできません。したがって、ホストコンピューターの責任は、シングルチップマイクロコンピューターとオペレーターを接続し、UIインターフェースを介してオペレーターに表示と制御を提供し、実行のためにシングルチップマイクロコンピューターに命令を渡すことです。アクション、そして最終的に完全な制御システムを形成します。
このケースは、シングルチップマイクロメータをベースにしたシリアル通信ケースで、主にアッパーコンピュータを介してモーターの速度制御を実現し、モーターのリアルタイム速度を表示します。モーターフォワード、モーターリバース、モーターフォワードおよびリバース、双方向カオス、および一方向カオスの5つのモードを含む、多くの速度制御モードがあります。
2.MCUプロトコル分析
5つの速度制御モードの説明は次のとおりです。
速度制御モード | スピード規制の指示 |
---|---|
モーターフォワード | マイクロメータに0より大きい速度を送信します |
モーターリバース | マイクロメータに0未満の速度を送信します |
モーターの前進と後進 | 正と負の速度値と速度変更時間をマイクロプロセッサに送信します |
一方向の混乱 | ランダムまたは手動でN個のランダムな正の数を生成し、それらを定期的にMCUに送信します |
双方向の混乱 | ランダムまたは手動でN個のランダムな自然数を生成し、定期的にMCUに送信します |
以上のことから、速度調整の本質はマイクロ波にメッセージを送ることであり、速度調整モードが異なると送信の値や周波数に影響を与えるため、ホストコンピューターとマイクロ波の合意が必要です。合意は次のとおりです。
機能コマンド | プロトコル形式 | 備考 |
---|---|---|
モーターフォワード | S +速度値+; | 速度値は、S +40などの正の数値である必要があります。 |
モーターフォワード | S +速度値+; | 速度値は、S-40などの負の数値である必要があります。 |
モーターの前進と後進 | T +時間+ S +速度値+; | 時間は、T5 + -40などの速度変更時間です。 |
一方向の混乱 | S +速度値+; | 速度値は正の数値であり、ランダムな数値を生成し、定期的に送信します |
双方向の混乱 | S +速度値+; | 速度値は自然な数値であり、ランダムな数値を生成し、定期的に送信します |
スピードフィードバック | V +速度値+; | V +40などの戻り速度値。 |
スピードリセット | S +速度値+; | 速度値は0、つまりS +0;またはS-0;に設定されます。 |
プロトコルの規定:シングルチップコンピューターとホストコンピューター間の通信フォーマットは、ボーレート9600、データビット8、ストップビット1、チェックビットなし、設定速度範囲は10〜300rpm、フィードバック速度範囲は0〜1000rpm、変換です。時間範囲は1〜10秒で、通信のエンコード形式はASCIIです。
ホストコンピュータ開発の機能要件:
-
MCU間の接続プロンプトと切断プロンプト
-
通信ポートの自由な選択
-
デバッグモードはいつでも調整できます
-
カオスモードのランダム番号は、自動生成と人間による入力/コピーおよび貼り付けをサポートします
-
速度変更時間のクイック設定をサポート
-
リアルタイムの速度表示と制御をサポート
-
リアルタイムのデータ書き込みと制御をサポート
-
サポート送信コマンドを保存して追跡可能
-
前回ソフトウェアを開いたときの状態を保持します
3.ホストコンピューターのインターフェース設計
開発機能の要件に応じて、全体的な設計インターフェイスを次の図に示します。
双方向カオスまたは一方向カオスを選択すると、次の図に示すように、自動生成と手動入力をサポートするカオス値設定インターフェイスがポップアップ表示されます。
4.上位コンピュータの機能実現
-
最初にWindowsフォームアプリケーションプロジェクトを作成します。プロジェクト名はthinger.com.MCUProです。
-
シングルチップマイクロコンピュータのプロトコルをクラスMCULibにカプセル化します。これは、後続の直接呼び出しに便利です。このクラスには、接続の確立、切断、速度の設定、および受信速度の機能が必要です。
-
ログ表示機能:ログ表示はListViewで表示され、ImageListは情報、アラーム、エラーを区別するためにバインドされます。logメソッドのパラメーターには、ログレベルとログコンテンツが含まれます。
-
接続と切断の確立:ここでは、接続と切断を確立する2つの機能が1つのボタンで実現されます。
-
目標速度の設定:目標速度の設定は、モーターフォワード、モーターリバース、モーターフォワードおよびリバースの3つのモードでのみ有効です。
-
速度のクリア:速度がクリアされたら、現在のモードがカオスモードであるかどうかを判断する必要があります。カオスモードの場合は、最初にタイマーを停止します。それ以外の場合は、速度0でコマンドを直接送信します。
-
カオスモード:速度制御モードがカオスモードに切り替わると、タイマーがアクティブになります。タイマー期間は速度変更時間と一致します。速度コマンドは定期的にMCUに送信されます。速度値はセットから取得され、サブを通過します。ウィンドウが取得されるため、一方向カオスと双方向カオスの違いはセットの違いにあります。
-
カオス速度設定:カオス値設定は、手動で追加、ランダムに追加、または手動で入力できる別のウィンドウに実装されます。速度値はスペースで区切られます。手動で入力する場合は、速度範囲に注意する必要があります。
-
カオスモードでのタイミング送信:カオスモードでタイマーをオンにすると、セットからデータが1つずつ取り出されてMCUに送信され、取得後にタイマーが停止します。
-
データ受信処理:データ受信処理方式も委託プロトタイプ方式です。読み取ったバイト配列を文字列に変換して解析します。解析により実際の速度を取得した後、速度を表示するかどうかを判断します。速度表示が必要な場合は、データそれをChartコントロールに追加し、ファイルに書き込む必要があるかどうかを判断します。ファイルに書き込む必要がある場合は、リアルタイムデータをCSVファイルに書き込みます。
-
リアルタイムデータ書き込み:この場合のリアルタイムデータストレージはCSVを使用します。初めて書き込むときに、時間とタイトルバーが自動的に作成され、データは後で継続的に追加されます。ソフトウェアは、ファイルを書き込むために開いたり再起動したりするたびに、現在の時刻に従って新しいファイルを自動的に作成するため、CSVを書き込むための一般的な方法を記述する必要があります。
-
ソフトウェアを開いたときは、最後に閉じたときの状態を維持します:この機能のアイデアは、構成ファイルを介して実現することです。ソフトウェアを閉じると、関連情報が構成ファイルの形式で保存されます。ファイルからの読み取りでは、パラメーターの数が多いため、エンティティークラスの使用はその後の拡張にも便利です。
5.最後に書く
このプロジェクトの全体的な難しさはそれほど大きくはありませんが、それは非常に代表的なものであり、上級コンピューターの初心者が手を練習するのに非常に適しています。多くの初心者にとって最大の問題は、実践的なプロジェクトが手元にないことです。これを実践的なプロジェクトとして使用して練習することができます。
Xinge Education Serviceアカウントthinger_as、舞台裏の返信[lottery]に注意してください。賞品は豊富で、先着順です。
以前のコンテンツを確認する
[Siemens] PLCSIM-Advancedに基づいてSiemensPLC環境を構築する
[シーメンス]シーメンスS7通信プロトコル、あなたが知らないこと
【OPCUA】C#ホストコンピュータがOPCUA通信ケースを実現
[OPCUA] OPCUA + MQTT + Alibaba Cloud、何ができますか
【WinCC】C#/。NETとWinCCを組み合わせてデータ通信を実現