Processing math: 100%

dSPACEツールの使い方を日本語で

Windowsのスタートボタンを探してクリックするスクリプト

import pyautogui winstart_x,winstart_y = pyautogui.locateCenterOnScreen('C:\Program Files\Python27\winstart.PNG') pyautogui.moveTo(winstart_x,winstart_y) pyautogui.click(winstart_x,winstart_y) pyautogui.typewrite('python\n', 0) 画像ファイル winstart.PNGをPython27の下に置いておく。

ベクトル同士をかけると行列になる件

今日わかったこと。

xnxTn

[x0,0x0,1][x0,0x0,1]

と思っていたが、実は

[x0,0x0,1][x0,0x0,1]

だった。

参考にしたWebページ http://www.snap-tck.com/room04/c01/matrix/matrix02.html

python memo

複数変数を同じ行でprintするには
print('{0} and {1}'.format(x,y))

日本語でコメントを書くにはスクリプトの先頭に
#!/usr/bin/env python
# -*- coding: utf-8 -*-

変数一覧を取得するpythonスクリプト

import win32com.client
from win32com.client import Dispatch
from win32com.client import DispatchWithEvents

CDApp = Dis
patch("ControlDeskNG.Application")
CDVariables = CDApp.ActiveExperiment.Platforms.Item(0).ActiveVariableDescription.Variables

len(CDVariables)
>>21754

for i in range(len(CDVariables)):
print str(i) + str(CDVariables.Item(i).Identifier.UniqueName)

全て表示される。


↓変数のフルパスをItemに渡すこともできる。
myVariable=CDApp.ActiveExperiment.Platforms.Item(0).ActiveVariableDescription.Variables.Item("Model Root/MDL/Environment/Road/xy2GPS/xy2GPS/Gain/Gain")

myVariable.ValueConverted
>>0.017453292519943295

Bus Creatorで信号名を表示させるために

Bus Creatorにつながる信号線に名前をつけると、Bur Creatorのダイアログの中で名前が表示される。
信号線に名前がついていないと、Signal みたいな感じで表示される。

dSPACE Real-Time Test Managerの使い方

スタートメニューから dSPACE Real-Time Test Managerを起動



↓起動後の画面

プラットフォームを登録する 。
Tools > Register Platform...

ここではVEOSを選択してRegister のボタンをクリック。

↓Registerされた。

CONTROLDESK側でGo Onlineをクリック(予めCONTROLDESKのプロジェクトを作っておく)。

↓Go Online後の画面。アプリケーションがロードされている。

↓Real-Time Test Manager側でもアプリケーション(ここでは model_for_data_replay)がロードされている。

↓アプリケーション名(model_for_data_replay)の部分を右クリックしてConnectを選択

右側に"Board"が表示される。

 次にアプリケーション名を右クリックして Create Sequence...を選択する。

ダイアログが開くので、ファイルを選択するため ... をクリックする。

↓予め作成しておいた realtime testing 用のpython スクリプトを選択する。

↓Createをクリックする。

.bcgファイルが生成され、シーケンスが登録された。

シーケンス名を右クリックしてRunを選択

StatusがRunningに変わり、CONTROLDESK側で信号再生が始まる。
(この例ではRTTのシーケンスがMATファイルの信号再生なので)
(予めCONTROLDESK側でStart Measuringしておく)


CONTROLDESKのレイアウト上のボタンからRTTの信号再生を開始させる方法

下のようなモデルを作ってビルドしておく。


CONTROLDESKのレイアウト上にボタンPush buttonを置く。


見た目を修正

右クリックメニューで Configure Events...

ダブルクリックする。

下のようにdef文が挿入される。


冒頭に以下のスクリプトを書く。
import thread
import win32api
from time import sleep
import rttmanagerlib
from win32com.client import Dispatch, DispatchWithEvents
import os
import win32com.client

import pythoncom

↓書いた後


print "On_Application_LayoutManagement_Layout1_Push0020Button_1_ButtonClicked " の上に以下のスクリプトを書く。
(r"C:\Users\********\Documents\...  の******のところは自分の環境に合わせる。)

def thread_mat_replay():
    print "thread mat replay was called."

    pythoncom.CoInitialize()
    rttm = rttmanagerlib.RealTimeTestManagerServer()
    Board = rttm.AccessBoard("127.0.0.1")
    BCGFileName = r"C:\Users\********\Documents\MATLAB\_20180420_array_operate\datareplay.bcg"
    Sequence = Board.Sequences.Create(BCGFileName)
    Sequence.Run()

    pythoncom.CoUninitialize()

print "On_Application_LayoutManagement_Layout1_Push0020Button_1_ButtonClicked " の下に以下のスクリプトを書く。
thread.start_new_thread(thread_mat_replay,())

↓完成したスクリプト

time plotterをレイアウトに置き、Constant のOutを紐付ける。
↓Start Measuringをクリックして計測開始。


Constant1ブロックで設定した値1が出力されている。
 

「再生」ボタンをクリックするとMATファイルの信号の再生が開始される。 

interactive python using subprocess

Python script

import subprocess
from subprocess import Popen, PIPE, STDOUT
import time

cmd2_2 = 'askbirthmonth2.exe'

the_directory = "C:/MinGW/msys/1.0/home/****"
p = Popen(cmd2_2.split(), shell=True, stdin=PIPE, cwd = the_directory,stdout=PIPE)
print p.stdout.readline()
time.sleep(3)
p.stdin.write("10\n")
print p.stdout.readline()

C program for command prompt
#include

int main(void)
{
int birthmonth;
printf("what is your birth month?\n");
fflush(stdout);
scanf("%d", &birthmonth);
printf("your birth month is %d.\n",birthmonth);
return 0;
}

AutomationDeskで波形をキャプチャーする方法

ポイント
  • Test Builderライブラリを使用する。
  • XIL Mappingを使用する。
  1. AUDプロジェクトでの準備
    1. AUDプロジェクトにMAPortオブジェクト、MAPortConfigurationオブジェクト、Mappingオブジェクト、Captureオブジェクト、CaptureResultオブジェクト、Stringオブジェクト、Listオブジェクトを追加する。
    2. MAPortConfigurationオブジェクトで、sdfファイルを読み込む。
    3. Mappingオブジェクトで、変数を指定する。
    4. StringオブジェクトにTaskNameを入れる。
    5. Listオブジェクトに信号名を入れる。
  2. シーケンスの準備
    1. TestBuilderライブラリからTestCaseブロックをプロジェクトにドラッグドロップし、ダブルクリックする。
    2. Initializationの中に、LoadSimulationApplication、InitMAPortの順にブロックを置く。
    3. Cleanupの中にReleaseMAPortブロックを置く。
下図のような簡単なSimulinkモデルを作成し、VEOS向けにビルドします。
simple_model
Project ManagerのProjectを右クリックして、NewDataObject からMAPortを選択して追加します。

add_objects_to_project
同様にMAPortConfigurationも追加します。
maport__configuration_added
ProjectManagerの中のMAPortConfigurationをダブルクリックすると下のように、Platformとsdfファイルを選択する画面になる。
double_clicked_maportconfiguration
VEOSを選択する。
choose_veos
先ほどのSimulinkモデルをVEOS向けにビルドしてできたsdfファイルを選択する。
choose_sdf
Showボタンを押すと...
click_show
モデル変数などがツリー構造で表示される。
model_root_shown
次にMappingオブジェクトを追加する。
add_mapping
Mapping Viewerでの表示。変数はまだ何も表示されていない。
mapping_viewer
Mapping Viewerの空白のところで右クリック、Editを選択。
edit_menu
Mapping Editorが表示される。
mapping_editor
モデルのツリー構造が現れる。
mapping_editor_tree_shown
真ん中のペインの変数を右のペインにドラッグドロップする。そしてMapping Editorを閉じる。
alias_registered
Mapping Viewerに変数が表示されている。
mapping_viewer_result
次に、CaptureとCaptureResultオブジェクトを追加する。
add_capture
追加したあと。
capture__captureresult_added
次に、String型とList型のオブジェクトを追加する。
string__list_object_added
オブジェクトの名前を下記のように変える。
change_names
TaskNameをダブルクリックして、ValueEditorで Periodic Task 1と入力する。
taskname_input
Mapping ViewerでAlias名をコピーする。
copy_alias_name2
List型オブジェクトSignalNamesのメンバーとしてコピーしたエイリアス名をペーストする。
edit_list
TestBuilderライブラリからTestCaseをプロジェクトにドラッグドロップする。
add_testcase
TestCaseを追加したあと。
testcase_added
TestCaseを開いて中身を確認。これが初期状態。
outlook_of_testcase

InitializationのOperationのところにXIL Convenience ライブラリからLoadSimulationApplicationブロックを追加する。
add_loadsimulationapplicatin
次にInitMAPortをLoadSimulationApplicationブロックの下に追加する。
add_initmaport
CleanupのOperationのところにReleaseMAPortを追加する。
add_releasemaport
release_maport_added
VEOSをレジスターする。
register_veos
↓レジスタできたときの表示。
veos_registered
ここでテストを実行してみる。
test_execute
レポートが生成される。白地のハテナマークは、テスト自体は実行されたが、合否判定がされなかったことを意味する。
report_generated
↓レポートの中身。
report
↓のシーケンスを参考に、Captureに関する各ブロックをXIL ConvenienceライブラリからDragDropしていく。
goal_of_actionandevaluation1
goal_of_actionandevaluation2

add_initializecapture
InitializeCaptureのTaskNameのところは、DataObjectのTaskNameを参照する。
refer_taskname
VariablePoolはMappingオブジェクトを参照する
refer_mapping
VariablesはSignalNamesを参照する。
refer_signalnames
result_initializecapture
sleep
addcustomplotstoreport1
addcustomplotstoreport2
addcustomplotstoreport_result
release_capture_added
report_got_capture

Popular Posts

About Me

Weizen Beer A dSPACE user

Icons made by Toast from www.flaticon.com is licensed by CC 3.0 BY

Blog Archive

Labels

Labels

Recent Comments

Recent Post

Video Of Day

Recent

Ad Banner

Popular Posts