TOPPERS 活用アイデア・アプリケーション開発
コンテスト

部門

：活用アイデア部門
アプリケーション開発部門
がじぇるね IoT 部門

作品のタイトル： モデルベース開発から TOPPERS 搭載システムへのクロスレイヤ自動設計を利用したマルチコア動作モータ制御実装

作成者

：

竹松慎弥

共同作業者

：

鍾兆前，井上雅理，横山静香，小島流石，近藤真己，中本幸一，安積卓也，道木慎二，本田晋也，枝廣正人

対象者： モデルベース開発から TOPPERS 搭載システム，特にマルチコアシステム向け実装をお考えの方使用する開発成果物： TOPPERS/ATK2 カーネル

目的・狙い組込み制御分野での設計生産性向上，高性能化要求に応えるべく，Simulink に代表されるモデルベース開発と実装設計を協調させるクロスレイヤ設計手法，およびモデルベース並列化の研究開発を進めている．本手法により，TOPPERS/ATK2 カー
ネル上で並列実行可能なコードおよびコンフィギュレーションファイルを自動生成できる．手法の適用事例として，Simulink モデルから自動生成したコードを用いたRC カー制御アプリケーションを開発した．今後モデルベース開発，マルチコア化が進み，TOPPERS アプリケーション開発も複雑化，難化が予想されるが，自動化の可能性を示すことを狙いとしている．

アプリケーションの概要
本アプリケーションは、プレイステーション 3 のコントローラを用いて RC カーの前進後退、ステアリング、ライト、ブザーを制御できる。特にブラシレスモータによる前進後退の制御は Simulink で設計し、本手法を用いて自動並列化を行ったコードを用いている。適切に制御することができ，TOPPERS 搭載マルチコア上の制御アプリケーションを自動で生成できることを示すことができた．

目的と狙い• 組込み業界（特に車載）の動向：
モデルベース開発からマルチコア上に向けた実装

現状の課題：
モデル設計で並列を考えていないため性能未達等手戻り大我々の活動目標：
モデル設計と実装設計の協調⇒ クロスレイヤ設計• 今回のアプリケーション開発の目的と狙い– クロスレイヤ設計手法を利用し，TOPPERS/ATK2向け並列化コードを自動生成– 適用事例としてモータ制御アプリケーションを開発

Parallel & Distributed Systems Lab.

1

クロスレイヤ設計• モデルベース開発 – 並列実装 協調設計（クロスレイヤ設計）– 特徴
制御モデルの自動並列化はもちろん，並列性能・動作をモデルにフィードバックし，並列動作を意識した制御設計を支援– 機能• 性能見積もり
ハードウェア抽象化記述SHIMにより，処理時間を見積もる• コアマッピング
処理時間の分散，通信最小化を意識したコア割当を自動算出• 並列コード生成
コア割当を基に並列実行可能なコードを自動生成(TOPPERS/ATK2上で動かすことができるコードも生成可能)• 並列動作検証
デッドロック，読み書き順序逆転等の並列動作による問題発生を検出• 可視化
コア割当をモデルに反映させ，更なる高並列制御設計につなげる

Parallel & Distributed Systems Lab.

2

RCカー
ボディ
（ヘッドライト，ブレーキランプ，ブザー等が搭載）
F1HボードBluetoothモジュール(HSBRH850F1H176)(SBDBT5V)

サーボモータ本体

組込用小型
モータドライバボード

ブラシレスモータ

PS3コントローラ
Parallel & Distributed Systems Lab.

3

システム全体イメージ••••

PS3コントローラで操作
RH850/F1H(デュアルコア)を利用
TOPPERS/ATK2-SC1-MC上で動作
ブラシレスモータ制御はクロスレイヤ設計手法によってモデルから自動生成された並列タスクで実行

Parallel & Distributed Systems Lab.

4

操作方法
• 左アナログLR– ステアリング操作• 右アナログUD– 前進・後退– バック時はブザーが鳴る• 左・右ボタン– ステアリングニュートラルを調整• 上ボタン– ステアリングニュートラルを初期状態に• L1/R1ボタン– 方向指示器のON/OFF• △ボタン– ハザード• ○ボタン– ヘッドライトのON/OFF• □ボタン– フォグランプのON/OFF• ×ボタン– ブレーキ ・ ブレーキランプ

操作

Parallel & Distributed Systems Lab.

5

ブラシレスモータ制御モデル• クロスレイヤ設計手法を用いて，制御設計および自動並列化したモデル
10ms周期ブロック

ベースレート : 100us※色分けはコア割当を表す
Parallel & Distributed Systems Lab.

6

システム構成
DriveManager
Task

PWGABodyControl
Task

20ms周期起動
100ms周期起動

BlsmControl
Core0_1_0_Task

BlsmControl
Core0_1_0_Alarm

DriveManager
CycAlarm

BodyControl
CycAlarm

100us周期起動

BlsmControl
Core0_100_0_Task

BlsmControl
Core0_100_0_Alarm

10ms周期起動

BlsmControl
Core1_1_0_Task

HW_COUNTER

BlsmControl
Core1_1_0_Alarm
BuzzerControl
CycAlarm

100us周期起動

BlsmControl
Core1_100_0_Task

BlsmControl
Core1_100_0_Alarm

10ms周期起動

自動生成

RLIN3x_RX_ISR

OperationManager
CycAlarm

125us周期起動

OperationManager
Task
OSオブジェクト
分類

RLIN3x_TX_ISR

Simulinkモデル

BuzzerControl
AlarmCb

10ms周期起動タスクカウンタ

ISR

アラーム

Parallel & Distributed Systems Lab.

アラーム
コールバック7

システム動作
ステアリング
サーボの制御各制御系へ指示
DriveManager
Task

PWGA
操舵角指示
(duty比設定)
BlsmControl
Core0_1_0_Task

BodyControl
Task
灯火類指示

灯火類の制御ブラシレス
モータの制御BlsmControl
Core0_100_0_Task
BlsmControl
Core1_1_0_Task

速度指示
ブザー指示

BlsmControl
Core1_100_0_Task

ブザーの制御コントローラからの指示

BuzzerControl
AlarmCb
RLIN3x_RX_ISR

RLIN3x_TX_ISR

OperationManager
Task

コントローラ
指示解析

OSオブジェクト
分類

タスク

カウンタ

ISR

アラーム

Parallel & Distributed Systems Lab.

アラーム
コールバック8

必要機材まとめ•••••••

RCカー– 完成品を程度で量販店から購入
マイコンボードHSBRH850F1H176– 北斗電子から購入
組込用小型モータドライバボード– 北斗電子から購入
RCカーキット（各種必要材料）– 北斗電子から購入
SBDBT5V– ランニングエレクトロニクスから購入
Bluetoothドングル– 量販店から購入
PS3コントローラ– 量販店から購入

Parallel & Distributed Systems Lab.

9

実行手順
•ハードウェア
– マイコンボードの加工• 必要に応じてピンのはんだ付け等を行う– Bluetoothモジュールのセットアップ• SBDBTのマニュアルにしたがって，PS3コントローラとペアリング– 基板の固定• マイコンボードとBluetoothモジュールをアクリル板に固定– ボードやアクチュエータ等の接続• 右図のように接続•ソフトウェア
– 環境
開発環境• 右表の開発・動作環境で確認
OS– ソースの入手
コンパイラ• https://github.com/ts1413/CrossLayerDesign.gitより入手
ターミナル– ビルド
書き込み• obj/blsm_rc_f1hにおいてビルドを実施
動作環境– make depend– makeRTOS• マイコンへの書き込み– obj/blsm_rc_f1h/blsm_atk2/blsm_atk2.mtpjでCS+を起動– メニューの デバッグ > デバッグツールへダウンロード で書き込み– 動作例• ソース入手先にデモ動画あり

Parallel & Distributed Systems Lab.

Windows7
GHS社 コンパイラ
Cygwin 2.8.0-1
CS+ および E1エミュレータ

TOPPERS/ATK2-SC1-MC (1.4.0)10