Upgrade to Pro — share decks privately, control downloads, hide ads and more …

モデルベース開発モータ制御編~C言語とSimulinkの文法記述を比較する~

k-abe
December 24, 2021

 モデルベース開発モータ制御編~C言語とSimulinkの文法記述を比較する~

■資料概要
2020/10/29 社内勉強会向けに作成した資料。
ブラシレスモータ制御のC言語実装とSimilinkモデルを比較しています。
C言語の実装をSimulinkでどう表現するのか書いています。

■開発環境
●Simulink (MATLAB R2019b)
●Simulink Support Package for Arduino Hardware 19.2.3

■MATLABライセンス
個人用途MATLAB Home

■関連動画
【MATLAB EXPOライトニングトーク】:2020年10月
モデルベース開発初心者がブラシレスモーター制御モデルを作る
https://youtu.be/09AL95ojn-s

k-abe

December 24, 2021
Tweet

More Decks by k-abe

Other Decks in Programming

Transcript

  1. Ϟʔλ੍ޚ֓ཁ •CQ EVΧʔτɹΠϯόʔλج൘Λ࢖༻ɻ •Simulinkɺ Simulink Support Package for Arduino HardwareΛ࢖ͬͯϞʔλ੍ޚϞσϧΛ࡞ͬͨɻ

    •CPUΛʮArduino MEGAʯʹมߋɻ •Ϟʔλ੍ޚ͸γϯϓϧͳɺ ɹʮ120౓ۣܗ೾௨ిɾϗʔϧηϯα༗Γʯɻ
  2. ࢖༻ͨ͠CݴޠɾSimulinkͷจ๏ No ࢖༻༻్ Cݴޠ SimulinkϒϩοΫ໊ 1 ػೳͷڽूɾ֊૚Խ ؔ਺ Subsystem 2

    γϑτ γϑτԋࢉࢠ << Bit Shift 3 ϗʔϧηϯαͷύλʔϯઃఆ (0bit໨ɿU, 1bit໨ɿV, 2bit໨ɿW) ORԋࢉࢠ | Add 4 ϗʔϧηϯαύλʔϯ͔Β௨ిεςʔδΛऔಘ ྫ) ϗʔϧηϯαU=1, V=0, W=1ͷ৔߹ɺ௨ిεςʔ δ͸1 ഑ྻ Index Vector 5 ֤௨ిεςʔδ͔Β௨ిύλʔϯʹ৔߹෼͚ switch Switch Case 6 ֤ػೳ͕ڞ௨Ͱࢀর͢Δσʔλ άϩʔόϧม਺ Datastore Memory, DataStore Write, DataStore Memory 7 ͋ΔػೳϞδϡʔϧͰલճ஋Λ࢖͏ ؔ਺಺෦Ͱstaticม਺Λએݴ Unit Delay 8 Simulinkͷಛ௃తػೳ ৴߸ͷόεԽ - Bus Creator,merge,Bus Selector 9 Simulinkͷಛ௃తػೳ Ϟχλ - DisplayɺScope
  3. No ࢖༻༻్ Cݴޠ SimulinkϒϩοΫ໊ 1 ػೳͷڽूɾ֊૚Խ ؔ਺ Subsystem 2 γϑτ

    γϑτԋࢉࢠ << Bit Shift 3 ϗʔϧηϯαͷύλʔϯઃఆ (0bit໨ɿU, 1bit໨ɿV, 2bit໨ɿW) ORԋࢉࢠ | Add 4 ϗʔϧηϯαύλʔϯ͔Β௨ిεςʔδΛऔಘ ྫ) ϗʔϧηϯαU=1, V=0, W=1ͷ৔߹ɺ௨ిεςʔ δ͸1 ഑ྻ Index Vector 5 ֤௨ిεςʔδ͔Β௨ిύλʔϯʹ৔߹෼͚ switch Switch Case 6 ֤ػೳ͕ڞ௨Ͱࢀর͢Δσʔλ άϩʔόϧม਺ Datastore Memory, DataStore Write, DataStore Memory 7 ͋ΔػೳϞδϡʔϧͰલճ஋Λ࢖͏ ؔ਺಺෦Ͱstaticม਺Λએݴ Unit Delay 8 Simulinkͷಛ௃తػೳ ৴߸ͷόεԽ - Bus Creator,merge,Bus Selector 9 Simulinkͷಛ௃తػೳ Ϟχλ - DisplayɺScope
  4. No ࢖༻༻్ Cݴޠ SimulinkϒϩοΫ໊ 1 ػೳͷڽूɾ֊૚Խ ؔ਺ Subsystem 2 γϑτ

    γϑτԋࢉࢠ << Bit Shift 3 ϗʔϧηϯαͷύλʔϯઃఆ (0bit໨ɿU, 1bit໨ɿV, 2bit໨ɿW) ORԋࢉࢠ | Add 4 ϗʔϧηϯαύλʔϯ͔Β௨ిεςʔδΛऔಘ ྫ) ϗʔϧηϯαU=1, V=0, W=1ͷ৔߹ɺ௨ిεςʔ δ͸1 ഑ྻ Index Vector 5 ֤௨ిεςʔδ͔Β௨ిύλʔϯʹ৔߹෼͚ switch Switch Case 6 ֤ػೳ͕ڞ௨Ͱࢀর͢Δσʔλ άϩʔόϧม਺ Datastore Memory, DataStore Write, DataStore Memory 7 ͋ΔػೳϞδϡʔϧͰલճ஋Λ࢖͏ ؔ਺಺෦Ͱstaticม਺Λએݴ Unit Delay 8 Simulinkͷಛ௃తػೳ ৴߸ͷόεԽ - Bus Creator,merge,Bus Selector 9 Simulinkͷಛ௃తػೳ Ϟχλ - DisplayɺScope
  5. No ࢖༻༻్ Cݴޠ SimulinkϒϩοΫ໊ 1 ػೳͷڽूɾ֊૚Խ ؔ਺ Subsystem 2 γϑτ

    γϑτԋࢉࢠ << Bit Shift 3 ϗʔϧηϯαͷύλʔϯઃఆ (0bit໨ɿU, 1bit໨ɿV, 2bit໨ɿW) ORԋࢉࢠ | Add 4 ϗʔϧηϯαύλʔϯ͔Β௨ిεςʔδΛऔಘ ྫ) ϗʔϧηϯαU=1, V=0, W=1ͷ৔߹ɺ௨ిεςʔ δ͸1 ഑ྻ Index Vector 5 ֤௨ిεςʔδ͔Β௨ిύλʔϯʹ৔߹෼͚ switch Switch Case 6 ֤ػೳ͕ڞ௨Ͱࢀর͢Δσʔλ άϩʔόϧม਺ Datastore Memory, DataStore Write, DataStore Memory 7 ͋ΔػೳϞδϡʔϧͰલճ஋Λ࢖͏ ؔ਺಺෦Ͱstaticม਺Λએݴ Unit Delay 8 Simulinkͷಛ௃తػೳ ৴߸ͷόεԽ - Bus Creator,merge,Bus Selector 9 Simulinkͷಛ௃తػೳ Ϟχλ - DisplayɺScope
  6. No ࢖༻༻్ Cݴޠ SimulinkϒϩοΫ໊ 1 ػೳͷڽूɾ֊૚Խ ؔ਺ Subsystem 2 γϑτ

    γϑτԋࢉࢠ << Bit Shift 3 ϗʔϧηϯαͷύλʔϯઃఆ (0bit໨ɿU, 1bit໨ɿV, 2bit໨ɿW) ORԋࢉࢠ | Add 4 ϗʔϧηϯαύλʔϯ͔Β௨ిεςʔδΛऔಘ ྫ) ϗʔϧηϯαU=1, V=0, W=1ͷ৔߹ɺ௨ిεςʔ δ͸1 ഑ྻ Index Vector 5 ֤௨ిεςʔδ͔Β௨ిύλʔϯʹ৔߹෼͚ switch Switch Case 6 ֤ػೳ͕ڞ௨Ͱࢀর͢Δσʔλ άϩʔόϧม਺ Datastore Memory, DataStore Write, DataStore Memory 7 ͋ΔػೳϞδϡʔϧͰલճ஋Λ࢖͏ ؔ਺಺෦Ͱstaticม਺Λએݴ Unit Delay 8 Simulinkͷಛ௃తػೳ ৴߸ͷόεԽ - Bus Creator,merge,Bus Selector 9 Simulinkͷಛ௃తػೳ Ϟχλ - DisplayɺScope
  7. No ࢖༻༻్ Cݴޠ SimulinkϒϩοΫ໊ 1 ػೳͷڽूɾ֊૚Խ ؔ਺ Subsystem 2 γϑτ

    γϑτԋࢉࢠ << Bit Shift 3 ϗʔϧηϯαͷύλʔϯઃఆ (0bit໨ɿU, 1bit໨ɿV, 2bit໨ɿW) ORԋࢉࢠ | Add 4 ϗʔϧηϯαύλʔϯ͔Β௨ిεςʔδΛऔಘ ྫ) ϗʔϧηϯαU=1, V=0, W=1ͷ৔߹ɺ௨ిεςʔ δ͸1 ഑ྻ Index Vector 5 ֤௨ిεςʔδ͔Β௨ిύλʔϯʹ৔߹෼͚ switch Switch Case 6 ֤ػೳ͕ڞ௨Ͱࢀর͢Δσʔλ άϩʔόϧม਺ Datastore Memory, DataStore Write, DataStore Memory 7 ͋ΔػೳϞδϡʔϧͰલճ஋Λ࢖͏ ؔ਺಺෦Ͱstaticม਺Λએݴ Unit Delay 8 Simulinkͷಛ௃తػೳ ৴߸ͷόεԽ - Bus Creator,merge,Bus Selector 9 Simulinkͷಛ௃తػೳ Ϟχλ - DisplayɺScope
  8. No ࢖༻༻్ Cݴޠ SimulinkϒϩοΫ໊ 1 ػೳͷڽूɾ֊૚Խ ؔ਺ Subsystem 2 γϑτ

    γϑτԋࢉࢠ << Bit Shift 3 ϗʔϧηϯαͷύλʔϯઃఆ (0bit໨ɿU, 1bit໨ɿV, 2bit໨ɿW) ORԋࢉࢠ | Add 4 ϗʔϧηϯαύλʔϯ͔Β௨ిεςʔδΛऔಘ ྫ) ϗʔϧηϯαU=1, V=0, W=1ͷ৔߹ɺ௨ిεςʔ δ͸1 ഑ྻ Index Vector 5 ֤௨ిεςʔδ͔Β௨ిύλʔϯʹ৔߹෼͚ switch Switch Case 6 ֤ػೳ͕ڞ௨Ͱࢀর͢Δσʔλ άϩʔόϧม਺ Datastore Memory, DataStore Write, DataStore Memory 7 ͋ΔػೳϞδϡʔϧͰલճ஋Λ࢖͏ ؔ਺಺෦Ͱstaticม਺Λએݴ Unit Delay 8 Simulinkͷಛ௃తػೳ ৴߸ͷόεԽ - Bus Creator,merge,Bus Selector 9 Simulinkͷಛ௃తػೳ Ϟχλ - DisplayɺScope
  9. No ࢖༻༻్ Cݴޠ SimulinkϒϩοΫ໊ 1 ػೳͷڽूɾ֊૚Խ ؔ਺ Subsystem 2 γϑτ

    γϑτԋࢉࢠ << Bit Shift 3 ϗʔϧηϯαͷύλʔϯઃఆ (0bit໨ɿU, 1bit໨ɿV, 2bit໨ɿW) ORԋࢉࢠ | Add 4 ϗʔϧηϯαύλʔϯ͔Β௨ిεςʔδΛऔಘ ྫ) ϗʔϧηϯαU=1, V=0, W=1ͷ৔߹ɺ௨ిεςʔ δ͸1 ഑ྻ Index Vector 5 ֤௨ిεςʔδ͔Β௨ిύλʔϯʹ৔߹෼͚ switch Switch Case 6 ֤ػೳ͕ڞ௨Ͱࢀর͢Δσʔλ άϩʔόϧม਺ Datastore Memory, DataStore Write, DataStore Memory 7 ͋ΔػೳϞδϡʔϧͰલճ஋Λ࢖͏ ؔ਺಺෦Ͱstaticม਺Λએݴ Unit Delay 8 Simulinkͷಛ௃తػೳ ৴߸ͷόεԽ - Bus Creator,merge,Bus Selector 9 Simulinkͷಛ௃తػೳ Ϟχλ - DisplayɺScope
  10. No ࢖༻༻్ Cݴޠ SimulinkϒϩοΫ໊ 1 ػೳͷڽूɾ֊૚Խ ؔ਺ Subsystem 2 γϑτ

    γϑτԋࢉࢠ << Bit Shift 3 ϗʔϧηϯαͷύλʔϯઃఆ (0bit໨ɿU, 1bit໨ɿV, 2bit໨ɿW) ORԋࢉࢠ | Add 4 ϗʔϧηϯαύλʔϯ͔Β௨ిεςʔδΛऔಘ ྫ) ϗʔϧηϯαU=1, V=0, W=1ͷ৔߹ɺ௨ిεςʔ δ͸1 ഑ྻ Index Vector 5 ֤௨ిεςʔδ͔Β௨ిύλʔϯʹ৔߹෼͚ switch Switch Case 6 ֤ػೳ͕ڞ௨Ͱࢀর͢Δσʔλ άϩʔόϧม਺ Datastore Memory, DataStore Write, DataStore Memory 7 ͋ΔػೳϞδϡʔϧͰલճ஋Λ࢖͏ ؔ਺಺෦Ͱstaticม਺Λએݴ Unit Delay 8 Simulinkͷಛ௃తػೳ ৴߸ͷόεԽ - Bus Creator,merge,Bus Selector 9 Simulinkͷಛ௃తػೳ Ϟχλ - DisplayɺScope
  11. No ࢖༻༻్ Cݴޠ SimulinkϒϩοΫ໊ 1 ػೳͷڽूɾ֊૚Խ ؔ਺ Subsystem 2 γϑτ

    γϑτԋࢉࢠ << Bit Shift 3 ϗʔϧηϯαͷύλʔϯઃఆ (0bit໨ɿU, 1bit໨ɿV, 2bit໨ɿW) ORԋࢉࢠ | Add 4 ϗʔϧηϯαύλʔϯ͔Β௨ిεςʔδΛऔಘ ྫ) ϗʔϧηϯαU=1, V=0, W=1ͷ৔߹ɺ௨ిεςʔ δ͸1 ഑ྻ Index Vector 5 ֤௨ిεςʔδ͔Β௨ిύλʔϯʹ৔߹෼͚ switch Switch Case 6 ֤ػೳ͕ڞ௨Ͱࢀর͢Δσʔλ άϩʔόϧม਺ Datastore Memory, DataStore Write, DataStore Memory 7 ͋ΔػೳϞδϡʔϧͰલճ஋Λ࢖͏ ؔ਺಺෦Ͱstaticม਺Λએݴ Unit Delay 8 Simulinkͷಛ௃తػೳ ৴߸ͷόεԽ - Bus Creator,merge,Bus Selector 9 Simulinkͷಛ௃తػೳ Ϟχλ - DisplayɺScope