オープンソフトウェア利用促進事業 第 3 回 oss...
DESCRIPTION
委託契約書 2009 情財第 919 号. オープンソフトウェア利用促進事業 第 3 回 OSS モデルカリキュラム導入実証. ~ OSS を活用した組込みソフトウェア開発教育プログラムの開発と実証~. 組込みソフトウェア実装特別演習 演習実施環境の構成. 平成 23 年 2 月 公立大学法人 広島市立大学. システム概要. 基本アーキテクチャ. OTP の アプリケーションとして 動作させる. シミュレーション プロセス監視 ( OTP を利用). データベースについて. 分散データベース Mnesia を利用 管理データ 外部環境系データ 動作履歴 - PowerPoint PPT PresentationTRANSCRIPT
委託契約書 2009情財第 919号
組込みソフトウェア実装特別演習演習実施環境の構成
1
平成 23年 2月
公立大学法人 広島市立大学
~ OSSを活用した組込みソフトウェア開発教育プログラムの開発と実証~
基本アーキテクチャ
2
シミュレーション
プロセス監視( OTPを利用)
OTPのアプリケーションとして動作させる
分散データベースMnesiaを利用管理データ
外部環境系データ動作履歴計算に使う定数値
動作方法 Erlangシェルから直接コマンドを入力してデータを追加・変更できる
プログラム内からでも可能
3
Erlang環境の整備 Erlang環境のインストール作業
http://erlangworld.web.fc2.com/erlang/ins2win.html (windowsの場合)
シミュレータ教材( ver2.0)のインストール インストールディレクトリに注意する
C:\Users\xxx へインストールしたと仮定する ソースプログラムのコンパイル 分散データベースの初期化
開発用のエディタの準備 秀丸などのプレーンテキストエディタが必要 使い慣れたテキストエディタ 講義中に紹介されるテキストエディタや統合開発ツールなど 行番号表示、括弧チェック機能、キーワードに色が付くなど
4
最新版の Erlangをダウンロード Windows binary のところをダウンロード ダウンロードファイルを実行して指示に従う インストール完了後、インストールされた場所を確認する。
例) C:\Program Files\erl5.7.5.\bin コマンドプロンプトから直接 Erlangが実行できるようにパスを設定
システム環境変数の「 Path」に、追加する。 例) ; C:\Program Files\erl5.7.5.\bin
を追加する。はじめのセミコロンも必要。既存にかかれているパスは絶対に削除しないこと。
コマンドプロンプトから Erlangが実行できるか確認 erl と打って、 Erlangが起動すれば OK.
5
以下の URLからシミュレータ教材をダウンロード
http://scarlet.sos.info.hiroshima-cu.ac.jp/ipa/sim/
作業(任意)フォルダに保存して、解凍する。解凍後、ファイルの内容を確認。
ファイル数: 26 フォルダ数: 2 logフォルダ内にサンプルファイルが2つ scenarioフォルダ内にサンプルファイルが3つ
機能仕様書が同梱されています6
実行環境に依存する部分を修正する sim_sup.erl
-define(NODE1, 'node1@localhost').-define(NODE2, 'node2@localhost').
-define(NODE1, '[email protected]').-define(NODE2, '[email protected]').
7
シミュレータ教材(ソース一式)一式を任意のディレクトリにコピー インストール先ディレクトリはどこでもよいが、コマンドプロンプトから起動するので、「 C:\Users\xxx」などの場所にインストールするとよい
シミュレータのコンパイル コマンドプロンプトを立ち上げ、教材インストール先にcdコマンドで移動する。
ソースプログラムのコンパイル makeと打つコンパイル後は、 xxxxx.beamファイルが出来る
8
分散データベース(Mnesia)の初期化 ノードを2つ立ち上げる(コマンドプロンプトから行う)
erl –name [email protected] –cookie abcdef erl –name [email protected] –cookie abcdef
どちらかのノードで、 DB初期化コマンドを打つ sim_sup:init_sim(). 打ち込むと他ノードも同じメッセージが表示される
データの確認同じディレクトリ上に下記のディレクトリが作成されていることを確認する
[email protected] [email protected]
9
ノードを2つ立ち上げる(コマンドプロンプトから行う) erl –name [email protected] –cookie abcdef erl –name [email protected] –cookie abcdef
どちらかのノードで、起動コマンドを打つ application:start(brakesim).
Mnesiaの開始が遅れて、失敗する場合もある その場合にはもう一度起動コマンドを打つ
コマンドでの終了の仕方 application:stop(brakesim).
10
コマンドプロンプトを2つ立ち上げる シミュレータのディレクトリに移動 Erlangシェルの立ち上げ( 2ノード)
erl –name [email protected] –cookie yymmdd erl –name [email protected] –cookie yymmdd
アプリケーションの実行 application:start(brakesim).
テキストエディタ等でプログラムの修正 dcs.erl
コンパイルまたはmake c (dcs). make 「make」はコマンドプロンプト上。「 c(dcs).」は、 Erlang ノード上。
再実行 以降繰り返し
11
event_loop() ->receive{state_inf,brake, Parameter} ->
Des = getParam(torque, Parameter),ifDes >= 3 ->NDes = 20,io:format("NewTorque: ~p~n",[NDes]),
gen_server:cast({global,wheelFright},{update_ind,dcs,[opetype,brake,userope,speeddown,torque,NDes]}),
gen_server:cast({global,wheelFleft},{update_ind,dcs,[opetype,brake,userope,speeddown,torque,NDes]}),
gen_server:cast({global,wheelRright},{update_ind,dcs,[opetype,brake,userope,speeddown,torque,NDes]}),
gen_server:cast({global,wheelRleft},{update_ind,dcs,[opetype,brake,userope,speeddown,torque,NDes]}),
true;true-> falseend,
io:format("OrgTorque: ~p~n",[Des]),event_loop();
end.
ブレーキの踏みこみが一定以上の場合はフルブレーキにする例12