PCプラットフォームによる PCプラットフォームによる 産業用ソリューションプロバイダー 産業用ソリューションプロバイダー


採用情報


お問合せ

JapaneseEnglish

  • PP921
ホーム > 仮想マイコン
仮想マイコン
  •  ◆ 概要
  •  ◆ 仕様
  •  ◆ FAQ
  •  ◆ サンプル
  •  ◆ 更新履歴
仮想マイコンtopbotan
仮想マイコンtop
最終更新日:2025/03/06 
 概要
センサー入力や制御出力信号の処理に、小型マイクロコントローラー(マイコン)を用いることで、センサーの制御や管理を容易にするケースがあります。このような場合、「仮想マイコン」は有効なソリューションとなります。
産業用コンピューターに搭載されたIntel CPUのマルチコアを活用することで、ソフトウェアによる仮想的なマイコンプラットフォームを提供できます。 Intel CPUの処理能力によって、従来のマイコンハードウェアを必要とせず、この仮想プラットフォーム上でC言語やC++を用いたマイコンアプリケーションを開発・実行し、目的の機能を実現できます。
 特長
  1. 市販マイコン同等の処理が可能
  2. in()、out()関数でレジスタアクセス
  3. 仮想マイコンタスクテーブルへの登録で動作するリアルタイムマルチタスク
  4. 複数の仮想マイコン間で連携が可能(イベント機能)
  5. 他のタスクと連携が可能(メッセージ機能)
  6. 新規アプリケーション開発を支援するウィザード機能
  7. Microsoft Visual StudioのC言語プログラミングでアプリケーション開発
  8. コンフィグファイル(XML)にI/Oレジスタ構成を定義
  9. この「仮想マイコン」は1台の産業用PCで複数のマイコンとして利用可能(最大16マイコン)
 仕様
仮想マイコンタスク機能
No 項目 内容 備考
1 制御周期 最小100us 作り出せる時間の最小単位
※マシン性能によって制限されます
2 プライオリティ(詳細) 256段階
3 スタックサイズ 4KB~指定可
4 最大仮想マイコン数 16
5 1仮想マイコン当たりの
最大仮想マイコンタスク数
64 ただしシステム内の最大仮想マイコン数を超えないこと
6 タスク(プログラム)の大きさ上限 約6万行
7 扱えるデータメモリ上限サイズ 最大4GB
メモリアクセス機能(詳細)
No 項目 内容 備考
1 アドレス範囲 0000H ~ FFFFH 最大ディジタル信号65535点
2 アクセス形式 リトルエンディアン形式
メッセージ機能
No 項目 内容 備考
1 メッセージ名 VM_M[1]
[1]:仮想マイコンの起動順番号( 00 .. 15 )
フレームワークで生成したメッセージをキューイングする。
2 個数 1
3 レコード長 2048バイト
4 レコード数 1024
イベント機能(詳細)
No 項目 内容 備考
1 カタログ名 VM_E[1][2]
[1]:仮想マイコンの起動順番号( 00 .. 15 )
[2]:仮想マイコンタスクの起動順番号( 00 .. 63 )
2 個数 64 vmInitで生成
3 レコード長 1バイト
4 レコード数 2
5 メッセージ番号 20000 ユーザーメッセージを使用
 プロセス間メッセージ通信
仮想マイコンアプリケーションは 他のプロセスに対して非同期的なメッセージ通知を使って処理を要求することが可能です。 例えばデータベースを管理するプロセスにレコード追記を要求したり、上位通信を担うプロセスにクラウドサーバ向けの送信要求をすることができます。
プロセス間メッセージ通信機能
 Visual Studioでのアプリケーションの開発
仮想マイコンアプリケーションの開発には、Microsoft Visual Studio によるC/C++言語が使用できるので STL を用いたアルゴリズムの活用や、キャラクタコンソールの簡易表示ができます。

ソケット関数も用意されておりTCP/IP 通信もハードウェアの増設なしに利用できます。これには産業用コンピューターが搭載しているイーサネットポートが使用できます。
 新規アプリケーション開発を支援するウィザード機能
新規のアプリケーションを開発する場合 Visual Studio のプロジェクトを自動生成します。 アプリケーション開発者は生成されたスケルトンコードに処理を追記する形で目的の処理をプログラミングしていくことができます。 Visual Studioでビルドを行えば実行モジュールが生成されます。
ウィザード機能
 API関数
  1. サービス関数群
    仮想マイコンアプリケーションのプロセスをコントロールできます。
  2. メモリアクセス関数群
    マッピングされたレジスタへのアクセスができます。これには仮装のポートアドレスを使って指定します。
    レジスタは、8ビット、16ビット、32ビット、64ビットの指定が可能です。
  3. メッセージ通信関数群
    他の仮想マイコンへのメッセージ送信と受信が可能です。
  4. イベント関数群
    仮想マイコン内のタスク同士でイベントの通知と、受信が可能です。
    No API名 説明
    1 vmInit プロセスを初期化します。main関数の序盤で呼び出します。
    2 vmNotifyEvent プロセスの終了イベントを待機します。
    3 vmExit プロセスを終了します。
    4 vmInByte メモリから8ビット(1バイト)のデータを読み込みます。
    5 vmOutByte メモリへ8ビット(1バイト)のデータを書き込みます。
    6 vmInHword メモリから16ビット(2バイト)のデータを読み込みます。
    7 vmOutHword メモリへ16ビット(2バイト)のデータを書き込みます。
    8 vmInWord メモリから32ビット(4バイト)のデータを読み込みます。
    9 vmOutWord メモリへ32ビット(4バイト)のデータを書き込みます。
    10 vmIn64 メモリから64ビット(8バイト)のデータを読み込みます。
    11 vmOut64 メモリへ64ビット(8バイト)のデータを書き込みます。
    12 vmSendMessage 別の仮想マイコンプロセスにメッセージを送信します。
    13 vmReceiveMessage 別の仮想マイコンプロセスからメッセージを受信します。
    14 vmSendEvent 別のタスクにイベントを送信します。
    15 vmReceiveEvent 別のタスクからイベントを受信します。
    16 vmSleep タスクの動作を指定ミリ秒間スリープします。
    17 vmTicksSleep タスクの動作を指定ティック数内スリープします。
    (1ティックは、RTOSのカーネルティックレートで指定した値)
    18 vmOpenDevice PCI/PCIeデバイスをオープンし、読み書きができるように設定します。
    19 vmCloseDevice PCI/PCIeデバイスをクローズします。
    サンプルコードはこちら。
HOME