シリアル
シリアル通信プロトコルと Typhoon HIL ツールチェーンでのその実装について説明します。
導入
UART(Universal Asynchronous Receiver/Transmitter)コントローラは、コンピュータのシリアル通信サブシステムの主要コンポーネントです。UARTはバイト単位のデータを受け取り、個々のビットを順番に送信します。送信先では、別のUARTがビットを完全なバイトに再構成します。各UARTにはシフトレジスタが搭載されており、これはシリアル形式とパラレル形式間の変換における基本的な手段です。デジタル情報(ビット)を単線またはその他の媒体でシリアル伝送する方が、複数の線でパラレル伝送するよりもコストが低くなります。
通信は、単方向(一方向のみ、受信側デバイスが送信側デバイスに情報を送り返す必要がない)、全二重(両方のデバイスが同時に送受信する)、または半二重(デバイスが交互に送信と受信を行う)のいずれかになります。
UARTの速度はボーレートで定義されます。これは1秒間に送信できるビット数です。
シリアル プロトコルを使用した通信は、 HIL402、HIL101、HIL404、HIL602+、HIL604、HIL506、および HIL606の各デバイスでサポートされています。
Typhoon HILツールチェーンのシリアルコンポーネント
Typhoon HIL Schematic Editor では、シリアル コンポーネントは [通信] タブの [シリアル] フォルダーにあります。
シリアル ライブラリ カテゴリは、シリアル セットアップ、シリアル送信、シリアル受信の 3 つのコンポーネントで構成されます。

シリアルセットアップコンポーネント

シリアル設定
セットアップコンポーネントは、シリアルライブラリカテゴリのメインコンポーネントです。このコンポーネントは、ボーレート、パリティ、ストップビット、アクセスポートなどの基本的なUART設定を定義します。選択した設定は、Serial SendコンポーネントとSerial Receiveコンポーネントに適用されます。例えば、ボーレートを9600 bpsに選択した場合、Serial Sendコンポーネントは9600 bpsのボーレートでデータを送信し、Serial Receiveコンポーネントも9600 bpsのボーレートでデータを読み取ります。これらの設定を行うには、回路図エディタでSerial Setupコンポーネントをダブルクリックします(図3 )。
シリアル プロトコルを使用する場合、シリアル プロトコルを使用する HIL デバイスごとにシリアル セットアップ コンポーネントが 1 つだけ存在する必要があります。

説明 | 価値観 | |
ボーレート | 1秒あたりのビット数。使用するシリアルトランシーバーの最大保証ボーレートは230400ビット/秒です。これより高いボーレートも許容されますが、データの安定性は保証されません。 |
0、50、75、110、134、150、200、300、600、1200、1800、2400、4800、9600、19200、38400、57600、115200、230400、460800、921600 |
データビット | UART によって送信される 1 文字のビット数。 |
|
パリティ | 文字ビットの後、ストップ ビットの前に生成されるパリティ ビットのタイプ。 |
|
ストップビット | このプロパティ値は、データ フレームに付加されるストップ ビットの量を定義します。 |
|
アクセスポート | このプロパティは、UART 通信に使用するアクセス ポートを定義します。 |
|
UART rx DIピン | このプロパティ値は、選択されたアクセスポートがDIOの場合にUARTコントローラのrxポートに接続されるデジタル入力ピンを定義します。この値はHIL SCADAのUART txポートに対応しており、HIL SCADA/モデル設定/デジタル出力メニュー、または回路図エディタの出力設定コンポーネントを使用して設定できます。 |
|
シリアル送信
このコンポーネントは、HILデバイスから接続された任意のデバイスにUART経由でメッセージを送信するために使用されます。このコンポーネントブロックでは、HILデバイスから接続された任意のデバイスにUART経由で送信する基本設定とメッセージを定義できます。シリアル送信コンポーネントは表1に示されています。
成分 | コンポーネントダイアログ | コンポーネントのプロパティ |
---|---|---|
![]() シリアル送信 |
![]() |
|
![]() |
コンポーネントのプロパティを表 2に示します。
物件名 | 説明 | 価値観 |
---|---|---|
送信期間 |
連続する 2 つのメッセージ間の追加のタイミング遅延。 入力数値はミリ秒単位です。 |
0~1000000(百万)ミリ秒 |
実行率 | コンポーネントの信号処理部分(変数の取得)の実行速度。値は、シリアル送信が接続されているコンポーネントの実行速度に依存します。 | |
フレームの開始 | フレームの開始はメッセージ ペイロードの前に送信され、同期に使用されます。 |
|
フレームの終わり | フレームの終了はメッセージ ペイロードの後に送信され、同期に使用されます。 |
|
データエスケープを有効にする | メッセージのペイロードでデータ リンク エスケープを有効にします。デフォルト値は false です。 | |
SOF/EOFでのデータエスケープを有効にする | メッセージの先頭と末尾でデータ リンク エスケープを有効にします。デフォルト値は false です。 | |
逃げるデータ | データエスケープとは、特定のデータを複製することを意味します。メッセージにエスケープが必要な値が含まれている場合、その値は複製(エスケープ)されます。例えば、ID値0xEEをエスケープする必要がある場合、メッセージ内でその値が出現するたびに、その値は0xEEEEに複製されます。 |
|
メッセージ構成 | Sendコンポーネントのペイロードを定義します。ペイロードの設定方法の詳細については、 「メッセージ設定」セクションを参照してください。 |
メッセージ構成
メッセージ設定を変更するには、[データ] タブの [構成の生成] ボタンを使用します。

設定メニューでは、UART経由で送信されるデータのカスタムペイロードを定義できます。
表 3に、メッセージ構成メニューの概要を示します。
フィールド名 | 説明 |
---|---|
信号名 | 変数/定数に対して一意です。 |
信号の種類 | 信号が可変か定数かを定義します。可変に設定した場合、端子はコンポーネント上に配置され、送信する信号が接続される場所になります。 |
データ型 | 変数の場合、継承(入力信号の種類によって異なります)、整数、符号なし整数、または実数のいずれかになります。定数の場合は、文字列を送信するオプションも追加され、ASCII文字の値を左から右へ送信します。 |
長さ(バイト) | 長さのオプションは、データ型の選択に応じて動的に変化します。例えば、整数型と符号なし整数型の場合、長さは1、2、4、または8バイトです。実数型の場合、長さは4(Float型)または8(Double型)です。文字列型の場合、バイト長は文字数に基づいて計算されます。 |
エンディアン | リトルエンディアン/ビッグエンディアン バイト順序を選択します。 |
ディメンション(数値/継承) | 同じデータ型と長さを持つ、送信する変数の数。この値は入力端子の次元を指定します。定数の場合、常に1です。 |
信号値 | 定数の場合、これは送信される値を定義します。 |
メッセージの説明
メッセージはいくつかの方法で表現できます。
フレームの開始と終了は、ここに示すように「[]」を使用した配列として定義する必要があります。「エスケープするデータ」テキストボックスが空の場合、メッセージにはヘッダーフレームが含まれず、データは生のバイトとして送信されます。
データ部分のみのメッセージ。 |
![]() |
ヘッダー部分 (フレームの開始) とデータ部分を含むメッセージ。 |
![]() |
フレームの終わりとデータ部分を含むメッセージ。 |
![]() |
ヘッダー部分 (フレームの開始)、フレームの終了、およびデータ部分を含むメッセージ。 |
![]() |
データ リンク エスケープ (DLE) が有効になっているメッセージ。 |
![]() |
シリアル受信
シリアル受信コンポーネントは、UART ポートに接続された任意のデバイスから HIL デバイスに送信されるメッセージを読み取るために使用されます。
このコンポーネントは入力バイトを受け取り、それをデータ値に変換します。入力データ値は変数で表されます。受け取った変数はシミュレーション内で使用できます。
シリアル受信コンポーネントを表 5に示します。
成分 | コンポーネントダイアログ | コンポーネントのプロパティ |
---|---|---|
![]() シリアル受信 |
![]() |
|
![]() |
コンポーネントのプロパティを表 2に示します。
財産 | 説明 | 価値観 |
---|---|---|
実行率 | コンポーネントの信号処理部分(変数の取得)の実行速度。 | |
フレームの開始 | フレームの開始はメッセージ ペイロードの前に送信され、同期に使用されます。 |
|
フレームの終わり | フレームの終了はメッセージ ペイロードの後に送信され、同期に使用されます。 |
|
データエスケープを有効にする | メッセージのペイロードでデータ リンク エスケープを有効にします。デフォルト値は false です。 | |
SOF/EOFでのデータエスケープを有効にする | メッセージの先頭と末尾でデータ リンク エスケープを有効にします。デフォルト値は false です。 | |
逃げるデータ | データエスケープとは、特定のデータを複製することを意味します。メッセージにエスケープが必要な値が含まれている場合、その値は複製(エスケープ)されます。例えば、ID値0xEEをエスケープする必要がある場合、メッセージ内でその値が出現するたびに、その値は0xEEEEに複製されます。 |
|
メッセージ構成 | 受信コンポーネントのペイロードを定義します。ペイロードの設定方法の詳細については、「メッセージ設定」セクションを参照してください。 |
メッセージ構成
メッセージ設定を変更するには、[データ] タブの [構成の生成] ボタンを使用します。

設定メニューでは、UART 経由で送信されるデータのカスタム ペイロードを定義できます。
表 7に、構成メニューの概要を示します。
フィールド名 | 説明 |
---|---|
信号名 | 変数/定数に対して一意です。 |
信号の種類 | 信号が可変か定数かを定義します。可変に設定した場合、端子はコンポーネント上に配置されます。 |
データ型 | 可変信号入力のデータ型が整数、符号なし整数、実数のいずれかであるかを定義します。定数信号入力の場合は、ペイロード内の特定のバイト数をスキップするだけです。 |
長さ(バイト) | 長さのオプションは、データ型の選択に応じて動的に変化します。例えば、整数型と符号なし整数型の場合、長さは1、2、4、または8バイトです。実数型の場合、長さは4(Float型)または8(Double型)です。文字列型の場合、バイト長は文字数に基づいて計算されます。 |
エンディアン | リトルエンディアン/ビッグエンディアン バイト順序を選択します。 |
ディメンション(数値/継承) | 同じデータ型と長さを持つ、受信する変数の数。この値は出力ターミナルの次元を指定します。定数の場合、この値は常に1です。文字列の場合、この値はメッセージを解析する際にスキップするバイト数を表します。定数の場合、この値は常に1です。 |
ご覧のとおり、このコンポーネントには追加のステータスポートがあります。このステータスポートは、受信時に発生したエラーの数を2種類のエラーについて出力します。
- フレーミングエラー
- パリティエラー
パリティが有効になっていない場合(シリアル セットアップ コンポーネントのパリティがNoneとして定義されている場合)、ステータス ポートは常に 0 を出力します。
パリティが有効な場合、ステータス ポートはパリティ エラーの数とフレーミング エラーの数を出力します。
このコンポーネントをダブルクリックすると、コンポーネント プロパティ ウィンドウが開きます。
VHILデバイスのサポート
現在、シリアル コンポーネントは VHIL デバイスではサポートされていません。