Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
<<importTiddlers>>
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

----
Also see [[AdvancedOptions]]
<!--{{{-->
<div class='header' role='banner' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' role='navigation' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' role='navigation' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' role='complementary' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea' role='main'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected {color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:alpha(opacity=60);}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0; top:0;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0 3px 0 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0; padding-bottom:0;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='toolbar' role='navigation' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
M1に続きB4も配属決定,今年も3名です,これで全メンバーが決まりましたので,今年度も活動を開始です。といってもまだ何も行っていません。
!!フリーソフトの紹介
*数式処理プログラム・・・授業の準備でラプラス変換をするプログラムを探していました。MuPADでもできるのですが,[[AXIOM|http://wiki.axiom-developer.org/FrontPage]]+[[Texmacs|http://www.texmacs.org/tmweb/download/windows.en.html]]でいいかんじです。TexmacsがWindowsでもうごくのであればMaximaでよかったかも。デスクトップには入れましたがnotePCはまだです。
*Texmacs・・・TeXのフロントエンド,数式処理の結果もきれいに表示してくれます。日本語は通りません。Linuxがもともとでしょうが,最近はWindows版の開発も進んでいるようです。[[Tips]]にも上げておきます
試行としてパスワードを使わない日記も上げていこうと思います。特に読者は想定せずに思いついたことを記述することとします。メモとして,防備録代りに使用するかもしれません。
!!研究室ゼミ初回
私の研究室は,学外からの進学者も多いので,各自が行った卒論の研究内容について,ゼミの初回に紹介してもらうことにしています。
今年の感想ですが,それぞれ面白い研究をしていると感じましたが,私のところを含め,教えてもらったことを一生懸命行ったという感想です。博士前期課程(修士のほうが分かりやすいですね)に,進んだので今後は自分のオリジナルを入れた研究ができるように”精進”してください。精進は以前もBLOGに何度か登場していますが,ある先生からメールを頂いたときに書かれていた言葉です。なんか頑張れ,努力,とかよりもいっそう勉学に励まないといけないようで気が引き締まったので,あえて書いてみました。
B4も来年は,同じことを行います。その前に卒論発表もあります。それまでに,人前で話ができるように訓練しましょう。
1999年

 1. 池田 英広、花本 剛士、辻  輝生、田中 良明、速度ループを極配置法で設計した2慣性系の位置制御、電気学会論文誌 119-D巻、4号, 544-545
 2. T.Hanamoto, H.Hara, Y.Tanaka, T.Tsuji,Sensorless Control of BLDCM Applying the Modified Induced Voltage Observer, Electrical Engineering in Japan, Vol. 129, No.2, 1999
 3. ウメルジャン サウット,梅田 信弘, 花本 剛士, 辻 輝生,非線形オブザーバを用いたフレキシブルアームの制振制御,計測自動制御学会論文集,Vol.35, No.3, 401/406
 4. T.Hanamoto, T.Tsuji, Y.Tanaka, Development of Fast Response Self-Commutated SVC Using Recursive Fourier Transformation, Proceeding of ICEE '99 Vol.2, Hong Kong, 101-104
 5. H.Hara, T.Hanamoto, Y.Tanaka, T.Tsuji, A Sensor-less Control Method of BLDCM via the Block Pulse Functions and the Newton's Method, CICEM'99,Vol.2, Xi'an, 720-723
 6. H.Ikeda,T.Hanamoto, T.Tsuji, Y.Tanaka,T.Mochizuki ,Posotion Control of 2-Inertia Resonant System with Speed Minor Loop Designed by Pole Placement Method, CIEM'99, Vol.2, Xi'an, 732-735

1998年

 1. 花本 剛士,里見 篤生,辻  輝生,田中 良明,電流形PWMコンバータの最適制御による過渡振動抑制制御の供試機による検証、電気学会論文誌 118-D巻、7/8号, 951-952
 2. 花本 剛士,原  英博,田中 良明,辻  輝生,拡張誘起電圧オブザーバを用いたBLDCMのセンサレス制御,電気学会論文誌 118-D巻、9号, 1089-1090
 3. T.Hanamoto, Y.Tanaka, T.Tsuji,Vibration Suppression Control of 3-mass Systems Based on 2-mass Approximation Model,Proceeding of ICEM '98 Vol.3, Istanbul, 1735-1740
 4. H.Hara,T.Hanamoto, Y.Tanaka, T.Tsuji,A Position Sensor-less Control of PM Motor with Block Pulse Function And the Newton's Method,Proceeding of ICEM '98 Vol.2, Istanbul, 937-940 


!!2001年
# Hidehiro Ikeda, Tsuyoshi Hanamoto, Teruo Tsuji, Yoshiaki Tanaka, Fuzzy Control of 2-inertia System with Scaling Factors Determined by GA, Trans. of IEE Japan , Vol 121-D, No9, 996-997 

!!2000年
# 池田 英広,花本 剛士,辻  輝生,田中 良明,遺伝的アルゴリズムを用いた2慣性共振系の位置制御系設計、電気学会論文誌 120-D巻、6号, 838-844
# 花本 剛士,ハサン ジダン,小黒 龍一,田中 良明,辻  輝生,磁束鎖交数の推定値を用いた円筒型PMSMのセンサレス速度制御,電気学会論文誌 120-D巻、7号, 877-883
# 原  英博,花本 剛士,田中 良明,辻  輝生,小黒 龍一,ブロックパルス関数を用いたBLDCMロバストセンサレス制御,電気学会論文誌 120-D巻、7号, 884-890
# ウメルジャン サウット,花本 剛士,辻  輝生,最終スライディングモードによるフレキシブルアームの制振制御,,計測自動制御学会論文集,Vol.36, No.8, 723/725
# Hasan Zidan, Shuich Fujii, Tsuyoshi Hanamoto, Teruo Tsuji, A simple Sensorless Vector Control System for Variable Speed Induction Motor Drive, Trans. of IEE Japan , Vol.120-D, No.10, 1165-1170
# T.Hanamoto, T.Tsuji,Y.Tanaka, Sensorless Speed Control of Cylindrical Type PMSM Using Modified Flux Observer ,Proceeding of IPEC 2000 Vol.4, Tokyo, 2104-2108
# T.Hanamoto, T.Tsuji,Y.Tanaka, Comparison of the Control Characteristics of Sensorless Speed Control of Based on the Observer Theory ,Proceeding of ICEM 2000 Vol.3, Espoo,1419-1423
# H.Hara,T.Hanamoto, T.Tsuji, Sensor-less Control of BLDCM under Block Pulse Functions and Butterworth Low Pass Filter, Proceeding of ICEM 2000 Vol.3, Espoo, 1424-1427

!!2003年
# T.Tsuji, T.Hanamoto, N.Umeda, R.Oguro, Adaptive speed control of motor with rotational angle dependent disturbance,Electromotion,Vol10, No.4, pp.691-pp.696 

!!2002年
# T.Hanamoto, Hidehiro Ikeda, T.Tsuji, Y.Tanaka, Sensorless Speed Control of Synchronous Reluctance Motor using RTLinux, Proc of the PCC-OSAKA 2002, Vol.2 699-703
# T.Hanamoto, T.Tsuji, T.Mochizuki, Sensorless Speed Control of IPMSM using the modified flux linkage observer, Proc. of ICEM 2002, No.332 
!!2005年
#T.Hanamoto, G.Ahamad, T.Tsuji, "RTLinux based speed control system of SPMSM with an online real time simulator", Proc. of IPEC Niigata2005, S27-2,pp.1011-1015
#T.Hanamoto, G.Ahamad, T.Tsuji, "RTLinux based online real time simulator of SPMSM using the block pulse approximation", Proc. of PEDS, pp.1118-1122
!!2004年
# 花本剛士,池田英広,樋口智之,辻 輝生,田中良明, 係数図法を用いた多慣性共振系の振動抑制速度制御,電気学会論文誌,124-D巻、9号, pp.878~pp.895
# T.Hanamoto, Y.Yoshioka, I.Karube, T.Tsuji,Online Parameter Estimation Method for Three-inertia Systems Using Single Term Block Pulse Functions, Proc. of ICEE2004, 'OB6-4
# T.Hanamoto, H.Ikeda, T.Tsuji, Y.Tanaka, Sensorless Control of Synchronous Reluctance Motor Using Modified Flux Linkage Observer with an Estimation Error Correct Function, Proc. of ICEM2004, No.249
!!2007年
#H. Ikeda, T. Hanamoto and T. Tsuji, "Digital Speed Control of Multi-Inertia Resonant Ssytem Using Real Time Simulator", Proc. of ICEMS2007, OTP-21, pp.1881-1886, 2007
#A. Ghaderi, T. Hanamoto, T. Tsuji, "Very Low Speed Sensorless Vector Control of Synchronous Reluctance Motors with a Novel Startup Scheme", Proc.of 2007 IEEE Applied Power Electronics Conference and Exposition (APEC-2007),pp.396-402, 2007
!!2006年
#Tsuyoshi Hanamoto, Ahmad Ghaderi, Teruo Tsuji,"RTLinux Based Speed Control System of SPMSM with An Online Real Time Simulator", IEEJ Trans. on IA,Vol.126-D No. 4, 2006, pp453-458
#吉岡康哉,花本剛士,"総合最小二乗法を用いた制振制御のための振動モード同定法",電気学会論文誌D,126-D巻 6号, 2006, pp794-803
#Ghaderi Ahmad, Hanamoto Tsuyoshi and Tsuji Teruo, "A Novel Sensorless Low Speed Vector Control for Synchronous Reluctance Motors Using a Block Pulse Function-Based Paremeter Identification" , Journal of Power Electronics, Vol.6 No.3 , July 2006, JPE-6-3-6, pp235-244
#Ming-Zhao Liu, Teruo Tsuji and Tsuyoshi Hanamoto, "Position Control of Magnetic Levitation Transfer System by Pitch Angle" , Journal of Power Electronics, Vol.6 No.3, July 2006, JPE-6-3-9, pp264-270
#Hidehiro Ikeda, Tsuyoshi Hanamoto, Teruo Tsuji, Masayoshi Tomizuka, "Design of Vibration Suppression Controller for 3-Inertia Systems Using Taguchi Method", Proceedings of SPEEDAM 2006, Mechatronic Systems, S10-19 -- S10-25
#T. Hanamoto, A. Ghaderi, H.Ikeda, T. Tsuji ,"Observer Based Speed Sensorless Control of PMSM Using an Online Real Time Simulator", Proceedings of the 2006 ICEMS, DS1F1-08, 5pages
#H. Ikeda, T. Hanamoto, T. Tsuji "3-Intertia System Control Utilizing M-IPD Control and Taguchi Method", Proceedings of the 2006 ICEMS, LS2D-1, 6pages
#Y. Yoshioka, T. Hanamoto "Estimating Continuous-Time Models of Multi-Mass Mechanical System Using the LWTSL Method and the CDM Based Order Determination", Proceedings of the 2006 ICEMS, DS4E3-02, 6pages
!!2009年
#Hideaki Iura、Zhe Chen、Kozo Ide、Tsuyoshi Hanamoto、"An Estimation Method of Rotational Direction and Speed for Free running AC Machines without Speed and Voltage Sensor", The 12th International Conference on Electrical Machines and Systems、LS3F-2、5pages
#T. Hanamoto、 S.Takanabe、H. Ikeda、T. Tsuji、"Digital Hardware Control System of PMSM for High Precision Torque Control with Linear Servo Amplifier"The 12th International Conference on Electrical Machines and Systems、LS2A-1、4pages
#H. Ikeda、T. Hanamoto、T. Tsuji "Vibration Suppression Controller for 3-Mass System Designed by Particle Swarm Optimization" ,The 12th International Conference on Electrical Machines and Systems、DS2G7-06、4pages
#Tsuyoshi Hanamoto, Ahmad Ghaderi, Muneto Harada, Teruo Tsuji,"Sensorless Speed Control of Synchronous Reluctance Motor Using a Novel Flux Estimator Based on Recursive Fourier Transformation", Proc. of IEEE-ICIT '09, pp.549-554

!!2008年
#Y. Yoshioka, T. Hanamoto "Estimating of a Multimass System Using the LWTLS and a Coefficient Diagram for Vibration-Controller Design", IEEE Trans.on IA Vol.44,No.2 , pp.566-574
#H. Ikeda, T. Hanamoto, T. Tsuji "Design&nbsp;of&nbsp;Multi‐Inertia&nbsp;Digital&nbsp;Speed&nbsp;Control&nbsp;System&nbsp;Using&nbsp;TaughiMethod", Proc. of ICEM PB.3.9, 6pages(CD-ROM) 
#T. Hanamoto, M. Deriha, H. Ikeda, T. Tsuji "Digital&nbsp;Hardware&nbsp;Circuit&nbsp;Using&nbsp;FPGA&nbsp;for&nbsp;Speed&nbsp;Control&nbsp;System&nbsp;of&nbsp;Permanent&nbsp;Magnet&nbsp;Synchronous&nbsp;Motor", Proc. of ICEM PB.3.18, 5pages(CD-ROM) 

HPを一新しました。
以前のHPは[[こちら|indexOLD.html]] <== こちらのほうがFlashできれいです。
残念ながらメンテできないので。
9月24日,25日 電気関連学会九州支部大会に参加しました。花本研究室からは5件の発表を行いました。
ひっそりと [[FM KITAQ|http://www.fm-kitaq.com/]] ものづくりオリエンテッドに出演しました。
[[産学人材育成ロボメカ実証講座|http://jimu-www.jimu.kyutech.ac.jp/soumu/soumu_gyomu/sangaku.pdf]] 制御の実際(中級)の講師をしました。
10月8日~10日まで [[産学連携フェア|http://fair.ksrp.or.jp/]]が開催されます。

10月8日 15:00~17:00
国立大学法人 九州工業大学 [[先端エコフィッティング技術研究開発センター|http://www.lsse.kyutech.ac.jp/~ecofitting/]]主催の
[[エコフィッティングを行う先端的取組み|sangaku.pdf]]で発表します。
10月27日(月)に[[第3回GPフォーラム|http://www.life.kyutech.ac.jp/gp07/forum_3rd.html]]が開催されます。

すでに1週間経ちましたが,カウンタをつけてみました↑↑↑↑
アクセス数が増えるといいのですが,がっかりすることも十分考えられます。どうやってコンテンツを充実していけばいいのか,悩むところです。
昨日,無事フォーラムが終了しました。今回は過去最多の参加がありました。これを機会に学生の皆さんのモチベーションが上がればと思います。
11月1日に戸畑キャンパスにて,工学部電気電子コースのソフトボール大会に参加しました。
花本研は見事@@color(red):準優勝@@しました。
遅くなりましたが,11月24日に生体機能専攻の球技大会(雨天のためバスケットボール)があり,
花本研は,MVPを受賞した学生が中心となり,@@見事4位@@となり来年度の幹事研究室となりました。
高等専門学校等との懇談会を開催
11月25日(火)に、本学で入試に関する高等専門学校等との懇談会を開催されました。
生命体工学研究科の研究室見学が行われ、花本研究室を御案内しました。
[img[fig1|Picture/CIMG1542_sss.jpg]] [img[fig2|Picture/CIMG1543_sss.jpg]]
#[[一瀬 英生(いちのせ ひでお)|]]
#[[竹下 僚(たけした あきら)|]]
#[[長江 英希(ながえ ひでき)|]]
#[[那須 剛太(なす こうた)|]]
#[[前田 崇(まえだ たかし)|]]
#[[佐野 貴彦(さの たかひこ)|]]
#[[岡本 卓也(おかもと たくや)|]]
#[[郝 凝(かく にん)|]]
#[[竹之内将志(たけのうち まさし)|]]
#[[西村 博晃(にしむら ひろあき)|]]
#[[矢野 淳一(やの じゅんいち)|]]
#[[河原 大輔(かわはら だいすけ)|]]
#[[杉田 悟(すぎた さとる)|]]
#[[鮮于 潤(そんう ゆん)|]]
#[[高鍋 諭史(たかなべ さとし)|]]
#[[原田 宗人(はらだ むねと)|]]
*1月28日に北九州環境ビジネス推進会1月例会が㈶北九州産業学術機構(FAIS)2階-中会議室1で開催されます。
この中で花本が,「重ね抵抗溶接機の電力変換器高効率制御によるエコフィッティング」について講演します。

*1月29日に[[第4回GPフォーラム|http://www.life.kyutech.ac.jp/gp07/forum_4th.html]]が開催されます。
早くも1月が終わってしまいます,驚くばかりです。
今週は2つのイベントがあり,無事終了しました。
28日に北九州環境ビジネス推進会1月例会が
29日には,[[第4回GPフォーラム|http://www.life.kyutech.ac.jp/gp07/forum_4th_res.html]]が開催されました。
2月10日~2月13日に開催された,ICIT'09 (International Conference on Industrial Technology)
に参加して以下の題目で発表してきました。
<html>
<img style="width: 500px; " alt="" src="Picture/icit_prog_hanamoto.png" align="">
</html>
21年度用研究室案内作成中です
本日
''平成20年度グローバル研究マインド強化教育プログラム 国際マインド成果報告会''
を開催しました
本日は電気工学科の卒論発表でした。以下花本研究室の発表題目です

*係数図を用いた多慣性速度制御系の制御器設計に関する研究
*遺伝的アルゴリズムを用いた交流重ね抵抗溶接機のパラメータ推定に関する研究
*生活支援電気移動車の機械系パラメータ推定に関する研究
*磁束推定に基づいた同期リラクタンスモータのセンサレス速度制御に関する研究
*FPGAを用いたACサーボモータの高精度トルク制御に関する研究
修士論文発表を行いました。花本研究室の題目は以下の通りです。

*三相‐単相マトリックスコンバータを用いた重ね抵抗溶接機の高精度制御に関する研究
*FPGAを用いた交流電動機駆動系のオンライン・リアルタイム・シミュレータに関する研究
*パラメータ推定機能を付加した電気移動車のトルクアシスト制御に関する研究
*FPGAを用いたPMSMの高精度トルク制御に関する研究&
*磁束推定に基づいた同期リラクタンスモータのセンサレス速度制御に関する研究
戸畑キャンパスで研究室紹介を行いました。
花本研究室に興味を持った学生は,是非@@オープンラボ@@に来てみてください。

来年度の予定テーマです
*FPGAを用いた交流電動機駆動系のオンラインリアルタイムシミュレータに関する研究
*パラメータ推定機能を付加した電気移動車のトルクアシスト制御に関する研究
*FPGAを用いたACサーボモータの高精度トルク制御に関する研究
*磁束推定に基づいた同期リラクタンスモータのセンサレス速度制御に関する研究
*係数図を用いた多慣性速度制御系の制御器設計に関する研究
*三相‐単相マトリックスコンバータを用いた重ね抵抗溶接機の高精度制御に関する研究

<html>
<img style="width: 250px; " alt="" src="Picture/lab_intro2009.jpg" align="">
<img style="width: 250px; " alt="" src="Picture/lab_intro2009_2.jpg" align="">
<img style="width: 250px; " alt="" src="Picture/lab_intro2009_3.jpg" align="">
</html>


3月13日に2009年度の卒論配属が決まりました。花本研究室に配属された学生は
(連絡済のはずですが)19日13時に若松キャンパスの1階研究室に集合してください。
昨日は,卒業式,修了式でした。
花本研からは博士前期過程5名が修了,学部生5名が卒業しました。
メンバーを更新しました
8月22,23日”出張オープンキャンパスinイムズ”が開催され、
花本研究室の矢野君(写真中央)が「学生による座談会」に参加しました。
<html>
<img style="width: 250px; " alt="" src="Picture/imz_yano.jpg" align="">
</html>

9月28日 電気関連学会九州支部大会に参加しました。花本研究室からは3件の発表を行いました。
11月15日~11月18日に開催された,The 12th International Conference on Electrical Machines and Systems (ICEMS2009)
に参加して以下の題目で発表してきました。

"Digital Hardware Control System of PMSM for High Precision Torque Control with Linear Servo Amplifier "
Tsuyoshi Hanamoto, Satoshi Takanabe, Hidehiro Ikeda, and Teruo.Tsuji
11月28日に戸畑キャンパスにて開催された,工学部電気電子コースのソフトボール大会に参加しました。
花本研は遂に@@color(red):優勝@@しました。!!!
#[[下村 亮介  (しもむら りょうすけ)|]]
#[[高瀬 聖将  (たかせ きよまさ)|]]
#[[田中 敬一郎 (たなか けいいちろう)|]]
#[[田中 佑治  (たなか ゆうじ)|]]
#[[井浦 英昭 (いうら ひであき)|]]
#[[佐野 貴彦(さの たかひこ)|]]
#[[一瀬 英生(いちのせ ひでお)|]]
#[[坂口 洋夢(さかぐち ひろむ)|]]
#[[﨑山 善貴(さきやま よしたか)|]]
#[[SHIN SANG MIN(しん さんみん)|]]
#[[竹下 僚(たけした あきら)|]]
#[[長江 英希(ながえ ひでき)|]]
#[[那須 剛太(なす こうた)|]]
#[[岡本 卓也(おかもと たくや)|]]
#[[竹之内将志(たけのうち まさし)|]]
#[[西村 博晃(にしむら ひろあき)|]]
#[[矢野 淳一(やの じゅんいち)|]]
!!2010-2011
#山田洋明,花本剛士,石山俊彦,坂口直志,高橋剛:「温度検出による熱電発電用MPPT制御法の検討」,パワーエレクトロニクス学会誌,Vol.36,pp.151-157, 2011
#Norhisam Misron, Suhairi Rizuanl, Aravind Vaithilingam, Nashiren Farzilah Mailah, Hanamoto Tsuyoshi, Yamada Hiroaki and Shirai Yoshihito, "Performance Improvement of a Portable Electric Generator Using an Optimized Bio-Fuel Ratio in a Single Cylinder Two-Stroke Engine", Energies 2011, Vol.4(11), (P.1937-1949), 2011,11, 
#Tsuyoshi Hanamoto, Masashi Takenouchi, Hidehiro Ikeda, "Vibration Suppression Control of 3-mass Resonance System Using Particle Swarm Optimization for Design of Coefficient Diagram Method", Journal of the Japan society of applied electromagnetics and mechanics, vol. 19, supplement, 2011.09 (S16-S20), 
#Ghaderi, A.  Hanamoto, T.  , "Wide-Speed-Range Sensorless Vector Control of Synchronous Reluctance Motors Based on Extended Programmable Cascaded Low-Pass Filters",IEEE Transactions on Industrial Electronics, Volume: 58 No. 6Issue pp. 2322 - 2333, (2011.6) 
#H. Iura,K. Ide,T. Hanamoto,Zhe Chen, "An Estimation Method of Rotational Direction and Speed for Free running AC Machines without Speed and Voltage Sensor" ,IEEE Transactions on Industry Applications、Vol.47、No.1、pp.153-160, (2011.1)
#Tsuyoshi Hanamoto, Jun'ichi Yano, Hidehiro Ikeda, Teruo Tsuji, "Hardware Real Time Simulator of Synchronous Reluctance Motor Including Three Phase PWM Inverter Model", Proc. of IPEC2010, pp.2005-2009,
本日電気工学科の卒論発表でした。
花本研の発表は以下の4件でした。

FPGAを用いたACサーボモータディジタルハードウェア制御に関する研究
同期リラクタンスモータの初期位置推定に関する研究
高周波三相-単相マトリックスコンバータの試作
マトリックスコンバータを用いた重ね抵抗溶接機の電流制御に関する研究
修士論文発表を行いました。花本研究室の題目は以下の通りです。

* 離散系磁束推定器に基づいた同期リラクタンスモータの速度センサレス制御に関する研究
* 係数図設計にPSOを用いた3慣性共振系の振動抑制速度制御に関する研究
* FPGAを用いたPMSMのディジタルハードウェア制御に関する研究
* 可変速交流電動機駆動系のリアルタイムシミュレータに関する研究

3月5日にマレーシアプトラ大学で開催された
UPM - KYUTECH Seminar 2010 For Research Collaboration
に出席し
"High performance and high precision control of ac servo motor drive system with power electronics technology"
と題して研究紹介をしてきました。
3月9日に熊本大学で開催された
熊本大学大学院自然科学研究科シンポジウム「大学院教育のグローバリゼーション」
にて、本専攻の
「“グローバル研究マインド強化教育プログラム”への取組みについて」
を紹介してきました。
!!!工学部電気電子工学科で花本研に配属された学生は以下の日時に研究室に集合してください

2010年3月23日 13:00	生命体工学研究科1階 1720室
場所等分からない場合にはメールで連絡して下さい。

<html>
<img style="width: 400px; " alt="" src="room1720.jpg" align="">
</html>
本日は,卒業式,修了式でした。
花本研からは
生命体博士前期過程4名が修了,
工学部学部生4名が卒業しました。
メンバーを更新しました
!!!パワーエレクトロニクス受講者へ

連絡タイトル  	講義室変更通知
対象日 	2010/04/19
対象講義室 	C-1C講義室
備考 	5-2Bでは入りきれなかったため4月19日よりC-1Cに変更します。
6月13日に若松キャンパスにて開催された,生命体研究科長杯ソフトボール大会に参加しました。
花本研は見事@@color(red):優勝@@しました。!!!
これで昨年の戸畑と合わせて2冠達成!!!
6月21日~6月24日に開催された,IPEC 2010, International Power Electronics Conference
に参加して以下の題目で発表してきました。
"Hardware Real Time Simulator of Synchronous Reluctance Motor 
Including Three Phase PWM Inverter Model " 
Tsuyoshi Hanamoto, Jun'ichi Yano, Hidehiro Ikeda, and Teruo.Tsuji
7月28日~7月29日に開催された,The Asia-Pacific Symposium on Applied Electromagnetics and Mechanics (APSAEM2010)
に参加して以下の題目で発表してきました。
"Vibration Suppression Control of 3-mass Resonance System Using Particle Swarm Optimization for Design of Coefficient Diagram Method"
T.Hanamoto,  M.Takenouchi,  H.Ikeda
#[[古賀 賢太郎 (こが けんたろう)|]]
#[[竹下 京佑  (たけした きょうすけ)|]]
#[[田尻 卓也  (たじり たくや)|]]
#[[田中 大基  (たなか だいき)|]]
#[[奥山 美弘 (おくやま よしひろ)|]]
#[[井浦 英昭 (いうら ひであき)|]]
#[[下村 亮介  (しもむら りょうすけ)|]]
#[[末永 茉衣  (すえなが まい)|]]
#[[高瀬 聖将  (たかせ きよまさ)|]]
#[[田中 敬一郎 (たなか けいいちろう)|]]
#[[田中 佑治  (たなか ゆうじ)|]]
#[[一瀬 英生(いちのせ ひでお)|]]
#[[坂口 洋夢(さかぐち ひろむ)|]]
#[[﨑山 善貴(さきやま よしたか)|]]
#[[SHIN SANG MIN(しん さんみん)|]]
#[[竹下 僚(たけした あきら)|]]
#[[長江 英希(ながえ ひでき)|]]
#[[那須 剛太(なす こうた)|]]
研究室案内を更新しました。
3月2日、3日 修士論文発表を行いました。題目は以下の通りでした。

*PSOを用いた多慣性共振系の振動抑制制御器設計手法に関する研究
*ディジタルハードウェア制御によるPWMインバータの高周波スイッチングに関する研究
*回転子位置補正による同期電動機の高速高出力運転に関する一考察
*可変速交流電動機駆動系のハードウェアリアルタイムシミュレータに関する研究
*マトリックスコンバータのスイッチング損失低減手法と重ね抵抗溶接機への適用に関する研究
*三相ー単相高周波マトリックスコンバータの電流制御系の構築に関する研究
*インダクタンスの変動を考慮した同期リラクタンスモータのセンサレス速度制御に関する研究

2月23日 卒業論文発表を行いました。花本研は4件の発表でした。
花本研究室に配属された学生は
@@3月14日 11:00 生命体工学研究科 1階 1720室@@
に集合のこと
本日は,卒業式,修了式でした。
花本研からは
生命体博士前期過程7名が修了,
工学部学部生4名が卒業しました。
本年度花本研配属は
M1 5名
B4 5名
でした。
11月12日に戸畑キャンパスにて,工学部電気電子コースのソフトボール大会に参加しました。
花本研は見事@@color(red):準優勝@@しました。
#[[石井雄一朗 (いしい ゆういちろう)|]]
#[[斉藤 竜一 (さいとう りゅういち)|]]
#[[坂元 雄揮 (さかもと ゆうき)|]]
#[[櫻 健一 (さくら けんいち)|]]
#[[武富竜太郎 (たけとみ りゅうたろう)|]]
#[[奥山 美弘 (おくやま よしひろ)|]]
#[[井浦 英昭 (いうら ひであき)|]]

#[[川野 竜輔  (かわの りゅうすけ)|]]
#[[川邊 慎伍  (かわべ しんご)|]]
#[[木村 昂史  (きむら こうじ)|]]
#[[竹下 京佑  (たけした きょうすけ)|]]
#[[田尻 卓也  (たじり たくや)|]]

#[[川口 直樹  (かわぐち なおき)|]]
#[[福野 幸太  (ふくの こうた)|]]
#[[下村 亮介  (しもむら りょうすけ)|]]
#[[末永 茉衣  (すえなが まい)|]]
#[[高瀬 聖将  (たかせ きよまさ)|]]
#[[田中 敬一郎 (たなか けいいちろう)|]]
#[[田中 佑治  (たなか ゆうじ)|]]
!!2012-2013
#Yoshihiro Okuyama,Tomohiro Tanaka,Tsuyoshi Hanamoto,Hiroaki Yamada,”A New Current Vector Control Method of IPMSM in Flux Weakening Region to Prevent Inverter Voltage Saturation”,IEEJ Journal of Industry Applications, Vol.2,No.6, pp.315-322, 2013
#Tsuyoshi Hanamoto, Hiroaki Yamada, Farzilah Mailah Nashiren and Misron Norhisam: “Controller Design Using Coefficient Diagram Methods for Matrix Converter Based Unified Power Flow Controllers”, Journal of the Japan Society of Applied Electromagnetics and Mechanics (JSAEM), Vol.21, No.3, pp.369-374, 2013
#Tsuyoshi Hanamoto, Hiroaki Yamada, Ryuichi Kawano, Yoshihiro Okuyama:"Rotor Position Estimator Using Non-Linear Observer of Surface Permanent Magnet Synchronous Motor",The 10th IEEE International Conference on Power Electronics and Drive Systems (PEDS'13),pp.306-310,2013
#Hiroaki Yamada, Koji Kimura, Tsuyoshi Hanamoto, Toshihiko Ishiyama,Tadashi Sakaguchi and Tsuyoshi Takahashi:"A MPPT Control Method of Thermoelectric Power Generation with Single Sensor",The 10th IEEE International Conference on Power Electronics and Drive Systems (PEDS'13),pp.936-941,2013
#Hidehiro Ikeda,Shoichi Ueda,Tsuyoshi Hanamoto:,"Design of Vibration Suppression Controller for High Order Resonance System by Mutation-Type Grouping PSO",The 10th IEEE International Conference on Power Electronics and Drive Systems (PEDS'13),pp.767-772,2013
#Nashiren Farzilah Mailah, Sh. Sakinah Tuan Othman, Ishak Aris, M. Norhisam, M.Z.A. Abdul Kadir, Hanamoto Tsuyoshi, and Yamada Hiroaki: “Harmonics Reduction of Three Phase Five-­Level Neutral-­Point-­Clamped Multilevel Inverter”, 2012 IEEE International Conference on Power and Energy (PECon), pp.13-16, 2012
#Hiroaki Yamada, Tsuyoshi Hanamoto,“A Novel Method of Suppressing Inrush Currents of Squirrel-cage Induction Machine using Matrix Converter in Wind Power Generation Systems”, International Conference on Renewable Energy Research and Applications (ICRERA), P171, 2012
#Tsuyoshi Hanamoto, Hiroaki Yamada, Farzailah Mailah NASHIREN and Misron NORHISAM,“Controller Design Using Coefficient Diagram Methods for Matrix Converter Based Unified Power Flow Controllers”, Proceedings of the 7th Asia Pacific Symposium on Applied Electromagnetics and Mechanics, pp.162-166, 2012
2月27日に平成23年度 卒業論文発表会を行いました
花本研の発表は5件でした。

修士論文発表を行いました。花本研究室の題目は以下の通りです。

*ディジタルハードウェア制御を用いたPMSM高周波スイッチングの高性能化に関する研究
*遺伝的アルゴリズムを用いた永久磁石同期電動機の初期位置推定に関する研究
*同期リラクタンスモータのセンサレス制御時における応答改善に関する研究
*三相-単相高周波マトリックスコンバータにおけるディジタル制御器設計に関する研究
*マトリックスコンバータの電力系統補償装置への適用に関する研究
!!工学部電気電子工学科で花本研に配属された学生は以下の日時に研究室に集合してください

!!!2012年3月26日 15:00	生命体工学研究科1階 1720室

参加できない人や、場所等分からない場合には以下のアドレスに連絡して下さい。
[img[hanamoto_mail.png]]

<html>
<img style="width: 400px; " alt="" src="room1720.jpg" align="">
</html>
3月23日は卒業式、修了式でした。
花本研からの卒業生、修了生は以下の通りでした。

[[博士後期課程学生|2011D3]]1名
[[博士前期課程学生|2011M2]]5名
[[学部学生|2011B4]]5名

昨日は入学式でした
本年度は
[[博士後期課程|2012D1]]1名
[[博士前期課程|2012M1]]4名が
入学しました

また、工学部電気電子工学科より
[[卒業研究生|2012B4]]4名
が配属されました
6月9日に若松キャンパスにて開催された,生命体研究科長杯ソフトボール大会に参加しました。
花本研は見事@@color(red):準優勝@@しました。!!!
7月25日~7月27日に開催された,The Asia-Pacific Symposium on Applied Electromagnetics and Mechanics (APSAEM2012)
に参加して以下の題目で発表してきました。
"Controller Design Using Coefficient Diagram Methods for Matrix Converter Based Unified Power Flow Controllers"
Tsuyoshi Hanamoto, Hiroaki Yamada
9月24日 電気関連学会九州支部大会に参加しました。花本研究室からは7件の発表を行いました。

*誘導電動機駆動電動弁のパラメータ推定及び動作解析に関する研究
*SynRMにおける高効率制御軸の探索
*非線形オブザーバを用いた永久磁石同期電動機の回転子位置推定に関する研究
*熱電発電に適した単一センサ方式MPPT制御法
*マトリックスコンバータを用いた電力用高速位相器(UPFC)の制御器設計に関する研究
*三相‐単相高周波マトリックスコンバータにおけるディジタルハードウェア制御に関する研究
*ディジタルハードウエア制御によるPWMインバータの高周波スイッチングに関する研究
昨日平成24年度秋季入学が挙行され、本研究室に
[[博士後期課程|2012D1]]1名
が新たに入学しました。
11月3日に戸畑キャンパスにて開催された,電気電子工学科ソフトボール大会に参加しました。
花本研は3位でした。!!!
#[[岡本 康平	(おかもと こうへい)|09108012]]
#[[川口 恭介	(かわぐち きょうすけ)|09108024]]
#[[本山 海地	(もとやま かいち)|09108110]]
#[[山縣 亮太	(やまがた りょうた)|09108116]]
#[[佐伯 考弘  (さえき たかひろ)|12897004]]
#[[Charles Harahap  (ちゃーるず はらはっぷ)|12897018]]
#[[奥山 美弘 (おくやま よしひろ)|]]
#[[斉藤 竜一  (さいとう りゅういち)|12963016]]
#[[櫻 健一 (さくら けんいち)|12963018]]
#[[十河 収宏 (そごう なおひろ)|12963030]]
#[[松木 健太 (まつき けんた)|12963059]]
#[[川野 竜輔  (かわの りゅうすけ)|11963015]]
#[[川邊 慎伍  (かわべ しんご)|11963016]]
#[[木村 昂史  (きむら こうじ)|11963019]]
#[[竹下 京佑  (たけした きょうすけ)|11963036]]
#[[田尻 卓也  (たじり たくや)|11963038]]
3月25日は卒業式、修了式でした。
花本研からの卒業生、修了生は以下の通りでした。
内1名が「[[[電気学会論文発表賞B(川邊 慎伍 	九州工業大学 	04-1P-07)|http://www.iee.jp/kyushu/?page_id=120]]」を受賞しました。


[[博士前期課程学生|2012M2]]5名
[[博士前期課程学生副指導学生] 2名
[[学部学生|2012B4]]4名

本日は入学式でした
本年度は
[[博士後期課程|2013D1]]1名
[[博士前期課程|2013M1]]7名が
入学しました

また、工学部電気電子工学科より
[[卒業研究生|2013B4]]4名
が配属されました
4月22日~4月25日に開催された,The 10th IEEE International Conference on Power Electronics and Drive Systems (PEDS'13)
に参加して以下の題目で発表してきました。
"Rotor Position Estimator Using Non-Linear Observer of Surface Permanent Magnet Synchronous Motor"
Tsuyoshi Hanamoto, Hiroaki Yamada, Ryuichi Kawano, Yoshihiro Okuyama

"A MPPT Control Method of Thermoelectric Power Generation with Single Sensor"
Hiroaki Yamada, Koji Kimura, Tsuyoshi Hanamoto, Toshihiko Ishiyama,Tadashi Sakaguchi and Tsuyoshi Takahashi
6月8日に若松キャンパスにて開催された,生命体研究科長杯ソフトボール大会に参加しました。
花本研は昨年に引き続き@@color(red):準優勝@@しました。!!!
9月25日 電気関連学会九州支部大会に参加しました。花本研究室からは4件の発表を行いました。

*100kHz 高周波SiCインバータを用いたSPMSMのフルディジタルハードウェア速度制御に関する研究
*双方向DC/DC変喚器を用いた高輝度LED排熱回収・冷却切替システム
*DDPWM方式を用いたマトリックスコンバータのディジタルハードウェア制御に関する研究
*最適位相検出法を用いたIPMSMにおける高効率制御軸の探索

9月30日、10月1日にマレーシアプトラ大学において、INTERNATIONAL SYMPOSIUM ON APPLIED ENGINEERING & SCIENCE
が開催され7件の発表を行いました。
九工大通信に研究室の写真が掲載されました。
(本文とはあまり関係ありませんが)

<html>
<img style="width: 480px; " alt="" src="Picture/lab_picture2013_ss.jpg" align="">
</html>

掲載記事本文はこちら
[[九工大通信 Vol.43|http://www.kyutech.ac.jp/information/publication/publication_number/43.html]]
11月9日に戸畑キャンパスにて開催された,電気電子工学科電気コースソフトボール大会に参加しました。
花本研は@@color(red):準優勝@@でした。近年シルバーメダルコレクタになってますね。
#[[倉本 拳杜	(くらもと けんと)|10108034]]
#[[神谷 亮範	(こうや あきのり)|10108037]]|
#[[土谷 厚司	(つちや あつし)|10108061]]
#[[長岡 秀憲	(ながおか ひでのり)|10108077]]
#[[矢田 智春	(やだ ともはる)|13897015]]
#[[佐伯 考弘  (さえき たかひろ)|12897004]]
#[[Charles Harahap  (ちゃーるず はらはっぷ)|12897018]]
#[[奥山 美弘 (おくやま よしひろ)|]]
#[[岡本 康平	(おかもと こうへい)|13963012]]
#[[川口 恭介	(かわぐち きょうすけ)|13963017]]
#[[薛 侑吾		(せつ ゆうご)|13963029]]
#[[服部 航		(はっとり こう)|13963042]]
#[[古川 健一	(ふるかわ けんいち)|13963051]]
#[[本山 海地	(もとやま かいち)|13963062]]
#[[山縣 亮太	(やまがた りょうた)|13963064]]
#[[斉藤 竜一  (さいとう りゅういち)|12963016]]
#[[櫻 健一 (さくら けんいち)|12963018]]
#[[十河 収宏 (そごう なおひろ)|12963030]]
#[[松木 健太 (まつき けんた)|12963059]]
!!2014-2015
#Hidehiro Ikeda, Hideki Ajishi, Tsuyoshi Hanamoto, "Application of Fictitious Reference Iterative Tuning to Vibration Suppression Controller for 2- Inertia Resonance System", Proc. of IECON2015, YF-008451,pp.001825-pp.001830, November (2015) 
#Ravi Nath Triathi, Tsuyoshi Hanamoto, "FRIT Based Optimized PI Tuning for dc link Voltage Control of Grid connected Solar PV system", Proc. of IECON2015, YF-007048,pp.001567-pp.001572, November (2015) 
#Tsuyoshi Hanamoto, Norhisam Bin Misron, Saman Toosi, "DDPWM-Based Power Conversion System Using Three to Four Phase Matrix Converter for Stand-alone Power System", Proc. of IECON2015, YF-020222,pp.004424-pp.004429, November (2015) 
#Saman Toosi, Norhisam Misron,Tsuyoshi Hanamoto,Ishak Aris,Mohd Amran Mohd Radzi,and Hiroaki Yamada, "The Study of Operation Modes and Control Strategies of a Multidirectional MC for Battery Based System", Hindawi Publishing Corporation, Mathematical Problems in Engineering, Volume 2015, Article ID 452740, 14 pages
#Charles Ronald Harahap, Tsuyoshi Hanamoto,"FRIT Based PI Tuning for Speed Control of PMSM using FPGA for High Frequency SiC MOSFET Inverter", Proc. of 4th International Conference on Informatics, Electronics \& Vision, No.102, 5 page (2015)
#Takahiro Saeki, Kozo Ide, Yoshiyasu Takase, Hideaki Iura, Shinya Morimoto, Tsuyoshi Hanamoto, "Robust Active Damping Method for a PWM Converter Operating with an Unknown Inductance on the Power Grid", IEEJ Journal of Industry Applications, Vol. 4 (2015) No. 3 p. 277-285
#N. F. MAILAH, S. S. T. OTHMAN, I. ARIS, N. MISRON, T. HANAMOTO, H. YAMADA,"DETERMINATION OF TRIGGERING ANGLE THROUGH A NOVEL GRAPHICAL METHOD ANALYSIS",Journal of Engineering Science and Technology,Special Issue on Applied Engineering and Sciences, October (2014) pp.90-97
#K. MOTOYAMA, T. HANAMOTO, H. YAMADA,N.F. MAILAH, M. NORHISAM,"STUDY OF MATRIX CONVERTER BASED UNIFIED POWER FLOW CONTROLLER APPLIED PI-D CONTROLLER",Journal of Engineering Science and Technology,Special Issue on Applied Engineering and Sciences, October (2014) pp.30-38
#S. TOOSI, M. NORHISAM, T. HANAMOTO, I. ARIS, M. A. M. RADZI, H. YAMADA,"CONFIGURATIONS COMPARISON OF MULTI DIRECTIONAL MATRIX CONVERTER FOR LOW POWER APPLICATION",Journal of Engineering Science and Technology,Special Issue on Applied Engineering and Sciences, October (2014) pp.1-10
#Saman Toosi, Norhisam Misron, Tsuyoshi Hanamoto, Ishak Bin Aris,Mohd Amran Mohd Radzi, and Hiroaki Yamada,"Novel Modulation Method for Multidirectional Matrix Converter",Scientific World Journal,Volume 2014, Article ID 645734, 12 pages ,(2014)
#T. Hanamoto, H. Yamada, S. Toosi, N.F. Mailah, M. Norhisam,"DDPWM based Power Conversion system Uing Matrix Converter for Isolated Power Supply",8th Asia-Pacific Symposium on Applied Electromagnetic and Mechanics, 11-3,pp.117-118, 2014
#S. Imamoto, H. Yamada, T. Hanamoto, S. Yoshihito and N. Mirson, "A Battery Charging System for Intermittent Generation from a Synchronous Generator with Novel Maximum Power Point Tracking Control",  8th Asia-Pacific Symposium on Applied Electromagnetic and Mechanics, 11-2,pp.116-117, 2014
#R.Yamagata, H.Yamada, T.Hanamoto, Y.Hieda and H.Fujiwara, "A Novel Power Supply with Blinking LEDS and Substrate Temperature Feedback for a Plant Factory", 8th Asia-Pacific Symposium on Applied Electromagnetic and Mechanics, 11-1,pp.114-115, 2014
#Tsuyoshi Hanamoto, Hiroaki Yamada, Yoshihiro Okuyama,"Position Sensorless Start-Up Method of Surface Permanent Magnet Synchronous Motor Using Nonlinear Rotor Position Observer", Proc of IPEC-Hiroshima2014,pp.1811-1815,2014
#Hiroaki Yamada, Tsuyoshi Hanamoto, "A Novel Method of Suppressing Inrush Currents of Squirrel-Cage Induction Machine Using Matrix Converter in Wind Power Generation Systems", Proc of IPEC-Hiroshima2014,pp.538-542,2014
#Hidehiro Ikeda, Tsuyoshi Hanamoto,"Design of m-IPD Controller of Multi-Inertia System Using Differential Evolution", Proc of IPEC-Hiroshima2014,pp.2476-2482,2014


本日は卒業式、修了式でした。
おめでとうございます。
花本研からの卒業生、修了生は以下の通りです。

[[博士前期課程学生|2013M2]]4名
[[学部学生|2013B4]]4名
平成27年入学者用研究室見学が開催され4名が見学をしました。
5月18日~5月21日に開催された,the 2014 International Power Electronics Conference -ECCE Asia-
に参加して以下の題目で発表してきました。

"Position Sensorless Start-Up Method of Surface Permanent Magnet Synchronous Motor Using Nonlinear Rotor Position Observer"
Tsuyoshi Hanamoto, Hiroaki Yamada, Yoshihiro Okuyama

"A Novel Method of Suppressing Inrush Currents of Squirrel-Cage Induction Machine Using Matrix Converter in Wind Power Generation Systems"
Hiroaki Yamada, Tsuyoshi Hanamoto

"Design of m-IPD Controller of Multi-Inertia System Using Differential Evolution"
Hidehiro Ikeda, Tsuyoshi Hanamoto
6月15日に若松キャンパスにて開催された,生命体研究科長杯ソフトボール大会に参加しました。
遂に@@color(red):優勝@@しました。!!!

記念に集合写真を撮りました

<html>
<img style="width: 480px; " alt="" src="Picture/IMG_0338_ss.jpg" align="">
</html>
The Asia-Pacific Symposium on Applied Electromagnetics and Mechanics (APSAEM2014)に出席し以下の発表を行いました
*DDPWM-BASED POWER CONVERSION SYSTEM USING A MATRIX CONVERTER FOR AN ISOLATED POWER SUPPLY
*A NOVEL POWER SUPPLY WITH BLINKING LEDS AND SUBSTRATE TEMPERATURE  FEEDBACK FOR A PLANT FACTORY
*A BATTERY CHARGING SYSTEM FOR INTERMITTENT GENERATION FROM A SYNCHRONOUS GENERATOR WITH NOVEL MAXIMUM POWER POINT TRACKING CONTROL
9月18-19日 電気関連学会九州支部大会に参加しました。花本研究室からは以下の発表を行いました。
*植物工場向け高周波点滅機能を有するLED 駆動電源システム
*マトリクスコンバータを用いたUPFC の制御器設計
*PMSG を用いたパームオイル抽出工程で生じる間欠放出蒸気による発電システム
*FRIT を用いたIPMSM の速度制御系制御器設計
*非線形オブザーバを用いた表面界磁永久磁石型同期電動機のセンサレス始動方式
*正弦波誘起電圧オブザーバを用いたSPMSM の高回転センサレス制御
平成26年12月25日(木)11時より鳳龍会館会議室(戸畑キャンパス)において、平成26年12月の大学院学位記授与式を行いました。
本研究室より奥山氏が授与されました。

[[授与式|http://www.kyutech.ac.jp/info/id4009.html]]
#[[天本 貴文    (アマモト タカフミ)|11108007]]
#[[前田 健太    (マエダ ケンタ)|11108098]]
#[[村川 雄一    (ムラカワ ユウイチ)|10108120]]
#[[村岡 龍之介	(ムラオカ リュウノスケ)|11108113]]
#[[吉野 賢人	(ヨシノ ケント)|11108130]]
#[[TRIPATHI RAVI NATH  (トリパティ ラビ ナス)|14899026]]
#[[矢田 智春              (やだ ともはる)|13897015]]
#[[網野 真之    (アミノ マサユキ)|14965001]]
#[[工藤 圭太    (クドウ ケイタ)|14965019]]
#[[工藤 容也    (クドウ マサヤ)|14965020]]
#[[倉本 拳杜	(クラモト ケント)|14965021]]
#[[土谷 厚司	(ツチヤ アツシ)|14965038]]
#[[長岡 秀憲	(ナガオカ ヒデノリ)|14965041]]
#[[舛巴 一史     (マストモ カズフミ)|14965059]]
#[[古川 健一	(ふるかわ けんいち)|13963051]]
#[[岡本 康平	(おかもと こうへい)|13963012]]
#[[川口 恭介	(かわぐち きょうすけ)|13963017]]
#[[薛 侑吾		(せつ ゆうご)|13963029]]
#[[服部 航		(はっとり こう)|13963042]]
#[[本山 海地	(もとやま かいち)|13963062]]
#[[山縣 亮太	(やまがた りょうた)|13963064]]
副指導
#[[今本 翔		(いまもと しょう)|13963005]]
平成26年電気関係学会九州支部連合大会で講演を行ったなかから以下の2名が
「[[[電気学会論文発表賞B|http://www.iee.jp/kyushu/?page_id=83]]」を受賞しました。
山縣  亮太 	九州工業大学 	03-1P-03
本山 海地 	九州工業大学 	03-2A-08
Tiddly Wikiが新しくなったので少しずつ移植してます。
[[new_web_page|tiddlywiki_hanalab.html]]
生命体工学研究科の修士論文発表会にて以下の発表を行いました
# 岡本 康平 FRIT を用いたPMSM の電流・速度制御器設計に関する研究
# 川口 恭介 表面界磁永久磁石同期電動機の高速回転領域における位置センサレス制御に関する研究
# 薛 侑吾 高速応答性明滅機能を有する集魚用200W 級LED 照明駆動電源
# 服部 航 2種類のオブザーバを組み合わせた表面界磁永久磁石同期電動機のセンサレス始動方式
# 本山 海地 FRIT で設計したマトリクスコンバータ型UPFC の高応答安定化制御に関する研究
# 山縣 亮太 高周波点滅機能を有する植物育成用LED 駆動電源
工学部電気電気工学科にて以下の発表を行いました
#村川 雄一	並列接続方式フライバックコンバータを用いた産業用LED駆動電源の協調制御
#天本 貴文	誘起電圧を用いた大慣性・低摩擦モータの初期位置推定に関する研究
#前田 健太	再生可能エネルギー電源のMPPT制御に関する研究
#村岡 龍之介	FPGAを用いたDDPWM方式3相-3相マトリックスコンバータ駆動回路の構築
#吉野 賢人	表面界磁永久磁石同期電動機の高回転位置センサレス制御に関する研究
本日は修了式、卒業式でした。
おめでとうございます。
花本研から以下の学生が無事修了、卒業しました。

[[博士前期課程学生|2014M2]]6名+1名
[[学部学生|2014B4]]5名


<html>
<img style="width: 480px; " alt="" src="Picture/IMG_0926_ss.jpg" align="">
</html>
入学式が挙行されました
本年度は
[[M1|2015M1]] 4名
[[D1|2015D1]] 1名
が入学しました
また
[[B4|2015B4]] 5名
が配属されました
4月5日よりUPMの学生2名が来学し、研究室学生と一緒にモータ制御やMPPT制御について学んでいます。
本日は、Prof. Norshiam先生も加わって議論をしました。

<html>
<img style="width: 480px; " alt="" src="Picture/image2.JPG" align="">
</html>
所属学生が4th International Conference on Informatics, Electronics & Vision (ICIEV)に出席し以下の発表を行いました
* Improvement in Power Quality using FryzeConductance Algorithm controlled Grid connected Solar PVsystem, RAVI TRIATHI* (Kyushu Inst of Tech)* TsuyoshiHanamoto (Kyushu Inst of Tech)
*FRIT Based PI Tuning for Speed Control of PMSMusing FPGA for High Frequency SiC MOSFET Inverter,Charles Harahap* (Kyushu Inst of Tech)* TsuyoshiHanamoto (Kyushu Inst of Tech)
[[九州工業大学国際マインド強化教育プログラム|http://www.lsse.kyutech.ac.jp/gap/]]
で研究室の学生2名ががUPMを訪問しています。
期間 2015/09/13 -- 2015/11/27 
9月26-27日 電気関連学会九州支部大会に参加しました。花本研究室からは以下の発表を行いました。
*永久磁石型同期電動機の高回転位置センサレス制御法に関する研究
*表面界磁永久磁石型同期電動機のセンサレス始動方式時のオブザーバ切り替え手法に関する研究
*DDPWM方式を用いたマトリックスコンバータのディジタルハードウェア制御に関する研究
*小型同期発電機の電流センサレスMPPT制御
*FRITを用いた多慣性共振系の速度制御器設計に関する研究
*DDPWM方式を用いた3入力5出力マトリクスコンバータの制御に関する研究
*FPGAを用いたPMSMのディジタルハードウェア高速制御に関する研究
国際インターンシップで、研究室学生がUPMを訪問しています。
期間 2015/10/04-2015/11/26
所属学生がISGT Asia 2015 に出席し以下の発表を行いました
* Novel Controller Design for DC Link Voltage Control of Grid Connected PV System and Optimized PI Response Analysis with Improved Transients,Ravi Nath Tripathi and Tsuyoshi Hanamoto
IECON2015に出席し以下の発表を行いました。
*DDPWM-Based Power Conversion System Using Three to Four Phase Matrix Converter for Stand-alone Power System, Tsuyoshi Hanamoto, Norhisam Bin Misron, Saman Toosi
*FRIT Based Optimized PI Tuning for dc link Voltage Control of Grid connected Solar PV system, Ravi Nath Triathi, Tsuyoshi Hanamoto
11/23-11/24にマレーシアUPMにて開催された2015 3RD INTERNATIONAL SYMPOSIUM ON APPLIED ENGINEERING AND SCIENCES (SAES 2015)に出席し、花本研からは以下の発表をしました。
*A three to five phase matrix converter for an stand-alone power supply including the PMSM drive system
*Digital Hardware Control of a matrix converter based on DDPWM method
*High-speed Positon Sensor-less control of Surface Permanent Magnet Synchronous Motor
*Current sensor-less MPPT Control of DC/DC Boost Converter applying State-space Averaging Method
*The Controller Design Method of 3 to 5 Phase Matrix Converter Based on DDPWM Method
*Speed control system of PMSM using FPGA based hardware system applying disturbance observer
*Speed Controller Design Method of the Multi-inertia resonance system Using FRIT
*Introduction to cascaded H-bridge multilevel Inverter
国際インターンシップ及びグリーンイノベーションリーダー育成コースで、UPMを訪問してた学生が帰国しました。
12月14日~16日までUPM教員4名が訪問し、
WORKSHOP ON CIRCUITS AND SYSTEMS, KYUSHU INSTITUTE OF TECHNOLOGY, JAPAN
を開催しました。


#[[福島 惇 (フクシマ ジユン)|12108101]]
#[[前田 倖 (マエダ コウ)|12108108]]
#[[前畑 星斗 (マエハタ セイト)|12108109]]
#[[毛利 真之 (モウリ マサユキ)|12108120]]
#[[吉武 夏雲 (ヨシタケ ナツモ)|14108309]]
#[[PANDEY RAVIKANT(パンディ ラビカント))|15899018]]
#[[TRIPATHI RAVI NATH  (トリパティ ラビ ナス)|14899026]]
#[[佐伯 考弘  (さえき たかひろ)|12897004]]
#[[加藤 勇人(カトウ ユウト)|15965015]]
#[[前田 健太    (マエダ ケンタ)|15965053]]
#[[村岡 龍之介	(ムラオカ リュウノスケ)|15965058]]
#[[吉野 賢人	(ヨシノ ケント)|15965062]]
#[[網野 真之    (アミノ マサユキ)|14965001]]
#[[工藤 圭太    (クドウ ケイタ)|14965019]]
#[[工藤 容也    (クドウ マサヤ)|14965020]]
#[[倉本 拳杜	(クラモト ケント)|14965021]]
#[[土谷 厚司	(ツチヤ アツシ)|14965038]]
#[[長岡 秀憲	(ナガオカ ヒデノリ)|14965041]]
#[[舛巴 一史     (マストモ カズフミ)|14965059]]
#[[古川 健一	(ふるかわ けんいち)|13963051]]
マレーシアUPMで開催されたセミナー
”2016 Malaysia - Japan Seminar on Sustainable Technology in Life Sciences”
で、以下のタイトルで発表しました。
”Sensorless Speed Control of SPMSM for High Speed Region Using Modified Induced Voltage Observer"
マレーシアUSM(Universiti Sains Malaysia)School of Electrical and Electronic Engineering主催の
The 9th International Conference on Robotics, Vision, Signal Processing & Power Applications (ROViSP2016)にて
以下のタイトルで発表してきました
"Speed Control of Permanent Magnet Synchronous Machines"
生命体工学研究科の修士論文発表会にて以下の発表を行いました
# 網野 真之 DDPWMを用いた3相入力多相出力マトリックスコンバータの制御器設計に関する研究
#工藤 圭太 表面界磁永久磁石同期電動機のセンサレス始動方式に関する研究
#工藤 容也 PMSGを用いた独立型電源のMPPT制御に関する研究
#倉本 拳杜 DDPWM方式3相-3相マトリックスコンバータのディジタルハードウェア制御に関する研究
#土谷 厚司 表面界磁永久磁石同期電動機の高精度高回転位置センサレス制御に関する研究
#長岡 秀憲 FPGAで構築したオブザーバを用いた永久磁石同期電動機の速度制御に関する研究
#舛巴 一史 FRITを用いた3慣性共振系の振動抑制速度制御器設計に関する研究
#古川 健一 SysGENを用いたDDPWM方式3相-3相マトリックスコンバータ駆動回路の構築



工学部電気電気工学科にて以下の発表を行いました

#福島 惇     E-FRITを用いた多慣性系の振動抑制速度制御器設計に関する研究
#前田 倖     永久磁石同期電動機の位置センサレス制御方式による推定精度に関する研究
#前畑 星斗   SysGENを用いたDDPWM方式3相-3相マトリックスコンバータ駆動回路の構築
#毛利 真之   3相PWMコンバータを用いた永久磁石同期発電機のMPPT制御に関する研究
#吉武 夏雲   FPGAでの構築した永久磁石同期電動機の空間ベクトルPWMに関する研究
3月25日は、修了式、卒業式でした
おめでとうございます。

本研究室からは
博士後期課程1名
博士前期課程8名
学部生5名
が修了・卒業しました。
入学式が挙行されました
本年度は
[[M1|2016M1]] 7名
[[D1|2016D1]] 1名
が入学しました
また
[[B4|2016B4]] 5名
が配属されました
記載が遅れましたが、
9月29-30日 電気関連学会九州支部大会に参加しました。花本研究室からは以下の発表を行いました。
*3相PWMコンバータを用いた独立型電源の充電システムに関する研究
*永久磁石型同期電動機の高回転位置センサレス制御の安定性に関する研究
*FPGAを用いたPMSMの高精度高分解能制御に関する研究
*DDPWM方式三相-三相マトリックスコンバータ制御回路のSystem Generatorによる実装
ICEMS2016で学生が以下の発表を行いました。
Kento YOSHINO, Atsushi TSUCHIYA and Tsuyoshi HANAMOTO, "High-speed Position Sensorless Control of Surface Permanent Magnet 
Synchronous Motor Using the Modified beta axis Induced Observer",
Proc. of ICEMS2016, DS2G-1-15, 6 pages
第18回IEEE広島支部学生シンポジウムで学生が以下の発表を行いました。
吉野賢人,花本剛士, "永久磁石同期電動機の高回転位置センサレス制御のロバスト性に関する研究"
この発表に対して
「[[HISS 優秀プレゼンテーション賞|http://hiss18th.sakura.ne.jp/]]」
を受賞しました
#[[赤波江 祐人|13108001]]
#[[安東 和海|13108007]]
#[[坂口 大樹|13108056]]
#[[髙橋 勇太|13108069]]
#[[大野 雅樹|12108027]]
#[[小代 哲也(オジロ テツヤ)|16899004]]
#[[PANDEY RAVIKANT(パンディ ラビカント))|15899018]]
#[[Charles Harahap  (ちゃーるず はらはっぷ)|12897018]]
#[[TRIPATHI RAVI NATH  (トリパティ ラビ ナス)|14899026]]
#[[木津 祐太郎 (キズ ユウタロウ)|16965015]]
#[[橋本 竜之介 (ハシモト リュウノスケ)|16965036]]
#[[福島 惇 (フクシマ ジユン)|16965044]]
#[[前田 倖 (マエダ コウ)|16965048]]
#[[前畑 星斗 (マエハタ セイト)|16965051]]
#[[毛利 真之 (モウリ マサユキ)|16965057]]
#[[吉武 夏雲 (ヨシタケ ナツモ)|16965063]]
#[[加藤 勇人(カトウ ユウト)|15965015]]
#[[前田 健太    (マエダ ケンタ)|15965053]]
#[[村岡 龍之介	(ムラオカ リュウノスケ)|15965058]]
#[[吉野 賢人	(ヨシノ ケント)|15965062]]
学位論文公聴会を開催しました
*題 名:「Fully FPGA-Based Permanent Magnet Synchronous Motor Speed Control System Using Two-Degrees-of-Freedom Method Designed by Fictitious
Reference Iterative Tuning (擬似参照信号反復調整法で設計した 2 自由度制御手法を用いた全 FPGA 永久磁石同期電動機速度制御系に関する研究) 」
*発 表 者:九州工業大学大学院生命体工学研究科 生体機能専攻 チャールズ ロナルド ハラハップ
学位論文公聴会を開催しました
*題 名:「Solar Photovoltaic Power Generating System & Grid Integration" - Modeling, Controller Design and Optimization  (太陽光発電システムの系統
*連系に関する研究 - モデリング、制御器設計、最適化 ) 」
発 表 者:九州工業大学大学院生命体工学研究科 生命体工学専攻 トリパシ ラビ ナス
生命体工学研究科の修士論文発表会で以下の発表を行いました
#加藤 勇人 高機能FPGAボードによるユーザーインターフェイスを考慮した高精度高分解能モータ制御系の開発
#前田 健太 FPGAを用いたマトリクスコンバータの電流制御に関する研究
#村岡 龍之介 永久磁石同期電動機の高回転位置センサレス制御の安定性に関する研究
#吉野 賢人 3相PWMコンバータを用いた独立型電源の充電システムに関する研究
電気電子工学科の卒業研究発表会で以下の発表をしました
#大野 雅樹 ユーザーインターフェイスを考慮したFPGAによるモータ制御系開発環境の構築
#赤波江 祐人 モジュラー・マルチレベル・インバータを用いた永久磁石同期電動機駆動に関する研究
#安東 和海 同期リラクタンスモータの非線形特性を考慮したセンサレス制御に関する一考察
#坂口 大樹 FPGAを用いたマトリクスコンバータの電流制御に関する研究
#髙橋 勇太 非線形制御器を用いた多慣性共振系の速度制御器設計に関する研究




SICE 第4回制御部門マルチシンポジウムで学生が以下の発表を行いました。
Kento Yoshino,Ravi Nath Tripathi,Tsuyoshi Hanamoto、”Stability Analysis of Extended Induced Voltage Observer Used for High Speed Position Sensorless Control of Surface Permanent Magnet Synchronous Motor”
!花本研究室に配属された学生へ

!!花本研究室に配属された新B4は
@@3月29日(水) 13:00@@ 若松キャンパス1F1730室に集合のこと

!!花本研究室に配属された新M1,新B4
@@4月3日(月) @@新M2の中間発表を聴講するように。

開催日:4月3日(月) 会場:講義室1
花本研 7名 15:30-16:40
3月24日は、修了式、卒業式でした
修了生・卒業生おめでとうございます。

本研究室からは
博士後期課程2名
博士前期課程4名
学部生5名
が修了・卒業しました。

<html>
<img style="width: 480px; " alt="" src="IMG_2613ss.JPG" align="">
<img style="width: 480px; " alt="" src="IMG_2618ss.JPG" align="">
</html>
4月4日に入学式が挙行されました。

本年度は
博士後期課程に1名
博士前期課程に6名
が入学しました。
また工学部電気電気工学科
B4学生 5名
が配属されました。
本日は生命体工学研究科のオープンキャンパスでした
ご来場くださった皆様ありがとうございました。
#[[松永 拓也 (マツナガ タクヤ)|12108112]]
#[[池浦 雅幸 (イケウラ マサユキ)|14108009]]	
#[[太田 泰拓 (オオタ ヤスヒロ)|14108025]]	
#[[橋本 佳樹 (ハシモト ヨシキ)|14108084]]	
#[[樋口 和也 (ヒグチ カズヤ)|14108092]]	
	
#[[Vijay Kumar SINGH (ビジャイ クマール シン)|17899017]]
#[[矢田 智春              (やだ ともはる)|13897015]]
#[[PANDEY RAVIKANT(パンディ ラビカント))|15899018]]
#[[赤波江 祐人 (アカバエ ユウト)|17965001]]
#[[安東 和海 (アンドウ カズミ)|17965002]]
#[[大野 雅樹 (オオノ マサキ)|17965008]]
#[[坂口 大樹 (サカグチ ダイキ)|17965018]]
#[[髙橋 勇太 (タカハシ ユウタ)|17965029]]
#[[増崎 貴也 (マスザキ タカヤ)|17965060]]
#[[木津 祐太郎 (キズ ユウタロウ)|16965015]]
#[[橋本 竜之介 (ハシモト リュウノスケ)|16965036]]
#[[福島 惇 (フクシマ ジユン)|16965044]]
#[[前田 倖 (マエダ コウ)|16965048]]
#[[前畑 星斗 (マエハタ セイト)|16965051]]
#[[毛利 真之 (モウリ マサユキ)|16965057]]
#[[吉武 夏雲 (ヨシタケ ナツモ)|16965063]]
*授業形態について
この前飲んだときに研究室の学生から聞いたことの中で,学部の学生から「なんで花本の授業は黒板に書いてくれないのか?」と言われたといってました。ちょっと考えるところですね。私はプロジェクタを使用したほうが理解度が上がると思っていましたが,そうではない場合も有るのですね。プログラムを実行したり,色をつけたり,場合によっては写真を見せたりと一応苦労して作っているのですが。黒板にしっかり書いていったほうがそれをノートに写していって理解が深まるのかなあとも思いだしました。もちろんプロジェクタで行う場合にもノートはとるようにとは言っているのですが。すらっと流すと頭に入らないのでしょうかね。とはいえ,今年ももプロジェクタで進める予定です。
! December 2005
[[27 December 2005]]
[[23 December 2005]]
[[22 December 2005]]
[[20 December 2005]]
[[19 December 2005]]
[[16 December 2005]]
[[15 December 2005]]
[[14 December 2005]]
[[12 December 2005]]
[[11 December 2005]]
[[7 December 2005]]
[[6 December 2005]]
! November 2005
[[25 November 2005]]
[[24 November 2005]]
[[22 November 2005]]
[[18 November 2005]]
[[17 November 2005]]
[[16 November 2005]]
[[15 November 2005]]
[[14 November 2005]]
[[11 November 2005]]
[[10 November 2005]]
[[8 November 2005]]
[[7 November 2005]]
[[4 November 2005]]
[[2 November 2005]]
[[1 Nov 2005]]
! October 2005
[[31 Oct 2005]]
[[29 Oct 2005]]
[[28 Oct 2005]]
[[27 Oct 2005]]
!お勧めソフトウェア
* GTD TiddyWiki
* QT for win
* Scilab
* MuPAD
* mame4
* FireFox
* ThunderBird
北九州若松区ひびきの2-4 九州工業大学大学院生命体工学研究科

<html>
<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=q&amp;hl=ja&amp;geocode=&amp;q=%E5%8C%97%E4%B9%9D%E5%B7%9E%E8%8B%A5%E6%9D%BE%E5%8C%BA%E3%81%B2%E3%81%B3%E3%81%8D%E3%81%AE%EF%BC%92%EF%BC%8D%EF%BC%94%E3%80%80%E4%B9%9D%E5%B7%9E%E5%B7%A5%E6%A5%AD%E5%A4%A7%E5%AD%A6&amp;sll=33.892327,130.710998&amp;sspn=0.007695,0.013819&amp;ie=UTF8&amp;s=AARTsJp2Xi9GTE5tOXTBHFActYmKt608xw&amp;ll=33.873836,130.713615&amp;spn=0.049884,0.072956&amp;z=13&amp;output=embed"></iframe><br /><small><a href="http://maps.google.com/maps?f=q&amp;hl=ja&amp;geocode=&amp;q=%E5%8C%97%E4%B9%9D%E5%B7%9E%E8%8B%A5%E6%9D%BE%E5%8C%BA%E3%81%B2%E3%81%B3%E3%81%8D%E3%81%AE%EF%BC%92%EF%BC%8D%EF%BC%94%E3%80%80%E4%B9%9D%E5%B7%9E%E5%B7%A5%E6%A5%AD%E5%A4%A7%E5%AD%A6&amp;sll=33.892327,130.710998&amp;sspn=0.007695,0.013819&amp;ie=UTF8&amp;ll=33.873836,130.713615&amp;spn=0.049884,0.072956&amp;z=13&amp;source=embed" style="color:#0000FF;text-align:left">大きな地図で見る</a></small>
</html>
!!資料
はじめに [[第1回授業内容|limited/APE/APE_Intro2012.pdf]]
PSIM manual [[PSIM manual|limited/APE/PSIM_manual.pdf]]
電力用半導体 [[第2回授業内容|limited/APE/APE_Device.pdf]]
DC-DC変換 [[DCDC|limited/APE/APE_DCDC.pdf]]
DC-AC変換 [[DCAC|limited/APE/APE_DCAC.pdf]]
モータ基礎 [[motor|limited/APE/APE_motor.pdf]]
モータモデル [[motor_model|limited/APE/APE_dqconv_motormodel.pdf]]
フィードバック制御 [[feedback_control|limited/APE/APE_FBControl.pdf]]

!!レポート
平成24年度第1回レポート [[レポート課題|limited/APE/2012APE_report_NO1.pdf]]

/%
第2章 [[DCDC変換|limited/powerele/sec2/pele_S2.pdf]]
第3章 [[DCAC変換|limited/powerele/sec3/pele_S3.pdf]]
第4章 [[ACDC変換|limited/powerele/sec4/pele_S4.pdf]]
第5章 [[ACAC変換|limited/powerele/sec5/pele_S5.pdf]]
%/

!!資料
はじめに [[第1回授業内容|limited/APE/APE_Intro2013.pdf]]

PSIM manual [[PSIM manual|limited/APE/PSIM_manual.pdf]]
電力用半導体 [[Device|limited/APE/APE_Device.pdf]]
DC-DC変換 [[DCDC|limited/APE/APE_DCDC.pdf]]
DC-AC変換 [[DCAC|limited/APE/APE_DCAC.pdf]]
モータ基礎 [[motor|limited/APE/APE_motor.pdf]]
モータモデル [[motor_model|limited/APE/APE_dqconv_motormodel.pdf]]
フィードバック制御 [[feedback_control|limited/APE/APE_FBControl.pdf]]

!!レポート
平成25年度第1回レポート [[レポート課題|limited/APE/2013_AppPowerelectronics_report(1).pdf]]

/%

DC-AC変換 [[DCAC|limited/APE/APE_DCAC.pdf]]
モータ基礎 [[motor|limited/APE/APE_motor.pdf]]
モータモデル [[motor_model|limited/APE/APE_dqconv_motormodel.pdf]]
フィードバック制御 [[feedback_control|limited/APE/APE_FBControl.pdf]]


第2章 [[DCDC変換|limited/powerele/sec2/pele_S2.pdf]]
第3章 [[DCAC変換|limited/powerele/sec3/pele_S3.pdf]]
第4章 [[ACDC変換|limited/powerele/sec4/pele_S4.pdf]]
第5章 [[ACAC変換|limited/powerele/sec5/pele_S5.pdf]]
%/
!!資料
はじめに [[第1回授業内容|limited/APE/1_APE_Intro2015_Eng.pdf]]
電力用半導体 [[Device|limited/APE/2_APE_Device_Eng.pdf]]
DC-DC変換 [[Device|limited/APE/3_APE_DCDC_Eng.pdf]]
DC-AC変換 [[DCAC|limited/APE/4_APE_DCAC_Eng.pdf]]
モータ基礎 [[motor|limited/APE/5_APE_motor_ENG.pdf]]
フィードバック制御 [[feedback_control|limited/APE/6_APE_FBControl_ENG.pdf]]
状態推定オブザーバ [[feedback_control|limited/APE/7_APE_observer_Eng.pdf]]
モータ制御への応用 [[feedback_control|limited/APE/8_APE_MotorApp_Eng.pdf]]

!!レポート
平成27年度第1回レポート [[レポート課題|limited/APE/2015_APEReport1.pdf]]
平成27年度第2回レポート [[レポート課題|limited/APE/2015_AppPowerelectronics_report(2).pdf]]

/%
PSIM manual [[PSIM manual|limited/APE/PSIM_manual.pdf]]

DC-DC変換 [[DCDC|limited/APE/APE_DCDC.pdf]]
DC-AC変換 [[DCAC|limited/APE/APE_DCAC.pdf]]
モータ基礎 [[motor|limited/APE/APE_motor.pdf]]
モータモデル [[motor_model|limited/APE/APE_dqconv_motormodel.pdf]]
フィードバック制御 [[feedback_control|limited/APE/APE_FBControl.pdf]]

!!レポート
平成25年度第1回レポート [[レポート課題|limited/APE/2013_AppPowerelectronics_report(1).pdf]]

/%

DC-AC変換 [[DCAC|limited/APE/APE_DCAC.pdf]]
モータ基礎 [[motor|limited/APE/APE_motor.pdf]]
モータモデル [[motor_model|limited/APE/APE_dqconv_motormodel.pdf]]
フィードバック制御 [[feedback_control|limited/APE/APE_FBControl.pdf]]


第2章 [[DCDC変換|limited/powerele/sec2/pele_S2.pdf]]
第3章 [[DCAC変換|limited/powerele/sec3/pele_S3.pdf]]
第4章 [[ACDC変換|limited/powerele/sec4/pele_S4.pdf]]
第5章 [[ACAC変換|limited/powerele/sec5/pele_S5.pdf]]
%/
!生体機能応用工学専攻 1年 前期(第2クォーター)] 2単位

担当教員  花本 剛士

!!授業の資料は @@[[LiveCampus|http://horyu.jimut.kyutech.ac.jp/kit/livecamp.nsf/LC_Menu?OpenAgent]]@@にアップロードしています。


!!学外の方はこちら(アクセス制限がかかってます)
[[AppPowerEle2015]]


!目的・概要 
電気エネルギーは,容易に他のエネルギーに変換できることや,応答速度が速く出力制御が可能であるなど人類にとって必要不可欠なエネルギーとなっている。パワーエレクトロニクスは,電力用半導体素子を用いて電力を制御する技術であり,電力の有効利用と高精度な制御とが同時に実現できるため様々な分野で活用されている。本講義では,電力変換技術や電動機駆動制御などのパワーエレクトロニクス応用技術について学ぶ。さらに具体例として今後の発展・普及が期待される電気自動車の動向についても説明する。

!授業計画 
#パワーエレクトロニクス概要
#電力用半導体素子
#DC-DC変換(1)
#DC-DC変換(2)
#DC-AC変換(単相インバータ)
#DC-AC変換(三相PWMインバータ)
#電動機の種類と駆動原理
#座標変換と交流電動機の数式モデル
#制御系設計の基礎(ラプラス変換、状態方程式、フィードバック制御)
#オブザーバによるトルク・速度制御手法(同一次元オブザーバ)
#共振系抑制制御
#位置速度センサレス制御系への応用
#永久磁石同期電動機駆動システム実例
#電気自動車への応用(1)EVとガソリン車の構造上の違い
#電気自動車への応用(2)今後のEVの動向・方向性
#まとめ

!成績評価方法 
「受講態度」,「課題提出結果」によって評価する

!履修上の注意事項 
*以下の科目の知識があれば好ましい
パワーエレクトロニクス基礎分野、自動制御、電機制御分野。
上記分野の習得のために幾つかのフリーソフトウェアを使用して自習することが望ましい。パワーエレクトロニクス分野としては「PSIM デモ版」を,制御系設計ソフトウェアとして「scilab」を使用すると良い。

!教科書・参考書・資料
教科書は使用せず,授業資料はLiveCampus上にて配布する。

!!主な参考書は以下の通り
#小山 純,他著,最新パワーエレクトロニクス入門  (朝倉書店)
#野波健蔵編著、「MATLABによる制御理論の基礎」東京電機大学出版局
#野波健蔵編著、「MATLABによる制御系設計」東京電機大学出版局
#電気学会編,「交流電動機可変速駆動の基礎と応用」コロナ社
#Claude Gomez, "Engineering and Scientific computing with Scilab", Birkhauser
#堀 洋一、大西公平共著、「制御工学の基礎」丸善株式会社
#堀 洋一、大西公平共著、「応用制御工学」丸善株式会社
#美多 勉、他著、「基礎ディジタル制御」コロナ社
/***
|''Name:''|ArchivedTimeline|
|''Version:''|0.3.1 (Feb 04, 2006)|
|''Source:''|https://sourceforge.net/projects/ptw/|
|''Author:''|BramChen|
|''Type:''|Macro|
!Description
Timeline archived monthly.
!Syntax/Examples
>{{{<<timeline [modified | created]>>}}}

!Known issues/Todos
* 

!Instructions

!Notes
* 

!Revision history
* v0.3.1 (04 Feb 2006)
** JSLint checked
* v0.3.0 (Feb 04, 2006)
** Fixed several missing variable declarations
* v0.2.0 (Dec 26, 2005)
** changed for the new feature of Macro timeline of TW 2.0.0 beta 6
* v0.1.0 (Nov 3, 2005)
** Initial release.

!Code
***/
//{{{
version.extensions.archivedTimeline = {major: 0, minor: 3, revision: 1,
 date: new Date("Feb 04, 2006"),
 name: "ArchivedTimeline",
 type: "Macro",
 author: "BramChen",
 source: "http://sourceforge.net/project/showfiles.php?group_id=150646"
};

config.macros.archivedTimeline = {
 tooltips: "Archives sorted by ",
 msg : "The param of macro timeline should be 'created' or 'modified'",
 //dateFormat: "YYYY0MM0DD"
 //dateFormat: "YYYY.0MM.0DD"
 dateFormat: "DD MMM YYYY"
};
config.macros.timeline = config.macros.archivedTimeline;

config.macros.timeline.handler = function(place,macroName,params) {
 var field = params[0] ? params[0] : "modified";
 if (field != "modified" && field != "created") {
 displayMessage(config.macros.timeline.msg);
 return;
 }
 place.appendChild(document.createTextNode(this.tooltips + field));
 var tiddlers = store.reverseLookup("tags","excludeLists",false,field);
 var lastMonth = ""; var lastDay = ""; var theText = "----\n"; var i = 0;
 var cookie; var archives;
 for (var t=tiddlers.length-1; t>=0; t--) {
 var tiddler = tiddlers[t];
 var theField = (field == "created") ? tiddler.created : tiddler.modified;
 var theMonth = theField.convertToYYYYMMDDHHMM().substr(0,6);
 var theDay = theField.convertToYYYYMMDDHHMM().substr(0,8); 
 if(theMonth != lastMonth) {
 if (lastMonth === "") {
 lastMonth = theMonth;
 }
 else {
 place.appendChild(document.createElement("hr")); 
 cookie = 'chktimeline'+(i++);
 archives = this.formatString(this.dateFormat, lastMonth);
 this.slider(place,cookie,theText,archives,this.tooltips + archives); 
 lastMonth = theMonth; theText = "----\n"; 
 }
 }
 if(theDay != lastDay){
 theText += theField.formatString(this.dateFormat) + '\n';
 lastDay = theDay; 
 }
 theText += '* [[' + tiddler.title + ']]\n'; 
 }
 place.appendChild(document.createElement("hr"));
 cookie = 'chktimeline'+(i++);
 archives = this.formatString(this.dateFormat, lastMonth);
 this.slider(place,cookie,theText,archives,this.tooltips + archives); 
 place.appendChild(document.createElement("hr"));
};

config.macros.timeline.onClickSlider = config.macros.slider.onClickSlider;

config.macros.timeline.slider = function(place,cookie,text,id,tooltips)
{
 var btn = createTiddlyButton(place,id,tooltips,this.onClickSlider); 
 var panel = createTiddlyElement(place,"div",null,"timelineSliderPanel",null);
 panel.setAttribute("cookie",cookie);
 panel.style.display = config.options[cookie] ? "block" : "none";
 if(text){
 wikify(text,panel);
 }
};

config.macros.timeline.formatString = function(template, yyyymm)
{
 var dateString = new Date(yyyymm.substr(0,4)+'/'+yyyymm.substr(4,2)+'/01');
 template = template.replace(/DDD|0DD|DD|hh|mm|ss/g,'');
 return dateString.formatString(template+" "+(document.all?"▼":"▾"));
};
//}}}
ArchivedTimeline は timeline を月別にまとめて表示する。

{{{
<<timeline [modified | created]>>
}}}

modified: 更新順、created: 作成順 となる。
default の timeline のように 件数を指定することはできなくなるようだ。

+++[sample..]
<<timeline modified>>
===


個人的に月のタイトルがリストに紛れてしまうように見えるので最後の方で以下のように「▼」を追加して使用している。
{{{
 return dateString.formatString(template+" "+(document.all?"▼":"▾")); //kuraku upd
}}}
ArchivedTimeline は timeline を月別にまとめて表示する。

{{{
<<timeline [modified | created]>>
}}}

modified: 更新順、created: 作成順 となる。
default の timeline のように 件数を指定することはできなくなるようだ。

+++[sample..]
<<timeline modified>>
===


個人的に月のタイトルがリストに紛れてしまうように見えるので最後の方で以下のように「▼」を追加して使用している。
{{{
 return dateString.formatString(template+" "+(document.all?"▼":"▾")); //kuraku upd
}}}
[img[2mass|Picture/2masssys20060907_ss.JPG]]
共振系とは,モータ(駆動源)と負荷との間が剛体ではなく,バネ要素で結合されているモデルであり,共振周波数で振動が発生しやすい系である。特に高応答を行ったり,外乱が加わった場合に問題となる。
 係数図法は,制御器設計の1手法として用いられており,特に共振系の振動抑制制御を行う際の,m-PID制御器のゲイン決定に使用される。係数図法の特徴はその名前の通り係数図という図をみながら設計が行えることで,あるが,今のところ全ての制御系に対して1通りの設計方法は確立されてはいない。
 本研究室では,3慣性系以上の多慣性系についても係数図法が有効であることを示し設計手法の開発を目指している。特に電流制御系まで考慮した場合の設計を行っている。
 また,制御器設計手法として,ディジタル制御を考慮した,離散時間システムに対しても有効な離散系の係数図について検討を行っている。
/***
|''Name:''|CalendarPlugin|
|''Source:''|http://www.TiddlyTools.com/#CalendarPlugin|
|''Author:''|SteveRumsby|
|''License:''|unknown|
|''~CoreVersion:''|2.0.10|

// // updated by Jeremy Sheeley to add cacheing for reminders
// // see http://www.geocities.com/allredfaq/reminderMacros.html
// // ''Changes by ELS 2006.08.23:''
// // added handling for weeknumbers (code supplied by Martin Budden. see "wn**" comment marks)
// // ''Changes by ELS 2005.10.30:''
// // config.macros.calendar.handler()
// // ^^use "tbody" element for IE compatibility^^
// // ^^IE returns 2005 for current year, FF returns 105... fix year adjustment accordingly^^
// // createCalendarDays()
// // ^^use showDate() function (if defined) to render autostyled date with linked popup^^
// // calendar stylesheet definition
// // ^^use .calendar class-specific selectors, add text centering and margin settings^^


!!!!!Configuration:
<<option chkDisplayWeekNumbers>> Display week numbers //(note: Monday will be used as the start of the week)//
|''First day of week:''|<<option txtCalFirstDay>>|(Monday = 0, Sunday = 6)|
|''First day of weekend:''|<<option txtCalStartOfWeekend>>|(Monday = 0, Sunday = 6)|

!!!!!Syntax:
|{{{<<calendar>>}}}|Produce a full-year calendar for the current year|
|{{{<<calendar year>>}}}|Produce a full-year calendar for the given year|
|{{{<<calendar year month>>}}}|Produce a one-month calendar for the given month and year|
|{{{<<calendar thismonth>>}}}|Produce a one-month calendar for the current month|
|{{{<<calendar lastmonth>>}}}|Produce a one-month calendar for last month|
|{{{<<calendar nextmonth>>}}}|Produce a one-month calendar for next month|

***/
// //Modify this section to change the text displayed for the month and day names, to a different language for example. You can also change the format of the tiddler names linked to from each date, and the colours used.

//{{{
config.macros.calendar = {};

config.macros.calendar.monthnames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
config.macros.calendar.daynames = ["M", "T", "W", "T", "F", "S", "S"];

config.macros.calendar.weekendbg = "#c0c0c0";
config.macros.calendar.monthbg = "#e0e0e0";
config.macros.calendar.holidaybg = "#ffc0c0";

//}}}
// //''Code section:''
// (you should not need to alter anything below here)//
//{{{
if(config.options.txtCalFirstDay == undefined)
 config.options.txtCalFirstDay = 0;
if(config.options.txtCalStartOfWeekend == undefined)
 config.options.txtCalStartOfWeekend = 5;
if(config.options.chkDisplayWeekNumbers == undefined)//wn**
 config.options.chkDisplayWeekNumbers = false;
if(config.options.chkDisplayWeekNumbers)
 config.options.txtCalFirstDay = 0;

config.macros.calendar.tiddlerformat = "0DD/0MM/YYYY"; // This used to be changeable - for now, it isn't// <<smiley :-(>> 
config.macros.calendar.tiddlerformat = "YYYY.0MM.0DD"; 

version.extensions.calendar = { major: 0, minor: 6, revision: 0, date: new Date(2006, 1, 22)};
config.macros.calendar.monthdays = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

config.macros.calendar.holidays = [ ]; // Not sure this is required anymore - use reminders instead
//}}}

// //Is the given date a holiday?
//{{{
function calendarIsHoliday(date)
{
 var longHoliday = date.formatString("0DD/0MM/YYYY");
 var shortHoliday = date.formatString("0DD/0MM");

 for(var i = 0; i < config.macros.calendar.holidays.length; i++) {
 if(config.macros.calendar.holidays[i] == longHoliday || config.macros.calendar.holidays[i] == shortHoliday) {
 return true;
 }
 }
 return false;
}
//}}}

// //The main entry point - the macro handler.
// //Decide what sort of calendar we are creating (month or year, and which month or year)
// // Create the main calendar container and pass that to sub-ordinate functions to create the structure.
// ELS 2005.10.30: added creation and use of "tbody" for IE compatibility and fixup for year >1900//
// ELS 2005.10.30: fix year calculation for IE's getYear() function (which returns '2005' instead of '105')//
// ELS 2006.05.29: add journalDateFmt handling//
//{{{
config.macros.calendar.handler = function(place,macroName,params)
{
 var calendar = createTiddlyElement(place, "table", null, "calendar", null);
 var tbody = createTiddlyElement(calendar, "tbody", null, null, null);
 var today = new Date();
 var year = today.getYear();
 if (year<1900) year+=1900;
 
 // get format for journal link by reading from SideBarOptions (ELS 5/29/06 - based on suggestion by Martin Budden)
 var text = store.getTiddlerText("SideBarOptions");
 this.journalDateFmt = "DD-MMM-YYYY";
 var re = new RegExp("<<(?:newJournal)([^>]*)>>","mg"); var fm = re.exec(text);
 if (fm && fm[1]!=null) { var pa=fm[1].readMacroParams(); if (pa[0]) this.journalDateFmt = pa[0]; }

 if (params[0] == "thismonth")
 {
 cacheReminders(new Date(year, today.getMonth(), 1, 0, 0), 31);
 createCalendarOneMonth(tbody, year, today.getMonth());
 } 
 else if (params[0] == "lastmonth") {
 var month = today.getMonth()-1; if (month==-1) { month=11; year--; }
 cacheReminders(new Date(year, month, 1, 0, 0), 31);
 createCalendarOneMonth(tbody, year, month);
 }
 else if (params[0] == "nextmonth") {
 var month = today.getMonth()+1; if (month>11) { month=0; year++; }
 cacheReminders(new Date(year, month, 1, 0, 0), 31);
 createCalendarOneMonth(tbody, year, month);
 }
 else {
 if (params[0]) year = params[0];
 if(params[1])
 {
 cacheReminders(new Date(year, params[1]-1, 1, 0, 0), 31);
 createCalendarOneMonth(tbody, year, params[1]-1);
 }
 else
 {
 cacheReminders(new Date(year, 0, 1, 0, 0), 366);
 createCalendarYear(tbody, year);
 }
 }
 window.reminderCacheForCalendar = null;
}
//}}}
//{{{
//This global variable is used to store reminders that have been cached
//while the calendar is being rendered. It will be renulled after the calendar is fully rendered.
window.reminderCacheForCalendar = null;
//}}}
//{{{
function cacheReminders(date, leadtime)
{
 if (window.findTiddlersWithReminders == null)
 return;
 window.reminderCacheForCalendar = {};
 var leadtimeHash = [];
 leadtimeHash [0] = 0;
 leadtimeHash [1] = leadtime;
 var t = findTiddlersWithReminders(date, leadtimeHash, null, 1);
 for(var i = 0; i < t.length; i++) {
 //just tag it in the cache, so that when we're drawing days, we can bold this one.
 window.reminderCacheForCalendar[t[i]["matchedDate"]] = "reminder:" + t[i]["params"]["title"]; 
 }
}
//}}}
//{{{
function createCalendarOneMonth(calendar, year, mon)
{
 var row = createTiddlyElement(calendar, "tr", null, null, null);
 createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, true, year, mon);
 row = createTiddlyElement(calendar, "tr", null, null, null);
 createCalendarDayHeader(row, 1);
 createCalendarDayRowsSingle(calendar, year, mon);
}
//}}}

//{{{
function createCalendarMonth(calendar, year, mon)
{
 var row = createTiddlyElement(calendar, "tr", null, null, null);
 createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, false, year, mon);
 row = createTiddlyElement(calendar, "tr", null, null, null);
 createCalendarDayHeader(row, 1);
 createCalendarDayRowsSingle(calendar, year, mon);
}
//}}}

//{{{
function createCalendarYear(calendar, year)
{
 var row;
 row = createTiddlyElement(calendar, "tr", null, null, null);
 var back = createTiddlyElement(row, "td", null, null, null);
 var backHandler = function() {
 removeChildren(calendar);
 createCalendarYear(calendar, year-1);
 };
 createTiddlyButton(back, "<", "Previous year", backHandler);
 back.align = "center";

 var yearHeader = createTiddlyElement(row, "td", null, "calendarYear", year);
 yearHeader.align = "center";
 //yearHeader.setAttribute("colSpan", 19);
 yearHeader.setAttribute("colSpan",config.options.chkDisplayWeekNumbers?22:19);//wn**

 var fwd = createTiddlyElement(row, "td", null, null, null);
 var fwdHandler = function() {
 removeChildren(calendar);
 createCalendarYear(calendar, year+1);
 };
 createTiddlyButton(fwd, ">", "Next year", fwdHandler);
 fwd.align = "center";

 createCalendarMonthRow(calendar, year, 0);
 createCalendarMonthRow(calendar, year, 3);
 createCalendarMonthRow(calendar, year, 6);
 createCalendarMonthRow(calendar, year, 9);
}
//}}}

//{{{
function createCalendarMonthRow(cal, year, mon)
{
 var row = createTiddlyElement(cal, "tr", null, null, null);
 createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon], false, year, mon);
 createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+1], false, year, mon);
 createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+2], false, year, mon);
 row = createTiddlyElement(cal, "tr", null, null, null);
 createCalendarDayHeader(row, 3);
 createCalendarDayRows(cal, year, mon);
}
//}}}

//{{{
function createCalendarMonthHeader(cal, row, name, nav, year, mon)
{
 var month;
 if(nav) {
 var back = createTiddlyElement(row, "td", null, null, null);
 back.align = "center";
 back.style.background = config.macros.calendar.monthbg;

/*
 back.setAttribute("colSpan", 2);

 var backYearHandler = function() {
 var newyear = year-1;
 removeChildren(cal);
 cacheReminders(new Date(newyear, mon , 1, 0, 0), 31);
 createCalendarOneMonth(cal, newyear, mon);
 };
 createTiddlyButton(back, "<<", "Previous year", backYearHandler);
*/
 var backMonHandler = function() {
 var newyear = year;
 var newmon = mon-1;
 if(newmon == -1) { newmon = 11; newyear = newyear-1;}
 removeChildren(cal);
 cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);
 createCalendarOneMonth(cal, newyear, newmon);
 };
 createTiddlyButton(back, "<", "Previous month", backMonHandler);


 month = createTiddlyElement(row, "td", null, "calendarMonthname", name)
// month.setAttribute("colSpan", 3);
// month.setAttribute("colSpan", 5);
 month.setAttribute("colSpan", config.options.chkDisplayWeekNumbers?6:5);//wn**

 var fwd = createTiddlyElement(row, "td", null, null, null);
 fwd.align = "center";
 fwd.style.background = config.macros.calendar.monthbg; 

// fwd.setAttribute("colSpan", 2);
 var fwdMonHandler = function() {
 var newyear = year;
 var newmon = mon+1;
 if(newmon == 12) { newmon = 0; newyear = newyear+1;}
 removeChildren(cal);
 cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);
 createCalendarOneMonth(cal, newyear, newmon);
 };
 createTiddlyButton(fwd, ">", "Next month", fwdMonHandler);
/*
 var fwdYear = createTiddlyElement(row, "td", null, null, null);
 var fwdYearHandler = function() {
 var newyear = year+1;
 removeChildren(cal);
 cacheReminders(new Date(newyear, mon , 1, 0, 0), 31);
 createCalendarOneMonth(cal, newyear, mon);
 };
 createTiddlyButton(fwd, ">>", "Next year", fwdYearHandler);
*/
 } else {
 month = createTiddlyElement(row, "td", null, "calendarMonthname", name)
 //month.setAttribute("colSpan", 7);
 month.setAttribute("colSpan",config.options.chkDisplayWeekNumbers?8:7);//wn**
 }
 month.align = "center";
 month.style.background = config.macros.calendar.monthbg;
}
//}}}

//{{{
function createCalendarDayHeader(row, num)
{
 var cell;
 for(var i = 0; i < num; i++) {
 if (config.options.chkDisplayWeekNumbers) createTiddlyElement(row, "td");//wn**
 for(var j = 0; j < 7; j++) {
 var d = j + (config.options.txtCalFirstDay - 0);
 if(d > 6) d = d - 7;
 cell = createTiddlyElement(row, "td", null, null, config.macros.calendar.daynames[d]);
 if(d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))
 cell.style.background = config.macros.calendar.weekendbg;
 }
 }
}
//}}}

//{{{
function createCalendarDays(row, col, first, max, year, mon)
{
 var i;
 if (config.options.chkDisplayWeekNumbers){
 if (first<=max) {
 var ww = new Date(year,mon,first);
 createTiddlyElement(row, "td", null, null, "w"+ww.getWeek());//wn**
 }
 else createTiddlyElement(row, "td", null, null, null);//wn**
 }
 for(i = 0; i < col; i++) {
 createTiddlyElement(row, "td", null, null, null);
 }
 var day = first;
 for(i = col; i < 7; i++) {
 var d = i + (config.options.txtCalFirstDay - 0);
 if(d > 6) d = d - 7;
 var daycell = createTiddlyElement(row, "td", null, null, null);
 var isaWeekend = ((d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))? true:false);

 if(day > 0 && day <= max) {
 var celldate = new Date(year, mon, day);
 // ELS 2005.10.30: use <<date>> macro's showDate() function to create popup
 if (window.showDate) {
 showDate(daycell,celldate,"popup","DD",config.macros.calendar.journalDateFmt,true, isaWeekend); // ELS 5/29/06 - use journalDateFmt 
 } else {
 if(isaWeekend) daycell.style.background = config.macros.calendar.weekendbg;
 var title = celldate.formatString(config.macros.calendar.tiddlerformat);
 if(calendarIsHoliday(celldate)) {
 daycell.style.background = config.macros.calendar.holidaybg;
 }
 if(window.findTiddlersWithReminders == null) {
 var link = createTiddlyLink(daycell, title, false);
 link.appendChild(document.createTextNode(day));
 } else {
 var button = createTiddlyButton(daycell, day, title, onClickCalendarDate);
 }
 }
 }
 day++;
 }
}
//}}}

// //We've clicked on a day in a calendar - create a suitable pop-up of options.
// //The pop-up should contain:
// // * a link to create a new entry for that date
// // * a link to create a new reminder for that date
// // * an <hr>
// // * the list of reminders for that date
//{{{
function onClickCalendarDate(e)
{
 var button = this;
 var date = button.getAttribute("title");
 var dat = new Date(date.substr(6,4), date.substr(3,2)-1, date.substr(0, 2));

 date = dat.formatString(config.macros.calendar.tiddlerformat);
 var popup = createTiddlerPopup(this);
 popup.appendChild(document.createTextNode(date));
 var newReminder = function() {
 var t = store.getTiddlers(date);
 displayTiddler(null, date, 2, null, null, false, false);
 if(t) {
 document.getElementById("editorBody" + date).value += "\n<<reminder day:" + dat.getDate() +
 " month:" + (dat.getMonth()+1) +
 " year:" + (dat.getYear()+1900) + " title: >>";
 } else {
 document.getElementById("editorBody" + date).value = "<<reminder day:" + dat.getDate() +
 " month:" + (dat.getMonth()+1) +
 " year:" + (dat.getYear()+1900) + " title: >>";
 }
 };
 var link = createTiddlyButton(popup, "New reminder", null, newReminder); 
 popup.appendChild(document.createElement("hr"));

 var t = findTiddlersWithReminders(dat, [0,14], null, 1);
 for(var i = 0; i < t.length; i++) {
 link = createTiddlyLink(popup, t[i].tiddler, false);
 link.appendChild(document.createTextNode(t[i].tiddler));
 }
}
//}}}

//{{{
function calendarMaxDays(year, mon)
{
 var max = config.macros.calendar.monthdays[mon];
 if(mon == 1 && (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0)) {
 max++;
 }
 return max;
}
//}}}

//{{{
function createCalendarDayRows(cal, year, mon)
{
 var row = createTiddlyElement(cal, "tr", null, null, null);

 var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
 if(first1 < 0) first1 = first1 + 7;
 var day1 = -first1 + 1;
 var first2 = (new Date(year, mon+1, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
 if(first2 < 0) first2 = first2 + 7;
 var day2 = -first2 + 1;
 var first3 = (new Date(year, mon+2, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
 if(first3 < 0) first3 = first3 + 7;
 var day3 = -first3 + 1;

 var max1 = calendarMaxDays(year, mon);
 var max2 = calendarMaxDays(year, mon+1);
 var max3 = calendarMaxDays(year, mon+2);

 while(day1 <= max1 || day2 <= max2 || day3 <= max3) {
 row = createTiddlyElement(cal, "tr", null, null, null);
 createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;
 createCalendarDays(row, 0, day2, max2, year, mon+1); day2 += 7;
 createCalendarDays(row, 0, day3, max3, year, mon+2); day3 += 7;
 }
}
//}}}

//{{{
function createCalendarDayRowsSingle(cal, year, mon)
{
 var row = createTiddlyElement(cal, "tr", null, null, null);

 var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
 if(first1 < 0) first1 = first1+ 7;
 var day1 = -first1 + 1;
 var max1 = calendarMaxDays(year, mon);

 while(day1 <= max1) {
 row = createTiddlyElement(cal, "tr", null, null, null);
 createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;
 }
}
//}}}

// //ELS 2005.10.30: added styles
//{{{
setStylesheet(".calendar, .calendar table, .calendar th, .calendar tr, .calendar td { text-align:center; } .calendar, .calendar a { margin:0px !important; padding:0px !important; }", "calendarStyles");
//}}}
[[CalendarPlugin]] をインストールすることで、カレンダーが表示できる。
{{{
<<calendar thismonth>>
}}}
<<calendar thismonth>>

紆余曲折あって ~SideBar に入れてます、MainMenu だとレイアウトによっては使えないし。

[[CalendarPlugin]] にある通り、
<<<
First day of week:[ ]		(Monday = 0, Sunday = 6)
First day of weekend:[ ]		(Monday = 0, Sunday = 6)
<<<
スタートの曜日が指定できます。
plugin の tiddler にセットすれば良いはずなのだがどうも忘れがちの(勝手に消える) あったので、私は [[CalendarPluginConfig]] こちらで設定しています。

とはいえ実は単体ではあまり効果的に使用することはできず。
*[[DatePlugin]]
*[[ReminderMacros]]
と併わせて使うべきものである。
// // override cookie settings for CalendarPlugin:
//{{{
//First day of week:(Monday = 0, Sunday = 6)
config.options.txtCalFirstDay=6;

//First day of weekend:(Monday = 0, Sunday = 6)
config.options.txtCalStartOfWeekend=5;

config.macros.calendar.weekendbg = "#FFC9D7";
//}}}
!!!生命体工学研究科 生体機能専攻
[[パワーエレクトロニクス応用|AppliedPowerElectronics]]
!!!工学部 電気電子工学科
[[電気機器|Electrical Machinery]]
[[パワーエレクトロニクス|PowerElectronics]]
/***
|Name:|CloseOnCancelPlugin|
|Description:|Closes the tiddler if you click new tiddler then cancel. Default behaviour is to leave it open|
|Version:|3.0.1 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#CloseOnCancelPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
merge(config.commands.cancelTiddler,{

	handler_mptw_orig_closeUnsaved: config.commands.cancelTiddler.handler,

	handler: function(event,src,title) {
		this.handler_mptw_orig_closeUnsaved(event,src,title);
		if (!store.tiddlerExists(title) && !store.isShadowTiddler(title))
			story.closeTiddler(title,true);
	 	return false;
	}

});

//}}}

/***
|''Name:''|Based on CollapseTiddlersPlugin|
|''Source:''|http://gensoft.revhost.net/Collapse.html|
|''Author:''|Bradley Meck|
|''License:''|unknown|
|''~CoreVersion:''|2.0.10|

|JOS 9/14/2006: changed text for 'collapse all' and 'expand all' to lower-case (consistency's sake); cleanned-up syntax (readability's sake) |
|JOS 9/14/2006: removed "WebCollapsedTemplate" altogether; added compat code for topOfPageMode; added tool tips for collapseAll and expandAll |
|ELS 2/24/2006: added fallback to "CollapsedTemplate if "WebCollapsedTemplate" is not found |
|ELS 2/6/2006: added check for 'readOnly' flag to use alternative "WebCollapsedTemplate" |
***/
//{{{
config.commands.collapseTiddler = {
  text: "fold",
  tooltip: "Collapse this tiddler",
  handler: function(event,src,title){
    var e = story.findContainingTiddler(src);
    var t = "CollapsedTemplate";
    if (!store.tiddlerExists(t)) { alert("Can't find 'CollapsedTemplate'"); return; }
    if (config.options.chkTopOfPageMode!=undefined) {
      var pm=config.options.chkTopOfPageMode;
      config.options.chkTopOfPageMode=false;
    }
    if(e.getAttribute("template") != config.tiddlerTemplates[DEFAULT_EDIT_TEMPLATE]){
      if(e.getAttribute("template") != t ){
        e.setAttribute("oldTemplate",e.getAttribute("template"));
        story.displayTiddler(null,title,t);
      }
    }
    if (config.options.chkTopOfPageMode!=undefined) config.options.chkTopOfPageMode=pm;
  }
}

config.commands.expandTiddler = {
  text: "unfold",
  tooltip: "Expand this tiddler",
  handler: function(event,src,title){
    if (config.options.chkTopOfPageMode!=undefined) {
      var pm=config.options.chkTopOfPageMode;
      config.options.chkTopOfPageMode=false;
    }
    var e = story.findContainingTiddler(src);
    story.displayTiddler(null,title,e.getAttribute("oldTemplate"));
    if (config.options.chkTopOfPageMode!=undefined) config.options.chkTopOfPageMode=pm;
  }
}

config.macros.collapseAll = {
  handler: function(place,macroName,params,wikifier,paramString,tiddler){
    createTiddlyButton(place,"collapse all","Collapse all tiddlers",function(){
                         var t = "CollapsedTemplate";
                         if (!store.tiddlerExists(t)) { alert("Can't find 'CollapsedTemplate'"); return; }
                         if (config.options.chkTopOfPageMode!=undefined) {
                           var pm=config.options.chkTopOfPageMode;
                           config.options.chkTopOfPageMode=false;
                         }
                         story.forEachTiddler(function(title,tiddler){
                                                if(tiddler.getAttribute("template") != config.tiddlerTemplates[DEFAULT_EDIT_TEMPLATE])
                                                  story.displayTiddler(null,title,t);
                                              })
                           if (config.options.chkTopOfPageMode!=undefined) config.options.chkTopOfPageMode=pm;
                       })
  }
}

config.macros.expandAll = {
  handler: function(place,macroName,params,wikifier,paramString,tiddler){
    createTiddlyButton(place,"expand all","",function(){
                         var t = "CollapsedTemplate";
                         if (!store.tiddlerExists(t)) { alert("Can't find 'CollapsedTemplate'"); return; }
                         if (config.options.chkTopOfPageMode!=undefined) {
                           var pm=config.options.chkTopOfPageMode;
                           config.options.chkTopOfPageMode=false;
                         }
                         story.forEachTiddler(function(title,tiddler){
                                                if(tiddler.getAttribute("template") == t) story.displayTiddler(null,title,tiddler.getAttribute("oldTemplate"));
                                              })
                           if (config.options.chkTopOfPageMode!=undefined) config.options.chkTopOfPageMode=pm;
                       })
  }
}

config.commands.collapseOthers = {
  text: "focus",
  tooltip: "Expand this tiddler and collapse all others",
  handler: function(event,src,title){
    var e = story.findContainingTiddler(src);
    var t = "CollapsedTemplate";
    if (!store.tiddlerExists(t)) { alert("Can't find 'CollapsedTemplate'"); return; }
    if (config.options.chkTopOfPageMode!=undefined) {
      var pm=config.options.chkTopOfPageMode;
      config.options.chkTopOfPageMode=false;
    }
    story.forEachTiddler(function(title,tiddler){
                           if(tiddler.getAttribute("template") != config.tiddlerTemplates[DEFAULT_EDIT_TEMPLATE]){
                             if (tiddler!=e) story.displayTiddler(null,title,t);
                           }
                         })
    if (config.options.chkTopOfPageMode!=undefined) config.options.chkTopOfPageMode=pm;
  }
}
//}}}
<!--{{{-->
<div class='toolbar' macro='toolbar editTiddler permalink closeOthers +expandTiddler closeTiddler'></div>
<div><span class='title' macro='view title'></span><span style="font-size: 0.8em; padding-left:1em;" macro="includeSiteLink"></span><span class='subtitle' macro='toolbar +expandTiddler'></span></div>
<!--}}}-->
Name: MptwSmoke
Background: #fff
Foreground: #000
PrimaryPale: #aaa
PrimaryLight: #777
PrimaryMid: #111
PrimaryDark: #000
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

/***
|''Name:''|DateFormatString|
|''Version:''||
|''Source:''|[[AiddlyWiki|http://aiddlywiki.sourceforge.net]]|
|''Author:''|[[Arphen Lin|mailto:arphenlin@gmail.com]]|
|''Type:''|WikiBar addon|
|''Required:''|WikiBar 2.0.0+|
!Description
Add date format string syntax.
!Installation
#Install WikiBar firstly.
#Create your addon as a tiddler and add 'wikibarAddons' tag.
!Code
***/
//{{{

//----------------------------------------------------------------------------
// addon install function: this is a must
//----------------------------------------------------------------------------
function wikibar_addonInstall(unused)
{
  // define tools
  var dateFormatString={
    TYPE:'MENU',
    CAPTION: 'date format string',
    TOOLTIP: 'often used with \"today\" macro',
    YYYY:
    {
      TOOLTIP:    'full year',
      syntax: 'YYYY',
      HANDLER: wikibar_editFormatByCursor
    },
    YY:
    {
      TOOLTIP:    '2-digit year',
      syntax: 'YY',
      HANDLER: wikibar_editFormatByCursor
    },
    MMM:
    {
      TOOLTIP:    'month name',
      syntax: 'MMM',
      HANDLER: wikibar_editFormatByCursor
    },
    MM:
    {
      TOOLTIP:    'month',
      syntax: 'MM',
      HANDLER: wikibar_editFormatByCursor
    },
    OMM:
    {
      TOOLTIP:    'zero-leading month',
      syntax: '0MM',
      HANDLER: wikibar_editFormatByCursor
    },
    DDD:
    {
      TOOLTIP:    'week day',
      syntax: 'DDD',
      HANDLER: wikibar_editFormatByCursor
    },
    DD:
    {
      TOOLTIP:    'day',
      syntax: 'DD',
      HANDLER: wikibar_editFormatByCursor
    },
    '0DD':
    {
      TOOLTIP:    'zero-leading day',
      syntax: '0DD',
      HANDLER: wikibar_editFormatByCursor
    },
    DDth:
    {
      TOOLTIP:    'day with trailing (English) suffix',
      syntax: 'DDth',
      HANDLER: wikibar_editFormatByCursor
    },
    hh:
    {
      TOOLTIP:    'hour',
      syntax: 'hh',
      HANDLER: wikibar_editFormatByCursor
    },
    '0hh':
    {
      TOOLTIP:    'zero-leading hour',
      syntax: '0hh',
      HANDLER: wikibar_editFormatByCursor
    },
    mm:
    {
      TOOLTIP:    'minute',
      syntax: 'mm',
      HANDLER: wikibar_editFormatByCursor
    },
    '0mm':
    {
      TOOLTIP:    'zero-leading minute',
      syntax: '0mm',
      HANDLER: wikibar_editFormatByCursor
    },
    ss:
    {
      TOOLTIP:    'second',
      syntax: 'ss',
      HANDLER: wikibar_editFormatByCursor
    },
    '0ss':
    {
      TOOLTIP:    'zero-leading second',
      syntax: '0ss',
      HANDLER: wikibar_editFormatByCursor
    }
  };

  // register tools
  wikibarStore.addon.dateFormatString = dateFormatString;
}

// for debugging: you can turn it off in final release ----------------------
wikibar_addonInstall();


//}}}
/***
|Name|DatePlugin|
|Source|http://www.TiddlyTools.com/#DatePlugin|
|Version|2.3.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|formatted dates plus popup menu with 'journal' link, changes and (optional) reminders|

There are quite a few calendar generators, reminders, to-do lists, 'dated tiddlers' journals, blog-makers and GTD-like schedule managers that have been built around TW.  While they all have different purposes, and vary in format, interaction, and style, in one way or another each of these plugins displays and/or uses date-based information to make finding, accessing and managing relevant tiddlers easier.  This plugin provides a general approach to embedding dates and date-based links/menus within tiddler content.

This plugin display formatted dates, for the specified year, month, day using number values or mathematical expressions such as (Y+1) or (D+30).  Optionally, you can create a link from the formatted output to a 'dated tiddler' for quick blogging or create a popup menu that includes the dated tiddler link plus links to changes made on that date as well as links to any pending reminders for the coming 31 days (if the RemindersPlugin is installed).  This plugin also provides a public API for easily incorporating formatted date output (with or without the links/popups) into other plugins, such as calendar generators, etc.
!!!!!Usage
<<<
When installed, this plugin defines a macro: {{{<<date [mode] [date] [format] [linkformat]>>}}}.  All of the macro parameters are optional and, in it's simplest form, {{{<<date>>}}}, it is equivalent to the ~TiddlyWiki core macro, {{{<<today>>}}}.

However, where {{{<<today>>}}} simply inserts the current date/time in a predefined format (or custom format, using {{{<<today [format]>>}}}), the {{{<<date>>}}} macro's parameters take it much further than that:
* [mode] is either ''display'', ''link'' or ''popup''.  If omitted, it defaults to ''display''.  This param let's you select between simply displaying a formatted date, or creating a link to a specific 'date titled' tiddler or a popup menu containing a dated tiddler link, plus links to changes and reminders.
* [date] lets you enter ANY date (not just today) as ''year, month, and day values or simple mathematical expressions'' using pre-defined variables, Y, M, and D for the current year, month and day, repectively.  You can display the modification date of the current tiddler by using the keyword: ''tiddler'' in place of the year, month and day parameters.  Use ''tiddler://name-of-tiddler//'' to display the modification date of a specific tiddler.  You can also use keywords ''today'' or ''filedate'' to refer to these //dynamically changing// date/time values.  
* [format] and [linkformat] uses standard ~TiddlyWiki date formatting syntax.  The default is "YYYY.0MM.0DD"
>^^''DDD'' - day of week in full (eg, "Monday"), ''DD'' - day of month, ''0DD'' - adds leading zero^^
>^^''MMM'' - month in full (eg, "July"), ''MM'' - month number, ''0MM'' - adds leading zero^^
>^^''YYYY'' - full year, ''YY'' - two digit year, ''hh'' - hours, ''mm'' - minutes, ''ss'' - seconds^^
>^^//note: use of hh, mm or ss format codes is only supported with ''tiddler'', ''today'' or ''filedate'' values//^^
* [linkformat] - specify an alternative date format so that the title of a 'dated tiddler' link can have a format that differs from the date's displayed format

In addition to the macro syntax, DatePlugin also provides a public javascript API so that other plugins that work with dates (such as calendar generators, etc.) can quickly incorporate date formatted links or popups into their output:

''{{{showDate(place, date, mode, format, linkformat, autostyle, weekend)}}}'' 

Note that in addition to the parameters provided by the macro interface, the javascript API also supports two optional true/false parameters:
* [autostyle] - when true, the font/background styles of formatted dates are automatically adjusted to show the date's status:  'today' is boxed, 'changes' are bold, 'reminders' are underlined, while weekends and holidays (as well as changes and reminders) can each have a different background color to make them more visibly distinct from each other.
* [weekend] - true indicates a weekend, false indicates a weekday.  When this parameter is omitted, the plugin uses internal defaults to automatically determine when a given date falls on a weekend.
<<<
!!!!!Examples
<<<
The current date: <<date>>
The current time: <<date today "0hh:0mm:0ss">>
Today's blog: <<date link today "DDD, MMM DDth, YYYY">>
Recent blogs/changes/reminders: <<date popup Y M D-1 "yesterday">> <<date popup today "today">> <<date popup Y M D+1 "tomorrow">>
The first day of next month will be a <<date Y M+1 1 "DDD">>
This tiddler (DatePlugin) was last updated on: <<date tiddler "DDD, MMM DDth, YYYY">>
The SiteUrl was last updated on: <<date tiddler:SiteUrl "DDD, MMM DDth, YYYY">>
This document was last saved on <<date filedate "DDD, MMM DDth, YYYY at 0hh:0mm:0ss">>
<<date 2006 07 24 "MMM DDth, YYYY">> will be a <<date 2006 07 24 "DDD">>
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''DatePlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''2007.06.20 [2.3.1]'' in onClickDatePopup(), use Popup.show() instead of deprecated ScrollToTiddlerPopup().  Fixes fatal error that prevents popups from being properly displayed
''2007.05.31 [2.3.0]'' list "created" tiddlers in date popup.  Also, force re-cache of created/modified indices when displaying current date and store.isDirty(), so that popup is kept in sync with tiddler changes.
''2006.05.09 [2.2.1]'' added "todaybg" handling to set background color of current date.  Also, honor excludeLists tag when getting lists of tiddlers.  Based on suggestions by Mark Hulme.
''2006.05.05 [2.2.0]'' added "linkedbg" handling to set background color when a 'dated tiddler' exists.  Based on a suggestion by Mark Hulme.
''2006.03.08 [2.1.2]'' add 'override leadtime' flag param in call to findTiddlersWithReminders(), and add "Enter a title" default text to new reminder handler.  Thanks to Jeremy Sheeley for these additional tweaks.
''2006.03.06 [2.1.0]'' hasReminders() nows uses window.reminderCacheForCalendar[] when present.  If calendar cache is not present, indexReminders() now uses findTiddlersWithReminders() with a 90-day look ahead to check for reminders.  Also, switched default background colors for autostyled dates: reminders are now greenish ("c0ffee") and holidays are now reddish ("ffaace").
''2006.02.14 [2.0.5]'' when readOnly is set (by TW core), omit "new reminders..." popup menu item and, if a "dated tiddler" does not already exist, display the date as simple text instead of a link.
''2006.02.05 [2.0.4]'' added var to variables that were unintentionally global.  Avoids FireFox 1.5.0.1 crash bug when referencing global variables
''2006.01.18 [2.0.3]'' In 1.2.x the tiddler editor's text area control was given an element ID=("tiddlerBody"+title), so that it was easy to locate this field and programmatically modify its content.  With the addition of configuration templates in 2.x, the textarea no longer has an ID assigned.  To find this control we now look through all the child nodes of the tiddler editor to locate a "textarea" control where attribute("edit") equals "text", and then append the new reminder to the contents of that control.
''2006.01.11 [2.0.2]'' correct 'weekend' override detection logic in showDate()
''2006.01.10 [2.0.1]'' allow custom-defined weekend days (default defined in config.macros.date.weekend[] array)
added flag param to showDate() API to override internal weekend[] array
''2005.12.27 [2.0.0]'' Update for TW2.0
Added parameter handling for 'linkformat'
''2005.12.21 [1.2.2]'' FF's date.getYear() function returns 105 (for the current year, 2005).  When calculating a date value from Y M and D expressions, the plugin adds 1900 to the returned year value get the current year number.  But IE's date.getYear() already returns 2005.  As a result, plugin calculated date values on IE were incorrect (e.g., 3905 instead of 2005).  Adding +1900 is now conditional so the values will be correct on both browsers.
''2005.11.07 [1.2.1]'' added support for "tiddler" dynamic date parameter
''2005.11.06 [1.2.0]'' added support for "tiddler:title" dynamic date parameter
''2005.11.03 [1.1.2]'' when a reminder doesn't have a specified title parameter, use the title of the tiddler that contains the reminder as "fallback" text in the popup menu.  Based on a suggestion from BenjaminKudria.
''2005.11.03 [1.1.1]'' Temporarily bypass hasReminders() logic to avoid excessive overhead from generating the indexReminders() cache.  While reminders can still appear in the popup menu, they just won't be indicated by auto-styling the date number that is displayed.  This single change saves approx. 60% overhead (5 second delay reduced to under 2 seconds).
''2005.11.01 [1.1.0]'' corrected logic in hasModifieds() and hasReminders() so caching of indexed modifieds and reminders is done just once, as intended.  This should hopefully speed up calendar generators and other plugins that render multiple dates...
''2005.10.31 [1.0.1]'' documentation and code cleanup
''2005.10.31 [1.0.0]'' initial public release
''2005.10.30 [0.9.0]'' pre-release
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].
<<<
!!!!!Code
***/
//{{{
version.extensions.date = {major: 2, minor: 3, revision: 1, date: new Date(2007,6,20)};
//}}}

//{{{
config.macros.date = {
	format: "YYYY.0MM.0DD", // default date display format
	linkformat: "YYYY.0MM.0DD", // 'dated tiddler' link format
	linkedbg: "#babb1e", // "babble"
	todaybg: "#ffab1e", // "fable"
	weekendbg: "#c0c0c0", // "cocoa"
	holidaybg: "#ffaace", // "face"
	createdbg: "#bbeeff", // "beef"
	modifiedsbg: "#bbeeff", // "beef"
	remindersbg: "#c0ffee", // "coffee"
	holidays: [ "01/01", "07/04", "07/24", "11/24" ], // NewYearsDay, IndependenceDay(US), Eric's Birthday (hooray!), Thanksgiving(US)
	weekend: [ 1,0,0,0,0,0,1 ] // [ day index values: sun=0, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6 ]
};
//}}}

//{{{
config.macros.date.handler = function(place,macroName,params)
{
	// do we want to see a link, a popup, or just a formatted date?
	var mode="display";
	if (params[0]=="display") { mode=params[0]; params.shift(); }
	if (params[0]=="popup") { mode=params[0]; params.shift(); }
	if (params[0]=="link") { mode=params[0]; params.shift(); }
	// get the date
	var now = new Date();
	var date = now;
	if (!params[0] || params[0]=="today")
		{ params.shift(); }
	else if (params[0]=="filedate")
		{ date=new Date(document.lastModified); params.shift(); }
	else if (params[0]=="tiddler")
		{ date=store.getTiddler(story.findContainingTiddler(place).id.substr(7)).modified; params.shift(); }
	else if (params[0].substr(0,8)=="tiddler:")
		{ var t; if ((t=store.getTiddler(params[0].substr(8)))) date=t.modified; params.shift(); }
	else {
		var y = eval(params.shift().replace(/Y/ig,(now.getYear()<1900)?now.getYear()+1900:now.getYear()));
		var m = eval(params.shift().replace(/M/ig,now.getMonth()+1));
		var d = eval(params.shift().replace(/D/ig,now.getDate()+0));
		date = new Date(y,m-1,d);
	}
	// date format with optional custom override
	var format=this.format; if (params[0]) format=params.shift();
	var linkformat=this.linkformat; if (params[0]) linkformat=params.shift();
	showDate(place,date,mode,format,linkformat);
}
//}}}

//{{{
window.showDate=showDate;
function showDate(place,date,mode,format,linkformat,autostyle,weekend)
{
	if (!mode) mode="display";
	if (!format) format=config.macros.date.format;
	if (!linkformat) linkformat=config.macros.date.linkformat;
	if (!autostyle) autostyle=false;

	// format the date output
	var title = date.formatString(format);
	var linkto = date.formatString(linkformat);

	// just show the formatted output
	if (mode=="display") { place.appendChild(document.createTextNode(title)); return; }

	// link to a 'dated tiddler'
	var link = createTiddlyLink(place, linkto, false);
	link.appendChild(document.createTextNode(title));
	link.title = linkto;
	link.date = date;
	link.format = format;
	link.linkformat = linkformat;

	// if using a popup menu, replace click handler for dated tiddler link
	// with handler for popup and make link text non-italic (i.e., an 'existing link' look)
	if (mode=="popup") {
		link.onclick = onClickDatePopup;
		link.style.fontStyle="normal";
	}

	// format the popup link to show what kind of info it contains (for use with calendar generators)
	if (!autostyle) return;
	if (hasModifieds(date)||hasCreateds(date))
		{ link.style.fontStyle="normal"; link.style.fontWeight="bold"; }
	if (hasReminders(date))
		{ link.style.textDecoration="underline"; }
	if(isToday(date))
		{ link.style.border="1px solid black"; }

	if( (weekend!=undefined?weekend:isWeekend(date)) && (config.macros.date.weekendbg!="") )
		{ place.style.background = config.macros.date.weekendbg; }
	if(isHoliday(date)&&(config.macros.date.holidaybg!=""))
		{ place.style.background = config.macros.date.holidaybg; }
	if (hasCreateds(date)&&(config.macros.date.createdbg!=""))
		{ place.style.background = config.macros.date.createdbg; }
	if (hasModifieds(date)&&(config.macros.date.modifiedsbg!=""))
		{ place.style.background = config.macros.date.modifiedsbg; }
	if (store.tiddlerExists(linkto)&&(config.macros.date.linkedbg!=""))
		{ place.style.background = config.macros.date.linkedbg; }
	if (hasReminders(date)&&(config.macros.date.remindersbg!=""))
		{ place.style.background = config.macros.date.remindersbg; }
	if(isToday(date)&&(config.macros.date.todaybg!=""))
		{ place.style.background = config.macros.date.todaybg; }
}
//}}}

//{{{
function isToday(date) // returns true if date is today
	{ var now=new Date(); return ((now-date>=0) && (now-date<86400000)); }

function isWeekend(date) // returns true if date is a weekend
	{ return (config.macros.date.weekend[date.getDay()]); }

function isHoliday(date) // returns true if date is a holiday
{
	var longHoliday = date.formatString("0MM/0DD/YYYY");
	var shortHoliday = date.formatString("0MM/0DD");
	for(var i = 0; i < config.macros.date.holidays.length; i++) {
		var holiday=config.macros.date.holidays[i];
		if (holiday==longHoliday||holiday==shortHoliday) return true;
	}
	return false;
}
//}}}

//{{{
// Event handler for clicking on a day popup
function onClickDatePopup(e)
{
	if (!e) var e = window.event;
	var theTarget = resolveTarget(e);
	var popup = Popup.create(this);
	if(popup) {
		// always show dated tiddler link (or just date, if readOnly) at the top...
		if (!readOnly || store.tiddlerExists(this.date.formatString(this.linkformat)))
			createTiddlyLink(popup,this.date.formatString(this.linkformat),true);
		else
			createTiddlyText(popup,this.date.formatString(this.linkformat));
		addCreatedsToPopup(popup,this.date,this.format);
		addModifiedsToPopup(popup,this.date,this.format);
		addRemindersToPopup(popup,this.date,this.linkformat);
	}
	Popup.show(popup,false);
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
	return(false);
}
//}}}

//{{{
function indexCreateds() // build list of tiddlers, hash indexed by creation date
{
	var createds= { };
	var tiddlers = store.getTiddlers("title","excludeLists");
	for (var t = 0; t < tiddlers.length; t++) {
		var date = tiddlers[t].created.formatString("YYYY0MM0DD")
		if (!createds[date])
			createds[date]=new Array();
		createds[date].push(tiddlers[t].title);
	}
	return createds;
}
function hasCreateds(date) // returns true if date has created tiddlers
{
	if (!config.macros.date.createds) config.macros.date.createds=indexCreateds();
	return (config.macros.date.createds[date.formatString("YYYY0MM0DD")]!=undefined);
}

function addCreatedsToPopup(popup,when,format)
{
	var force=(store.isDirty() && when.formatString("YYYY0MM0DD")==new Date().formatString("YYYY0MM0DD"));
	if (force || !config.macros.date.createds) config.macros.date.createds=indexCreateds();
	var indent=String.fromCharCode(160)+String.fromCharCode(160);
	var createds = config.macros.date.createds[when.formatString("YYYY0MM0DD")];
	if (createds) {
		createds.sort();
		var e=createTiddlyElement(popup,"div",null,null,"created:");
		for(var t=0; t<createds.length; t++) {
			var link=createTiddlyLink(popup,createds[t],false);
			link.appendChild(document.createTextNode(indent+createds[t]));
			createTiddlyElement(popup,"br",null,null,null);
		}
	}
}
//}}}

//{{{
function indexModifieds() // build list of tiddlers, hash indexed by modification date
{
	var modifieds= { };
	var tiddlers = store.getTiddlers("title","excludeLists");
	for (var t = 0; t < tiddlers.length; t++) {
		var date = tiddlers[t].modified.formatString("YYYY0MM0DD")
		if (!modifieds[date])
			modifieds[date]=new Array();
		modifieds[date].push(tiddlers[t].title);
	}
	return modifieds;
}
function hasModifieds(date) // returns true if date has modified tiddlers
{
	if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();
	return (config.macros.date.modifieds[date.formatString("YYYY0MM0DD")]!=undefined);
}

function addModifiedsToPopup(popup,when,format)
{
	var force=(store.isDirty() && when.formatString("YYYY0MM0DD")==new Date().formatString("YYYY0MM0DD"));
	if (force || !config.macros.date.modifieds) config.macros.date.modifieds=indexModifieds();
	var indent=String.fromCharCode(160)+String.fromCharCode(160);
	var mods = config.macros.date.modifieds[when.formatString("YYYY0MM0DD")];
	if (mods) {
		mods.sort();
		var e=createTiddlyElement(popup,"div",null,null,"changed:");
		for(var t=0; t<mods.length; t++) {
			var link=createTiddlyLink(popup,mods[t],false);
			link.appendChild(document.createTextNode(indent+mods[t]));
			createTiddlyElement(popup,"br",null,null,null);
		}
	}
}
//}}}

//{{{
function indexReminders(date,leadtime) // build list of tiddlers with reminders, hash indexed by reminder date
{
	var reminders = { };
	if(window.findTiddlersWithReminders!=undefined) { // reminder plugin is installed
		// DEBUG var starttime=new Date();
		var t = findTiddlersWithReminders(date, [0,leadtime], null, null, 1);
		for(var i=0; i<t.length; i++) reminders[t[i].matchedDate]=true;
		// DEBUG var out="Found "+t.length+" reminders in "+((new Date())-starttime+1)+"ms\n";
		// DEBUG out+="startdate: "+date.toLocaleDateString()+"\n"+"leadtime: "+leadtime+" days\n\n";
		// DEBUG for(var i=0; i<t.length; i++) { out+=t[i].matchedDate.toLocaleDateString()+" "+t[i].params.title+"\n"; }
		// DEBUG alert(out);
	}
	return reminders;
}

function hasReminders(date) // returns true if date has reminders
{
	if (window.reminderCacheForCalendar)
		return window.reminderCacheForCalendar[date]; // use calendar cache
	if (!config.macros.date.reminders)
		config.macros.date.reminders = indexReminders(date,90); // create a 90-day leadtime reminder cache
	return (config.macros.date.reminders[date]);
}

function addRemindersToPopup(popup,when,format)
{
	if(window.findTiddlersWithReminders==undefined) return; // reminder plugin not installed

	var indent = String.fromCharCode(160)+String.fromCharCode(160);
	var reminders=findTiddlersWithReminders(when, [0,31],null,null,1);
	var e=createTiddlyElement(popup,"div",null,null,"reminders:"+(!reminders.length?" none":""));
	for(var t=0; t<reminders.length; t++) {
		link = createTiddlyLink(popup,reminders[t].tiddler,false);
		var diff=reminders[t].diff;
		diff=(diff<1)?"Today":((diff==1)?"Tomorrow":diff+" days");
		var txt=(reminders[t].params["title"])?reminders[t].params["title"]:reminders[t].tiddler;
		link.appendChild(document.createTextNode(indent+diff+" - "+txt));
		createTiddlyElement(popup,"br",null,null,null);
	}
	if (readOnly) return;	// omit "new reminder..." link
	var link = createTiddlyLink(popup,indent+"new reminder...",true); createTiddlyElement(popup,"br");
	var title = when.formatString(format);
	link.title="add a reminder to '"+title+"'";
	link.onclick = function() {
		// show tiddler editor
		story.displayTiddler(null, title, 2, null, null, false, false);
		// find body 'textarea'
		var c =document.getElementById("tiddler" + title).getElementsByTagName("*");
		for (var i=0; i<c.length; i++) if ((c[i].tagName.toLowerCase()=="textarea") && (c[i].getAttribute("edit")=="text")) break;
		// append reminder macro to tiddler content
		if (i<c.length) {
			if (store.tiddlerExists(title)) c[i].value+="\n"; else c[i].value="";
			c[i].value += "<<reminder";
			c[i].value += " day:"+when.getDate();
			c[i].value += " month:"+(when.getMonth()+1);
			c[i].value += " year:"+when.getFullYear();
			c[i].value += ' title:"Enter a title" >>';
		}
	};
}
//}}}
[[DatePlugin]] は様々な日付フォーマットを提供してくれる。
!!フォーマット ([[DatePlugin]] より)
!!!!!Examples
<<<
The current date: <<date>>
The current time: <<date today "0hh:0mm:0ss">>
Today's blog: <<date link today "DDD, MMM DDth, YYYY">>
Recent blogs/changes/reminders: <<date popup Y M D-1 "yesterday">> <<date popup today "today">> <<date popup Y M D+1 "tomorrow">>
The first day of next month will be a <<date Y M+1 1 "DDD">>
This tiddler (DatePlugin) was last updated on: <<date tiddler "DDD, MMM DDth, YYYY">>
The SiteUrl was last updated on: <<date tiddler:SiteUrl "DDD, MMM DDth, YYYY">>
This document was last saved on <<date filedate "DDD, MMM DDth, YYYY at 0hh:0mm:0ss">>
<<date 2006 07 24 "MMM DDth, YYYY">> will be a <<date 2006 07 24 "DDD">>
<<<
!!!!!書式
{{{
The current date: <<date>>
The current time: <<date today "0hh:0mm:0ss">>
Today's blog: <<date link today "DDD, MMM DDth, YYYY">>
Recent blogs/changes/reminders: <<date popup Y M D-1 "yesterday">> <<date popup today "today">> <<date popup Y M D+1 "tomorrow">>
The first day of next month will be a <<date Y M+1 1 "DDD">>
This tiddler (DatePlugin) was last updated on: <<date tiddler "DDD, MMM DDth, YYYY">>
The SiteUrl was last updated on: <<date tiddler:SiteUrl "DDD, MMM DDth, YYYY">>
This document was last saved on <<date filedate "DDD, MMM DDth, YYYY at 0hh:0mm:0ss">>
<<date 2006 07 24 "MMM DDth, YYYY">> will be a <<date 2006 07 24 "DDD">>
}}}

他にカレンダーに今日の枠が付く。これがけっこう大きい。

またカレンダーの日付クリックでプルダウンリストが開く、その日修正した tiddler などリストされる。ReminderMacros が入っていればその内容もリストされる。

カレンダーのプルダウンのリンクが見難いようであれば、以下のあたりを修正する。
{{{
.popup { background: #04b; border: 1px solid #04b; color: #ccc;} //upd krk
.popup a {color: #eee;} //upd krk
}}}
FrontPage
/***
|''Name:''|DirtyFlagMacro|
|''Source:''|http://tw.kuraku.net/tw.html#DirtyFlagMacro|
|''Author:''|kuraku|
|''License:''|http://creativecommons.org/licenses/by-sa/2.5/|
|''Version:''|0.1.6 (2007-11-29)|
|''~CoreVersion:''|2.1.3|
|''Overrides:''|TiddlyWiki.prototype.setDirty|

!!Description
TW を編集中かどうかを、TiddlyWiki.dirty をチェックしてマーク表示できるマクロ。
「save 忘れを防ぐ・余計な save を減らす」ことができるはずである。

''オススメ:'' [[HoverMenu]] と使用するととても便利。

!!Examples
{{{
TW DirtyFlag is: <<dirtyflag>>
}}}
TW DirtyFlag is: <<dirtyflag>>

!!Configureration
[[DirtyFlagMacroConfig]] を作成することにより、マークの書式が変更できる。
{{{
config.macros.dirtyflag.flagT = "#";
config.macros.dirtyflag.flagF = "";
config.macros.dirtyflag.style = "color: #00f; font-size: 1.2em;";
}}}

!!History
*2007.11.29
**improved content of source and comment.
*2007.11.19 コメントのミス修正
*2007.08.13 mark のセット部分ロジックの見直し
*2007.07.17 IE での表示に問題があり対応。(IE6 のみで検証)

!!Source
***/
/*{{{*/
version.extensions.dirtyflag = { 
	major: 0, minor: 1, revision: 6, date: new Date(2007,11,29),
	source: "http://kuraku.net/tw/tw.html#DirtyFlagMacro"
};

config.macros.dirtyflag = {};
config.macros.dirtyflag.flagT = "*";
config.macros.dirtyflag.flagF = "";
config.macros.dirtyflag.style = "color: #f00;";

config.macros.dirtyflag.counter = 0;

config.macros.dirtyflag.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	var e = createTiddlyElement(place,"span","dirtyFlag_" + this.counter);
	this.counter++;

	e.setAttribute("refresh","macro");
	e.setAttribute("macroName","dirtyflag");
	e.style.cssText = config.macros.dirtyflag.style;
	this.changeMark();
};

config.macros.dirtyflag.changeMark = function() {
	// get dirtyflag
	var dirty = ((store && store.isDirty && store.isDirty()) ||
				 (story && story.areAnyDirty && story.areAnyDirty()));

	// change dirtyflag mark
	var dirtyFg = (dirty===true)?this.flagT:this.flagF;
	for(var i=0; i<this.counter; i++){
		var dt = document.getElementById("dirtyFlag_" + i);
		if(dt){
			dt.innerHTML = dirtyFg;
		}
	}
};

TiddlyWiki.prototype.setDirty = function(dirty) {
	this.dirty = dirty;

	// added check & display
	config.macros.dirtyflag.changeMark();
};
/*}}}*/
/*{{{*/
config.macros.dirtyflag.style = "color: #f00; font-size: 1.6em;";
/*}}}*/
/***
|''Name:''|DirtyFlagStickyMacro|
|''Source:''|http://tw.kuraku.net/tw.html#DirtyFlagStickyMacro|
|''Author:''|kuraku|
|''License:''|http://creativecommons.org/licenses/by-sa/2.5/|
|''Version:''|0.1.0 (2008-01-24)|
|''~CoreVersion:''|2.1.3|
|''Overrides:''|TiddlyWiki.prototype.setDirty|
!!Description
Whether or not TW while compiling, checking TiddlyWiki.dirty, the macro which it can mark can indicate.
This macro is not use with IE. sorry.
!!History
*2008.01.24
**create on the basis DirtyFlagMacro 0.1.6
!!Source
***/
/*{{{*/
version.extensions.dirtyflagsticky = { 
	major: 0, minor: 1, revision: 0, date: new Date(2008,01,24),
	source: "http://tw.kuraku.net/tw.html#DirtyflagstickyMacro"
};

config.macros.dirtyflagsticky = {};
config.macros.dirtyflagsticky.flagT = "*";
config.macros.dirtyflagsticky.flagF = "";

config.macros.dirtyflagsticky.initexec = function(place,macroName,params,wikifier,paramString,tiddler) {
	var e=document.getElementById("dirtyflagsticky");
	if(e) e.parentNode.removeChild(e);
	if (config.browser.isIE) return; // cannot use IE

	e = createTiddlyElement(null,"span",null,null,config.macros.dirtyflagsticky.flagF);
	e.id = "dirtyflagsticky";
	e.title = "dirty-flag";

	var sty = e.style;
	sty.position = "fixed";
	sty.zIndex = "1001";
	sty.cursor = "default";

	/* custom display place */
	sty.top = ".2em";
	//sty.bottom = ".2em";
	//sty.right = ".2em";
	sty.left = ".2em";

	/* custom color / fontSize */
	sty.color = "#f00;";
	sty.fontSize = "12pt";

	document.body.insertBefore(e,null);
};

config.macros.dirtyflagsticky.changeMark = function() {
	// get dirtyflagsticky
	var dirty = ((store && store.isDirty && store.isDirty()) ||
				 (story && story.areAnyDirty && story.areAnyDirty()));

	// change dirtyflag mark
	var dirtyFg = (dirty===true)?this.flagT:this.flagF;
	var dt = document.getElementById("dirtyflagsticky");
	if(dt){
		dt.innerHTML = dirtyFg;
	}
};

TiddlyWiki.prototype.setDirty = function(dirty) {
	this.dirty = dirty;

	// added check & display
	config.macros.dirtyflagsticky.changeMark();
};

// create flag element
config.macros.dirtyflagsticky.initexec();
/*}}}*/
/***
''Usage:''
{{{
<<displaydiary [days count:default 3]>>
}}}
''Source:''
***/
/*{{{*/
config.macros.displaydiary = {};
config.macros.displaydiary.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
  var tiddlers = store.reverseLookup("tags","excludeLists",false,"title");
  var cnt = params[0]?params[0]:3;
  var dsptid = [];

  for(var t=tiddlers.length-1; t>=0; t--) {
    var diary = tiddlers[t];
    if(diary.title.match(/^\d\d\d\d\.\d\d\.\d\d/)) {
      dsptid.push(diary);
      cnt--;
    }
    if(cnt<=0)
      break;
  }

  for(var t=0; t<dsptid.length; t++) {
      var tid = dsptid[t];
      story.displayTiddler("bottom", tid.title);
  }
}
/*}}}*/
!!![[電気工学実験III|Ele ExpIII]]
!!![[電力発生工学I|Ele Gen]]
!!![[パワーエレクトロニクスI|PowerElectronics I]]
[[2012前期試験及び解答例|limited/EM/H24EM_Test_Answer.pdf]]
[[2012前期再試験及び解答例|limited/EM/H24EM_2ndTest_Answer.pdf]]
<!--{{{-->
<div align='right'><span class='toolbar' macro='toolbar toggleQuickEdit'></span>  
<span class='toolbar' macro='toolbar deleteTiddler guidejp saveCloseTiddler cancelCloseTiddler +saveTiddler -cancelTiddler'></span></div>
<div><span class='title' macro='view title'></span><span style='font-size: 0.8em; padding-left: 1em;' macro='includeSiteLink'></span></div>
<div class='editor' macro='edit title'></div>
<div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<div class='editor' macro='edit tags'></div>
<span class='toolbar' macro='tiddler QuickEditToolbar'></span>
<div class='editor' macro='edit text'></div>
<!-- add span with 'resizeEditor' macro anywhere in the edit template -->
<span macro='resizeEditor'></span>
<!--}}}-->
Bコース 3年次 後期

1.目的
 電気機器の特性を実測すること,および電力用半導体の基本特性,PWM制御等の実験を行いその原理の理解を深めることを目的とする。

2.授業計画
 1.変圧器の特性
 2.同期電動機の特性
 3.DCサーボモータの特性と速度制御
 4.永久磁石同期電動機の特性と可変速駆動
 
3.評価方法
 各テーマに関する実験報告書の内容,および報告書が締め切り期日までに提出されたか,実験中の質疑応答等を総合して評価する。

4.履修上の注意事項
 実験に取りかかる前に実験の目的と原理について説明を求めるので,あらかじめ予習が必要である。
 電気機器,パワーエレクトロニクスを修得していることが望ましい。

5.参考書・教科書
 1.電気工学実験Ⅲ実験書 (HPよりダウンロード)
 2.野中作太郎著:電気機器Ⅰ,Ⅱ(森北出版)
 3.堀 孝正編著:パワーエレクトロニクス(オーム社)
 4.相良節夫:基礎電気制御(森北出版)

*テキスト
[[EX3_textH17.pdf|limited/exp3/EX3_textH17.pdf]]
*日程表
[[Aコース (pdf)|limited/exp3/LIST_H17A.pdf]] 
[[Bコース (pdf)|limited/exp3/LIST_H17B.pdff]]

テキストは各自ダウンロードすること
Aコース 3年次 前期
平成17年度にて終了
機械知能Bコース 4年次 前期

!2008年度詳細
[[Electrical Control 2008|Electrical Control 2008]]

!!!テキスト
森北出版 川田,西岡:
''[[MATLAB/~SImulinkによるわかりやすい制御工学|http://www.morikita.co.jp/mokuji/9172.html]]
[[サポートページ|http://web.maizuru-ct.ac.jp/control/kawata/study/book/book_page.html]]

!!!シミュレーションソフトウェア
[[PSIMの紹介]]
[[Scilabの紹介]]@@color(red):''NEW''@@

!!!授業計画
# 制御とその方式について
# 静的システムと動的システム
# ラプラス変換による電気システムのモデル化
# ラプラス変換による力学システムのモデル化
# 一次系の過渡特性と定常特性
# 高次系の過渡特性と定常特性
# s領域でのフィードバックシステムの安定性判別
# 根軌跡の性質と安定性解析
# 定常特性と定常偏差
# 標準型PID制御装置の設計
# 改良型PID制御装置の設計
# 周波数応答と周波数特性
# 周波数領域でのフィードバックシステムの安定性判別
# システムの状態空間モデル
# 試験

/%
!!!出席状況

[[2007年出席表|limited/EleCont/EleContH19B.html]]
%/
!H19年度電気制御I
''下の資料にはパスワードによるアクセス制限がかかっています''

!!!資料
初めに [[第1回授業内容|limited/EleCont/sec0/intro2007.pdf]]
第1章 [[第1章 はじめに|limited/EleCont/sec1/section1.pdf]]
第2章 [[第2章 動的システムのモデル|limited/EleCont/sec2/section2.pdf]]
第3章 [[第3章 伝達関数の過渡特性と定常特性_1|limited/EleCont/sec3/section3_1.pdf]]
第3章 [[第3章 伝達関数の過渡特性と定常特性_2|limited/EleCont/sec3/section3_2.pdf]]
第4章 [[第4章 s領域での制御系解析/設計|limited/EleCont/sec4/section4.pdf]]
第5章 [[第5章 s領域での制御系設計(PID制御)|limited/EleCont/sec5/section5.pdf]]

!!! Scilab 計算例
第2章 [[第2章|limited/EleCont/sec2/sec2.lzh]]
/%
第3章 
第4章 
%/

!!再試!解答例
[[再試験問題解答例|limited/EleCont/ecH19再試解答例.pdf]]

/%
!!!出席状況
[[2007年出席表|limited/EleCont/EleContH19B.html]]

!!!解答例
[[試験問題解答例|limited/EleCont/ecH19_web.pdf]]
%/
!H19年度電気制御I
''下の資料の一部にはパスワードによるアクセス制限がかかっています''

!!!資料
初めに [[第1回授業内容|limited/EleCont/sec0/intro2008.pdf]]
第1章 [[第1章 はじめに|limited/EleCont/sec1/section1.pdf]]
第2章 [[第2章 動的システムのモデル|limited/EleCont/sec2/section2.pdf]]
第3章 [[第3章 伝達関数の過渡特性と定常特性_1|limited/EleCont/sec3/section3_1.pdf]]
第3章 [[第3章 伝達関数の過渡特性と定常特性_2|limited/EleCont/sec3/section3_2.pdf]]
第4章 [[第4章 s領域での制御系解析/設計|limited/EleCont/sec4/section4.pdf]]
第5章 [[第5章 s領域での制御系設計(PID制御)|limited/EleCont/sec5/section5.pdf]]
/%
%/

!!! Scilab 計算例
/%
第2章 [[第2章|limited/EleCont/sec2/sec2.lzh]]
第3章 
第4章 
%/

/%
!!!出席状況
[[2008年出席表|limited/EleCont/MechContH20B.html]]

!!!解答例
[[2008年|limited/EleCont/ecH20qa.pdf]]
%/
!電気電子工学科 第3年次 前期(第1クォーター) 選択必修 2単位
電気機器 Electrical Machinery

担当教員  花本 剛士

!!授業の資料がある場合は @@[[LiveCampus|http://horyu.jimut.kyutech.ac.jp/kit/livecamp.nsf/LC_Menu?OpenAgent]]@@にアップロードします。


!概要
*背景
電気機器は,電気エネルギーを機械エネルギーに機械エネルギーを電気エネルギーに,また電気エネルギーを形態の異なる電気エネルギーに変換する機器であり,家庭の設備,家庭電化製品から,すべての工場,発電変電送電分野に至るまでほとんどの場所で使用されており,電気機器の概要を知ることは電気関連の技術者に必要な常識的知識である。また,将来この分野を専門とする場合の,機器の設計製作設置に関する基礎知識でもある。
*目的
電気機器の基礎原理,変圧器,直流機,交流機(同期機,誘導機)についての基礎的事項を修得する。ファラデーの法則に基づく誘導起電力,磁場を流れる電流にはたらく力を定量的に示し,各電気機器の構造,動作原理,特性および実際の応用について学ぶ。
*位置づけ
電気機器は電気エネルギー関連分野においてその機器を取り扱う学問の中でも最も基礎的な学問であり,その理解と十分な基礎力を身につけることは,電気・電子系技術者として必須と考えられる。(該当する学習教育目標:C)

!キーワード
 直流機,同期機,変圧器,誘導機,電気機器の損失・効率
!到達目標
*各電気機器の構造,動作原理および特性を理解できる。
*実際に則した事例に対して生じる現象を定量的に理解し,また条件の変化に対する予測ができる。
*各電気機器について構造と原理を説明でき,与えられた条件から諸特性の計算ができる。

!授業計画
以下の項目についての講義を行う。
第1回	電気機器学序説
第2回	直流機の構造と原理
第3回	直流発電機の特性
第4回	直流電動機の特性と運転
第5回	同期機の構造と原理
第6回	同期機の等価回路
第7回	同期発電機の特性
第8回	同期電動機の原理と特性
第9回	変圧器の構造と原理
第10回	変圧器の等価回路
第11回	変圧器の特性
第12回	誘導電動機の構造と原理
第13回	誘導電動機の等価回路
第14回	誘導電動機の特性と運転
第15回	まとめ
第16回	試験

!評価方法
 期末試験で評価する。60点以上を合格とする。

!履修上の注意事項
 電気回路における交流理論および電磁気学における磁界,磁束,誘導起電力などの理解が必要である。講義形式で行うが,進度に応じて演習問題を課しレポートとして提出させる。必ず自分の力で解くとともに,提出レポートであることを念頭において第三者にも解りやすい,論旨が明快なレポート作成を行うこと。
記載の教科書・参考書以外にも電気機器および電気機器演習など,これらの名称の付く専門書はほとんど大差なく参考書と考えてよい。図書館にそろえてあるので予習復習時に適宜参照されたい。講義内容を十分理解するには,レポート課題に加え,適宜演習問題集を利用して必ず自分の力で解くこと。


!教科書・参考書
*教科書
#多田隈進・石川芳博・常広譲: 電気機器学基礎論(電気学会) 542/T-24
*参考書
#野中作太郎: 電気機器I,電気機器II(森北出版) 542/N-3/1, 2
#深尾正・新井芳明: 最新電気機器入門(実教出版)542/F-6

!H18年度後期
''下の資料にはパスワードによるアクセス制限がかかっています''
''資料の一部から図を削除しています''

!!!資料
初めに [[第1回授業内容|limited/energy/Energy_S0H18.pdf]]
第1章  [[第1章内容|limited/energy/Energy_Sec1UP.pdf]]
第2章  [[第2章内容 その1|limited/energy/Energy_Sec2_1UP.pdf]] [[第2章内容 その2|limited/energy/Energy_Sec2_2UP.pdf]]
第3章 [[第3章内容|limited/energy/Energy_Sec3UP.pdf]]
第4章 [[第4章内容|limited/energy/Energy_Sec4UP.pdf]]
第5章 [[第5章内容|limited/energy/Energy_Sec5UP.pdf]]
第6章 [[第6章内容|limited/energy/Energy_Sec6UP.pdf]]

第2章例題  [[第2章例題内容|limited/energy/Energy_Sec2_example.pdf]]

!!!出席状況
[[2006年|limited/energy/EnergyH18.html]]
!H19年度後期
''下の資料にはパスワードによるアクセス制限がかかっています''
''資料の一部から図を削除しています''

!!!資料
初めに [[第1回授業内容|limited/energy/Energy_S0H19.pdf]]
第1章  [[第1章内容|limited/energy/Energy_Sec1UP.pdf]]
第2章  [[第2章内容 その1|limited/energy/Energy_Sec2_1UP.pdf]] [[第2章内容 その2|limited/energy/Energy_Sec2_2UP.pdf]]
第3章 [[第3章内容|limited/energy/Energy_Sec3UP.pdf]]
第4章 [[第4章内容|limited/energy/Energy_Sec4UP.pdf]]
/%
第1章  [[第1章内容|limited/energy/Energy_Sec1UP.pdf]]
第2章  [[第2章内容 その1|limited/energy/Energy_Sec2_1UP.pdf]] [[第2章内容 その2|limited/energy/Energy_Sec2_2UP.pdf]]
第3章 [[第3章内容|limited/energy/Energy_Sec3UP.pdf]]
第4章 [[第4章内容|limited/energy/Energy_Sec4UP.pdf]]
第5章 [[第5章内容|limited/energy/Energy_Sec5UP.pdf]]
第6章 [[第6章内容|limited/energy/Energy_Sec6UP.pdf]]
第2章例題  [[第2章例題内容|limited/energy/Energy_Sec2_example.pdf]]
%/

!!!資料
レポート  [[レポートその1|limited/energy/H19report_1.pdf]]
レポート  [[レポートその2|limited/energy/H19report_2.pdf]]
!!!出席状況
[[2007年|limited/energy/EnergyH19.htm]]
エネルギー基礎工学
/% !2007年度詳細 
 [[Energy2007|Energy 2007]]
%/
!Aコース2年後期
電気工学コース 第2年次 後学期 必修 2単位
担当教員 
匹田政幸 居室:電気別館304室 
花本剛士 生命体工学研究科 

1.目的
●授業の概要
 本科目では,エネルギー工学の基礎,エネルギーとパワー,エネルギー資源・環境 エネルギーの形態とエネルギー変換の基礎,および種々のエネルギーの電気エネルギーへの変換理論について講義を行う。さらに,エネルギー資源の現状と将来,現行の主流である既存発電技術の基礎・原理,エネルギー変換に関する最新の技術,利用状況および電気エネルギー貯蔵技術について講義を行う。

●授業の位置付け
 21世紀において人類が繁栄を維持して高度な社会を築くためには,現在の高度情報化社会のインフラを支えている石油・天然ガスなどの化石燃料による火力発電や原子力エネルギーの他に,太陽光発電,風力などの自然エネルギーや燃料電池などのいわゆる新しいエネルギーがますます増えてくることが予想されている。一方,エネルギーの大量消費が地球環境に様々な影響を及ぼす懸念も指摘されている。以上の背景より,本講義では,エネルギー資源・環境の諸問題,および種々のエネルギーの電気エネルギーへの変換理論について理解する。
 本科目に引き続き,「電気エネルギー伝送工学」にて送配電・変電技術など電気エネルギー輸送を支えている諸技術や基本原理について学ぶ。また,「電力システム工学」にて信頼性の高い効率的な電力系統運用法およびそれらの基本原理について学習することを推奨する。

●到達目標
 エネルギー資源・環境の諸問題の理解,および種々のエネルギーの電気エネルギーへの変換理論について理解することを目的とする。さらに,エネルギー資源の現状と将来,現行の主流である既存発電技術の基礎・原理の理解,エネルギー変換に関する最新の技術,利用状況の理解および電気エネルギー貯蔵技術について基礎的事項の理解を到達目標とする。
2.授業内容
第1回 エネルギー工学の基礎,エネルギー資源・環境
第2回 水力発電1 
第3回 水力発電2, 
第4回 火力発電1,熱力学の基礎
第5回 火力発電2,熱機関サイクル
第6回 火力発電3,火力発電プラント, 
第7回 演習:水力発電,火力発電
第8回 原子力発電1,原子核エネルギー
第9回 原子力発電2,原子力発電プラント
第10回 燃料電池発電1
第11回 燃料電池発電2,風力発電1
第12回 風力発電2 
第13回 太陽電池発電,
第14回 その他エネルギ-
第15回 期末試験

3.教育方法
 講義形式。適宜、レポート課題の提出,演習を2回

4.評価方法
 期末試験(80%)および演習やレポートの結果(20%)で評価する。

5.履修上の注意事項
 教科書には記述がない重要項目や最新データを補足するためのハンドアウト(補助的資料)を配布するが,本資料もテキストの一部とする。講義中に演習をできる限り行う予定であるが,時間の制約上,多くは各自の自習時間に行い,課題レポートとして提出する。
将来,電気事業主任技術者の資格を希望するものは本講義を履修する必要がある。

6.教科書・参考書
●教科書 
「エネルギー変換工学」柳父 悟,西川尚男 東京電機大
●参考書「電力工学」 江間 敏,甲斐隆章  コロナ社
2) 「電気エネルギー工学」赤崎正則,原雅則 朝倉書店
3) 「発電・変電」改訂版   道上 勉   電気学会
4) 「エネルギー工学序論」  関根泰次   電気学会
5)「基礎エネルギー工学」  桂井 誠  数理工学社  

実験にてモータの制御を行う場合に必要な,開発環境をRTLinuxとFPGAを使って構築をしている。当初は1台のみであったが,最近本研究室にある数台の実験装置に対して全て同じような開発環境を構築することができるようになってきた。
そこで,モータの種類,基本構成の違いや定数の違いをまとめて統一的な開発環境を作り上げることを目標にしている。そうすることで必要な制御を必要な装置ですぐに実現することができる。研究室内で各グループが行っている結果を他の装置にても適用し有効性を確認することで全体のレベルを上げることができると考えている。
最終的には,システム同定を組み込み未知システムに対しても即座に所望の制御系を組むことができるようなことを考えている。
/***
|Name:|ExtentTagButtonPlugin|
|Description:|Adds a New tiddler button in the tag drop down|
|Version:|3.2 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#ExtendTagButtonPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{

window.onClickTag_mptw_orig = window.onClickTag;
window.onClickTag = function(e) {
	window.onClickTag_mptw_orig.apply(this,arguments);
	var tag = this.getAttribute("tag");
	var title = this.getAttribute("tiddler");
	// Thanks Saq, you're a genius :)
	var popup = Popup.stack[Popup.stack.length-1].popup;
	createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");
	wikify("<<newTiddler label:'New tiddler' tag:'"+tag+"'>>",createTiddlyElement(popup,"li"));
	return false;
}

//}}}

<html>
<img style="width: 250px; " alt="" src="Picture/FPGAexp2011_ss.jpg" align="">
<img style="width: 250px; " alt="" src="Picture/FPGALinSys_ss.jpg" align="">
<img style="width: 150px; " alt="" src="Picture/ACMRes_ss.jpg" align="">
</html>

RTLinuxを用いた制御環境の充実がソフトウェア面での開発環境とすれば,FPGAを用いたインターフェイス回路の開発は,ハードウェアの開発環境の充実となる。

FPGAは書き換え可能な高密度ロジック素子で,従来の汎用ICの組み合わせによる回路開発を1チップで実現できるもので,近年その利用が急速に増加している。従来のソフトウェアでの制御に替わってディジタルハードウェアでの制御系の構築が可能となる。その結果,小型化,省電力化,高速化,高精度化などのメリットが出てくると考えられる。
 具体的には,モータの制御をCPUを用いずに全てディジタルハードウェアで実現することや,高速応答が必要な回路をハードウェア化し,従来よりも高精度なトルク制御が可能なモータ制御系をPWMアンプの性能限界を調査しながら構築する。
! @@color(red):''2017''@@  [[研究室案内 |research ad_2017]]   <== @@click !@@

 [[2016オープンキャンパス用ポスター|OpenCampasLabPoster]] 
 [[研究室紹介ビデオ|http://www.lsse.kyutech.ac.jp/movie/hanamoto.html]]
 [[Sway example]]

/%
! @@color(red):''2016 03 28 New''@@ 
! [[研究室配属決定者(M1/B4)へ|forM1B4_2016]]   <== @@click !@@

! @@color(red):''2016 03 28 New''@@@@color(red):'戸畑電気電子新B4の学生向け''@@ 
! [[研究室配属決定者へ|forM1B4_2016]]   <== @@click !@@
%/

! [[研究|Research]]


[[メンバー|Members]]
[[授業|Class]]
----

[[HANAMOTO Lab.|http://www.life.kyutech.ac.jp/~hanamoto]]
[[English version|http://www.life.kyutech.ac.jp/~hanamoto/index_e.html]]
===^^<<displaydiary 5>>
<html>
<body>
<CENTER><TABLE>
<TR>
  <TD>あなたは累計</TD>
  <TD>
    <TABLE BORDER="1">
    <TR>
      <TD><img src="count/dayx.cgi?gif"></TD>
    </TR>
    </TABLE>
  </TD>
  <TD>番目の訪問者です。</TD>
</TR>
</TABLE>
(本日<img src="count/dayx.cgi?today">番目のアクセスです。
昨日は<img src="count/dayx.cgi?yes">回のアクセスがありました)
<br>
Copyright &copy; <strong>KENT-WEB</strong> &amp;
<strong><a href="http://www.kent-net.jp/">KENT-NET</a></strong> 1997-2008.</span><br />
</CENTER>
</body>
</html>

[[集計一覧|http://www.life.kyutech.ac.jp/~hanamoto/count/dayxmgr.cgi]]
//{{{
config.macros.googlesearch = {};
config.macros.googlesearch.handler = function(place,macroName,params,wikifier,paramString,tiddler){
var searchvalue = params[0]?params[0]:tiddler.title;
var gform = "";
gform += "<html>\n";
gform += "<FORM method=\"GET\" action=\"http://www.google.co.jp/search\" target=\"_blank\">\n";
gform += "	<label for=\"search\" accesskey=\"4\">Google Search:</label>\n";
gform += "	<INPUT type=\"text\" name=\"q\" size=\"20\" maxlength=\"255\" value=\""+searchvalue+"\">\n";
gform += "	<INPUT type=\"submit\" name=\"btnG\" value=\"検索\">\n";
gform += "	<INPUT type=\"hidden\" name=\"hl\" value=\"ja\">\n";
gform += "	<INPUT type=\"hidden\" name=\"num\" value=\"20\">\n";
gform += "	<INPUT type=\"hidden\" name=\"ie\" value=\"UTF-8\">\n";
gform += "	<INPUT type=\"hidden\" name=\"oe\" value=\"UTF-8\">\n";
gform += "</FORM>\n";
gform += "</html>\n";
var g = createTiddlyElement(place,"span");
g.innerHTML = gform;
}
//}}}
/***
|Name|GotoPlugin|
|Source|http://www.TiddlyTools.com/#GotoPlugin|
|Version|1.4.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|view any tiddler by entering it's title - displays list of possible matches|

''View a tiddler by typing its title and pressing //enter//.''  Input just enough to uniquely match a single tiddler title and ''press //enter// to auto-complete the title for you!!''  If multiple titles match your input, a list is displayed.  You can scroll-and-click (or use arrows+enter) to select/view a tiddler, or press //escape// to close the listbox to resume typing.  When the listbox is ''//not//'' being displayed, press //escape// to clear the current text input and start over.

Note: ''At any time, you can move the focus directly to the text input field by using the ~ALT-G keyboard shortcut.''
!!!!!Examples
<<<
| //IMPORTANT NOTE:// ''As of version 1.4.0 (2007.04.25), the {{{<<goto>>}}} macro has been renamed to {{{<<gotoTiddler>>}}}'' |
syntax: {{{<<gotoTiddler quiet insert inputstyle liststyle>>}}}
All parameters are optional.
* ''quiet'' prevents //automatic// display of the list as each character is typed.  To view the list when ''quiet'', use //down// or //enter//.
* ''insert'' causes the selected tiddler title to be inserted into the tiddler source currently being edited (use with EditTemplate)
* ''inputstyle'' and ''liststyle'' are CSS declarations that modify the default input and listbox styles.  Note: styles containing spaces must be surrounded by ({{{"..."}}} or {{{'...'}}}) or ({{{[[...]]}}}).
{{{<<gotoTiddler>>}}}
<<gotoTiddler>>
{{{<<gotoTiddler quiet>>}}}
<<gotoTiddler quiet>>
{{{<<goto width:20em width:20em>>}}}
<<gotoTiddler width:20em width:20em>>

You can also invoke the macro with the "insert" keyword.  When used in the [[EditTemplate]], like this:
{{{
<span macro="gotoTiddler insert"></span>
}}}
it allows you to type/select a tiddler title, and instantly insert a link to that title (e.g. {{{[[TiddlerName]]}}}) into the tiddler source being edited.
<<<
!!!!!Configuration
<<<
The following ~TiddlyWiki search options (see AdvancedOptions) are applied when matching tiddler titles:
><<option chkRegExpSearch>> use regular expressions (text patterns)
><<option chkCaseSensitiveSearch>> use case sensitive matching
You can also create a tiddler tagged with <<tag systemConfig>> to control listing of tiddlers/shadows/tags, as well as the maximum height of the listbox.  //The default values are shown below://
//{{{
config.macros.gotoTiddler.includeTiddlers=true;
config.macros.gotoTiddler.includeShadows=true;
config.macros.gotoTiddler.includeTags=true;
config.macros.gotoTiddler.listMaxSize=10;
//}}}
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''GotoPlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revisions
<<<
''2007.04.25 [1.4.0]'' renamed macro from "goto" to "gotoTiddler".  This was necessary to avoid a fatal syntax error in Opera (and other browsers) that require strict adherence to ECMAScript 1.5 standards which defines the identifier "goto" as "reserved for FUTURE USE"... *sigh*
''2007.04.21 [1.3.2]'' in html definition, removed DIV around droplist (see 1.2.6 below).  It created more layout problems then it solved. :-(
''2007.04.01 [1.3.1]'' in processItem(), ensure that correct textarea field is found by checking for edit=="text" attribute
''2007.03.30 [1.3.0]'' tweak SideBarOptions shadow to automatically add {{{<<goto>>}}} when using default sidebar content
''2007.03.30 [1.2.6]'' in html definition, added DIV around droplist to fix IE problem where list appears next to input field instead of below it.  
''2007.03.28 [1.2.5]'' in processItem(), set focus to text area before setting selection (needed for IE to get correct selection 'range')
''2007.03.28 [1.2.4]'' added prompt for 'pretty text' when inserting a link into tiddler content
''2007.03.28 [1.2.3]'' added local copy of core replaceSelection() and modified for different replace logic
''2007.03.27 [1.2.2]'' in processItem(), use story.getTiddlerField() to retrieve textarea control
''2007.03.26 [1.2.1]'' in html, use either 'onkeydown' (IE) or 'onkeypress' (Moz) event to process <esc> key sooner, to prevent <esc> from 'bubbling up' to the tiddler (which will close the current editor).
''2007.03.26 [1.2.0]'' added support for optional "insert" keyword param. When used in [[EditTemplate]], (e.g. {{{<span macro="goto insert"></span>}}}) it triggers alternative processing: instead of displaying the selected tiddler, that tiddler's title is inserted into a tiddler's textarea edit field surrounded by {{{[[...]]}}}.
''2006.05.10 [1.1.2]'' when filling listbox, set selection to 'heading' item... auto-select first tiddler title when down/enter moves focus into listbox
''2006.05.08 [1.1.1]'' added accesskey ("G") to input field html (also set when field gets focus).  Also, inputKeyHandler() skips non-printing/non-editing keys. 
''2006.05.08 [1.1.0]'' added heading to listbox for better feedback (also avoids problems with 1-line droplist)
''2006.05.07 [1.0.0]'' list matches against tiddlers/shadows/tags.  input field auto-completion... 1st enter=complete matching input (or show list)... 2nd enter=view tiddler.  optional "quiet" param controls when listbox appears.
''2006.05.06 [0.5.0]'' added handling for enter (13), escape(27), and down(40) keys.   Change 'ondblclick' to 'onclick' for list handler to view tiddlers (suggested by Florian Cauvin - prevents unintended trigger of tiddler editor).  shadow titles inserted into list instead of appended to the end.
''2006.05.05 [0.0.0]'' started
<<<
!!!!!Credits
>This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
!!!!!Code
***/
//{{{
version.extensions.gotoTiddler = {major: 1, minor: 4, revision: 0, date: new Date(2007,4,25)};

// automatically tweak shadow SideBarOptions to add "sendTiddler" toolbar command (following "editTiddler")
config.shadowTiddlers.SideBarOptions=config.shadowTiddlers.SideBarOptions.replace(/<<search>>/,"{{button{goto}}}\n<<gotoTiddler>><<search>>");

config.macros.gotoTiddler= { 
	handler:
	function(place,macroName,params) {
		var quiet=(params[0] && params[0]=="quiet"); if (quiet) params.shift();
		var insert=(params[0] && params[0]=="insert"); if (insert) params.shift();
		var instyle=params.shift(); if (!instyle) instyle="";
		var liststyle=params.shift(); if (!liststyle) liststyle="";
		var keyevent=window.event?"onkeydown":"onkeypress";
		createTiddlyElement(place,"span").innerHTML
			=this.html.replace(/%keyevent%/g,keyevent).replace(/%insert%/g,insert).replace(/%quiet%/g,quiet).replace(/%instyle%/g,instyle).replace(/%liststyle%/g,liststyle);
	},

	html:
	'<form onsubmit="return false" style="display:inline;margin:0;padding:0">\
		<input name=gotoTiddler type=text autocomplete="off" accesskey="G" style="%instyle%"\
			title="enter a tiddler title"\
			onfocus="this.select(); this.setAttribute(\'accesskey\',\'G\');"\
			%keyevent%="return config.macros.gotoTiddler.inputEscKeyHandler(event,this,this.form.list);"\
			onkeyup="return config.macros.gotoTiddler.inputKeyHandler(event,this,this.form.list,%quiet%,%insert%);">\
		<select name=list style="%liststyle%;display:none;position:absolute"\
			onchange="if (!this.selectedIndex) this.selectedIndex=1;"\
			onblur="this.style.display=\'none\';"\
			%keyevent%="return config.macros.gotoTiddler.selectKeyHandler(event,this,this.form.gotoTiddler,%insert%);"\
			onclick="return config.macros.gotoTiddler.processItem(this.value,this.form.gotoTiddler,this,%insert%);">\
		</select>\
	</form>',
	
	getItems:
	function() {
		var items=[];
		var tiddlers=store.reverseLookup("tags","excludeSearch",false,"title");
		if (this.includeTiddlers) for(var t=0; t<tiddlers.length; t++) items.push(tiddlers[t].title);
		if (this.includeShadows) for (var t in config.shadowTiddlers) items.pushUnique(t);
		if (this.includeTags) { var tags=store.getTags(); for(var t=0; t<tags.length; t++) items.pushUnique(tags[t][0]); }
		return items;
	},
	includeTiddlers: true, includeShadows: true, includeTags: true,

	getItemSuffix:
	function(t) {
		if (store.tiddlerExists(t)) return "";  // tiddler
		if (store.isShadowTiddler(t)) return " (shadow)"; // shadow
		return " (tag)"; // tag 
	},

	keyProcessed:
	function(ev) { // utility function: exits handler and prevents browser from processing the keystroke
		ev.cancelBubble=true; // IE4+
		try{event.keyCode=0;}catch(e){}; // IE5
		if (window.event) ev.returnValue=false; // IE6
		if (ev.preventDefault) ev.preventDefault(); // moz/opera/konqueror
		if (ev.stopPropagation) ev.stopPropagation(); // all
		return false;
	},

	inputEscKeyHandler:
	function(event,here,list) {
		var key=event.keyCode;
		// escape... hide list (2nd esc=clears input)
		if (key==27) {
			if (list.style.display=="none")
				here.value=here.defaultValue;
			list.style.display="none";
			return this.keyProcessed(event);
		}
		return true; // key bubbles up
	},

	inputKeyHandler:
	function(event,here,list,quiet,insert) {
		var key=event.keyCode;
		// non-printing chars... bubble up, except: backspace=8, enter=13, space=32, down=40, delete=46
		if (key<48) switch(key) { case 8: case 13: case 32: case 40: case 46: break; default: return true; }
		// blank input... if down/enter... fall through (list all)... else, hide list
		if (!here.value.length && !(key==40 || key==13))
			{ list.style.display="none"; return this.keyProcessed(event); }
		// find matching items...
		var pattern=config.options.chkRegExpSearch?here.value:here.value.escapeRegExp();
		var re=new RegExp(pattern,config.options.chkCaseSensitiveSearch?"mg":"img");
		var found = []; var items=this.getItems();
		for(var t=0; t<items.length; t++) if(items[t].search(re)!=-1) found.push(items[t]);
		// matched one item... enter... not *exact* match... autocomplete input field
		if (found.length==1 && quiet && key==13 && here.value!=found[0])
			{ list.style.display="none"; here.value=found[0]; return this.keyProcessed(event); }
		// no match/exact match... enter... create/show it
		if (found.length<2 && key==13)
			return this.processItem(found.length?found[0]:here.value,here,list,insert);
		// quiet/no match... hide list...
		list.style.display=(!quiet && found.length)?"block":"none";
		// no matches... key bubbles up
		if (!found.length) return true;
		// down/enter... show/move to list...
		if (key==40 || key==13)  { list.style.display="block"; list.focus(); }
		// list is showing... fill list...
		if (list.style.display!="none") {
			while (list.length > 0) list.options[0]=null; // clear list...
			found.sort();
			list.options[0]=new Option(found.length==1?this.listMatchMsg:this.listHeading.format([found.length]),"",false,false);
			for (var t=0; t<found.length; t++)  // fill list...
				list.options[t+1]=new Option(found[t]+this.getItemSuffix(found[t]),found[t],false,false);
			list.size=(found.length<this.listMaxSize?found.length:this.listMaxSize)+1; // resize list...
			list.selectedIndex=(key==40 || key==13)?1:0;
		}
		return true; // key bubbles up
	},
	listMaxSize: 10,
	listHeading: 'Found %0 matching titles:',
	listMatchMsg: 'Press enter to open tiddler...',

	selectKeyHandler:
	function(event,list,editfield,insert) {
		if (event.keyCode==27) // escape... hide list, move to edit field
			{ editfield.focus(); list.style.display="none"; return this.keyProcessed(event); }
		if (event.keyCode==13 && list.value.length) // enter... view selected item
			{ this.processItem(list.value,editfield,list,insert); return this.keyProcessed(event); }
		return true; // key bubbles up
	},

	askForText: "Enter the text to display for this link",

	processItem:
	function(title,here,list,insert) {
		if (!title.length) return; here.value=title; list.style.display='none';
		if (insert) {
			var tidElem=story.findContainingTiddler(here); if (!tidElem) { here.focus(); return false; }
			var e=story.getTiddlerField(tidElem.getAttribute("tiddler"),"text");
			if (!e||e.getAttribute("edit")!="text") return false;
			var txt=prompt(this.askForText,title); if (!txt||!txt.length) { here.focus(); return false; }
			e.focus(); // put focus on target field before setting selection
			this.replaceSelection(e,"[["+txt+"|"+title+"]]"); // insert selected tiddler as a PrettyLink
		}
		else
			story.displayTiddler(null,title); // show selected tiddler
		return false;
	},

	replaceSelection:
	function (e,text) { // copied from 2.1.3 core and then tweaked
		if (e.setSelectionRange) {
			var oldpos = e.selectionStart;
			var isRange=e.selectionEnd-e.selectionStart;
			e.value = e.value.substr(0,e.selectionStart) + text + e.value.substr(e.selectionEnd);
			e.setSelectionRange( isRange?oldpos:oldpos+text.length, oldpos+text.length);
			var linecount = e.value.split('\n').length;
			var thisline = e.value.substr(0,e.selectionStart).split('\n').length-1;
			e.scrollTop = Math.floor((thisline-e.rows/2)*e.scrollHeight/linecount);
		}
		else if (document.selection) {
			var range = document.selection.createRange();
			if (range.parentElement() == e)	{
				var isCollapsed = range.text == "";
				range.text = text;
				 if (!isCollapsed) {
					range.moveStart('character', -text.length);
					range.select();
				}
			}
		}
	}
}
//}}}
研究室内で連絡用に使用している日記から,一部を抜き出して一般公開(?)することにしました。
書き込みはできません。

|>|>|>|>|>|>| !April |
| Sun | Mon | Tue | Wed | Thu | Fri | Sat |
|>|>|>|>|>|!|bgcolor(#DEDEAD): 1 |
|bgcolor(#DEDEAD): 2 | 3 |[[ 4|4 April 2006]] | 5 | 6 | 7 |bgcolor(#DEDEAD): 8 |
|bgcolor(#DEDEAD): 9 | 10 | 11 | 12 | [[13|13 April 2006]] | 14 |bgcolor(#DEDEAD): 15 |
|bgcolor(#DEDEAD): 16 | 17 | 18 | [[19|19 April 2006]] | 20 | 21 |bgcolor(#DEDEAD): 22 |
|bgcolor(#DEDEAD): 23 | 24 | 25 | 26 | 27 | 28 |bgcolor(#DEDEAD): 29 |
|bgcolor(#DEDEAD): 30 |>|>|>|>|>|!|

|>|>|>|>|>|>| !March |
| Sun | Mon | Tue | Wed | Thu | Fri | Sat |
|>|>|!| 1 | 2 | 3 |bgcolor(#DEDEAD): 4 |
|bgcolor(#DEDEAD): 5 | 6 | 7 | 8 | 9 | 10 |bgcolor(#DEDEAD): 11 |
|bgcolor(#DEDEAD): 12 | 13 | 14 | 15 | 16 | [[17|17 March 2006]] |bgcolor(#DEDEAD): 18 |
|bgcolor(#DEDEAD): 19 | 20 | 21 | 22 | 23 | 24 |bgcolor(#DEDEAD): 25 |
|bgcolor(#DEDEAD): 26 | 27 | 28 | 29 | 30 | 31 |!|
----
カレンダー作成用HP
http://zrenard.com/tiddlywiki/cal.php?
<html>
<img style="width: 200px; " alt="" src="Picture/XILINXS3E1600_ss.jpg" align="">
<img style="width: 250px; " alt="" src="Picture/Simpower_ss.jpg" align="">
</html>

 近年,電力用半導体によって電力変換を行うパワーエレクトロニクス機器においては,あらゆる産業分野から家庭用機器にいたるまで広範囲に渡って導入されており,大規模・複雑化してきている.これに伴い,より高性能・高機能化への要求が高まり,解析・設計・検証などにおけるシミュレーションの重要性が増している.

 一方で,ディジタル技術の著しい発展によりハードウェアを用いたリアルタイムシミュレーションが可能になってきており,そのためのモデリング・シミュレーション法の研究が盛んになっている.例えば,リアルタイムシミュレーションを行うためには,必要な精度を確保しかつ可能な限り簡易的なモデルを導く必要があり,それに沿ったモデリングの研究が行われたりしている.また,HILS(Hardware In the Loop Simulation)と呼ばれる一部を実機,一部をリアルタイムシミュレーションで構築し,システム全体の動作を研究することも行われている.そしてハードウェア記述言語を用いてパワーエレクトロニクス機器を記述しシミュレータと統合し汎用性を高める研究も行われている.例えば,制御器をハードウェア記述言語で記述しておくとシミュレーションで検証された制御系のモデルをハードウェアの実装にそのまま用いたりすることができる.
 本研究ではパワーエレクトロニクス機器とサーボモータのハイブリッドシステムによるハードウェアリアルタイムシミュレーションを行う.
/***
|Name:|HideWhenPlugin|
|Description:|Allows conditional inclusion/exclusion in templates|
|Version:|3.1 ($Rev: 3919 $)|
|Date:|$Date: 2008-03-13 02:03:12 +1000 (Thu, 13 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
For use in ViewTemplate and EditTemplate. Example usage:
{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}
{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}
***/
//{{{

window.hideWhenLastTest = false;

window.removeElementWhen = function(test,place) {
	window.hideWhenLastTest = test;
	if (test) {
		removeChildren(place);
		place.parentNode.removeChild(place);
	}
};


merge(config.macros,{

	hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( eval(paramString), place);
	}},

	showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !eval(paramString), place);
	}},

	hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.tags.containsAll(params), place);
	}},

	showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !tiddler.tags.containsAll(params), place);
	}},

	hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.tags.containsAny(params), place);
	}},

	showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !tiddler.tags.containsAny(params), place);
	}},

	hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.tags.containsAll(params), place);
	}},

	showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !tiddler.tags.containsAll(params), place);
	}},

	hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place);
	}},

	showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place);
	}},

	hideWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.title == params[0], place);
	}},

	showWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.title != params[0], place);
	}},

	'else': { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !window.hideWhenLastTest, place);
	}}

});

//}}}

<<top>>
<<toggleSideBar>>
<<jump j '' top>>
<<saveChanges>><<renameButton s 'Save TiddlyWiki'>><<upload http://tw.kuraku.net/store.cgi tw.html backup .>><<renameButton w 'Save To Web'>>
<<newTiddler>><<renameButton n>>
<<newJournal  "YYYY.0MM.0DD" "toRSS" "today">><<renameButton t>>
<<dirtyflag>>
/***
|Name|HoverMenuPlugin|
|Created by|SaqImtiaz|
|Location|http://lewcid.googlepages.com/lewcid.html#HoverMenuPlugin|
|Version|1.11|
|Requires|~TW2.x|
!Description:
Provides a hovering menu on the edge of the screen for commonly used commands, that scrolls with the page.

!Demo:
Observe the hovering menu on the right edge of the screen.

!Installation:
Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
To customize your HoverMenu, edit the HoverMenu shadow tiddler.

To customize whether the menu sticks to the right or left edge of the screen, and its start position, edit the HoverMenu configuration settings part of the code below. It's well documented, so don't be scared!

The menu has an id of hoverMenu, in case you want to style the buttons in it using css.

!Notes:
Since the default HoverMenu contains buttons for toggling the side bar and jumping to the top of the screen and to open tiddlers, the ToggleSideBarMacro, JumpMacro and the JumpToTopMacro are included in this tiddler, so you dont need to install them separately. Having them installed separately as well could lead to complications.

If you dont intend to use these three macros at all, feel free to remove those sections of code in this tiddler.

!To Do:
* rework code to allow multiple hovering menus in different positions, horizontal etc.
* incorporate code for keyboard shortcuts that correspond to the buttons in the hovermenu

!History:
*03-08-06, ver 1.11: fixed error with button tooltips
*27-07-06, ver 1.1 : added JumpMacro to hoverMenu
*23-07-06

!Code
***/

/***
start HoverMenu plugin code
***/
//{{{
config.hoverMenu={};
//}}}

/***
HoverMenu configuration settings
***/
//{{{
config.hoverMenu.settings={
 align: 'right', //align menu to right or left side of screen, possible values are 'right' and 'left' 
 x: 1, // horizontal distance of menu from side of screen, increase to your liking.
 y: 158 //vertical distance of menu from top of screen at start, increase or decrease to your liking
 };
//}}}

//{{{
//continue HoverMenu plugin code
config.hoverMenu.handler=function()
{
 var theMenu = createTiddlyElement(document.getElementById("contentWrapper"), "div","hoverMenu");
 theMenu.setAttribute("refresh","content");
 theMenu.setAttribute("tiddler","HoverMenu");
 var menuContent = store.getTiddlerText("HoverMenu");
 wikify(menuContent,theMenu);

 var Xloc = this.settings.x;
 Yloc =this.settings.y;
 var ns = (navigator.appName.indexOf("Netscape") != -1);
 function SetMenu(id)
 {
 var GetElements=document.getElementById?document.getElementById(id):document.all?document.all[id]:document.layers[id];
 if(document.layers)GetElements.style=GetElements;
 GetElements.sP=function(x,y){this.style[config.hoverMenu.settings.align]=x +"px";this.style.top=y +"px";};
 GetElements.x = Xloc;
 GetElements.y = findScrollY();
 GetElements.y += Yloc;
 return GetElements;
 }
 window.LoCate_XY=function()
 {
 var pY = findScrollY();
 ftlObj.y += (pY + Yloc - ftlObj.y)/15;
 ftlObj.sP(ftlObj.x, ftlObj.y);
 setTimeout("LoCate_XY()", 10);
 }
 ftlObj = SetMenu("hoverMenu");
 LoCate_XY();
};

window.old_lewcid_hovermenu_restart = restart;
restart = function()
{
 window.old_lewcid_hovermenu_restart();
 config.hoverMenu.handler();
};

setStylesheet(
"#hoverMenu .button, #hoverMenu .tiddlyLink {border:none; font-weight:bold; background:#18f; color:#FFF; padding:0 5px; float:right; margin-bottom:4px;}\n"+
"#hoverMenu .button:hover, #hoverMenu .tiddlyLink:hover {font-weight:bold; border:none; color:#fff; background:#000; padding:0 5px; float:right; margin-bottom:4px;}\n"+
"#hoverMenu .button {width:100%; text-align:center}"+
"#hoverMenu { position:absolute; width:7px;}\n"+
"\n","hoverMenuStyles");


config.macros.renameButton={};
config.macros.renameButton.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{

 if (place.lastChild.tagName!="BR")
 {
 place.lastChild.firstChild.data = params[0];
 if (params[1]) {place.lastChild.title = params[1];}
 }
};

config.shadowTiddlers["HoverMenu"]="<<top>>\n<<toggleSideBar>><<renameButton '>' >>\n<<jump j '' top>>\n<<saveChanges>><<renameButton s 'Save TiddlyWiki'>>\n<<newTiddler>><<renameButton n>>\n";
//}}}
//end HoverMenu plugin code

//Start ToggleSideBarMacro code
//{{{
config.macros.toggleSideBar={};

config.macros.toggleSideBar.settings={
 styleHide : "#sidebar { display: none;}\n"+"#contentWrapper #displayArea { margin-right: 1em;}\n"+"",
 styleShow : " ",
 arrow1: "«",
 arrow2: "»"
};

config.macros.toggleSideBar.handler=function (place,macroName,params,wikifier,paramString,tiddler)
{
 var tooltip= params[1]||'toggle sidebar';
 var mode = (params[2] && params[2]=="hide")? "hide":"show";
 var arrow = (mode == "hide")? this.settings.arrow1:this.settings.arrow2;
 var label= (params[0]&&params[0]!='.')?params[0]+" "+arrow:arrow;
 var theBtn = createTiddlyButton(place,label,tooltip,this.onToggleSideBar,"button HideSideBarButton");
 if (mode == "hide")
 { 
 (document.getElementById("sidebar")).setAttribute("toggle","hide");
 setStylesheet(this.settings.styleHide,"ToggleSideBarStyles");
 }
};

config.macros.toggleSideBar.onToggleSideBar = function(){
 var sidebar = document.getElementById("sidebar");
 var settings = config.macros.toggleSideBar.settings;
 if (sidebar.getAttribute("toggle")=='hide')
 {
 setStylesheet(settings.styleShow,"ToggleSideBarStyles");
 sidebar.setAttribute("toggle","show");
 this.firstChild.data= (this.firstChild.data).replace(settings.arrow1,settings.arrow2);
 }
 else
 { 
 setStylesheet(settings.styleHide,"ToggleSideBarStyles");
 sidebar.setAttribute("toggle","hide");
 this.firstChild.data= (this.firstChild.data).replace(settings.arrow2,settings.arrow1);
 }

 return false;
}

setStylesheet(".HideSideBarButton .button {font-weight:bold; padding: 0 5px;}\n","ToggleSideBarButtonStyles");
//}}}
//end ToggleSideBarMacro code

//start JumpToTopMacro code
//{{{
config.macros.top={};
config.macros.top.handler=function(place,macroName)
{
 createTiddlyButton(place,"^","jump to top",this.onclick);
}
config.macros.top.onclick=function()
{
 window.scrollTo(0,0);
};

config.commands.top =
{
 text:" ^ ",
 tooltip:"jump to top"
};

config.commands.top.handler = function(event,src,title)
{
 window.scrollTo(0,0);
}
//}}}
//end JumpToStartMacro code

//start JumpMacro code
//{{{
config.macros.jump= {};
config.macros.jump.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{
 var label = (params[0] && params[0]!=".")? params[0]: 'jump';
 var tooltip = (params[1] && params[1]!=".")? params[1]: 'jump to an open tiddler';
 var top = (params[2] && params[2]=='top') ? true: false; 

 var btn =createTiddlyButton(place,label,tooltip,this.onclick);
 if (top==true)
 btn.setAttribute("top","true")
}

config.macros.jump.onclick = function(e)
{
 if (!e) var e = window.event;
 var theTarget = resolveTarget(e);
 var top = theTarget.getAttribute("top");
 var popup = Popup.create(this);
 if(popup)
 {
 if(top=="true")
 {createTiddlyButton(createTiddlyElement(popup,"li"),'Top ↑','Top of TW',config.macros.jump.top);
 createTiddlyElement(popup,"hr");}
 
 story.forEachTiddler(function(title,element) {
 createTiddlyLink(createTiddlyElement(popup,"li"),title,true);
 });
 }
 Popup.show(popup,false);
 e.cancelBubble = true;
 if (e.stopPropagation) e.stopPropagation();
 return false;
}

config.macros.jump.top = function()
{
 window.scrollTo(0,0);
}
//}}}
//end JumpMacro code

//utility functions
//{{{
Popup.show = function(unused,slowly)
{
 var curr = Popup.stack[Popup.stack.length-1];
 var rootLeft = findPosX(curr.root);
 var rootTop = findPosY(curr.root);
 var rootHeight = curr.root.offsetHeight;
 var popupLeft = rootLeft;
 var popupTop = rootTop + rootHeight;
 var popupWidth = curr.popup.offsetWidth;
 var winWidth = findWindowWidth();
 if (isChild(curr.root,'hoverMenu'))
 var x = config.hoverMenu.settings.x;
 else
 var x = 0;
 if(popupLeft + popupWidth+x > winWidth)
 popupLeft = winWidth - popupWidth -x;
 if (isChild(curr.root,'hoverMenu'))
 {curr.popup.style.right = x + "px";}
 else
 curr.popup.style.left = popupLeft + "px";
 curr.popup.style.top = popupTop + "px";
 curr.popup.style.display = "block";
 addClass(curr.root,"highlight");
 if(config.options.chkAnimate)
 anim.startAnimating(new Scroller(curr.popup,slowly));
 else
 window.scrollTo(0,ensureVisible(curr.popup));
}

window.isChild = function(e,parentId) {
 while (e != null) {
 var parent = document.getElementById(parentId);
 if (parent == e) return true;
 e = e.parentNode;
 }
 return false;
};
//}}}


HoverMenuPlugin は便利なオペレーション I/F を提供してくれる。
右端のボタン「^」「>」「j」「f」「s」「n」のこと。それぞれ、
|^ |トップへ|
|{{{>}}}|サイドバーを隠す(トグル)|
|j|表示されている tiddler へのジャンプ|
|f|フルスクリーンにする(トグル)|
|s|セーブする|
|n|新しい tiddler を開く|

「f」のフルスクレリーン機能は FullScreenPlugin が必要となる。

importTiddler を実行したりすると、これが消えたりするが reload すればまたちゃんと表示される。

!!save to web
(以前は、ローカルで使用する場合にのみ「s」で save が可能になる、と書いたが)
[[HoverMenu]] を修正することで web 上での save も可能になる。([*]もちろん uploadplugin がきちんと動作していることが前提)
{{{
<<top>>
<<toggleSideBar>><<renameButton '>' >>
<<jump j '' top>>
<<fullscreen f>>
<<saveChanges>><<renameButton s 'Save TiddlyWiki'>>
<<upload http://your/site/store.cgi index.html . .>><<renameButton s 'Save To Web'>>
<<newTiddler>><<renameButton n>>
}}}
このように、saveChanges の下に upload を追加すれば良い。

tiddlyspot などであれば、[[SideBarOptions]] の upload マクロの呼び出しをコピーするのが早いだろう。
~~([*]2007.04.06 追記)~~
/*{{{*/
config.macros.toggleSideBar.settings.arrow1 = "<";
config.macros.toggleSideBar.settings.arrow2 = ">";
/*}}}*/
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.3|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2008.06.11 [1.9.3] added $(...) function as 'shorthand' convenience syntax for document.getElementById()
2008.03.03 [1.9.2] corrected declaration of wikifyPlainText() for 'TW 2.1.x compatibility fallback' (fixes Safari "parse error")
2008.02.23 [1.9.1] in onclick function, use string instead of array for 'bufferedHTML' attribute on link element (fixes IE errors)
2008.02.21 [1.9.0] 'onclick' scripts now allow returned text (or document.write() calls) to be wikified into a span that immediately follows the onclick link.  Also, added default 'return false' handling if no return value provided (prevents HREF from being triggered -- return TRUE to allow HREF to be processed).  Thanks to Xavier Verges for suggestion and preliminary code.
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 3, date: new Date(2008,6,11)};

config.formatters.push( {
	name: "inlineJavascript",
	match: "\\<script",
	lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?(?: key=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",

	handler: function(w) {
		var lookaheadRegExp = new RegExp(this.lookahead,"mg");
		lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			var src=lookaheadMatch[1];
			var label=lookaheadMatch[2];
			var tip=lookaheadMatch[3];
			var key=lookaheadMatch[4];
			var show=lookaheadMatch[5];
			var code=lookaheadMatch[6];
			if (src) { // load a script library
				// make script tag, set src, add to body to execute, then remove for cleanup
				var script = document.createElement("script"); script.src = src;
				document.body.appendChild(script); document.body.removeChild(script);
			}
			if (code) { // there is script code
				if (show) // show inline script code in tiddler output
					wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
				if (label) { // create a link to an 'onclick' script
					// add a link, define click handler, save code in link (pass 'place'), set link attributes
					var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
					var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
					link.code="function _out(place){"+fixup+"\n};_out(this);"
					link.tiddler=w.tiddler;
					link.onclick=function(){
						this.bufferedHTML="";
						try{ var r=eval(this.code);
							if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)
								var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);
							if(this.bufferedHTML.length)
								s.innerHTML=this.bufferedHTML;
							if((typeof(r)==="string")&&r.length) {
								wikify(r,s,null,this.tiddler);
								return false;
							} else return r!==undefined?r:false;
						} catch(e){alert(e.description||e.toString());return false;}
					};
					link.setAttribute("title",tip||"");
					var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
					URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
					URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
					link.setAttribute("href",URIcode);
					link.style.cursor="pointer";
					if (key) link.accessKey=key.substr(0,1); // single character only
				}
				else { // run inline script code
					var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
					var code="function _out(place){"+fixup+"\n};_out(w.output);"
					try { var out=eval(code); } catch(e) { out=e.description?e.description:e.toString(); }
					if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
				}
			}
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
		}
	}
} )
//}}}

// // Backward-compatibility for TW2.1.x and earlier
//{{{
if (typeof(wikifyPlainText)=="undefined") window.wikifyPlainText=function(text,limit,tiddler) {
	if(limit > 0) text = text.substr(0,limit);
	var wikifier = new Wikifier(text,formatter,null,tiddler);
	return wikifier.wikifyPlain();
}
//}}}

// // $(...) function: 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=="undefined") { // avoid redefinition
function $() {
	var elements=new Array();
	for (var i=0; i<arguments.length; i++) {
		var element=arguments[i];
		if (typeof element=='string') element=document.getElementById(element);
		if (arguments.length==1) return element;
		elements.push(element);
	}
	return elements;
}
}
//}}}
/***
|Name:|InstantTimestampPlugin|
|Description:|A handy way to insert timestamps in your tiddler content|
|Version:|1.0.10 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Source:|http://mptw.tiddlyspot.com/#InstantTimestampPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Usage
If you enter {ts} in your tiddler content (without the spaces) it will be replaced with a timestamp when you save the tiddler. Full list of formats:
* {ts} or {t} -> timestamp
* {ds} or {d} -> datestamp
* !ts or !t at start of line -> !!timestamp
* !ds or !d at start of line -> !!datestamp
(I added the extra ! since that's how I like it. Remove it from translations below if required)
!!Notes
* Change the timeFormat and dateFormat below to suit your preference.
* See also http://mptw2.tiddlyspot.com/#AutoCorrectPlugin
* You could invent other translations and add them to the translations array below.
***/
//{{{

config.InstantTimestamp = {

	// adjust to suit
	timeFormat: 'DD/0MM/YY 0hh:0mm',
	dateFormat: 'DD/0MM/YY',

	translations: [
		[/^!ts?$/img,  "'!!{{ts{'+now.formatString(config.InstantTimestamp.timeFormat)+'}}}'"],
		[/^!ds?$/img,  "'!!{{ds{'+now.formatString(config.InstantTimestamp.dateFormat)+'}}}'"],

		// thanks Adapted Cat
		[/\{ts?\}(?!\}\})/ig,"'{{ts{'+now.formatString(config.InstantTimestamp.timeFormat)+'}}}'"],
		[/\{ds?\}(?!\}\})/ig,"'{{ds{'+now.formatString(config.InstantTimestamp.dateFormat)+'}}}'"]
		
	],

	excludeTags: [
		"noAutoCorrect",
		"noTimestamp",
		"html",
		"CSS",
		"css",
		"systemConfig",
		"systemConfigDisabled",
		"zsystemConfig",
		"Plugins",
		"Plugin",
		"plugins",
		"plugin",
		"javascript",
		"code",
		"systemTheme",
		"systemPalette"
	],

	excludeTiddlers: [
		"StyleSheet",
		"StyleSheetLayout",
		"StyleSheetColors",
		"StyleSheetPrint"
		// more?
	]

}; 

TiddlyWiki.prototype.saveTiddler_mptw_instanttimestamp = TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created) {

	tags = tags ? tags : []; // just in case tags is null
	tags = (typeof(tags) == "string") ? tags.readBracketedList() : tags;
	var conf = config.InstantTimestamp;

	if ( !tags.containsAny(conf.excludeTags) && !conf.excludeTiddlers.contains(newTitle) ) {

		var now = new Date();
		var trans = conf.translations;
		for (var i=0;i<trans.length;i++) {
			newBody = newBody.replace(trans[i][0], eval(trans[i][1]));
		}
	}

	// TODO: use apply() instead of naming all args?
	return this.saveTiddler_mptw_instanttimestamp(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created);
}

// you can override these in StyleSheet 
setStylesheet(".ts,.ds { font-style:italic; }","instantTimestampStyles");

//}}}

/***
|''Name:''|JapaneseTranslationPlugin|
|''Description:''|Translation of TiddlyWiki into Japanese|
|''Author:''|kuraku (kuraku (dot) net (at) gmail (dot) com)|
|''Source:''|http://tw.kuraku.net/tw.html#JapaneseTranslationPlugin |
|''CodeRepository:''|http://svn.tiddlywiki.org/Trunk/association/locales/core/en/locale.en.js |
|''Version:''|0.0.3|
|''Date:''|Aug 23, 2007|
|''License:''|[[Creative Commons Attribution-ShareAlike 2.1 Japan License|http://creativecommons.org/licenses/by-sa/2.1/jp/]]|
|''~CoreVersion:''|2.2|

!!History
*2007.08.23 annotation, Import を作成
*2007.08.13 annotation を作成中
*2007.07.26 init
***/

//{{{
//--
//-- Translateable strings
//--

// Strings in "double quotes" should be translated; strings in 'single quotes' should be left alone

config.locale = "ja"; // W3C language tag

if (config.options.txtUserName == 'YourName') // do not translate this line, but do translate the next line
	merge(config.options,{txtUserName: "あなたの名前"});

merge(config.tasks,{
	save: {text: "保存(save)", tooltip: "更新した内容を保存", action: saveChanges},
	sync: {text: "同期(sync)", tooltip: "他の TiddlyWiki ファイルやサーバと同期", content: '<<sync>>'},
	importTask: {text: "インポート(import)", tooltip: "他の TiddlyWiki ファイルやサーバからと Tiddler や プラグインをインポート", content: '<<importTiddlers>>'},
	tweak: {text: "カスタマイズ(tweak)", tooltip: "TiddlyWiki のカスタマイズ", content: '<<options>>'},
	plugins: {text: "プラグイン(plugins)", tooltip: "プラグインマネージャによる管理", content: '<<plugins>>'}
});

// Options that can be set in the options panel and/or cookies
merge(config.optionsDesc,{
	txtUserName: "あなたの名前(ユーザ名)",
	chkRegExpSearch: "正規表現による検索",
	chkCaseSensitiveSearch: "厳密な検索",
	chkAnimate: "アニメーション",
	chkSaveBackups: "保存時にバックアップを取る",
	chkAutoSave: "編集時に自動保存",
	chkGenerateAnRssFeed: "保存時に RSS フィードファイルを作成",
	chkSaveEmptyTemplate: "保存時にテンプレートファイルを作成",
	chkOpenInNewWindow: "外部リンクは新ウィンドウへ",
	chkToggleLinks: "リンクを押したときにその Tiddler が開いていれば閉じる",
	chkHttpReadOnly: "Web アクセスからの場合は編集できない",
	chkForceMinorUpdate: "Tiddler 編集時ユーザ名も日付も変えない",
	chkConfirmDelete: "Tiddler 削除時に確認",
	chkInsertTabs: "タブキー入力時フィールド間の移動機能ではなく、タブとして入力",
	txtBackupFolder: "バックアップフォルダ名",
	txtMaxEditRows: "編集エリアの行数",
	txtFileSystemCharSet: "保存時の文字エンコード (Firefox/Mozilla only)"});

merge(config.messages,{
	customConfigError: "プラグインの読込みで問題が発生。プラグインマネージャ参照のこと",
	pluginError: "エラー: %0",
	pluginDisabled: "'systemConfigDisable' タグにより実行がされなかった",
	pluginForced: "'systemConfigForce' タグによる強制実行",
	pluginVersionError: "このプラグインの実行には 新バージョンの TiddlyWiki が必要",
	nothingSelected: "選択がされなかった. 一つ以上の選択が必要",
	savedSnapshotError: "TiddlyWiki の保存に失敗. 詳細はこちらへ http://www.tiddlywiki.com/#DownloadSoftware",
	subtitleUnknown: "(未設定)",
	undefinedTiddlerToolTip: "'%0' はまだ作成されていない",
	shadowedTiddlerToolTip: "'%0' はまだ作成されていない (shodow には存在)",
	tiddlerLinkTooltip: "%0 - %1, %2",
	externalLinkTooltip: "%0 (外部リンク)",
	noTags: "タグの付いた Tiddler は無い",
	notFileUrlError: "変更を保存するには、この TiddlyWiki をファイルに保存(ダウンロード)がする必要がある",
	cantSaveError: "変更を保存することができない. \n理由:\n- ブラウザが保存に未対応 (Firefox, Internet Explorer, Safari ,Opera については設定が正しければ保存可能)\n- ファイルのパスに不正な文字が含まれている\n- ファイルを移動、名前の変更を行なった",
	invalidFileError: "ファイル '%0' は TiddlyWiki ファイルではない",
	backupSaved: "バックアップを保存",
	backupFailed: "バックアップの保存に失敗",
	rssSaved: "RSS フィードを保存",
	rssFailed: "RSS フィードの保存に失敗",
	emptySaved: "空テンプレートファイルを保存",
	emptyFailed: "空テンプレートファイルの保存に失敗",
	mainSaved: "TiddlyWiki ファイルを保存",
	mainFailed: "TiddlyWiki ファイルの保存に失敗. 変更内容は未保存",
	macroError: "<<\%0>> マクロにてエラー",
	macroErrorDetails: "<<\%0>> マクロにてエラー:\n%1",
	missingMacro: "マクロは見つからない",
	overwriteWarning: "'%0' Tiddler は既存. OK にて上書き",
	unsavedChangesWarning: "警告 WARNING! TiddlyWiki の変更内容が未保存状態. \n\nChoose OK で保存\nCANCEL で破棄",
	confirmExit: "--------------------------------\n\nTiddlyWiki の変更内容が未保存状態. このまま続けると変更内容は破棄されます\n\n--------------------------------",
	saveInstructions: "SaveChanges",
	unsupportedTWFormat: "TiddlyWiki にて '%0' フォーマットは未対応",
	tiddlerSaveError: "Tiddler '%0' 保存時にエラー",
	tiddlerLoadError: "Tiddler '%0' ロード時にエラー",
	wrongSaveFormat: "フォーマット '%0' による保存は未対応のため標準フォーマットにて保存",
	invalidFieldName: "フィールド名 '%0' は間違い",
	fieldCannotBeChanged: "フィールド '%0' は変更不能",
	loadingMissingTiddler: "workspace '%3', '%2' の '%1' サーバより Tiddler '%0' をロードしようとして失敗"});

merge(config.messages.messageClose,{
	text: "クローズ",
	tooltip: "このメッセージを閉じる"});

config.messages.backstage = {
	open: {text: "バックステイジ", tooltip: "backstage エリアを開く"},
	close: {text: "閉じる", tooltip: "backstage エリアを閉じる"},
	prompt: "バックステイジ: ",
	decal: {
		edit: {text: "編集", tooltip: "Tiddler '%0' を編集"}
	}
};

config.messages.listView = {
	tiddlerTooltip: "Tiddler をフルテキストにする",
	previewUnavailable: "(プレビュー不能)"
};

config.messages.dates.months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November","December"];
config.messages.dates.days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
config.messages.dates.shortMonths = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
config.messages.dates.shortDays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
// suffixes for dates, eg "1st","2nd","3rd"..."30th","31st"
config.messages.dates.daySuffixes = ["st","nd","rd","th","th","th","th","th","th","th",
		"th","th","th","th","th","th","th","th","th","th",
		"st","nd","rd","th","th","th","th","th","th","th",
		"st"];
config.messages.dates.am = "am";
config.messages.dates.pm = "pm";

merge(config.messages.tiddlerPopup,{
	});

merge(config.views.wikified.tag,{
	labelNoTags: "タグなし",
	labelTags: "タグ: ",
	openTag: "'%0' タグを開く",
	tooltip: "'%0' タグの付いた Tiddler を表示",
	openAllText: "すべて開く",
	openAllTooltip: "以下の全 Tiddler を開く",
	popupNone: "'%0' タグの付いた Tiddler は他には無い"});

merge(config.views.wikified,{
	defaultText: "'%0' Tiddler は作成されていない. ダブルクリックにより作成",
	defaultModifier: "(missing)",
	shadowModifier: "(ビルトイン shadow Tiddler)",
	dateFormat: "YYYY.0MM.0DD", // use this to change the date format for your locale, eg "YYYY MMM DD", do not translate the Y, M or D
	createdPrompt: "作成"});

merge(config.views.editor,{
	tagPrompt: "タグはスペース区切り. 必要ならば[[二重のブランケットで囲む]]. 既存の",
	defaultText: "'%0' の内容を入力"});

merge(config.views.editor.tagChooser,{
	text: "タグ",
	tooltip: "既存のタグを選択",
	popupNone: "タグが未定義",
	tagTooltip: "'%0' タグを追加"});

merge(config.messages,{
	sizeTemplates:
		[
		{unit: 1024*1024*1024, template: "%0\u00a0GB"},
		{unit: 1024*1024, template: "%0\u00a0MB"},
		{unit: 1024, template: "%0\u00a0KB"},
		{unit: 1, template: "%0\u00a0B"}
		]});

merge(config.macros.search,{
	label: "検索",
	prompt: "この TiddlyWiki を検索",
	accessKey: "F",
	successMsg: "%0 件の Tiddler にて '%1' が見つかった",
	failureMsg: "%0 は見つからない"});

merge(config.macros.tagging,{
	label: "タギング(tagging): ",
	labelNotTag: "タグなし",
	tooltip: "'%0' タグの付いた Tiddler リスト"});

merge(config.macros.timeline,{
	dateFormat: "YYYY.0MM.0DD"});// use this to change the date format for your locale, eg "YYYY MMM DD", do not translate the Y, M or D

merge(config.macros.allTags,{
	tooltip: "'%0' タグの付いた Tiddler 表示",
	noTags: "タグの付いた Tiddler は無い"});

config.macros.list.all.prompt = "アルファベット順リスト";
config.macros.list.missing.prompt = "リンクされているが存在しない Tiddler リスト";
config.macros.list.orphans.prompt = "リンクされていない Tiddler リスト";
config.macros.list.shadowed.prompt = "Shadow Tiddler リスト";
config.macros.list.touched.prompt = "局所的に変更された Tiddler リスト";

merge(config.macros.closeAll,{
	label: "すべて閉じる",
	prompt: "編集しているもの以外のすべてを閉じる"});

merge(config.macros.permaview,{
	label: "パーマビュー",
	prompt: "表示されているすべての Tiddler を表示する URL"});

merge(config.macros.saveChanges,{
	label: "保存",
	prompt: "すべての Tiddler を保存",
	accessKey: "S"});

merge(config.macros.newTiddler,{
	label: "Tiddler 作成",
	prompt: "新しい Tiddler を作成",
	title: "New Tiddler",
	accessKey: "N"});

merge(config.macros.newJournal,{
	label: "Journal 作成",
	prompt: "新しいジャーナルを作成 (タイトルが日付)",
	accessKey: "J"});

merge(config.macros.options,{
	wizardTitle: "Tweak advanced options",
	step1Title: "これらのオプションはブラウザのクッキーに保存される",
	step1Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='false' name='chkUnknown'>Show unknown options</input>",
	unknownDescription: "//(unknown)//",
	listViewTemplate: {
		columns: [
			{name: 'Option', field: 'option', title: "オプション", type: 'String'},
			{name: 'Description', field: 'description', title: "内容", type: 'WikiText'},
			{name: 'Name', field: 'name', title: "名前", type: 'String'}
			],
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'} 
			]}
	});

merge(config.macros.plugins,{
	wizardTitle: "Manage plugins",
	step1Title: "現在ロードされているプラグイン",
	step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
	skippedText: "(このプラグインは起動後に追加)",
	noPluginText: "プラグインはインストールされていない",
	confirmDeleteText: "これらのプラグインを削除しますか:\n\n%0",
	removeLabel: "systemConfig タグを除去",
	removePrompt: "systemConfig タグを除去",
	deleteLabel: "削除",
	deletePrompt: "Tiddler の完全な削除",
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
			{name: 'Size', field: 'size', tiddlerLink: 'size', title: "サイズ", type: 'Size'},
			{name: 'Forced', field: 'forced', title: "強制", tag: 'systemConfigForce', type: 'TagCheckbox'},
			{name: 'Disabled', field: 'disabled', title: "使用不可", tag: 'systemConfigDisable', type: 'TagCheckbox'},
			{name: 'Executed', field: 'executed', title: "ロード済", type: 'Boolean', trueText: "Yes", falseText: "No"},
			{name: 'Startup Time', field: 'startupTime', title: "起動時間", type: 'String'},
			{name: 'Error', field: 'error', title: "ステータス", type: 'Boolean', trueText: "エラー", falseText: "OK"},
			{name: 'Log', field: 'log', title: "ログ", type: 'StringList'}
			],
		rowClasses: [
			{className: 'error', field: 'error'},
			{className: 'warning', field: 'warning'}
			]}
	});

merge(config.macros.toolbar,{
	moreLabel: "続き",
	morePrompt: "見えていないコマンド表示"
	});

merge(config.macros.refreshDisplay,{
	label: "リフレッシュ",
	prompt: "TiddlyWiki を再描画"
	});

merge(config.macros.importTiddlers,{
	readOnlyWarning: "読み込み専用の TiddlyWiki にはインポートできない. file://URL で開き直すこと",
	wizardTitle: "他のファイル、サーバからの Tiddler インポート",
	step1Title: "ステップ 1: TiddlyWiki サーバかファイルを指定",
	step1Html: "サーバタイプを指定: <select name='selTypes'><option value=''>選択...</option></select><br>URL またはパスネームを入力: <input type='text' size=50 name='txtPath'><br>あるいはファイルの指定: <input type='file' size=50 name='txtBrowse'><br><hr>またはあらかじめ設定されたフィードの選択: <select name='selFeeds'><option value=''>選択...</option></select>",
	openLabel: "オープン",
	openPrompt: "このファイルかサーバへ接続",
	openError: "tiddlywiki ファイルの取得に問題が発生",
	statusOpenHost: "サーバホストに接続中",
	statusGetWorkspaceList: "利用可能なワークスペースを取得中",
	step2Title: "ステップ 2: ワークスペースの選択",
	step2Html: "ワークスペース名の入力: <input type='text' size=50 name='txtWorkspace'><br>...またはワークスペースの選択: <select name='selWorkspace'><option value=''>選択...</option></select>",
	cancelLabel: "キャンセル",
	cancelPrompt: "このインポートをキャンセル",
	statusOpenWorkspace: "ワークスペースをオープン中",
	statusGetTiddlerList: "利用可能な Tiddler を取得中",
	step3Title: "ステップ 3: インポートする Tiddler の選択",
	step3Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='true' name='chkSync'>後の変更を反映させられるようにこれらの Tiddler とサーバを関連づけておく</input><br><input type='checkbox' name='chkSave'>このサーバの情報を 'systemServer' として保存する Tiddler 名:</input> <input type='text' size=25 name='txtSaveTiddler'>",
	importLabel: "インポート",
	importPrompt: "Tiddler のインポート",
	confirmOverwriteText: "本当にこれらの Tiddler を上書きして良いですか:\n\n%0",
	step4Title: "ステップ 4: %0 の Tiddler をインポート",
	step4Html: "<input type='hidden' name='markReport'></input>", // DO NOT TRANSLATE
	doneLabel: "完了",
	donePrompt: "クローズ",
	statusDoingImport: "インポート中",
	statusDoneImport: "すべての Tiddler をインポート済み",
	systemServerNamePattern: "%1 の %2",
	systemServerNamePatternNoWorkspace: "%1",
	confirmOverwriteSaveTiddler: "Tiddler '%0' はすでにあります. 'OK' のクリックでサーバの内容で上書き、'Cancel' により修正を中止",
	serverSaveTemplate: "|''タイプ:''|%0|\n|''URL:''|%1|\n|''ワークスペース:''|%2|\n\nこの Tiddler はこのサーバ情報を記録するために自動的に作成された",
	serverSaveModifier: "(システム)",
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
			{name: 'Size', field: 'size', tiddlerLink: 'size', title: "サイズ", type: 'Size'},
			{name: 'Tags', field: 'tags', title: "タグ", type: 'Tags'}
			],
		rowClasses: [
			]}
	});

merge(config.macros.sync,{
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
			{name: 'Server Type', field: 'serverType', title: "Server type", type: 'String'},
			{name: 'Server Host', field: 'serverHost', title: "Server host", type: 'String'},
			{name: 'Server Workspace', field: 'serverWorkspace', title: "Server workspace", type: 'String'},
			{name: 'Status', field: 'status', title: "Synchronisation status", type: 'String'},
			{name: 'Server URL', field: 'serverUrl', title: "Server URL", text: "View", type: 'Link'}
			],
		rowClasses: [
			],
		buttons: [
			{caption: "Sync these tiddlers", name: 'sync'}
			]},
	wizardTitle: "Synchronize with external servers and files",
	step1Title: "Choose the tiddlers you want to synchronize",
	step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
	syncLabel: "sync",
	syncPrompt: "Sync these tiddlers",
	hasChanged: "Changed while unplugged",
	hasNotChanged: "Unchanged while unplugged",
	syncStatusList: {
		none: {text: "...", color: "none"},
		changedServer: {text: "Changed on server", color: '#80ff80'},
		changedLocally: {text: "Changed while unplugged", color: '#80ff80'},
		changedBoth: {text: "Changed while unplugged and on server", color: '#ff8080'},
		notFound: {text: "Not found on server", color: '#ffff80'},
		putToServer: {text: "Saved update on server", color: '#ff80ff'},
		gotFromServer: {text: "Retrieved update from server", color: '#80ffff'}
		}
	});

merge(config.commands.closeTiddler,{
	text: "閉じる",
	tooltip: "Tiddler を閉じる"});

merge(config.commands.closeOthers,{
	text: "他を閉じる",
	tooltip: "他の Tiddler を閉じる"});

merge(config.commands.editTiddler,{
	text: "編集",
	tooltip: "Tiddler を編集",
	readOnlyText: "ビュー",
	readOnlyTooltip: "Tiddler ソースを表示"});

merge(config.commands.saveTiddler,{
	text: "保存",
	tooltip: "この Tiddler を保存"});

merge(config.commands.cancelTiddler,{
	text: "キャンセル",
	tooltip: "Tiddler の更新をキャンセル",
	warning: "'%0' の編集内容は破棄されますがよろしいですか?",
	readOnlyText: "終了",
	readOnlyTooltip: "Tiddler ノーマル表示"});

merge(config.commands.deleteTiddler,{
	text: "削除",
	tooltip: "この Tiddler を削除",
	warning: "'%0' Tiddler を本当に削除しますか?"});

merge(config.commands.permalink,{
	text: "パーマリンク",
	tooltip: "この Tiddler のパーマリンク"});

merge(config.commands.references,{
	text: "リファレンス",
	tooltip: "この Tiddler を参照している Tiddler",
	popupNone: "リファレンスなし"});

merge(config.commands.jump,{
	text: "ジャンプ",
	tooltip: "他の Tiddler へのジャンプ"});

merge(config.commands.syncing,{
	text: "syncing",
	tooltip: "Control synchronisation of this tiddler with a server or external file",
	currentlySyncing: "<div>Currently syncing via <span class='popupHighlight'>'%0'</span> to:</"+"div><div>host: <span class='popupHighlight'>%1</span></"+"div><div>workspace: <span class='popupHighlight'>%2</span></"+"div>", // Note escaping of closing <div> tag
	notCurrentlySyncing: "Not currently syncing",
	captionUnSync: "Stop synchronising this tiddler",
	chooseServer: "Synchronise this tiddler with another server:",
	currServerMarker: "\u25cf ",
	notCurrServerMarker: "  "});

merge(config.commands.fields,{
	text: "fields",
	tooltip: "Show the extended fields of this tiddler",
	emptyText: "There are no extended fields for this tiddler",
	listViewTemplate: {
		columns: [
			{name: 'Field', field: 'field', title: "Field", type: 'String'},
			{name: 'Value', field: 'value', title: "Value", type: 'String'}
			],
		rowClasses: [
			],
		buttons: [
			]}});

merge(config.shadowTiddlers,{
	DefaultTiddlers: "[[TranslatedGettingStarted]]",
	MainMenu: "[[TranslatedGettingStarted]]\n\n\n^^~TiddlyWiki version <<version>>\n(c) 2007 [[UnaMesa|http://www.unamesa.org/]]^^",
	TranslatedGettingStarted: "未設定の TiddlyWiki から始めるためには次の Tiddler を変更する必要がある:\n* SiteTitle & SiteSubtitle: 上部に表示される、サイトのタイトルとサブタイトル (修正後、ブラウザのタイトルバーに現われる)\n* MainMenu: メニュー (通常左側)\n* DefaultTiddlers: TiddlyWiki を開くときに表示したい Tiddler 名を含む\nまた編集を行なうあなたのユーザー名を入力する必要がある: <<option txtUserName>>",
	SiteTitle: "My TiddlyWiki",
	SiteSubtitle: "a reusable non-linear personal web notebook",
	SiteUrl: "http://www.tiddlywiki.com/",
	OptionsPanel: "TiddlyWiki をカスタマイズするこれらのオプションはブラウザに保存される.\n\nあなたのユーザ名を入力する. それは WikiWord として表示される\n<<option txtUserName>>\n\n<<option chkSaveBackups>> バックアップ\n<<option chkAutoSave>> 自動保存\n<<option chkRegExpSearch>> 正規表現検索\n<<option chkCaseSensitiveSearch>> 厳密な検索\n<<option chkAnimate>> アニメーション\n\n----\nその他のオプション [[TranslatedAdvancedOptions|AdvancedOptions]]",
	SideBarOptions: '<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "YYYY.0MM.0DD">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "オプション >" "Change TiddlyWiki advanced options">>',
	SideBarTabs: '<<tabs txtMainTab "更新" "タイムライン" TabTimeline "すべて" "すべて" TabAll "タグ" "タグ" TabTags "他" "他リスト" TabMore>>',
	TabMore: '<<tabs txtMoreTab "Missing" "リンクがあるが存在しない Tiddler" TabMoreMissing "Orphans" "リンクされていない Tiddler" TabMoreOrphans "Shadowed" "シャドウ(既存) Tiddler" TabMoreShadowed>>'});

merge(config.annotations,{
	AdvancedOptions: "この shadow Tiddler はアドバンスオプションへのアクセスを提供する",
	ColorPalette: "この shadow Tiddler のこれらの値は ~TiddlyWiki ユーザインターフェースの配色の指定をする",
	DefaultTiddlers: "この shadow Tiddler に Tiddler をリストすることで ~TiddlyWiki スタート時に表示される Tiddler を指定する",
	EditTemplate: "この shadow Tiddler のテンプレートは編集中の Tiddler の見せ方(レイアウト)を指定する",
	GettingStarted: "この shadow Tiddler は基本的な使用法を説明する",
	ImportTiddlers: "この shadow Tiddler は Tiddler のインポートを提供する",
	MainMenu: "この shadow Tiddler は画面のメインメニューの内容として使用される",
	MarkupPreHead: "この Tiddler は ~TiddlyWiki の HTML ファイルの <head> タグの前に挿入される",
	MarkupPostHead: "この Tiddler は ~TiddlyWiki の HTML ファイルの <head> タグの後ろに挿入される",
	MarkupPreBody: "この Tiddler は ~TiddlyWiki の HTML ファイルの <body> タグの前に挿入される",
	MarkupPostBody: "この Tiddler は script ブロック直前の ~TiddlyWiki の HTML ファイルの <body> タグの後ろに挿入される",
	OptionsPanel: "この shadow Tiddler は オプションパネルスライダーの内容として使用される",
	PageTemplate: "この shadow Tiddler のテンプレートは ~TiddlyWiki のレイアウトを指定する",
	PluginManager: "この shadow Tiddler はプラグインマネージャへのアクセスを提供する",
	SideBarOptions: "この shadow Tiddler はサイドバーで選択パネルの内容として使用される",
	SideBarTabs: "この shadow Tiddler はサイドバーのタブの内容として使用される",
	SiteSubtitle: "この shadow Tiddler はページのサブタイトルとして使用される",
	SiteTitle: "この shadow Tiddler はページのタイトルとして使用される",
	SiteUrl: "この shadow Tiddler は出力のための完全なターゲット URL を指定するべきである(RSSファイルなど)",
	StyleSheetColours: "この shadow Tiddler はページの要素の色と関連する CSS を定義する",
	StyleSheet: "この Tiddler は個別の CSS (カスタムしたもの) を指定する",
	StyleSheetLayout: "この shadow Tiddler はページの要素のレイアウトと関連する CSS を定義する",
	StyleSheetLocale: "この shadow Tiddler はロケールと関連する CSS を定義する",
	StyleSheetPrint: "この shadow Tiddler は印刷と関連する CSS を定義する",
	TabAll: "この shadow Tiddler はサイドバーの「All(すべて)」タブの内容として使用される",
	TabMore: "この shadow Tiddler はサイドバーの「More(他)」タブの内容として使用される",
	TabMoreMissing: "この shadow Tiddler はサイドバーの「Missing」タブの内容として使用される",
	TabMoreOrphans: "この shadow Tiddler はサイドバーの「Orphans」タブの内容として使用される",
	TabMoreShadowed: "この shadow Tiddler はサイドバーの「Shadowed」タブの内容として使用される",
	TabTags: "この shadow Tiddler はサイドバーの「Tags(タグ)」タブの内容として使用される",
	TabTimeline: "この shadow Tiddler はサイドバーの「Timeline(更新)」タブの内容として使用される",
	ViewTemplate: "この shadow Tiddler の HTML テンプレートは Tiddler がどのように表示されるかを指定する"
	});

//}}}
研究室紹介のFLASH版です。画像をクリックするとページか進みます。
<html>
<center>
<EMBED SRC="Hanamoto_lab2015.swf" WIDTH=500 HEIGHT=400>
</center>
</html>
!!大学関係
[[九州工業大学|http://www.kyutech.ac.jp]]
[[九州工業大学生命体工学研究科|http://www.lsse.kyutech.ac.jp]]

!!tiddly wiki 関係
http://www.tiddlywiki.com/
http://mptw.tiddlyspot.com/
http://kuraku.tiddlyspot.com/
http://ogoshi.tiddlyspot.com/
!!! [[ロボット制御|http://eclass.lsse.kyutech.ac.jp/itsclass]]
*概要
ロボット制御(人間型ロボット,生体模倣ロボット)は様々な要素技術の集大成である。そこで以下の項目について学習する。

・電気技術・・・パワーエレクトロニクス,電気機器
・電子技術・・・ハードウェア設計,インターフェイス回路,エレクトロニクス技術
・情報技術・・・ソフトウェア,ネットワーク,通信
・機械技術・・・構造,合成,実現化
・制御技術・・・古典制御理論,現代制御理論,ソフトコンピューティング
実際にもの(ロボット)を動かすには理論だけでは足りない。
実学を目指す。現在ある環境を有効に使用する。
* [[IT'sClass|http://eclass.lsse.kyutech.ac.jp/itsclass]]へのリンク
<html>
<img style="width: 350px; " alt="" src="Picture/CIMG0141.JPG" align="right">
</html>
以下は少し古い画像です。現在は使用していない装置を含みます。

<html>
<table border="0" cellpadding="0" cellspacing="0" width="300">
<tr valign="top"> 
<img style="width: 350px; " alt="" src="Picture/CIMG0141.JPG" align="left"><BR>
</tr>
<tr valign="top"> 
制御用実験装置</tr>
<tr valign="top"> 
<img style="width: 350px; " alt="" src="Picture/QT_Panel.JPG" align="right"><BR>
</tr>
<tr valign="top"> 
QTで作成したOnline Real Time SImulator 制御用操作パネル
</tr>
<tr valign="top"> 
<img style="width: 350px; " alt="" src="Picture/iden1.JPG" align="right"><BR>
</tr>
<tr valign="top"> 
多慣性系同定用DSP搭載PC
</tr>
<tr valign="top"> 
<img style="width: 350px; " alt="" src="Picture/idenSys.JPG" align="right"><BR>
</tr>
<tr valign="top"> 
多慣性系同定用制御システム図
</tr>
<tr valign="top"> 
<img style="width: 350px; " alt="" src="Picture/SynRMsystem.jpg" align="right"><BR>
</tr>
<tr valign="top"> 
SynRM実験装置
</tr>
</table>
</html>
<html>
<EMBED SRC="LabPoster060301.swf" WIDTH=600 HEIGHT=600 >
</html>
研究室紹介のFLASH版です。画像をクリックするとページか進みます。

 [[2016年研究室説明会紹介資料|labintro2016/Hanamoto_lab20160301.htm]]   
/***
|Name:|LessBackupsPlugin|
|Description:|Intelligently limit the number of backup files you create|
|Version:|3.0.1 ($Rev: 2320 $)|
|Date:|$Date: 2007-06-18 22:37:46 +1000 (Mon, 18 Jun 2007) $|
|Source:|http://mptw.tiddlyspot.com/#LessBackupsPlugin|
|Author:|Simon Baird|
|Email:|simon.baird@gmail.com|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Description
You end up with just backup one per year, per month, per weekday, per hour, minute, and second.  So total number won't exceed about 200 or so. Can be reduced by commenting out the seconds/minutes/hours line from modes array
!!Notes
Works in IE and Firefox only.  Algorithm by Daniel Baird. IE specific code by by Saq Imtiaz.
***/
//{{{

var MINS  = 60 * 1000;
var HOURS = 60 * MINS;
var DAYS  = 24 * HOURS;

if (!config.lessBackups) {
	config.lessBackups = {
		// comment out the ones you don't want or set config.lessBackups.modes in your 'tweaks' plugin
		modes: [
			["YYYY",  365*DAYS], // one per year for ever
			["MMM",   31*DAYS],  // one per month
			["ddd",   7*DAYS],   // one per weekday
			//["d0DD",  1*DAYS],   // one per day of month
			["h0hh",  24*HOURS], // one per hour
			["m0mm",  1*HOURS],  // one per minute
			["s0ss",  1*MINS],   // one per second
			["latest",0]         // always keep last version. (leave this).
		]
	};
}

window.getSpecialBackupPath = function(backupPath) {

	var now = new Date();

	var modes = config.lessBackups.modes;

	for (var i=0;i<modes.length;i++) {

		// the filename we will try
		var specialBackupPath = backupPath.replace(/(\.)([0-9]+\.[0-9]+)(\.html)$/,
				'$1'+now.formatString(modes[i][0]).toLowerCase()+'$3')

		// open the file
		try {
			if (config.browser.isIE) {
				var fsobject = new ActiveXObject("Scripting.FileSystemObject")
				var fileExists  = fsobject.FileExists(specialBackupPath);
				if (fileExists) {
					var fileObject = fsobject.GetFile(specialBackupPath);
					var modDate = new Date(fileObject.DateLastModified).valueOf();
				}
			}
			else {
				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
				var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
				file.initWithPath(specialBackupPath);
				var fileExists = file.exists();
				if (fileExists) {
					var modDate = file.lastModifiedTime;
				}
			}
		}
		catch(e) {
			// give up
			return backupPath;
		}

		// expiry is used to tell if it's an 'old' one. Eg, if the month is June and there is a
		// June file on disk that's more than an month old then it must be stale so overwrite
		// note that "latest" should be always written because the expiration period is zero (see above)
		var expiry = new Date(modDate + modes[i][1]);
		if (!fileExists || now > expiry)
			return specialBackupPath;
	}
}

// hijack the core function
window.getBackupPath_mptw_orig = window.getBackupPath;
window.getBackupPath = function(localPath) {
	return getSpecialBackupPath(getBackupPath_mptw_orig(localPath));
}

//}}}

MPTW is a distribution or edition of TiddlyWiki that includes a standard TiddlyWiki core packaged with some plugins designed to improve usability and provide a better way to organise your information. For more information see http://mptw.tiddlyspot.com/.
[[Members]]
[[Research]]
[[Access]]
[[授業|Class]]
[[リンク|LINKS]]
----
@@color(red):''2017''@@ [[研究室案内|research ad_2017]]@@NEW@@
/%
[[ポスター|OpenCampasLabPoster]]
[[研究室紹介ビデオ2008|lab movie]]
----
[[HANAMOTO Lab.|http://www.life.kyutech.ac.jp/~hanamoto]]
[[English version|http://www.life.kyutech.ac.jp/~hanamoto/hanamoto/index_e.html]]
%/
!!!教授
[[花本 剛士|Professor]] 
!!!博士後期過程
[[2017D3]]
/% [[2017D2]] %/
[[2017D1]]
!!!博士前期過程
[[2017M2]]
[[2017M1]]
!!!学部生
[[2017B4]]

!!![[OB/OG|OBOG members]]
Name: MptwBlack
Background: #000
Foreground: #fff
PrimaryPale: #333
PrimaryLight: #555
PrimaryMid: #888
PrimaryDark: #aaa
SecondaryPale: #111
SecondaryLight: #222
SecondaryMid: #555
SecondaryDark: #888
TertiaryPale: #222
TertiaryLight: #666
TertiaryMid: #888
TertiaryDark: #aaa
Error: #300

This is in progress. Help appreciated.


Name: MptwBlue
Background: #fff
Foreground: #000
PrimaryPale: #cdf
PrimaryLight: #57c
PrimaryMid: #114
PrimaryDark: #012
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

/***
|Name:|MptwConfigPlugin|
|Description:|Miscellaneous tweaks used by MPTW|
|Version:|1.0 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Source:|http://mptw.tiddlyspot.com/#MptwConfigPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#MptwConfigPlugin|
!!Note: instead of editing this you should put overrides in MptwUserConfigPlugin
***/
//{{{
var originalReadOnly = readOnly;
var originalShowBackstage = showBackstage;

config.options.chkHttpReadOnly = false; 		// means web visitors can experiment with your site by clicking edit
readOnly = false;								// needed because the above doesn't work any more post 2.1 (??)
showBackstage = true;							// show backstage for same reason

config.options.chkInsertTabs = true;    		// tab inserts a tab when editing a tiddler
config.views.wikified.defaultText = "";			// don't need message when a tiddler doesn't exist
config.views.editor.defaultText = "";			// don't need message when creating a new tiddler 

config.options.chkSaveBackups = true;			// do save backups
config.options.txtBackupFolder = 'twbackup';	// put backups in a backups folder

config.options.chkAutoSave = (window.location.protocol == "file:"); // do autosave if we're in local file

config.mptwVersion = "2.5.2";

config.macros.mptwVersion={handler:function(place){wikify(config.mptwVersion,place);}};

if (config.options.txtTheme == '')
	config.options.txtTheme = 'MptwTheme';

// add to default GettingStarted
config.shadowTiddlers.GettingStarted += "\n\nSee also [[MPTW]].";

// add select theme and palette controls in default OptionsPanel
config.shadowTiddlers.OptionsPanel = config.shadowTiddlers.OptionsPanel.replace(/(\n\-\-\-\-\nAlso see AdvancedOptions)/, "{{select{<<selectTheme>>\n<<selectPalette>>}}}$1");

// these are used by ViewTemplate
config.mptwDateFormat = 'DD/MM/YY';
config.mptwJournalFormat = 'Journal DD/MM/YY';

//}}}
Name: MptwGreen
Background: #fff
Foreground: #000
PrimaryPale: #9b9
PrimaryLight: #385
PrimaryMid: #031
PrimaryDark: #020
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

Name: MptwRed
Background: #fff
Foreground: #000
PrimaryPale: #eaa
PrimaryLight: #c55
PrimaryMid: #711
PrimaryDark: #500
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

|Name|MptwRounded|
|Description|Mptw Theme with some rounded corners (Firefox only)|
|ViewTemplate|MptwTheme##ViewTemplate|
|EditTemplate|MptwTheme##EditTemplate|
|PageTemplate|MptwTheme##PageTemplate|
|StyleSheet|##StyleSheet|

!StyleSheet
/*{{{*/

[[MptwTheme##StyleSheet]]

.tiddler,
.sliderPanel,
.button,
.tiddlyLink,
.tabContents
{ -moz-border-radius: 1em; }

.tab {
	-moz-border-radius-topleft: 0.5em;
	-moz-border-radius-topright: 0.5em;
}
#topMenu {
	-moz-border-radius-bottomleft: 2em;
	-moz-border-radius-bottomright: 2em;
}

/*}}}*/

Name: MptwSmoke
Background: #fff
Foreground: #000
PrimaryPale: #aaa
PrimaryLight: #777
PrimaryMid: #111
PrimaryDark: #000
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

|Name|MptwStandard|
|Description|Mptw Theme with the default TiddlyWiki PageLayout and Styles|
|ViewTemplate|MptwTheme##ViewTemplate|
|EditTemplate|MptwTheme##EditTemplate|
Name: MptwTeal
Background: #fff
Foreground: #000
PrimaryPale: #B5D1DF
PrimaryLight: #618FA9
PrimaryMid: #1a3844
PrimaryDark: #000
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #f8f8f8
TertiaryLight: #bbb
TertiaryMid: #999
TertiaryDark: #888
Error: #f88
|Name|MptwTheme|
|Description|Mptw Theme including custom PageLayout|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|StyleSheet|##StyleSheet|

http://mptw.tiddlyspot.com/#MptwTheme ($Rev: 1829 $)

!PageTemplate
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
	<div class='headerShadow'>
		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
	</div>
	<div class='headerForeground'>
		<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
		<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
	</div>
</div>
<!-- horizontal MainMenu -->
<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
<!-- original MainMenu menu -->
<!-- <div id='mainMenu' refresh='content' tiddler='MainMenu'></div> -->
<div id='sidebar'>
	<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
	<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
	<div id='messageArea'></div>
	<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->

!ViewTemplate
<!--{{{-->
[[MptwTheme##ViewTemplateToolbar]]

<div class="tagglyTagged" macro="tags"></div>

<div class='titleContainer'>
	<span class='title' macro='view title'></span>
	<span macro="miniTag"></span>
</div>

<div class='subtitle'>
	(updated <span macro='view modified date {{config.mptwDateFormat?config.mptwDateFormat:"MM/0DD/YY"}}'></span>
	by <span macro='view modifier link'></span>)
	<!--
	(<span macro='message views.wikified.createdPrompt'></span>
	<span macro='view created date {{config.mptwDateFormat?config.mptwDateFormat:"MM/0DD/YY"}}'></span>)
	-->
</div>

<div macro="showWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')">
	<div class='viewer'><pre macro='view text'></pre></div>
</div>
<div macro="else">
	<div class='viewer' macro='view text wikified'></div>
</div>

<div class="tagglyTagging" macro="tagglyTagging"></div>

<!--}}}-->

!ViewTemplateToolbar
<!--{{{-->
<div class='toolbar'>
	<span macro="showWhenTagged systemConfig">
		<span macro="toggleTag systemConfigDisable . '[[disable|systemConfigDisable]]'"></span>
	</span>
	<span macro="showWhenTagged systemTheme"><span macro="applyTheme"></span></span>
	<span macro="showWhenTagged systemPalette"><span macro="applyPalette"></span></span>
	<span macro="showWhen tiddler.tags.contains('css') || tiddler.title == 'StyleSheet'"><span macro="refreshAll"></span></span>
	<span style="padding:1em;"></span>
	<span macro='toolbar closeTiddler closeOthers +editTiddler deleteTiddler > fields syncing permalink references jump'></span> <span macro='newHere label:"new here"'></span>
	<span macro='newJournalHere {{config.mptwJournalFormat?config.mptwJournalFormat:"MM/0DD/YY"}}'></span>
</div>
<!--}}}-->

!EditTemplate
<!--{{{-->
<div class="toolbar" macro="toolbar +saveTiddler saveCloseTiddler closeOthers -cancelTiddler cancelCloseTiddler deleteTiddler"></div>
<div class="title" macro="view title"></div>
<div class="editLabel">Title</div><div class="editor" macro="edit title"></div>
<div macro='annotations'></div>
<div class="editLabel">Content</div><div class="editor" macro="edit text"></div>
<div class="editLabel">Tags</div><div class="editor" macro="edit tags"></div>
<div class="editorFooter"><span macro="message views.editor.tagPrompt"></span><span macro="tagChooser"></span></div>
<!--}}}-->

!StyleSheet
/*{{{*/

/* a contrasting background so I can see where one tiddler ends and the other begins */
body {
	background: [[ColorPalette::TertiaryLight]];
}

/* sexy colours and font for the header */
.headerForeground {
	color: [[ColorPalette::PrimaryPale]];
}
.headerShadow, .headerShadow a {
	color: [[ColorPalette::PrimaryMid]];
}

/* separate the top menu parts */
.headerForeground, .headerShadow {
	padding: 1em 1em 0;
}

.headerForeground, .headerShadow {
	font-family: 'Trebuchet MS' sans-serif;
	font-weight:bold;
}
.headerForeground .siteSubtitle {
	color: [[ColorPalette::PrimaryLight]];
}
.headerShadow .siteSubtitle {
	color: [[ColorPalette::PrimaryMid]];
}

/* make shadow go and down right instead of up and left */
.headerShadow {
	left: 1px;
	top: 1px;
}

/* prefer monospace for editing */
.editor textarea, .editor input {
	font-family: 'Consolas' monospace;
	background-color:[[ColorPalette::TertiaryPale]];
}


/* sexy tiddler titles */
.title {
	font-size: 250%;
	color: [[ColorPalette::PrimaryLight]];
	font-family: 'Trebuchet MS' sans-serif;
}

/* more subtle tiddler subtitle */
.subtitle {
	padding:0px;
	margin:0px;
	padding-left:1em;
	font-size: 90%;
	color: [[ColorPalette::TertiaryMid]];
}
.subtitle .tiddlyLink {
	color: [[ColorPalette::TertiaryMid]];
}

/* a little bit of extra whitespace */
.viewer {
	padding-bottom:3px;
}

/* don't want any background color for headings */
h1,h2,h3,h4,h5,h6 {
	background-color: transparent;
	color: [[ColorPalette::Foreground]];
}

/* give tiddlers 3d style border and explicit background */
.tiddler {
	background: [[ColorPalette::Background]];
	border-right: 2px [[ColorPalette::TertiaryMid]] solid;
	border-bottom: 2px [[ColorPalette::TertiaryMid]] solid;
	margin-bottom: 1em;
	padding:1em 2em 2em 1.5em;
}

/* make options slider look nicer */
#sidebarOptions .sliderPanel {
	border:solid 1px [[ColorPalette::PrimaryLight]];
}

/* the borders look wrong with the body background */
#sidebar .button {
	border-style: none;
}

/* this means you can put line breaks in SidebarOptions for readability */
#sidebarOptions br {
	display:none;
}
/* undo the above in OptionsPanel */
#sidebarOptions .sliderPanel br {
	display:inline;
}

/* horizontal main menu stuff */
#displayArea {
	margin: 1em 15.7em 0em 1em; /* use the freed up space */
}
#topMenu br {
	display: none;
}
#topMenu {
	background: [[ColorPalette::PrimaryMid]];
	color:[[ColorPalette::PrimaryPale]];
}
#topMenu {
	padding:2px;
}
#topMenu .button, #topMenu .tiddlyLink, #topMenu a {
	margin-left: 0.5em;
	margin-right: 0.5em;
	padding-left: 3px;
	padding-right: 3px;
	color: [[ColorPalette::PrimaryPale]];
	font-size: 115%;
}
#topMenu .button:hover, #topMenu .tiddlyLink:hover {
	background: [[ColorPalette::PrimaryDark]];
}

/* make 2.2 act like 2.1 with the invisible buttons */
.toolbar {
	visibility:hidden;
}
.selected .toolbar {
	visibility:visible;
}

/* experimental. this is a little borked in IE7 with the button 
 * borders but worth it I think for the extra screen realestate */
.toolbar { float:right; }

/* fix for TaggerPlugin. from sb56637. improved by FND */
.popup li .tagger a {
   display:inline;
}

/* makes theme selector look a little better */
#sidebarOptions .sliderPanel .select .button {
  padding:0.5em;
  display:block;
}
#sidebarOptions .sliderPanel .select br {
	display:none;
}

/* make it print a little cleaner */
@media print {
	#topMenu {
		display: none ! important;
	}
	/* not sure if we need all the importants */
	.tiddler {
		border-style: none ! important;
		margin:0px ! important;
		padding:0px ! important;
		padding-bottom:2em ! important;
	}
	.tagglyTagging .button, .tagglyTagging .hidebutton {
		display: none ! important;
	}
	.headerShadow {
		visibility: hidden ! important;
	}
	.tagglyTagged .quickopentag, .tagged .quickopentag {
		border-style: none ! important;
	}
	.quickopentag a.button, .miniTag {
		display: none ! important;
	}
}

/* get user styles specified in StyleSheet */
[[StyleSheet]]

/*}}}*/

|Name|MptwTrim|
|Description|Mptw Theme with a reduced header to increase useful space|
|ViewTemplate|MptwTheme##ViewTemplate|
|EditTemplate|MptwTheme##EditTemplate|
|StyleSheet|MptwTheme##StyleSheet|
|PageTemplate|##PageTemplate|

!PageTemplate
<!--{{{-->

<!-- horizontal MainMenu -->
<div id='topMenu' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<span refresh='content' tiddler='SiteTitle' style="padding-left:1em;font-weight:bold;"></span>:
<span refresh='content' tiddler='MainMenu'></span>
</div>
<div id='sidebar'>
	<div id='sidebarOptions'>
		<div refresh='content' tiddler='SideBarOptions'></div>
		<div style="margin-left:0.1em;"
			macro='slider chkTabSliderPanel SideBarTabs {{"tabs \u00bb"}} "Show Timeline, All, Tags, etc"'></div>
	</div>
</div>
<div id='displayArea'>
	<div id='messageArea'></div>
	<div id='tiddlerDisplay'></div>
</div>

For upgrading. See [[ImportTiddlers]].
URL: http://mptw.tiddlyspot.com/upgrade.html
/***
|Description:|A place to put your config tweaks so they aren't overwritten when you upgrade MPTW|
See http://www.tiddlywiki.org/wiki/Configuration_Options for other options you can set. In some cases where there are clashes with other plugins it might help to rename this to zzMptwUserConfigPlugin so it gets executed last.
***/
//{{{

// example: set your preferred date format
//config.mptwDateFormat = 'MM/0DD/YY';
//config.mptwJournalFormat = 'Journal MM/0DD/YY';

// example: set the theme you want to start with
//config.options.txtTheme = 'MptwRoundTheme';

// example: switch off autosave, switch on backups and set a backup folder
//config.options.chkSaveBackups = true;
//config.options.chkAutoSave = false;
//config.options.txtBackupFolder = 'backups';

// uncomment to disable 'new means new' functionality for the new journal macro
//config.newMeansNewForJournalsToo = false;

//}}}
<html>
<script type="text/javascript">
<!--
var acCODE;
acCODE = "<img width='0' height='0' src='http://www.life.kyutech.ac.jp/~hanamoto/MrLite/mrliteLogger.php?" + 
"PID="+ escape(document.location.href)+ "&" + 
"PTITLE=" +escape(document.title)+ "&" + 
"PPID=" +escape(document.referrer)+ "' ";
// -->
</script>
<script type="text/javascript" src="http://www.life.kyutech.ac.jp/~hanamoto/MrLite/mrliteLogger.js"></script>
<noscript><a href="http://www.mr-analizer.com" target="_blank" title="アクセス解析"><img border="0" src="http://www.life.kyutech.ac.jp/~hanamoto/MrLite/mrliteLogger.php?ns=True" width="40" height="14"  alt="" /></a></noscript>
</html>
<html>
<img style="width: 162px; height: 180px;" alt="" src="ProfHanamoto.jpg">
</html>
/***
|Name|NestedSlidersPlugin|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Documentation|http://www.TiddlyTools.com/#NestedSlidersPluginInfo|
|Version|2.4.6|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Options|##Configuration|
|Description|show content in nest-able sliding/floating panels, without creating separate tiddlers for each panel's content|
!!!!!Documentation
>see [[NestedSlidersPluginInfo]]
!!!!!Configuration
<<<
<<option chkFloatingSlidersAnimate>> allow floating sliders to animate when opening/closing
>Note: This setting can cause 'clipping' problems in some versions of InternetExplorer.
>In addition, for floating slider animation to occur you must also allow animation in general (see [[AdvancedOptions]]).
<<<
!!!!!Revisions
<<<
2008.09.07 - 2.4.6 added removeOptionCookie() function for compatibility with [[CookieManagerPlugin]]
2008.06.07 - 2.4.5 in 'onmouseover' handler for 'open on hover' slider buttons,<br>use call() method when invoking document.onclick function (avoids error in IE)
|please see [[NestedSlidersPluginInfo]] for additional revision details|
2005.11.03 - 1.0.0 initial public release.  Thanks to RodneyGomes, GeoffSlocock, and PaulPetterson for suggestions and experiments.
<<<
!!!!!Code
***/
//{{{
version.extensions.NestedSlidersPlugin= {major: 2, minor: 4, revision: 6, date: new Date(2008,9,7)};

// options for deferred rendering of sliders that are not initially displayed
if (config.options.chkFloatingSlidersAnimate===undefined)
	config.options.chkFloatingSlidersAnimate=false; // avoid clipping problems in IE

// default styles for 'floating' class
setStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \
	background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");

// if removeOptionCookie() function is not defined by TW core, define it here.
if (window.removeOptionCookie===undefined) {
window.removeOptionCookie=function(cookie) {
	var ex=new Date(); ex.setTime(ex.getTime()-1000);  // immediately expire cookie
	document.cookie = cookie+"=novalue; path=/; expires="+ex.toGMTString();
}
}

config.formatters.push( {
	name: "nestedSliders",
	match: "\\n?\\+{3}",
	terminator: "\\s*\\={3}\\n?",
	lookahead: "\\n?\\+{3}(\\+)?(\\([^\\)]*\\))?(\\!*)?(\\^(?:[^\\^\\*\\@\\[\\>]*\\^)?)?(\\*)?(\\@)?(?:\\{\\{([\\w]+[\\s\\w]*)\\{)?(\\[[^\\]]*\\])?(\\[[^\\]]*\\])?(?:\\}{3})?(\\#[^:]*\\:)?(\\>)?(\\.\\.\\.)?\\s*",
	handler: function(w)
		{
			lookaheadRegExp = new RegExp(this.lookahead,"mg");
			lookaheadRegExp.lastIndex = w.matchStart;
			var lookaheadMatch = lookaheadRegExp.exec(w.source)
			if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
			{
				var defopen=lookaheadMatch[1];
				var cookiename=lookaheadMatch[2];
				var header=lookaheadMatch[3];
				var panelwidth=lookaheadMatch[4];
				var transient=lookaheadMatch[5];
				var hover=lookaheadMatch[6];
				var buttonClass=lookaheadMatch[7];
				var label=lookaheadMatch[8];
				var openlabel=lookaheadMatch[9];
				var panelID=lookaheadMatch[10];
				var blockquote=lookaheadMatch[11];
				var deferred=lookaheadMatch[12];

				// location for rendering button and panel
				var place=w.output;

				// default to closed, no cookie, no accesskey, no alternate text/tip
				var show="none"; var cookie=""; var key="";
				var closedtext=">"; var closedtip="";
				var openedtext="<"; var openedtip="";

				// extra "+", default to open
				if (defopen) show="block";

				// cookie, use saved open/closed state
				if (cookiename) {
					cookie=cookiename.trim().slice(1,-1);
					cookie="chkSlider"+cookie;
					if (config.options[cookie]==undefined)
						{ config.options[cookie] = (show=="block") }
					show=config.options[cookie]?"block":"none";
				}

				// parse label/tooltip/accesskey: [label=X|tooltip]
				if (label) {
					var parts=label.trim().slice(1,-1).split("|");
					closedtext=parts.shift();
					if (closedtext.substr(closedtext.length-2,1)=="=")	
						{ key=closedtext.substr(closedtext.length-1,1); closedtext=closedtext.slice(0,-2); }
					openedtext=closedtext;
					if (parts.length) closedtip=openedtip=parts.join("|");
					else { closedtip="show "+closedtext; openedtip="hide "+closedtext; }
				}

				// parse alternate label/tooltip: [label|tooltip]
				if (openlabel) {
					var parts=openlabel.trim().slice(1,-1).split("|");
					openedtext=parts.shift();
					if (parts.length) openedtip=parts.join("|");
					else openedtip="hide "+openedtext;
				}

				var title=show=='block'?openedtext:closedtext;
				var tooltip=show=='block'?openedtip:closedtip;

				// create the button
				if (header) { // use "Hn" header format instead of button/link
					var lvl=(header.length>5)?5:header.length;
					var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,buttonClass,title);
					btn.onclick=onClickNestedSlider;
					btn.setAttribute("href","javascript:;");
					btn.setAttribute("title",tooltip);
				}
				else
					var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider,buttonClass);
				btn.innerHTML=title; // enables use of HTML entities in label

				// set extra button attributes
				btn.setAttribute("closedtext",closedtext);
				btn.setAttribute("closedtip",closedtip);
				btn.setAttribute("openedtext",openedtext);
				btn.setAttribute("openedtip",openedtip);
				btn.sliderCookie = cookie; // save the cookiename (if any) in the button object
				btn.defOpen=defopen!=null; // save default open/closed state (boolean)
				btn.keyparam=key; // save the access key letter ("" if none)
				if (key.length) {
					btn.setAttribute("accessKey",key); // init access key
					btn.onfocus=function(){this.setAttribute("accessKey",this.keyparam);}; // **reclaim** access key on focus
				}
				btn.setAttribute("hover",hover?"true":"false");
				btn.onmouseover=function(ev) {
					// optional 'open on hover' handling
					if (this.getAttribute("hover")=="true" && this.sliderPanel.style.display=='none') {
						document.onclick.call(document,ev); // close transients
						onClickNestedSlider(ev); // open this slider
					}
					// mouseover on button aligns floater position with button
					if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this,this.sliderPanel);
				}

				// create slider panel
				var panelClass=panelwidth?"floatingPanel":"sliderPanel";
				if (panelID) panelID=panelID.slice(1,-1); // trim off delimiters
				var panel=createTiddlyElement(place,"div",panelID,panelClass,null);
				panel.button = btn; // so the slider panel know which button it belongs to
				btn.sliderPanel=panel; // so the button knows which slider panel it belongs to
				panel.defaultPanelWidth=(panelwidth && panelwidth.length>2)?panelwidth.slice(1,-1):"";
				panel.setAttribute("transient",transient=="*"?"true":"false");
				panel.style.display = show;
				panel.style.width=panel.defaultPanelWidth;
				panel.onmouseover=function(event) // mouseover on panel aligns floater position with button
					{ if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this.button,this); }

				// render slider (or defer until shown) 
				w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
				if ((show=="block")||!deferred) {
					// render now if panel is supposed to be shown or NOT deferred rendering
					w.subWikify(blockquote?createTiddlyElement(panel,"blockquote"):panel,this.terminator);
					// align floater position with button
					if (window.adjustSliderPos) window.adjustSliderPos(place,btn,panel);
				}
				else {
					var src = w.source.substr(w.nextMatch);
					var endpos=findMatchingDelimiter(src,"+++","===");
					panel.setAttribute("raw",src.substr(0,endpos));
					panel.setAttribute("blockquote",blockquote?"true":"false");
					panel.setAttribute("rendered","false");
					w.nextMatch += endpos+3;
					if (w.source.substr(w.nextMatch,1)=="\n") w.nextMatch++;
				}
			}
		}
	}
)

function findMatchingDelimiter(src,starttext,endtext) {
	var startpos = 0;
	var endpos = src.indexOf(endtext);
	// check for nested delimiters
	while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {
		// count number of nested 'starts'
		var startcount=0;
		var temp = src.substring(startpos,endpos-1);
		var pos=temp.indexOf(starttext);
		while (pos!=-1)  { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }
		// set up to check for additional 'starts' after adjusting endpos
		startpos=endpos+endtext.length;
		// find endpos for corresponding number of matching 'ends'
		while (startcount && endpos!=-1) {
			endpos = src.indexOf(endtext,endpos+endtext.length);
			startcount--;
		}
	}
	return (endpos==-1)?src.length:endpos;
}
//}}}
//{{{
window.onClickNestedSlider=function(e)
{
	if (!e) var e = window.event;
	var theTarget = resolveTarget(e);
	while (theTarget && theTarget.sliderPanel==undefined) theTarget=theTarget.parentNode;
	if (!theTarget) return false;
	var theSlider = theTarget.sliderPanel;
	var isOpen = theSlider.style.display!="none";

	// toggle label
	theTarget.innerHTML=isOpen?theTarget.getAttribute("closedText"):theTarget.getAttribute("openedText");
	// toggle tooltip
	theTarget.setAttribute("title",isOpen?theTarget.getAttribute("closedTip"):theTarget.getAttribute("openedTip"));

	// deferred rendering (if needed)
	if (theSlider.getAttribute("rendered")=="false") {
		var place=theSlider;
		if (theSlider.getAttribute("blockquote")=="true")
			place=createTiddlyElement(place,"blockquote");
		wikify(theSlider.getAttribute("raw"),place);
		theSlider.setAttribute("rendered","true");
	}
	// show/hide the slider
	if(config.options.chkAnimate && (!hasClass(theSlider,'floatingPanel') || config.options.chkFloatingSlidersAnimate))
		anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));
	else
		theSlider.style.display = isOpen ? "none" : "block";
	// reset to default width (might have been changed via plugin code)
	theSlider.style.width=theSlider.defaultPanelWidth;
	// align floater panel position with target button
	if (!isOpen && window.adjustSliderPos) window.adjustSliderPos(theSlider.parentNode,theTarget,theSlider);
	// if showing panel, set focus to first 'focus-able' element in panel
	if (theSlider.style.display!="none") {
		var ctrls=theSlider.getElementsByTagName("*");
		for (var c=0; c<ctrls.length; c++) {
			var t=ctrls[c].tagName.toLowerCase();
			if ((t=="input" && ctrls[c].type!="hidden") || t=="textarea" || t=="select")
				{ ctrls[c].focus(); break; }
		}
	}
	var cookie=theTarget.sliderCookie;
	if (cookie && cookie.length) {
		config.options[cookie]=!isOpen;
		if (config.options[cookie]!=theTarget.defOpen) window.saveOptionCookie(cookie);
		else window.removeOptionCookie(cookie); // remove cookie if slider is in default display state
	}

	// prevent SHIFT-CLICK from being processed by browser (opens blank window... yuck!)
	// prevent clicks *within* a slider button from being processed by browser
	// but allow plain click to bubble up to page background (to close transients, if any)
	if (e.shiftKey || theTarget!=resolveTarget(e))
		{ e.cancelBubble=true; if (e.stopPropagation) e.stopPropagation(); }
	Popup.remove(); // close open popup (if any)
	return false;
}
//}}}
//{{{
// click in document background closes transient panels 
document.nestedSliders_savedOnClick=document.onclick;
document.onclick=function(ev) { if (!ev) var ev=window.event; var target=resolveTarget(ev);

	if (document.nestedSliders_savedOnClick)
		var retval=document.nestedSliders_savedOnClick.apply(this,arguments);
	// if click was inside a popup... leave transient panels alone
	var p=target; while (p) if (hasClass(p,"popup")) break; else p=p.parentNode;
	if (p) return retval;
	// if click was inside transient panel (or something contained by a transient panel), leave it alone
	var p=target; while (p) {
		if ((hasClass(p,"floatingPanel")||hasClass(p,"sliderPanel"))&&p.getAttribute("transient")=="true") break;
		p=p.parentNode;
	}
	if (p) return retval;
	// otherwise, find and close all transient panels...
	var all=document.all?document.all:document.getElementsByTagName("DIV");
	for (var i=0; i<all.length; i++) {
		 // if it is not a transient panel, or the click was on the button that opened this panel, don't close it.
		if (all[i].getAttribute("transient")!="true" || all[i].button==target) continue;
		// otherwise, if the panel is currently visible, close it by clicking it's button
		if (all[i].style.display!="none") window.onClickNestedSlider({target:all[i].button}) 
	}
	return retval;
};
//}}}
//{{{
// adjust floating panel position based on button position
if (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel) {
	if (hasClass(panel,"floatingPanel")) {
		var rightEdge=document.body.offsetWidth-1;
		var panelWidth=panel.offsetWidth;
		var left=0;
		var top=btn.offsetHeight; 
		if (place.style.position=="relative" && findPosX(btn)+panelWidth>rightEdge) {
			left-=findPosX(btn)+panelWidth-rightEdge; // shift panel relative to button
			if (findPosX(btn)+left<0) left=-findPosX(btn); // stay within left edge
		}
		if (place.style.position!="relative") {
			var left=findPosX(btn);
			var top=findPosY(btn)+btn.offsetHeight;
			var p=place; while (p && !hasClass(p,'floatingPanel')) p=p.parentNode;
			if (p) { left-=findPosX(p); top-=findPosY(p); }
			if (left+panelWidth>rightEdge) left=rightEdge-panelWidth;
			if (left<0) left=0;
		}
		panel.style.left=left+"px"; panel.style.top=top+"px";
	}
}
//}}}
//{{{
// TW2.1 and earlier:
// hijack Slider stop handler so overflow is visible after animation has completed
Slider.prototype.coreStop = Slider.prototype.stop;
Slider.prototype.stop = function()
	{ this.coreStop.apply(this,arguments); this.element.style.overflow = "visible"; }

// TW2.2+
// hijack Morpher stop handler so sliderPanel/floatingPanel overflow is visible after animation has completed
if (version.major+.1*version.minor+.01*version.revision>=2.2) {
	Morpher.prototype.coreStop = Morpher.prototype.stop;
	Morpher.prototype.stop = function() {
		this.coreStop.apply(this,arguments);
		var e=this.element;
		if (hasClass(e,"sliderPanel")||hasClass(e,"floatingPanel")) {
			// adjust panel overflow and position after animation
			e.style.overflow = "visible";
			if (window.adjustSliderPos) window.adjustSliderPos(e.parentNode,e.button,e);
		}
	};
}
//}}}
/***
|Name:|NewHerePlugin|
|Description:|Creates the new here and new journal macros|
|Version:|3.0 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#NewHerePlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
merge(config.macros, {
	newHere: {
		handler: function(place,macroName,params,wikifier,paramString,tiddler) {
			wikify("<<newTiddler "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
		}
	},
	newJournalHere: {
		handler: function(place,macroName,params,wikifier,paramString,tiddler) {
			wikify("<<newJournal "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
		}
	}
});

//}}}

/***
|Name:|NewMeansNewPlugin|
|Description:|If 'New Tiddler' already exists then create 'New Tiddler (1)' and so on|
|Version:|1.1.1 ($Rev: 2263 $)|
|Date:|$Date: 2007-06-13 04:22:32 +1000 (Wed, 13 Jun 2007) $|
|Source:|http://mptw.tiddlyspot.com/empty.html#NewMeansNewPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Note: I think this should be in the core
***/
//{{{

// change this or set config.newMeansNewForJournalsToo it in MptwUuserConfigPlugin
if (config.newMeansNewForJournalsToo == undefined) config.newMeansNewForJournalsToo = true;

String.prototype.getNextFreeName = function() {
       var numberRegExp = / \(([0-9]+)\)$/;
       var match = numberRegExp.exec(this);
       if (match) {
               var num = parseInt(match[1]) + 1;
               return this.replace(numberRegExp," ("+num+")");
       }
       else {
               return this + " (1)";
       }
}

config.macros.newTiddler.checkForUnsaved = function(newName) {
	var r = false;
	story.forEachTiddler(function(title,element) {
		if (title == newName)
			r = true;
	});
	return r;
}

config.macros.newTiddler.getName = function(newName) {
       while (store.getTiddler(newName) || config.macros.newTiddler.checkForUnsaved(newName))
               newName = newName.getNextFreeName();
       return newName;
}


config.macros.newTiddler.onClickNewTiddler = function()
{
	var title = this.getAttribute("newTitle");
	if(this.getAttribute("isJournal") == "true") {
		title = new Date().formatString(title.trim());
	}

	// ---- these three lines should be the only difference between this and the core onClickNewTiddler
	if (config.newMeansNewForJournalsToo || this.getAttribute("isJournal") != "true")
		title = config.macros.newTiddler.getName(title);

	var params = this.getAttribute("params");
	var tags = params ? params.split("|") : [];
	var focus = this.getAttribute("newFocus");
	var template = this.getAttribute("newTemplate");
	var customFields = this.getAttribute("customFields");
	if(!customFields && !store.isShadowTiddler(title))
		customFields = String.encodeHashMap(config.defaultCustomFields);
	story.displayTiddler(null,title,template,false,null,null);
	var tiddlerElem = story.getTiddler(title);
	if(customFields)
		story.addCustomFields(tiddlerElem,customFields);
	var text = this.getAttribute("newText");
	if(typeof text == "string")
		story.getTiddlerField(title,"text").value = text.format([title]);
	for(var t=0;t<tags.length;t++)
		story.setTiddlerTag(title,tags[t],+1);
	story.focusTiddler(title,focus);
	return false;
};

//}}}

[[2016D3]]
[[2016M2]]
[[2016B4]]

[[2015D3]]
[[2015M2]]
[[2015B4]]

[[2014D3]]
[[2014M2]]
[[2014B4]]

[[2013D3]]
[[2013M2]]
[[2013B4]]

[[2012M2]]
[[2012B4]]

[[2011D3]]
[[2011M2]]
[[2011B4]]

[[2010M2]]
[[2010B4]]

[[2009D3]]
[[2009M2]]
[[2009B4]]

[[2008M2]]
[[2008B4]]
<html>
<center><img style="width: 600px; " alt="" src="OC_life_2016_hanamoto.jpg" align=""></center>
</html>
<html>
<center><img src="labposter2010J.jpg" alt="" ></center> 
</html>
<html>
<center><img style="width: 600px; " alt="" src="OC_life1_2012_hanamoto.jpg" align=""></center>
</html>
*ダウンロードはこちら 
  プログラム [[psim9.0_demo.zip(47.75M) |limited/powerele/psim9.0_demo.zip]]
*LINK先
  本家  [[powersimtechのホームページ|http://www.powersimtech.com]]
  日本での販売している [[MywayプラスのPSIMホームページ|http://www.psim.jp/]]


!電気電子工学科 第3年次 後期(第3クォーター)] 選択必修 2単位
パワーエレクトロニクス  Power Electronics

担当教員  花本 剛士

!!授業の資料は @@[[LiveCampus|http://horyu.jimut.kyutech.ac.jp/kit/livecamp.nsf/LC_Menu?OpenAgent]]@@にアップロードしています。

!目的
**授業の概要
パワーエレクトロニクスの歴史、電力用半導体素子の特徴、各種電力変換方式の基本構成を学び、パワーエレクトロニクス技術の基本的な概念を修得する。
**授業の位置付け
パワーエレクトロニクスは、現在の電力変換技術の中核をなしており、様々な産業用装置に使用されている。本授業では、代表的な変換方式である、DC-DC変換、DC-AC変換、AC-DC変換の基本回路構成と動作原理を学ぶ。また、PWM制御についての理解を深め、その技術が各種パワーエレクトロニクス装置にどのように各要されているかを理解する。その結果、電力変換技術、回転機駆動制御等のエネルギ変換技術を総合的に修得できる。
 (関連する学習教育目標:C)

!キーワード
  パワー半導体素子、 DC-DC変換、 単相電圧形インバータ
!到達目標
*電力用半導体素子の基本特性を理解できる。
*代表的なDC-DC変換回路の動作原理を理解できる。
*PWM制御技術の基本動作を理解しDC-AC変換装置の動作原理を修得する。 
*AC-DC変換回路の動作原理を理解できる。
*パワーエレクトロニクス応用機器の概要を理解できる。

!授業計画
以下の項目についての講義を行う。
第1回 パワーエレクトロニクスの背景と解析ソフトウェア説明
第2回 パワーエレクトロニクスの役割と基礎知識
第3回 電力増幅と電力変換
第4回 スイッチとして用いる半導体デバイス
第5回 直流-直流変換(チョッパ回路)
第6回 直流-直流変換(DC-DCコンバータ)
第7回 直流-交流変換(単相電圧形インバータ)
第8回 直流-交流変換(三相電圧形インバータ)
第9回 直流-交流変換(インバータの応用)
第10回 交流-直流変換(他励式整流回路)
第11回 交流-直流変換(PWM整流回路)
第12回 交流-交流変換(サイクロコンバータ)
第13回 交流-交流変換(交流位相調整回路)
第14回 パワーエレクトロニクス応用(1)
第15回 試験


!評価方法
 期末試験の結果による

!履修上の注意事項
 電気機器,電気回路,制御システム工学の履修を希望する。過渡現象の修得が望ましい。

!教科書・参考書
*教科書
#小山 純,他著,最新パワーエレクトロニクス入門  (朝倉書店)
*参考書
#河村篤男 編著,他著,パワーエレクトロニクス学入門  ~基礎から実用例まで~(コロナ社)
#堀孝正編著:パワーエレクトロニクス(オーム社)
#河村他共訳:基礎パワーエレクトロニクス(コロナ社)
#正田英介監修:パワーエレクトロニクス(オーム社)

!H19年度パワーエレクトロニクス
''下の資料にはパスワードによるアクセス制限がかかっています''

!!!資料
初めに [[第1回授業内容|limited/powerele/intro/pele_S0H19A.swf]]
第1章 [[電力用半導体素子|limited/powerele/sec1/pele_S1.swf]]
第2章 [[DCDC変換|limited/powerele/sec2/pele_S2.swf]]
第3章 [[DCAC変換|limited/powerele/sec3/pele_S3.swf]]
第4章 [[ACDC変換|limited/powerele/sec4/pele_S4.swf]]
/%
第3章 [[DCAC変換|limited/powerele/sec3/pele_S3.pdf]]
第4章 [[ACDC変換|limited/powerele/sec4/pele_S4.pdf]]
第5章 [[ACAC変換|limited/powerele/sec5/pele_S5.pdf]]
%/
!!!シミュレーションソフトの紹介
[[PSIMの紹介]]

!!!PSIM解析例
第2章 [[sec2.lzh|limited/powerele/sec2/sec2.lzh]]
第3章 [[sec3.lzh|limited/powerele/sec3/sec3.lzh]]
第4章 [[sec3.lzh|limited/powerele/sec4/sec4.lzh]]


!!!再試解答例
[[H19再試|limited/powerele/peleH19再試解答例.pdf]]

/%
!!!出席状況
[[2007年Aコース|limited/powerele/powerele2007a.html]]
!!!解答例
[[H19|limited/powerele/peleH19再試解答例.pdf]]
%/

!H20年度パワーエレクトロニクス
''下の資料の一部にはパスワードによるアクセス制限がかかっています''

!!!資料
初めに [[第1回授業内容|limited/powerele/intro/pele_S0H20A.pdf]]
第1章 [[電力用半導体素子|limited/powerele/sec1/pele_S1.pdf]]
第2章 [[DCDC変換|limited/powerele/sec2/pele_S2.pdf]]
第3章 [[DCAC変換|limited/powerele/sec3/pele_S3.pdf]]
第4章 [[ACDC変換|limited/powerele/sec4/pele_S4.pdf]]
第5章 [[ACAC変換|limited/powerele/sec5/pele_S5.pdf]]

!!!シミュレーションソフトの紹介
[[PSIMの紹介]]

/%
!!!PSIM解析例
第2章 [[sec2.lzh|limited/powerele/sec2/sec2.lzh]]
第3章 [[sec3.lzh|limited/powerele/sec3/sec3.lzh]]
第4章 [[sec3.lzh|limited/powerele/sec4/sec4.lzh]]
%/

/%
!!!出席状況
[[2008年Aコース|limited/powerele/powerele2008a.html]]
%/

/%
!!!再試解答例
[[2008年|]]
/%

!H21年度パワーエレクトロニクス
''下の資料の一部にはパスワードによるアクセス制限がかかっています''

!!!資料
初めに [[第1回授業内容|limited/powerele/intro/pele_S0H21A.pdf]]
第1章 [[電力用半導体素子|limited/powerele/sec1/pele_S1.pdf]]
第2章 [[DCDC変換|limited/powerele/sec2/pele_S2.pdf]]
第3章 [[DCAC変換|limited/powerele/sec3/pele_S3.pdf]]
第4章 [[ACDC変換|limited/powerele/sec4/pele_S4.pdf]]
第5章 [[ACAC変換|limited/powerele/sec5/pele_S5.pdf]]

/%
%/
!!!シミュレーションソフトの紹介
[[PSIMの紹介]]

!!!PSIM解析例
第2章 [[sec2.lzh|limited/powerele/sec2/sec2.lzh]]
第3章 [[sec3.lzh|limited/powerele/sec3/sec3.lzh]]
第4章 [[sec4.lzh|limited/powerele/sec4/sec4.lzh]]

/%
第4章 [[sec4.lzh|limited/powerele/sec4/sec4.lzh]]
第5章 [[sec5.lzh|limited/powerele/sec5/sec5.lzh]]
%/

/%
!!!出席状況
[[2009年|limited/powerele/powerele2009a.html]]
%/

/%
!!!解答例
[[2009年|limited/powerele/H21qa.pdf]]
%/

!H22年度パワーエレクトロニクス

''下の資料の一部にはパスワードによるアクセス制限がかかっています''
!!授業の資料は @@LiveCampus@@にアップロードしています。

/%
!!!資料
初めに及び第1章 [[授業内容|limited/powerele/intro/pele_S0H22A.pdf]]
第2章 [[電力増幅と電力変換|limited/powerele/sec2/pele_sec2.pdf]]
第3章 [[直流-直流変換|limited/powerele/sec3/pele_sec3.pdf]]
第4章 [[直流-交流変換回路|limited/powerele/sec4/pele_sec4.pdf]]
第5章 [[交流-直流変換回路|limited/powerele/sec5/pele_sec5.pdf]]
第6章 [[交流-交流直接変換回路|limited/powerele/sec6/pele_sec6.pdf]]
%/

!!!シミュレーションソフトの紹介
[[PSIMの紹介]]

/%
!!!PSIM解析例
第2章 [[sec2.lzh|limited/powerele/sec2/sec2.lzh]]
第3章 [[sec3.lzh|limited/powerele/sec3/sec3.lzh]]
第4章 [[sec4.lzh|limited/powerele/sec4/sec4.lzh]]
%/

/%
第4章 [[sec4.lzh|limited/powerele/sec4/sec4.lzh]]
第5章 [[sec5.lzh|limited/powerele/sec5/sec5.lzh]]
%/

/%
!!!出席状況
[[2010年|limited/powerele/powerele2010.htm]]


!!!解答例
[[2010年|limited/powerele/H22qa.pdf]]
%/
!H19年度パワーエレクトロニクス
''下の資料にはパスワードによるアクセス制限がかかっています''
!!!資料
初めに [[第1回授業内容|limited/powerele/intro/pele_S0H19B.pdf]]
第1章 [[電力用半導体素子|limited/powerele/sec1/pele_S1.pdf]]
第2章 [[DCDC変換|limited/powerele/sec2/pele_S2.pdf]]
第3章 [[DCAC変換|limited/powerele/sec3/pele_S3.pdf]]
第4章 [[ACDC変換|limited/powerele/sec4/pele_S4.pdf]]
/%
第2章 [[DCDC変換|limited/powerele/sec2/pele_S2.swf]]
第3章 [[DCAC変換|limited/powerele/sec3/pele_S3.swf]]
第4章 [[ACDC変換|limited/powerele/sec4/pele_S4.swf]]
%/
!!!シミュレーションソフトの紹介
[[PSIMの紹介]]
/%
!!!PSIM解析例
第2章 [[sec2.lzh|limited/powerele/sec2/sec2.lzh]]
第3章 [[sec3.lzh|limited/powerele/sec3/sec3.lzh]]
第4章 [[sec3.lzh|limited/powerele/sec4/sec4.lzh]]
%/

!!!出席状況
[[2007年Bコース|limited/powerele/PowerEleH19B.htm]]


!!!解答例
[[H19後期パワーエレクトロニクス1|limited/powerele/peleH19ba.pdf]]

/%
!!!再試解答例
[[H19再試|limited/powerele/peleH19再試解答例.pdf]]
%/
/***
|Name:|PrettyDatesPlugin|
|Description:|Provides a new date format ('pppp') that displays times such as '2 days ago'|
|Version:|1.0 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Source:|http://mptw.tiddlyspot.com/#PrettyDatesPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Notes
* If you want to you can rename this plugin. :) Some suggestions: LastUpdatedPlugin, RelativeDatesPlugin, SmartDatesPlugin, SexyDatesPlugin.
* Inspired by http://ejohn.org/files/pretty.js
***/
//{{{
Date.prototype.prettyDate = function() {
	var diff = (((new Date()).getTime() - this.getTime()) / 1000);
	var day_diff = Math.floor(diff / 86400);

	if (isNaN(day_diff))      return "";
	else if (diff < 0)        return "in the future";
	else if (diff < 60)       return "just now";
	else if (diff < 120)      return "1 minute ago";
	else if (diff < 3600)     return Math.floor(diff/60) + " minutes ago";
	else if (diff < 7200)     return "1 hour ago";
	else if (diff < 86400)    return Math.floor(diff/3600) + " hours ago";
	else if (day_diff == 1)   return "Yesterday";
	else if (day_diff < 7)    return day_diff + " days ago";
	else if (day_diff < 14)   return  "a week ago";
	else if (day_diff < 31)   return Math.ceil(day_diff/7) + " weeks ago";
	else if (day_diff < 62)   return "a month ago";
	else if (day_diff < 365)  return "about " + Math.ceil(day_diff/31) + " months ago";
	else if (day_diff < 730)  return "a year ago";
	else                      return Math.ceil(day_diff/365) + " years ago";
}

Date.prototype.formatString_orig_mptw = Date.prototype.formatString;

Date.prototype.formatString = function(template) {
	return this.formatString_orig_mptw(template).replace(/pppp/,this.prettyDate());
}

// for MPTW. otherwise edit your ViewTemplate as required.
// config.mptwDateFormat = 'pppp (DD/MM/YY)'; 
config.mptwDateFormat = 'pppp'; 

//}}}

<html>
<img alt="" src="Hanamoto2016.jpg" WIDTH=140 align="right"> 
</html>

!!!略歴

1961年  山口県下関市に生れる
1968年4月 下関市立王江小学校入学
1974年4月 下関市立名陵中学校入学
1977年4月  山口県立下関西高等学校入学
1980年4月  九州工業大学工学部電気工学科入学
1984年4月 九州工業大学大学院工学研究科電気工学専攻入学
1986年4月 (株)神戸製鋼所神戸製鉄所設備部設備技術室
1990年5月 九州工業大学地域共同研究センター助手
1997年4月 九州工業大学工学部電気工学科助手
1998年4月 同助教授
2000年4月 同大学大学院生命体工学研究科助教授
2006年4月 同教授
2015年6月 九州工業大学硬式野球部 部長 
2016年4月 生命体工学研究科長

現在に至る

!!!業績
[[論文リスト|PaperList]]
Provides a secondary toolbar for use when editing a tiddler.  This toolbar allows you to quickly insert TiddlyWiki tiddler links, images, macros, etc. or common formatting sequences directly into tiddler content, as well as providing find/replace, sort, and 'split' functions that operate on the tiddler source content displayed in the editor.

<<tiddler QuickEditToolbar with: show>>
+++{{medium{[installation instructions...]}}}>...
After importing these tiddlers, add the following line to your EditTemplate:
{{{
<div macro='tiddler QuickEditToolbar'></div>
}}}
and add the following line to your StyleSheet:
{{{
[[StyleSheetShortcuts]]
}}}
Note that, after adding the QuickEditToolbar to your EditTemplate, it is //not automatically displayed when editing a tiddler//.  To enable display of the toolbar, you can add the following configuration option control to your SideBarOptions (or any other suitable location):
{{{
<<option chkShowQuickEdit>> show QuickEdit toolbar
}}}
When this option is checked and you subsequently edit a tiddler, the QuickEditToolbar will then be displayed.  Alternatively, you can 'hard-code' this setting, so that the QuickEditToolbar will //always// be displayed, by creating a tiddler (e.g., ConfigTweaks), tagged with <<tag systemConfig>>, containing:
{{{
config.options.chkShowQuickEdit=true;
}}}
Optionally, to add a tiddler command item that toggles the display of the QuickEditToolbar while editing a tiddler, insert the following line to your EditTemplate:
{{{
<span class='toolbar' macro='toolbar toggleQuickEdit'></span>
}}}
You can also add individual ~QuickEdit toolbar buttons (e.g. [[QuickEdit_replace]], [[QuickEdit_link]], etc) directly to the tiddler editor menu, by inserting one or more lines to your EditTemplate, like this:
{{{
<span class='toolbar' macro='tiddler QuickEdit_replace'></span>
}}}
===
/***
|Name|QuickEditPlugin|
|Source|http://www.TiddlyTools.com/#QuickEditPlugin|
|Documentation|http://www.TiddlyTools.com/#QuickEditPlugin|
|Version|2.4.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Support functions for ~QuickEdit package: styles, utility functions, and 'toggleQuickEdit' command|
!!!!!Revisions
<<<
2008.09.07 [2.4.1] added removeOptionCookie() function for compatibility with [[CookieManagerPlugin]]
2008.05.17 [2.4.0] copied code from StickyPopupPlugin to remove dependency
2008.05.12 [2.3.0] added "toggleQuickEdit" command handler (replaces inline script command)
2008.01.11 [2.2.0] converted from inline script
2007.03.29 [1.0.0] initial release (as inline script)
<<<
!!!!!Code
***/
//{{{
version.extensions.QuickEditPlugin= {major: 2, minor: 4, revision: 1, date: new Date(2008,9,7)};

// SET STYLESHEET (for toolbar button style)
setStylesheet(".quickEdit a { border:2px outset ButtonFace; -moz-appearance:button; padding:0px 3px; \
	background-color:ButtonFace; color:ButtonText !important;  line-height:200%; font-weight:normal; }", "quickEditStyles");

// if removeOptionCookie() function is not defined by TW core, define it here.
if (window.removeOptionCookie===undefined) {
window.removeOptionCookie=function(cookie) {
	var ex=new Date(); ex.setTime(ex.getTime()-1000);  // immediately expire cookie
	document.cookie = cookie+"=novalue; path=/; expires="+ex.toGMTString();
}
}

// UTILITY FUNCTIONS
config.quickEdit = {
	getField: function(where) {
		var here=story.findContainingTiddler(where); if (!here) return null;
		var e=story.getTiddlerField(here.getAttribute("tiddler"),"text");
		if (e&&e.getAttribute("edit")=="text") return e;
		return null;
	},
	setSelection: function(where,newtext) {
		var e=this.getField(where); if (!e) return false;
		e.focus(); replaceSelection(e,newtext);
		return false;
	},
	wrapSelection: function(where,before,after) {
		var e=this.getField(where); if (!e) return false;
		e.focus(); replaceSelection(e,before+config.quickEdit.getSelection(e)+after);
		return false;
	},
	getSelection: function(e) {
		var seltext="";
		if (e&&e.setSelectionRange)
			seltext=e.value.substr(e.selectionStart,e.selectionEnd-e.selectionStart);
		else if (document.selection) {
			var range = document.selection.createRange();
			if (range.parentElement()==e) seltext=range.text
		}
		return seltext;
	},
	promptForFilename: function(msg,path,file) {
		if(window.Components) { // moz
			try {
				netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
				var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
				var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
				picker.init(window, msg, nsIFilePicker.modeOpen);
				var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
				thispath.initWithPath(path);
				picker.displayDirectory=thispath;
				picker.defaultExtension='jpg';
				picker.defaultString=file;
				picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterImages);
				if (picker.show()!=nsIFilePicker.returnCancel)
					var result="file:///"+picker.file.persistentDescriptor.replace(/\\/g,'/');
			}
			catch(e) { alert('error during local file access: '+e.toString()) }
		}
		else { // IE
			try { // XP only
				var s = new ActiveXObject('UserAccounts.CommonDialog');
				s.Filter='All files|*.*|JPG files|*.jpg|GIF files|*.gif|PNG files|*.png|';
				s.FilterIndex=1; // default to JPG files;
				s.InitialDir=path;
				s.FileName=file;
				if (s.showOpen()) var result=s.FileName;
			}
			catch(e) { var result=prompt(msg,path+file); } // fallback for non-XP IE
		}
		return result;
	}
}
//}}}

//{{{
if (config.options.chkShowQuickEdit===undefined) config.options.chkShowQuickEdit=false;
config.commands.toggleQuickEdit = {
	hideReadOnly: true,
	getText: function() { return config.options.chkShowQuickEdit?'\u221Aquickedit':'quickedit'; },
	tooltip: 'show QuickEdit toolbar buttons',
	handler: function(event,src,title) {
		config.options.chkShowQuickEdit=!config.options.chkShowQuickEdit;
		config.macros.option.propagateOption("chkShowQuickEdit","checked", config.options.chkShowQuickEdit,"input");
		// save cookie when toolbar shown, remove cookie when toolbar hidden
		if (config.options.chkShowQuickEdit) saveOptionCookie("chkShowQuickEdit");
		else removeOptionCookie("chkShowQuickEdit");
		// set link and title based on option state
		src.innerHTML=config.commands.toggleQuickEdit.getText();
		// refresh all actively displayed tiddler editor(s)
		story.forEachTiddler(function(t,e){if (story.isDirty(t)) refreshElements(e);});
		return false;
	}
};
//}}}

// // COPIED FROM [[StickyPopupPlugin]] TO ELIMINATE PLUGIN DEPENDENCY
//{{{
if (config.options.chkStickyPopups==undefined) config.options.chkStickyPopups=false;
Popup.stickyPopup_onDocumentClick = function(ev)
{
	// if click is in a sticky popup, ignore it so popup will remain visible
	var e = ev ? ev : window.event; var target = resolveTarget(e);
	var p=target; while (p) {
		if (hasClass(p,"popup") && (hasClass(p,"sticky")||config.options.chkStickyPopups)) break;
		else p=p.parentNode;
	}
	if (!p) // not in sticky popup (or sticky popups disabled)... use normal click handling
		Popup.onDocumentClick(ev);
	return true;
};
try{removeEvent(document,"click",Popup.onDocumentClick);}catch(e){};
try{addEvent(document,"click",Popup.stickyPopup_onDocumentClick);}catch(e){};
//}}}
/%
|Name|QuickEditToolbar|
|Source|http://www.TiddlyTools.com/#QuickEditToolbar|
|Version|2.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2|
|Type|script|
|Requires|QuickEditPlugin, InlineJavascriptPlugin|
|Optional|QuickEdit_replace, QuickEdit_split, QuickEdit_link, QuickEdit_macro, QuickEdit_image, QuickEdit_tiddler, QuickEdit_file, QuickEdit_format, QuickEdit_sort|
|Overrides||
|Description|quickly insert TiddlyWiki tiddler links or common formatting sequences directly into tiddler content|

Usage (in EditTemplate): <div macro='tiddler QuickEditToolbar with: show'></div>

where "show" is an OPTIONAL keyword to force the toolbar to be displayed regardless of the current 'toggle' state

%/<<tiddler HideTiddlerTags>>/%

TOOLBAR DEFINITIONS BEGIN HERE...
= = = = = = = = = = = = = = = = =
%/{{hidden fine center quickEdit{
<script>
	// note: always show toolbar when directly viewing the tiddler containing the actual toolbar definition!
	var here=story.findContainingTiddler(place); if (here) var tid=here.getAttribute("tiddler");
	var show="$1"!="$"+"1"||config.options.chkShowQuickEdit||tid=="QuickEditToolbar" 
	place.style.display=show?"block":"none";
</script>/%
%/<<tiddler QuickEdit_replace>>/%
%/<<tiddler QuickEdit_split>>/%
%/<<tiddler QuickEdit_sort>>/%
%/ &nbsp;/% (SPACER)
%/<<tiddler QuickEdit_link>>/%
%/<<tiddler QuickEdit_macro>>/%
%/<<tiddler QuickEdit_image>>/%
%/<<tiddler QuickEdit_tiddler>>/%
%/<<tiddler QuickEdit_file>>/%
%/ &nbsp;/% (SPACER)
%/<<tiddler QuickEdit_format>>/%
%/<<tiddler QuickEdit_align>>/%
%/<<tiddler QuickEdit_color>>/%
%/<<tiddler QuickEdit_font>>/%
%/<<tiddler QuickEdit_css>>/%
## krk
%/ &nbsp;/% (SPACER)
%/<<tiddler QuickEdit_list>>/%
%/ &nbsp;/% (SPACER)
%/<<tiddler QuickEdit_tab2tbl>>/%
%/}}}
@@color:#C00;''情報が古いので現状組込まれている [[QuickEditToolbar|QuickEditToolbar]] とは食い違いがあります、いずれ修正します。''@@

tiddler 編集を補助するツールを提供するスクリプト。
前提として以下が必要となる。
*[[NestedSlidersPlugin]] (スライダを使えるようにする plugin) ~~[+] Ver 2.3.1 が必要です~~
*[[InlineJavascriptPlugin]] (tiddler 内で JavaScript が使えるようにする plugin)
また、quicklink 機能を使うならば
*[[GotoPlugin]] (目的の tiddler を簡単検索、ジャンプするための plugin)
も必要。

上記を導入後、[[QuickEditToolbar]] も入れる。これはスクリプトなので、systemConfig タグは要らない。

[[EditTemplate]] に以下のように追記する。(レイアウトは好みで設定してください)
{{{
<div align='right'><span class='toolbar' macro='tiddler QuickEditToolbar'></span>
<span class='toolbar' macro='toolbar deleteTiddler guidejp saveCloseTiddler cancelCloseTiddler +saveTiddler -cancelTiddler'></span></div>
...
}}}
編集時に「quicklink」「format」機能が追加されます。
*''quicklink:'' tiddler へのリンクを作成。外部リンクも同様に作成できる。
*''format:'' TW フォーマット入力の補助する。
!!format 機能 (kuraku Custom)
編集対象を選択した状態で指定する。
|B|ボールド体|
|Ita|イタリック体|
|U|アンダーライン|
|S|取消線|
|super|superscript 文字を小さくして上付きに|
|sub|subscript 文字を小さくして下付きに|
|*bullet|リスト|
|+number|番号付きリスト|
|-unindent|リストの階層をひとつ取り除く|
|hilight|標準ハイライト|
|hilight|cyan ハイライト (kuraku 個人的趣味)|
|color|文字色の設定|
|bgcolor|文字背景色の設定|
|colors|[[colors]] の内容を表示、color、bgcolor にコードをコピー&ペーストする|
|wikilink|TW のリンク [[ ]] を付ける|
|url|URL を付加する。あるいは tiddler を|
|image|イメージ入力|
|table|表入力|
|tab2tbl|タブ区切りを TW の「|(パイプ)」区切りに (Excel→TW)|
|tbl2tab|TW の「|(パイプ)」区切りからタブ区切りに (TW→Excel)|
|blockquote|引用|
|monospaced|装飾無し (モノスペース)|
|monoblock|モノスペース複数行|
|comment|TW コメント|
|comment(prog/css)|プログラム、CSS コメント /* XX */|
|-delcomm|コメントの除去|

!!キーバインド (kuraku custom)
|~Alt-Q|quicklink を開く|
|~Alt-F|format を開く(マウスを使うのであまり意味は無い)|

!!作者のライセンスなど
スクリプトなので使う時には表示されない情報をこちらに。
<<<
|Name|QuickEditToolbar|
|Source|http://www.TiddlyTools.com/#QuickEditToolbar|
|Version|1.0.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin, GotoPlugin, NestedSlidersPlugin|
|Overrides||
|Description|quickly insert TiddlyWiki tiddler links or common formatting sequences directly into tiddler content|

|| revised by kuraku(Ver0.1.1-2007.06.25) |
|Source|http://kuraku.net/tw/tw.html#QuickEditToolbar|

Usage:

in EditTemplate, add: <div class='toolbar' macro='tiddler QuickEditToolbar'></div>
<<<
/%
|Name|QuickEdit_align|
|Source|http://www.TiddlyTools.com/#QuickEdit_align|
|Version|2.2.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2|
|Type|script|
|Requires|QuickEditPlugin|
|Overrides||
|Description|definition for toolbar button for text alignment|

Usage:
QuickEditToolbar: <<tiddler QuickEdit_align>>
OR
EditTemplate: <span class='toolbar' macro='tiddler QuickEdit_align'></span>

**** ALIGNMENT ****
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink"
title="align text"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select text alignment...','');
	s.onchange=function(){
		config.quickEdit.wrapSelection(this.button,'{{'+this.value+'{','}}}');
		Popup.remove(); return false;
	};
	s.options[s.length]=new Option('left','left');
	s.options[s.length-1].title='{{left{...}}}';
	s.options[s.length]=new Option('center','center');
	s.options[s.length-1].title='{{center{...}}}';
	s.options[s.length]=new Option('right','right');
	s.options[s.length-1].title='{{right{...}}}';
	s.options[s.length]=new Option('justify','justify');
	s.options[s.length-1].title='{{justify{...}}}';
	s.options[s.length]=new Option('float left','float left');
	s.options[s.length-1].title='{{floatleft{...}}}';
	s.options[s.length]=new Option('float right','float right');
	s.options[s.length-1].title='{{floatright{...}}}';
	Popup.show(p,false);
	event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>align</a></html>
/%
|Name|QuickEdit_color|
|Source|http://www.TiddlyTools.com/#QuickEdit_color|
|Version|2.2.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2|
|Type|script|
|Requires|QuickEditPlugin|
|Overrides||
|Description|definition of toolbar button for "color" command|

Usage:
QuickEditToolbar: <<tiddler QuickEdit_color>>
OR
EditTemplate: <span class='toolbar' macro='tiddler QuickEdit_color'></span>

**** COLOR ****
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink"
title="text/background color - @@color:#RGB;background-color:#RGB;...@@"
onclick="var p=Popup.create(this,null,'popup sticky smallform'); if (!p) return false;
 	p.style.padding='2px';
	function hex(d) { return '0123456789ABCDEF'.substr(d,1); }
	var fg=createTiddlyElement(p,'select'); fg.button=this;
	fg.style.width='12em';
	fg.options[0]=new Option('text color...','');
	fg.options[1]=new Option('\xa0 or enter a value','_ask');
	fg.options[2]=new Option('\xa0 or use default color','');
	for (var r=0;r<16;r+=3) for (var g=0;g<16;g+=3) for (var b=0;b<16;b+=3) {
		var label=hex(r)+hex(g)+hex(b);
		fg.options[fg.length]=new Option(label,'#'+label);
		fg.options[fg.length-1].style.color='#'+label;
	}
	fg.onchange=function(){ var val=this.value;
		if (val=='_ask') { val=prompt('Enter a CSS color value');
		if (!val||!val.length) return false; }
		this.options[0].value=val; this.options[0].text=val.length?'text: '+val:'text color...';
		var bg=this.nextSibling;
		for (var i=3;i<bg.options.length;i++) bg.options[i].style.color=val;
		var preview=this.nextSibling.nextSibling.nextSibling;
		var t=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
		t=t.replace(/^@@(color\:.+;)?(background-color\:.+;)?/,'').replace(/@@$/,'');
		if (!t.length) t='~AaBbCcDdEeFfGgHhIiJj 1234567890';
		var fg=this.value; if (fg.length) fg='color:'+fg+';';
		var bg=this.nextSibling.value; if (bg.length) bg='background-color:'+bg+';';
		if (fg.length||bg.length) t='@@'+fg+bg+t+'@@';
		removeChildren(preview); wikify(t,preview);
		this.selectedIndex=0; return false;
	};
	var bg=createTiddlyElement(p,'select'); bg.button=this;
	bg.style.width='12em';
	bg.options[0]=new Option('background color...','');
	bg.options[1]=new Option('\xa0 or enter a value','_ask');
	bg.options[2]=new Option('\xa0 or use default color','');
	for (var r=0;r<16;r+=3) for (var g=0;g<16;g+=3) for (var b=0;b<16;b+=3) {
		var label=hex(15-r)+hex(15-g)+hex(15-b);
		bg.options[bg.length]=new Option(label,'#'+label);
		bg.options[bg.length-1].style.backgroundColor='#'+label;
	}
	bg.onchange=function(){ var val=this.value;
		if (val=='_ask') { val=prompt('Enter a CSS color value');
		if (!val||!val.length) return false; }
		this.options[0].value=val;
		this.options[0].text=val.length?'background: '+val:'background color...';
		var fg=this.previousSibling;
		for (var i=3;i<fg.options.length;i++) fg.options[i].style.backgroundColor=val;
		var preview=this.nextSibling.nextSibling;
		var t=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
		t=t.replace(/^@@(color\:.+;)?(background-color\:.+;)?/,'').replace(/@@$/,'');
		if (!t.length) t='~AaBbCcDdEeFfGgHhIiJj 1234567890';
		var fg=this.previousSibling.value; if (fg.length) fg='color:'+fg+';';
		var bg=this.value; if (bg.length) bg='background-color:'+bg+';';
		if (fg.length||bg.length) t='@@'+fg+bg+t+'@@';
		removeChildren(preview); wikify(t,preview);
		this.selectedIndex=0; return false;
	};
	var b=createTiddlyElement(p,'input',null,null,null,{type:'button'}); b.button=this;
	b.value='ok'; b.style.width='4em';
	b.onclick=function() {
		var fg=this.previousSibling.previousSibling.value; if (fg.length) fg='color:'+fg+';';
		var bg=this.previousSibling.value; if (bg.length) bg='background-color:'+bg+';';
		var t=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
		t=t.replace(/^@@(color\:.+;)?(background-color\:.+;)?/,'').replace(/@@$/,'');
		if (fg.length||bg.length) config.quickEdit.setSelection(this.button,'@@'+fg+bg+t+'@@');
		Popup.remove(); return false;
	};
	var preview=createTiddlyElement(p,'div',null,'viewer'); var s=preview.style;
	s.border='1px solid'; s.margin='2px'; s.width='24em'; s.padding='3px'; s.MozBorderRadius='3px';
	s.overflow='hidden'; s.textAlign='center'; s.whiteSpace='normal';
	var t=config.quickEdit.getSelection(config.quickEdit.getField(this));
	wikify(t.length?t:'~AaBbCcDdEeFfGgHhIiJj 1234567890',preview);
	Popup.show(p,false);
	event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>color</a></html>
/%
|Name|QuickEdit_format|
|Source|http://www.TiddlyTools.com/#QuickEdit_format|
|Version|2.2.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2|
|Type|script|
|Requires|QuickEditPlugin|
|Overrides||
|Description|definition for toolbar button for text formatting|

Usage:
QuickEditToolbar: <<tiddler QuickEdit_format>>
OR
EditTemplate: <span class='toolbar' macro='tiddler QuickEdit_format'></span>

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" title="''bold''" accesskey="B" 
onclick="config.quickEdit.wrapSelection(this,'\x27\x27','\x27\x27'); return false;"
>&nbsp;B&nbsp;</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" title="//italics//" accesskey="I" 
onclick="config.quickEdit.wrapSelection(this,'//','//'); return false;"
>&nbsp;I&nbsp;</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" title="__underline__" accesskey="U" 
onclick="config.quickEdit.wrapSelection(this,'__','__'); return false;"
>&nbsp;U&nbsp;</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" title="--strikethrough--" accesskey="S" 
onclick="config.quickEdit.wrapSelection(this,'--','--'); return false;"
>&nbsp;S&nbsp;</a></html>/%

%/ &nbsp;/%  SPACER

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink"
title="format text"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select text format...','');
	s.onchange=function(){
		var parts=this.value.split(',');
		config.quickEdit.wrapSelection(this.button,parts[0],parts[1]);
		Popup.remove(); return false;
	};
	s.options[s.length]=new Option('superscript','^^,^^');
	s.options[s.length-1].title='^^superscript^^';
	s.options[s.length]=new Option('subscript','~~,~~');
	s.options[s.length-1].title='~~subcript~~';
	s.options[s.length]=new Option('blockquote','\n\<\<\<\n,\n\<\<\<\n');
	s.options[s.length-1].title='indented blockquote - \<\<\<';
	s.options[s.length]=new Option('monospaced','{{{,}}}');
	s.options[s.length-1].title='inline monospaced text - {{{...}}}';
	s.options[s.length]=new Option('pre','\n{{{\n,\n}}}\n');
	s.options[s.length-1].title='multi-line monospaced text box - {{{...}}}';
	s.options[s.length]=new Option('heading 1','\n!,\n');
	s.options[s.length-1].title='H1 heading - !';
	s.options[s.length]=new Option('heading 2','\n!!,\n');
	s.options[s.length-1].title='H2 heading - !';
	s.options[s.length]=new Option('heading 3','\n!!!,\n');
	s.options[s.length-1].title='H3 heading - !';
	s.options[s.length]=new Option('heading 4','\n!!!!,\n');
	s.options[s.length-1].title='H4 heading - !';
	s.options[s.length]=new Option('heading 5','\n!!!!!,\n');
	s.options[s.length-1].title='H5 heading - !';
	s.options[s.length]=new Option('comment','/%,%/');
	s.options[s.length-1].title='comment (hidden content) - /%...%/';
	s.options[s.length]=new Option('HTML','<html>,<\x2fhtml>');
	s.options[s.length-1].title='HTML syntax - <html>...<\x2fhtml>';
	Popup.show(p,false);
	event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>format</a></html>
/%
|Name|QuickEdit_image|
|Source|http://www.TiddlyTools.com/#QuickEdit_image|
|Version|2.2.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2|
|Type|script|
|Requires|QuickEditPlugin|
|Overrides||
|Description|definition for toolbar buttons that insert embedded image references|

Usage:
QuickEditToolbar: <<tiddler QuickEdit_image>>
OR
EditTemplate: <span class='toolbar' macro='tiddler QuickEdit_image'></span>

**** INSERT IMAGE ****
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink"
	title="embed an image (jpg/gif/png) - [img[tooltip|URL]] or [img[tooltip|path/to/file.ext]]"
	onclick="var fn=config.quickEdit.promptForFilename('Enter/select an image file',getLocalPath(document.location.href),'');
	if (!fn) return false;  /* cancelled by user */
	var tip=prompt('Enter a tooltip for this image',''); if (!tip) tip=''; else tip+='|';
	return config.quickEdit.setSelection(this,'[img['+tip+fn+']]');"
>image</a></html>
/%
|Name|QuickEdit_link|
|Source|http://www.TiddlyTools.com/#QuickEdit_link|
|Version|2.2.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2|
|Type|script|
|Requires|QuickEditPlugin|
|Overrides||
|Description|toolbar button that inserts a ~PrettyTiddlyLink to a tiddler or external file|

Usage:
QuickEditToolbar: <<tiddler QuickEdit_link>>
OR
EditTemplate: <span class='toolbar' macro='tiddler QuickEdit_link'></span>

**** INSERT LINK ****
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink"
title="add a 'PrettyLink' to another tiddler - [[link text|TiddlerName]]"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select a tiddler or file...','');
	s.onchange=function(){
		var title=this.value; var txt=title;
		if (title=='_file') {
			title=config.quickEdit.promptForFilename('Select a file',
				getLocalPath(document.location.href),'');
			if (!title) { this.selectedIndex=0; this.focus(); return false; }
			var txt=title.substr(title.lastIndexOf('/')+1);
		}
		var txt=prompt('Enter the text to display for this link',txt);
		if (!txt) { this.selectedIndex=0; this.focus(); return false; }
		config.quickEdit.setSelection(this.button,'[['+txt+'|'+title+']]');
		Popup.remove(); return false;
	};
	s.options[s.length]=new Option('[browse for file...]','_file');
	var tids=store.getTiddlers('title');
	for (var t=0; t<tids.length; t++) {
		s.options[s.length]=new Option(tids[t].title,tids[t].title);
		s.options[s.length-1].title=tids[t].getSubtitle();
	}
	var s=createTiddlyElement(p,'select');
	s.options[0]=new Option('match tag...','');
	s.onchange=function(){
		var tag=this.value;
		var tids=tag.length?store.getTaggedTiddlers(tag,'title'):store.getTiddlers('title');
		var list=this.previousSibling;
		while (list.length) list.options[0]=null;
		var prompt='select a tiddler or file...';
		if (tag.length) prompt='select a tagged tiddler ['+tids.length+' matches]...';
		list.options[0]=new Option(prompt,'');
		if (!tag.length) list.options[list.length]=new Option('[browse for file...]','_file');
		for (var t=0; t<tids.length; t++) {
			list.options[list.length]=new Option(tids[t].title,tids[t].title);
			list.options[list.length-1].title=tids[t].getSubtitle();
		}
	};
	var tags=store.getTags();
	for (var t=0; t<tags.length; t++) s.options[s.length]=new Option(tags[t][0],tags[t][0]);
	Popup.show(p,false);
	event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>link</a></html>
/%
|Name|QuickEdit_list|
|Source|http://tw.kuraku.net/tw.html#QuickEdit_list|
|Version|2.2.0|
|Author|kuraku|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2|
|Type|script|
|Requires|QuickEditPlugin|
|Overrides||
|Description|definition for toolbar button for text formatting|

Usage:
QuickEditToolbar: <<tiddler QuickEdit_list>>
OR
EditTemplate: <span class='toolbar' macro='tiddler QuickEdit_list'></span>

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" title="*bullet" onclick="return config.quickEdit.replaceRegexSelection(this,'^','\*');"
>bullet</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" title="#numbered" onclick="return config.quickEdit.replaceRegexSelection(this,'^','\#');"
>number</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" title="Un Indent" onclick="return config.quickEdit.replaceRegexSelection(this,'^[\*\+#]','');"
>-unindent</a></html>/%

%/<script>
if(config.quickEdit.replaceRegexSelection == undefined){
	config.quickEdit.replaceRegexSelection = function(where, regex, replacetext) {
		var e=this.getField(where); if (!e) return false;
		e.focus(); var seltext = config.quickEdit.getSelection(e);
		var regexp = new RegExp(regex,'mg');
		seltext = seltext.replace(regexp, replacetext);
		return config.quickEdit.setSelection(where, seltext);
	};
}
</script>
/%
|Name|QuickEdit_macro|
|Source|http://www.TiddlyTools.com/#QuickEdit_macro|
|Version|2.2.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2|
|Type|script|
|Requires|QuickEditPlugin|
|Overrides||
|Description|definition for toolbar button that inserts macros with guide text|

Usage:
QuickEditToolbar: <<tiddler QuickEdit_macro>>
OR
EditTemplate: <span class='toolbar' macro='tiddler QuickEdit_macro'></span>

**** INSERT MACRO ****
The "macro" command can include optional "guideText" for any given macro, as an aide to entering macro parameters, by embedding placeholders or recommended default values into the macro syntax that is inserted into your tiddler content.  For built-in TW core macros, this guideText is defined below.  You can add guideText to your own plugin-defined macros by using the following javascript syntax: config.macros.macroName.guideText="guide text goes here";
%/<<tiddler {{
	/* SET MACRO GUIDE TEXT (for built-in core macros) (11/17 - TBD - incomplete list) */
	config.macros.edit.guideText="fieldname #rows";
	config.macros.view.guideText="fieldname (link,wikified,date) format";
	config.macros.slider.guideText="cookie TiddlerName label tooltip";
	config.macros.option.guideText="(txtCookieName,chkCookieName)";
	config.macros.tiddler.guideText="TiddlerName with: params...";
	""; /* must return blank to suppress output */ }}>>/%
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink"
title="add a macro - \<\<macroName ...\>\>"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select a macro...','');
	s.onchange=function(){
		config.quickEdit.setSelection(this.button,'\<\<'+this.value+'\>\>');
		Popup.remove(); return false;
	};
	var macros=[]; for (var m in config.macros) if (config.macros[m].handler) macros.push(m); macros.sort();
	for (var i=0; i<macros.length; i++) { var m=macros[i];
		var help=config.macros[m].guideText; if (!help) help=''; else help=' '+help;
		s.options[s.length]=new Option(m,m+help);
		s.options[s.length-1].title='\<\<'+m+help+'\>\>';
	}
	Popup.show(p,false);
	event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>macro</a></html>
/%
|Name|QuickEdit_replace|
|Source|http://www.TiddlyTools.com/#QuickEdit_replace|
|Version|2.2.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2|
|Type|script|
|Requires|QuickEditPlugin|
|Overrides||
|Description|definition for find/replace toolbar button|

Usage:
QuickEditToolbar: <<tiddler QuickEdit_replace>>
OR
EditTemplate: <span class='toolbar' macro='tiddler QuickEdit_replace'></span>

**** FIND/REPLACE/NEXT/ALL ****
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink"
title="find/replace selected text with replacement text"
onclick="var here=story.findContainingTiddler(this); if (!here) return false;
	var e=config.quickEdit.getField(here);
	var s=config.quickEdit.getSelection(e); 
	var p=Popup.create(this,null,'popup sticky smallform'); if (!p) return false;
	var t=createTiddlyElement(p,'input'); t.onfocus=function(){this.select()};
	t.value=s.length?s:'enter target text';
	var r=createTiddlyElement(p,'input'); r.onfocus=function(){this.select()};
	r.value='enter replacement text';
	var tid=here.getAttribute('tiddler');
	var b=createTiddlyElement(p,'button',null,null,'?',{tid:tid});
	b.style.width='2em';
	b.title='FIND/FIND NEXT target text';
	b.onclick=function(ev) { /* FIND */
		var e=story.getTiddlerField(this.getAttribute('tid'),'text');
		if (!e||e.getAttribute('edit')!='text') return;
		var t=this.previousSibling.previousSibling;
		e.focus();
		if (e.setSelectionRange) { /* MOZ */
			var newstart=e.value.indexOf(t.value,e.selectionStart+1);
			if (newstart==-1) newstart=e.value.indexOf(t.value); /* wrap around */
			if (newstart==-1) { alert('\u0022'+t.value+'\u0022 not found'); t.focus(); return; }
			e.setSelectionRange(newstart,newstart+t.value.length);
			var linecount=e.value.split('\n').length;
			var thisline=e.value.substr(0,e.selectionStart).split('\n').length;
			e.scrollTop=Math.floor((thisline-1-e.rows/2)*e.scrollHeight/linecount);
		} else if (document.selection) { /* IE */
			var range=document.selection.createRange();
			if(range.parentElement()==e) {
				range.collapse(false);
				var found=false; try{found=range.findText(t.value,e.value.length,4)}catch(e){}
				if (found) range.select();
				else { alert('\u0022'+t.value+'\u0022 not found'); t.focus(); }
			}
		}
	};
	b=createTiddlyElement(p,'button',null,null,'=',{tid:tid});
	b.style.width='2em';
	b.title='REPLACE selected text';
	b.onclick=function(ev) { /* REPLACE */
		var e=story.getTiddlerField(this.getAttribute('tid'),'text');
		if (!e||e.getAttribute('edit')!='text') return;
		var t=this.previousSibling.previousSibling.previousSibling;
		var r=this.previousSibling.previousSibling;
		if (   (e.selectionStart!==undefined && e.selectionEnd==e.selectionStart)
		    || (document.selection && document.selection.createRange().text==''))
			this.previousSibling.click(); /* no selection... do FIND first */
		if (   (e.selectionStart!==undefined && e.selectionEnd==e.selectionStart)
		    || (document.selection && document.selection.createRange().text==''))
			{ t.focus(); return; } /* still no selection... goto target input */
		e.focus(); replaceSelection(e,r.value);
	};
	b=createTiddlyElement(p,'button',null,null,'+',{tid:tid});
	b.style.width='2em';
	b.title='REPLACE selected text AND FIND NEXT target text';
	b.onclick=function(ev) { /* REPLACE and FIND NEXT */
		this.previousSibling.click();
		this.previousSibling.previousSibling.click();
	};
	b=createTiddlyElement(p,'button',null,null,'!',{tid:tid});
	b.style.width='2em';
	b.title='REPLACE ALL occurrences of target text';
	b.onclick=function(ev) { /* REPLACE ALL */
		var e=story.getTiddlerField(this.getAttribute('tid'),'text');
		if (!e||e.getAttribute('edit')!='text') return;
		var t=this.previousSibling.previousSibling.previousSibling.previousSibling.previousSibling;
		var r=this.previousSibling.previousSibling.previousSibling.previousSibling;
		if (!t.value.length) { alert('Please enter the target text'); t.focus(); return; }
		var m='This will replace all occurences of:\n\n';
		m+='\''+t.value+'\'\n\nwith:\n\n\''+r.value+'\'\n\nAre you sure?';
		if (!confirm(m)) { r.focus(); r.select(); return; }
		e.value=e.value.replace(new RegExp(t.value.escapeRegExp(),'gm'),r.value);
		e.focus(); e.select(); Popup.remove();
	};
	Popup.show(p,false);
	if (!s.length) {t.focus();t.select()} else {r.focus();r.select()}
	event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>replace</a></html>
/%
|Name|QuickEdit_sort|
|Source|http://www.TiddlyTools.com/#QuickEdit_sort|
|Version|2.2.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2|
|Type|script|
|Requires|QuickEditPlugin|
|Overrides||
|Description|definition for toolbar "sort" button|

Usage:
QuickEditToolbar: <<tiddler QuickEdit_sort>>
OR
EditTemplate: <span class='toolbar' macro='tiddler QuickEdit_sort'></span>

**** SORT LINES ****
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink"
title="sort lines of text"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select sort order...','');
	s.onchange=function(){
		var e=config.quickEdit.getField(this.button); if (!e) return false;
		var lines=config.quickEdit.getSelection(e).split('\n').sort();
		if (this.value=='D') lines=lines.reverse();
		replaceSelection(e,lines.join('\n'));
		e.focus();
		Popup.remove(); return false;
	};
	s.options[s.length]=new Option('ascending','A');
	s.options[s.length-1].title='ascending';
	s.options[s.length]=new Option('descending','D');
	s.options[s.length-1].title='descending';
	Popup.show(p,false);
	event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>sort</a></html>
/%
|Name|QuickEdit_tab2tbl|
|Source|http://tw.kuraku.net/tw.html#QuickEdit_tab2tbl|
|Version|2.2.0|
|Author|kuraku|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2|
|Type|script|
|Requires|QuickEditPlugin|
|Overrides||
|Description|definition for toolbar button for text formatting|

Usage:
QuickEditToolbar: <<tiddler QuickEdit_tab2tbl>>
OR
EditTemplate: <span class='toolbar' macro='tiddler QuickEdit_tab2tbl'></span>

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" title="tab to table format" onclick="config.quickEdit.replaceRegexSelection(this,'\t','|');
	config.quickEdit.replaceRegexSelection(this,'^|$','|');
	config.quickEdit.replaceRegexSelection(this,'^\\|$','');
	return false;"
>tab2tbl</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" title="table to tab format"
onclick="config.quickEdit.replaceRegexSelection(this,'\t',' ');
	config.quickEdit.replaceRegexSelection(this,'\\|','\t');
	config.quickEdit.replaceRegexSelection(this,'^\t','');
	config.quickEdit.replaceRegexSelection(this,'\t$','');
	return false;"
>tbl2tab</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" title="comma to table format" onclick="config.quickEdit.replaceRegexSelection(this,',','|');
	config.quickEdit.replaceRegexSelection(this,'^|$','|');
	config.quickEdit.replaceRegexSelection(this,'^\\,$','');
	return false;"
>clm2tbl</a></html>/%

%/<script>
if(config.quickEdit.replaceRegexSelection == undefined){
	config.quickEdit.replaceRegexSelection = function(where, regex, replacetext) {
		var e=this.getField(where); if (!e) return false;
		e.focus(); var seltext = config.quickEdit.getSelection(e);
		var regexp = new RegExp(regex,'mg');
		seltext = seltext.replace(regexp, replacetext);
		return config.quickEdit.setSelection(where, seltext);
	};
}
</script>
/%
|Name|QuickEdit_tiddler|
|Source|http://www.TiddlyTools.com/#QuickEdit_tiddler|
|Version|2.2.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2|
|Type|script|
|Requires|QuickEditPlugin|
|Overrides||
|Description|definition for toolbar button that inserts content from another tiddler|

Usage:
QuickEditToolbar: <<tiddler QuickEdit_tiddler>>
OR
EditTemplate: <span class='toolbar' macro='tiddler QuickEdit_tiddler'></span>

**** INSERT TIDDLER ****
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink"
title="copy content from another tiddler"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select a tiddler...','');
	s.onchange=function(){
		var txt=store.getTiddlerText(this.value);
		if (!txt) { displayMessage(this.value+' not found'); this.selectedIndex=0; this.focus(); return false; }
		config.quickEdit.setSelection(this.button,txt);
		Popup.remove(); return false;
	};
	var tids=store.getTiddlers('title');
	for (var t=0; t<tids.length; t++) {
		s.options[s.length]=new Option(tids[t].title,tids[t].title);
		s.options[s.length-1].title=tids[t].getSubtitle();
	}
	var s=createTiddlyElement(p,'select');
	s.options[0]=new Option('match tag...','');
	s.onchange=function(){
		var tag=this.value;
		var tids=tag.length?store.getTaggedTiddlers(tag,'title'):store.getTiddlers('title');
		var list=this.previousSibling;
		while (list.length) list.options[0]=null;
		var prompt='select a '+(tag.length?'tagged ':'')+'tiddler'+(tag.length?(' ['+tids.length+' matches]'):'')+'...';
		list.options[0]=new Option(prompt,'');
		for (var t=0; t<tids.length; t++) {
			list.options[list.length]=new Option(tids[t].title,tids[t].title);
			list.options[list.length-1].title=tids[t].getSubtitle();
		}
	};
	var tags=store.getTags();
	for (var t=0; t<tags.length; t++) s.options[s.length]=new Option(tags[t][0],tags[t][0]);
	Popup.show(p,false);
	event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>tiddler</a></html>
/***
|Name:|QuickOpenTagPlugin|
|Description:|Changes tag links to make it easier to open tags as tiddlers|
|Version:|3.0.1 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#QuickOpenTagPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
config.quickOpenTag = {

	dropdownChar: (document.all ? "\u25bc" : "\u25be"), // the little one doesn't work in IE?

	createTagButton: function(place,tag,excludeTiddler) {
		// little hack so we can do this: <<tag PrettyTagName|RealTagName>>
		var splitTag = tag.split("|");
		var pretty = tag;
		if (splitTag.length == 2) {
			tag = splitTag[1];
			pretty = splitTag[0];
		}
		
		var sp = createTiddlyElement(place,"span",null,"quickopentag");
		createTiddlyText(createTiddlyLink(sp,tag,false),pretty);
		
		var theTag = createTiddlyButton(sp,config.quickOpenTag.dropdownChar,
                        config.views.wikified.tag.tooltip.format([tag]),onClickTag);
		theTag.setAttribute("tag",tag);
		if (excludeTiddler)
			theTag.setAttribute("tiddler",excludeTiddler);
    		return(theTag);
	},

	miniTagHandler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var tagged = store.getTaggedTiddlers(tiddler.title);
		if (tagged.length > 0) {
			var theTag = createTiddlyButton(place,config.quickOpenTag.dropdownChar,
                        	config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);
			theTag.setAttribute("tag",tiddler.title);
			theTag.className = "miniTag";
		}
	},

	allTagsHandler: function(place,macroName,params) {
		var tags = store.getTags(params[0]);
		var filter = params[1]; // new feature
		var ul = createTiddlyElement(place,"ul");
		if(tags.length == 0)
			createTiddlyElement(ul,"li",null,"listTitle",this.noTags);
		for(var t=0; t<tags.length; t++) {
			var title = tags[t][0];
			if (!filter || (title.match(new RegExp('^'+filter)))) {
				var info = getTiddlyLinkInfo(title);
				var theListItem =createTiddlyElement(ul,"li");
				var theLink = createTiddlyLink(theListItem,tags[t][0],true);
				var theCount = " (" + tags[t][1] + ")";
				theLink.appendChild(document.createTextNode(theCount));
				var theDropDownBtn = createTiddlyButton(theListItem," " +
					config.quickOpenTag.dropdownChar,this.tooltip.format([tags[t][0]]),onClickTag);
				theDropDownBtn.setAttribute("tag",tags[t][0]);
			}
		}
	},

	// todo fix these up a bit
	styles: [
"/*{{{*/",
"/* created by QuickOpenTagPlugin */",
".tagglyTagged .quickopentag, .tagged .quickopentag ",
"	{ margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }",
".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }",
".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}",
"/* extra specificity to make it work right */",
"#displayArea .viewer .quickopentag a.button, ",
"#displayArea .viewer .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink ",
"	{ border:0px solid black; }",
"#displayArea .viewer .quickopentag a.button, ",
"#mainMenu .quickopentag a.button ",
"	{ margin-left:0px; padding-left:2px; }",
"#displayArea .viewer .quickopentag a.tiddlyLink, ",
"#mainMenu .quickopentag a.tiddlyLink ",
"	{ margin-right:0px; padding-right:0px; padding-left:0px; margin-left:0px; }",
"a.miniTag {font-size:150%;} ",
"#mainMenu .quickopentag a.button ",
"	/* looks better in right justified main menus */",
"	{ margin-left:0px; padding-left:2px; margin-right:0px; padding-right:0px; }", 
"#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }",
"#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }",
"#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }",
"/*}}}*/",
		""].join("\n"),

	init: function() {
		// we fully replace these builtins. can't hijack them easily
		window.createTagButton = this.createTagButton;
		config.macros.allTags.handler = this.allTagsHandler;
		config.macros.miniTag = { handler: this.miniTagHandler };
		config.shadowTiddlers["QuickOpenTagStyles"] = this.styles;
		store.addNotification("QuickOpenTagStyles",refreshStyles);
	}
}

config.quickOpenTag.init();

//}}}

 近い将来の実用化が期待されている自律型移動システムや,電動機を主な動力源とした自動車の開発,持続可能な自然エネルギーを用いた分散型電力供給システム等には高効率で高速な応答が要求され,これらのシステムの中核をなす駆動装置・電力変換装置には高い能力が求められている。システム全体の観点から見ればこれらは1つの要素であるが,システム全体の性能にかかわる重要な部分であり,その他のシステムとの整合性を取る必要がある。そのために,各要素の完成後に,これらを組合せてシステムを構築するということは効率が低下することから,一般的には計画段階でシミュレータを用いて制御系を設計・解析することが多い。しかし、計算機内部の処理が実時間で行えない場合や実機との間に演算周期やインターフェイスの有無,信号の分解能などにも差異があるため,シミュレーション結果をそのまま実機に適用できることは少ない。このように開発段階と実際の装置での差を開発の早い段階で確認し,開発途中での仕様変更に柔軟に対応できるシステムの構築が必要となっている。
 ここでは、近年著しく性能が発展したパーソナルコンピュータ(PC)と実時間OSであるリアルタイムリナックス(RTLinux)を組み合わせた開発環境について研究を行っている。例として,永久磁石同期電動機(PMSM)の三相モデル,インバータ部、さらに機構部として2慣性系までを模擬した電動機駆動系のオンラインリアルタイムシミュレーションを取り扱う。この場合には1台のPCのみで100μs周期でのソフトウェア制御による実機駆動と同時にシミュレーション結果を観測することができる。

<html>
<center>
<img style= "width: 500px; height: 200px;", alt="" src="Picture/ProposedSys.jpg">
</center>
</html>
/***
|Name:|RenameTagsPlugin|
|Description:|Allows you to easily rename or delete tags across multiple tiddlers|
|Version:|3.0 ($Rev: 5501 $)|
|Date:|$Date: 2008-06-10 23:11:55 +1000 (Tue, 10 Jun 2008) $|
|Source:|http://mptw.tiddlyspot.com/#RenameTagsPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
Rename a tag and you will be prompted to rename it in all its tagged tiddlers.
***/
//{{{
config.renameTags = {

	prompts: {
		rename: "Rename the tag '%0' to '%1' in %2 tidder%3?",
		remove: "Remove the tag '%0' from %1 tidder%2?"
	},

	removeTag: function(tag,tiddlers) {
		store.suspendNotifications();
		for (var i=0;i<tiddlers.length;i++) {
			store.setTiddlerTag(tiddlers[i].title,false,tag);
		}
		store.resumeNotifications();
		store.notifyAll();
	},

	renameTag: function(oldTag,newTag,tiddlers) {
		store.suspendNotifications();
		for (var i=0;i<tiddlers.length;i++) {
			store.setTiddlerTag(tiddlers[i].title,false,oldTag); // remove old
			store.setTiddlerTag(tiddlers[i].title,true,newTag);  // add new
		}
		store.resumeNotifications();
		store.notifyAll();
	},

	storeMethods: {

		saveTiddler_orig_renameTags: TiddlyWiki.prototype.saveTiddler,

		saveTiddler: function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created) {
			if (title != newTitle) {
				var tagged = this.getTaggedTiddlers(title);
				if (tagged.length > 0) {
					// then we are renaming a tag
					if (confirm(config.renameTags.prompts.rename.format([title,newTitle,tagged.length,tagged.length>1?"s":""])))
						config.renameTags.renameTag(title,newTitle,tagged);

					if (!this.tiddlerExists(title) && newBody == "")
						// dont create unwanted tiddler
						return null;
				}
			}
			return this.saveTiddler_orig_renameTags(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created);
		},

		removeTiddler_orig_renameTags: TiddlyWiki.prototype.removeTiddler,

		removeTiddler: function(title) {
			var tagged = this.getTaggedTiddlers(title);
			if (tagged.length > 0)
				if (confirm(config.renameTags.prompts.remove.format([title,tagged.length,tagged.length>1?"s":""])))
					config.renameTags.removeTag(title,tagged);
			return this.removeTiddler_orig_renameTags(title);
		}

	},

	init: function() {
		merge(TiddlyWiki.prototype,this.storeMethods);
	}
}

config.renameTags.init();

//}}}

パワーエレクトロニクス技術をもとにして,高効率で人や環境に優しい機器の開発を目標に
以下のような研究を行っています。

! モータの制御方法の確立
!!!モータを使用した装置は,産業界で広く用いられており,工場,工作機器,ロボット,自動車などには必要不可欠である。本研究室では主に以下の項目についての研究を進めている。
[img[synrm|Picture/SynRM_ss.jpg]][img[2mass|Picture/2masssys20060907_ss.JPG]]

* [[係数図法を用いた共振系の振動抑制制御|CDM]]
* [[同期リラクタンスモータのオンラインパラメータ推定方法|paraest]]
* [[交流小型電動機の高精度センサレス制御|sensorless]]
* [[FRITを用いた永久磁石同期電動機の電流・速度制御器設計に関する研究]]

! FPGAを用いたインターフェイス回路・制御システムの開発
!!!FPGAは書き換え可能なハードウェアチップであり,高速動作が可能でソフトウェアでは困難な処理も行える。当初はディスクリートICの置き換えからスタートしたが,FPGAの容量が飛躍的に向上したことや,開発技術が向上したことから,特にモーター駆動系のインターフェイスや制御そのもののハードウェア化取り組んでいる。
[img[FPGAS|Picture/FPGASys_ss.jpg]][img[FPBAB|Picture/FPGABoard_ss.jpg]]

* [[ディジタルハードウェア制御|FPGA]]

! マトリックスコンバータを用いた静止機器用電力変換器に関する研究

!!!マトリックスコンバータは直接AC-AC変換可能な電力変換装置であり様々な研究が行われているが、ここでは特に静止機器を対象としている。

<html>
<img style="width: 300px; " alt="" src="Picture/mat3ksimu.png" align="">
<img style="width: 400px; " alt="" src="Picture/MCbasedUPFC_New.png" align="">
</html>
<html>
<img style="width: 250px; " alt="" src="Picture/MATCON2011_ss.jpg" align="">
</html>

* [[三相-単相高周波マトリックスコンバータを持ちいた重ね抵抗溶接機の開発]]
* [[マトリックスコンバータを用いたUPFCの係数図法による制御器設計]]
* [[FRITで設計したマトリックスコンバータ型UPFC高応答安定化制御]]


/%
! 研究用開発環境の構築
* [[RTLinuxによるACモータの制御開発環境に関する研究|ExpDevSys]]
* [[RTLinuxとFPGAによるモータのオンラインリアルタイムシミュレーション|RTSim]]
%/
/%
! 人間親和型歩行支援装置(電動カート)の開発
!!!日本は高齢化社会になってから、高齢者人口が徐々に増加し、平成17年度には現役世代3.3人が高齢者1人を支える社会に到達した。このような社会現象とともに注目されるのが、高齢者を対象にした生活支援装置(電動車椅子など)に関する研究である。本研究はパワーエレクトロニクス技術を応用し、高齢者や生活弱者を対象にした日常生活をアシストできる手押し台車(カート)のトルクアシスト制御を提案する。
[img[cart|Picture/cart1_ss.jpg]]
%/
!生体機能専攻 1年 後期 2単位

担当教員  花本 剛士

!!授業の資料は @@LiveCampus@@にアップロードしています。

!!学外の方はこちら(アクセス制限がかかってます)
[[robotcontrol2011]]


!目的・概要 
ロボットの研究は、主として産業用の需要から発展し、その結果人間に替わって悪環境化での作業を連続して行うことが可能となった。さらに、将来的には移動ロボットや介護ロボット等の生体型自立ロボットの研究が必要になってくる。これらのロボット制御に必要な、アクチュエータとしてのモータ制御、パワーエレクトロニクス、制御系設計手法、ロボット用センサおよび開発環境を含む実験用システムの構築を目指した講義を展開する。

!授業計画 
# 電動機駆動原理,直流電動機
#  交流電動機の数式モデル
#  座標変換と交流電動機への適用
#  制御系設計の基礎
#  フィードバック制御
#  速度・トルク制御への適用と非干渉制御
#  三相PWMインバータ
#  ベクトル制御
#  オブザーバによるトルク・速度制御手法
#  同一次元オブザーバ
#  最小次元オブザーバと外乱オブザーバへの適用
#  アクチュエータへの適用(1)センサ
#  アクチュエータへの適用(2)インターフェイス回路
#  シミュレータの構築
!成績評価方法 
「受講態度」,「課題提出結果」によって評価する
!履修上の注意事項 
*以下の科目の知識があれば好ましい
パワーエレクトロニクス分野、自動制御、電機制御分野。
上記分野の習得のために幾つかのフリーソフトウェアを使用して自習することが望ましい。パワーエレクトロニクス分野としては「PSIM デモ版」を,制御系設計ソフトウェアとして「scilab」を使用すると良い。これらのソフトウェアについての簡単な説明書やマニュアルはLiveCampusにアップロードする。
!教科書・参考書・資料
教科書は使用せず,授業資料はLiveCampus上にて配布する。
!!主な参考書は以下の通り
・野波健蔵編著、「MATLABによる制御理論の基礎」東京電機大学出版局
・野波健蔵編著、「MATLABによる制御系設計」東京電機大学出版局
・電気学会編,「交流電動機可変速駆動の基礎と応用」コロナ社
・Claude Gomez, "Engineering and Scientific computing with Scilab", Birkhauser
・堀 洋一、大西公平共著、「制御工学の基礎」丸善株式会社
・堀 洋一、大西公平共著、「応用制御工学」丸善株式会社
・美多 勉、他著、「基礎ディジタル制御」コロナ社
/***
|Name:|SaveCloseTiddlerPlugin|
|Description:|Provides two extra toolbar commands, saveCloseTiddler and cancelCloseTiddler|
|Version:|3.0 ($Rev: 5502 $)|
|Date:|$Date: 2008-06-10 23:31:39 +1000 (Tue, 10 Jun 2008) $|
|Source:|http://mptw.tiddlyspot.com/#SaveCloseTiddlerPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
To use these you must add them to the tool bar in your EditTemplate
***/
//{{{
merge(config.commands,{

	saveCloseTiddler: {
		text: 'done/close',
		tooltip: 'Save changes to this tiddler and close it',
		handler: function(ev,src,title) {
			var closeTitle = title;
			var newTitle = story.saveTiddler(title,ev.shiftKey);
			if (newTitle)
				closeTitle = newTitle;
			return config.commands.closeTiddler.handler(ev,src,closeTitle);
		}
	},

	cancelCloseTiddler: {
		text: 'cancel/close',
		tooltip: 'Undo changes to this tiddler and close it',
		handler: function(ev,src,title) {
			// the same as closeTiddler now actually
			return config.commands.closeTiddler.handler(ev,src,title);
		}
	}

});

//}}}

[[Scilab|http://www.scilab.org]]はフランスINRIAで開発された数値演算処理用のソフトウェアで学術利用の場合には無料で使用できる。現在の最新バージョンはver.4である。
!!ホームページ
本家 : http://www.scilab.org 
国内の情報 : 
http://feedback.mech.fukui-u.ac.jp/scilab/scilab0.html 
http://www.ecl.sys.hiroshima-u.ac.

!!特徴

行列の演算は,ほぼMATLABと同じ命令でおこなえる.
行列の加減,乗除算が簡単にできる.

!!使い方(少し古いバージョン)ファイル [[pdfファイル|limited/EleCont/textA4_scilab.pdf]]

pdfファイルにあるものは,scilabの端末(window)から,処理を行うものが中心であるが,通常は他のプログラム言語と同じように,エディタを用いてプログラムを書き,実行する。
scilabには組込まれたエディタがあり,関数の色分けやエディタから直接実行,デバッグ等もできるので,これを用いても良い。もちろん通常使用しているエディタで書いて,実行はscilabからexecコマンドを用いて行っても良い。

!!基本的なプログラム例
!!!1次遅れ関数のインパルス応答 R=[K/(T*s+1)];

{{{
clear;

K=1.0; //ゲイン
T=1; //時定数

s=poly(0,'s');  // 多項式定義
R=[K/(T*s+1)]; //伝達関数
Sl=syslin('c',R); //線形システムの作成

x0=[0 0]';
instants=0:0.05:20;
//y=csim('step',instants,Sl); //ステップ応答
y=csim('impulse',instants,Sl); //インパルス応答
plot2d(instants',y'); //2次元プロット
xtitle('Time response')

}}}

[img[Picture/imp_1.gif]]

{{{

!!!RL直列回路のステップ応答 R=[E0/(s*L+R)];

clear;

R=50;
L=0.2;
E0=1.0;
s=poly(0,'s');
RLcir=[E0/(s*L+R)];
Sl=syslin('c',RLcir);

x0=[0 0]';
instants=0:0.0005:0.05;
y=csim('step',instants,Sl);
plot2d(instants',y');
xtitle('Time response')
xgrid(2);
}}}

[img[Picture/step_1.gif]]
/***
|Name:|SelectThemePlugin|
|Description:|Lets you easily switch theme and palette|
|Version:|1.0.1 ($Rev: 3646 $)|
|Date:|$Date: 2008-02-27 02:34:38 +1000 (Wed, 27 Feb 2008) $|
|Source:|http://mptw.tiddlyspot.com/#SelectThemePlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!Notes
* Borrows largely from ThemeSwitcherPlugin by Martin Budden http://www.martinswiki.com/#ThemeSwitcherPlugin
* Theme is cookie based. But set a default by setting config.options.txtTheme in MptwConfigPlugin (for example)
* Palette is not cookie based. It actually overwrites your ColorPalette tiddler when you select a palette, so beware. 
!Usage
* {{{<<selectTheme>>}}} makes a dropdown selector
* {{{<<selectPalette>>}}} makes a dropdown selector
* {{{<<applyTheme>>}}} applies the current tiddler as a theme
* {{{<<applyPalette>>}}} applies the current tiddler as a palette
* {{{<<applyTheme TiddlerName>>}}} applies TiddlerName as a theme
* {{{<<applyPalette TiddlerName>>}}} applies TiddlerName as a palette
***/
//{{{

config.macros.selectTheme = {
	label: {
      		selectTheme:"select theme",
      		selectPalette:"select palette"
	},
	prompt: {
		selectTheme:"Select the current theme",
		selectPalette:"Select the current palette"
	},
	tags: {
		selectTheme:'systemTheme',
		selectPalette:'systemPalette'
	}
};

config.macros.selectTheme.handler = function(place,macroName)
{
	var btn = createTiddlyButton(place,this.label[macroName],this.prompt[macroName],this.onClick);
	// want to handle palettes and themes with same code. use mode attribute to distinguish
	btn.setAttribute('mode',macroName);
};

config.macros.selectTheme.onClick = function(ev)
{
	var e = ev ? ev : window.event;
	var popup = Popup.create(this);
	var mode = this.getAttribute('mode');
	var tiddlers = store.getTaggedTiddlers(config.macros.selectTheme.tags[mode]);
	// for default
	if (mode == "selectPalette") {
		var btn = createTiddlyButton(createTiddlyElement(popup,'li'),"(default)","default color palette",config.macros.selectTheme.onClickTheme);
		btn.setAttribute('theme',"(default)");
		btn.setAttribute('mode',mode);
	}
	for(var i=0; i<tiddlers.length; i++) {
		var t = tiddlers[i].title;
		var name = store.getTiddlerSlice(t,'Name');
		var desc = store.getTiddlerSlice(t,'Description');
		var btn = createTiddlyButton(createTiddlyElement(popup,'li'), name?name:t, desc?desc:config.macros.selectTheme.label['mode'], config.macros.selectTheme.onClickTheme);
		btn.setAttribute('theme',t);
		btn.setAttribute('mode',mode);
	}
	Popup.show();
	return stopEvent(e);
};

config.macros.selectTheme.onClickTheme = function(ev)
{
	var mode = this.getAttribute('mode');
	var theme = this.getAttribute('theme');
	if (mode == 'selectTheme')
		story.switchTheme(theme);
	else // selectPalette
		config.macros.selectTheme.updatePalette(theme);
	return false;
};

config.macros.selectTheme.updatePalette = function(title)
{
	if (title != "") {
		store.deleteTiddler("ColorPalette");
		if (title != "(default)")
			store.saveTiddler("ColorPalette","ColorPalette",store.getTiddlerText(title),
					config.options.txtUserName,undefined,"");
		refreshAll();
		if(config.options.chkAutoSave)
			saveChanges(true);
	}
};

config.macros.applyTheme = {
	label: "apply",
	prompt: "apply this theme or palette" // i'm lazy
};

config.macros.applyTheme.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	var useTiddler = params[0] ? params[0] : tiddler.title;
	var btn = createTiddlyButton(place,this.label,this.prompt,config.macros.selectTheme.onClickTheme);
	btn.setAttribute('theme',useTiddler);
	btn.setAttribute('mode',macroName=="applyTheme"?"selectTheme":"selectPalette"); // a bit untidy here
}

config.macros.selectPalette = config.macros.selectTheme;
config.macros.applyPalette = config.macros.applyTheme;

config.macros.refreshAll = { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
	createTiddlyButton(place,"refresh","refresh layout and styles",function() { refreshAll(); });
}};

//}}}

|<<calendar lastmonth>>|<<calendar thismonth>>|<<calendar nextmonth>>|
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'YYYY.0MM.0DD'>><<saveChanges>><<selectTheme>><<selectPalette>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>><<slider chkSliderContents [[TabContents]] 'contents »' 'contents'>>
<<calendar thismonth>>
Information of HANAMOTO Lab. using [[tiddly wiki|http://www.tiddlywiki.com/]]
HANAMOTO LAB. 
http://www.life.kyutech.ac.jp/~hanamoto/hanamoto/
<html>
<iframe width="760px" height="500px" src="https://sway.com/s/RIw30XXv1WJdBWpe/embed" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border: none; max-width:100%; max-height:100vh" allowfullscreen webkitallowfullscreen mozallowfullscreen msallowfullscreen></iframe>
</html>
<<allTags excludeLists>>
<<tabs txtMainTab Timeline Timeline TabTimeline All 'All tiddlers' TabAll Tags 'All tags' TabTags More 'More lists' TabMore>>
<<tabs txtMoreTab "Tags" "All Tags" TabAllTags "Miss" "Missing tiddlers" TabMoreMissing "Orph" "Orphaned tiddlers" TabMoreOrphans "Shad" "Shadowed tiddlers" TabMoreShadowed>>
<<allTags excludeLists [a-z]>>
|[img[synrm|Picture/SynRM_ss.jpg]]|モータを使用した装置は,産業界で広く用いられており,工場,工作機器,ロボット,自動車などには必要不可欠である。本研究室では主に以下の項目についての研究を進めている。|
/***
|Name:|TagglyTaggingPlugin|
|Description:|tagglyTagging macro is a replacement for the builtin tagging macro in your ViewTemplate|
|Version:|3.3.1 ($Rev: 6100 $)|
|Date:|$Date: 2008-07-27 01:42:07 +1000 (Sun, 27 Jul 2008) $|
|Source:|http://mptw.tiddlyspot.com/#TagglyTaggingPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!Notes
See http://mptw.tiddlyspot.com/#TagglyTagging
***/
//{{{

merge(String.prototype,{

	parseTagExpr: function(debug) {

		if (this.trim() == "")
			return "(true)";

		var anyLogicOp = /(!|&&|\|\||\(|\))/g;
		var singleLogicOp = /^(!|&&|\|\||\(|\))$/;

		var spaced = this.
			// because square brackets in templates are no good
			// this means you can use [(With Spaces)] instead of [[With Spaces]]
			replace(/\[\(/g," [[").
			replace(/\)\]/g,"]] "). 
			// space things out so we can use readBracketedList. tricky eh?
			replace(anyLogicOp," $1 ");

		var expr = "";

		var tokens = spaced.readBracketedList(false); // false means don't uniq the list. nice one JR!

		for (var i=0;i<tokens.length;i++)
			if (tokens[i].match(singleLogicOp))
				expr += tokens[i];
			else
				expr += "tiddler.tags.contains('%0')".format([tokens[i].replace(/'/,"\\'")]); // fix single quote bug. still have round bracket bug i think

		if (debug)
			alert(expr);

		return '('+expr+')';
	}

});

merge(TiddlyWiki.prototype,{
	getTiddlersByTagExpr: function(tagExpr,sortField) {

		var result = [];

		var expr = tagExpr.parseTagExpr();

		store.forEachTiddler(function(title,tiddler) {
			if (eval(expr))
				result.push(tiddler);
		});

		if(!sortField)
			sortField = "title";

		result.sort(function(a,b) {return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);});
		
		return result;
	}
});

config.taggly = {

	// for translations
	lingo: {
		labels: {
			asc:        "\u2191", // down arrow
			desc:       "\u2193", // up arrow
			title:      "title",
			modified:   "modified",
			created:    "created",
			show:       "+",
			hide:       "-",
			normal:     "normal",
			group:      "group",
			commas:     "commas",
			sitemap:    "sitemap",
			numCols:    "cols\u00b1", // plus minus sign
			label:      "Tagged as '%0':",
			exprLabel:  "Matching tag expression '%0':",
			excerpts:   "excerpts",
			descr:      "descr",
			slices:     "slices",
			contents:   "contents",
			sliders:    "sliders",
			noexcerpts: "title only",
			noneFound:  "(none)"
		},

		tooltips: {
			title:      "Click to sort by title",
			modified:   "Click to sort by modified date",
			created:    "Click to sort by created date",
			show:       "Click to show tagging list",
			hide:       "Click to hide tagging list",
			normal:     "Click to show a normal ungrouped list",
			group:      "Click to show list grouped by tag",
			sitemap:    "Click to show a sitemap style list",
			commas:     "Click to show a comma separated list",
			numCols:    "Click to change number of columns",
			excerpts:   "Click to show excerpts",
			descr:      "Click to show the description slice",
			slices:     "Click to show all slices",
			contents:   "Click to show entire tiddler contents",
			sliders:    "Click to show tiddler contents in sliders",
			noexcerpts: "Click to show entire title only"
		},

		tooDeepMessage: "* //sitemap too deep...//"
	},

	config: {
		showTaggingCounts: true,
		listOpts: {
			// the first one will be the default
			sortBy:     ["title","modified","created"],
			sortOrder:  ["asc","desc"],
			hideState:  ["show","hide"],
			listMode:   ["normal","group","sitemap","commas"],
			numCols:    ["1","2","3","4","5","6"],
			excerpts:   ["noexcerpts","excerpts","descr","slices","contents","sliders"]
		},
		valuePrefix: "taggly.",
		excludeTags: ["excludeLists","excludeTagging"],
		excerptSize: 50,
		excerptMarker: "/%"+"%/",
		siteMapDepthLimit: 25
	},

	getTagglyOpt: function(title,opt) {
		var val = store.getValue(title,this.config.valuePrefix+opt);
		return val ? val : this.config.listOpts[opt][0];
	},

	setTagglyOpt: function(title,opt,value) {
		if (!store.tiddlerExists(title))
			// create it silently
			store.saveTiddler(title,title,config.views.editor.defaultText.format([title]),config.options.txtUserName,new Date(),"");
		// if value is default then remove it to save space
		return store.setValue(title,
			this.config.valuePrefix+opt,
			value == this.config.listOpts[opt][0] ? null : value);
	},

	getNextValue: function(title,opt) {
		var current = this.getTagglyOpt(title,opt);
		var pos = this.config.listOpts[opt].indexOf(current);
		// a little usability enhancement. actually it doesn't work right for grouped or sitemap
		var limit = (opt == "numCols" ? store.getTiddlersByTagExpr(title).length : this.config.listOpts[opt].length);
		var newPos = (pos + 1) % limit;
		return this.config.listOpts[opt][newPos];
	},

	toggleTagglyOpt: function(title,opt) {
		var newVal = this.getNextValue(title,opt);
		this.setTagglyOpt(title,opt,newVal);
	}, 

	createListControl: function(place,title,type) {
		var lingo = config.taggly.lingo;
		var label;
		var tooltip;
		var onclick;

		if ((type == "title" || type == "modified" || type == "created")) {
			// "special" controls. a little tricky. derived from sortOrder and sortBy
			label = lingo.labels[type];
			tooltip = lingo.tooltips[type];

			if (this.getTagglyOpt(title,"sortBy") == type) {
				label += lingo.labels[this.getTagglyOpt(title,"sortOrder")];
				onclick = function() {
					config.taggly.toggleTagglyOpt(title,"sortOrder");
					return false;
				}
			}
			else {
				onclick = function() {
					config.taggly.setTagglyOpt(title,"sortBy",type);
					config.taggly.setTagglyOpt(title,"sortOrder",config.taggly.config.listOpts.sortOrder[0]);
					return false;
				}
			}
		}
		else {
			// "regular" controls, nice and simple
			label = lingo.labels[type == "numCols" ? type : this.getNextValue(title,type)];
			tooltip = lingo.tooltips[type == "numCols" ? type : this.getNextValue(title,type)];
			onclick = function() {
				config.taggly.toggleTagglyOpt(title,type);
				return false;
			}
		}

		// hide button because commas don't have columns
		if (!(this.getTagglyOpt(title,"listMode") == "commas" && type == "numCols"))
			createTiddlyButton(place,label,tooltip,onclick,type == "hideState" ? "hidebutton" : "button");
	},

	makeColumns: function(orig,numCols) {
		var listSize = orig.length;
		var colSize = listSize/numCols;
		var remainder = listSize % numCols;

		var upperColsize = colSize;
		var lowerColsize = colSize;

		if (colSize != Math.floor(colSize)) {
			// it's not an exact fit so..
			upperColsize = Math.floor(colSize) + 1;
			lowerColsize = Math.floor(colSize);
		}

		var output = [];
		var c = 0;
		for (var j=0;j<numCols;j++) {
			var singleCol = [];
			var thisSize = j < remainder ? upperColsize : lowerColsize;
			for (var i=0;i<thisSize;i++) 
				singleCol.push(orig[c++]);
			output.push(singleCol);
		}

		return output;
	},

	drawTable: function(place,columns,theClass) {
		var newTable = createTiddlyElement(place,"table",null,theClass);
		var newTbody = createTiddlyElement(newTable,"tbody");
		var newTr = createTiddlyElement(newTbody,"tr");
		for (var j=0;j<columns.length;j++) {
			var colOutput = "";
			for (var i=0;i<columns[j].length;i++) 
				colOutput += columns[j][i];
			var newTd = createTiddlyElement(newTr,"td",null,"tagglyTagging"); // todo should not need this class
			wikify(colOutput,newTd);
		}
		return newTable;
	},

	createTagglyList: function(place,title,isTagExpr) {
		switch(this.getTagglyOpt(title,"listMode")) {
			case "group":  return this.createTagglyListGrouped(place,title,isTagExpr); break;
			case "normal": return this.createTagglyListNormal(place,title,false,isTagExpr); break;
			case "commas": return this.createTagglyListNormal(place,title,true,isTagExpr); break;
			case "sitemap":return this.createTagglyListSiteMap(place,title,isTagExpr); break;
		}
	},

	getTaggingCount: function(title,isTagExpr) {
		// thanks to Doug Edmunds
		if (this.config.showTaggingCounts) {
			var tagCount = config.taggly.getTiddlers(title,'title',isTagExpr).length;
			if (tagCount > 0)
				return " ("+tagCount+")";
		}
		return "";
	},

	getTiddlers: function(titleOrExpr,sortBy,isTagExpr) {
		return isTagExpr ? store.getTiddlersByTagExpr(titleOrExpr,sortBy) : store.getTaggedTiddlers(titleOrExpr,sortBy);
	},

	getExcerpt: function(inTiddlerTitle,title,indent) {
		if (!indent)
			indent = 1;

		var displayMode = this.getTagglyOpt(inTiddlerTitle,"excerpts");
		var t = store.getTiddler(title);

		if (t && displayMode == "excerpts") {
			var text = t.text.replace(/\n/," ");
			var marker = text.indexOf(this.config.excerptMarker);
			if (marker != -1) {
				return " {{excerpt{<nowiki>" + text.substr(0,marker) + "</nowiki>}}}";
			}
			else if (text.length < this.config.excerptSize) {
				return " {{excerpt{<nowiki>" + t.text + "</nowiki>}}}";
			}
			else {
				return " {{excerpt{<nowiki>" + t.text.substr(0,this.config.excerptSize) + "..." + "</nowiki>}}}";
			}
		}
		else if (t && displayMode == "contents") {
			return "\n{{contents indent"+indent+"{\n" + t.text + "\n}}}";
		}
		else if (t && displayMode == "sliders") {
			return "<slider slide>\n{{contents{\n" + t.text + "\n}}}\n</slider>";
		}
		else if (t && displayMode == "descr") {
			var descr = store.getTiddlerSlice(title,'Description');
			return descr ? " {{excerpt{" + descr  + "}}}" : "";
		}
		else if (t && displayMode == "slices") {
			var result = "";
			var slices = store.calcAllSlices(title);
			for (var s in slices)
				result += "|%0|<nowiki>%1</nowiki>|\n".format([s,slices[s]]);
			return result ? "\n{{excerpt excerptIndent{\n" + result  + "}}}" : "";
		}
		return "";
	},

	notHidden: function(t,inTiddler) {
		if (typeof t == "string") 
			t = store.getTiddler(t);
		return (!t || !t.tags.containsAny(this.config.excludeTags) ||
				(inTiddler && this.config.excludeTags.contains(inTiddler)));
	},

	// this is for normal and commas mode
	createTagglyListNormal: function(place,title,useCommas,isTagExpr) {

		var list = config.taggly.getTiddlers(title,this.getTagglyOpt(title,"sortBy"),isTagExpr);

		if (this.getTagglyOpt(title,"sortOrder") == "desc")
			list = list.reverse();

		var output = [];
		var first = true;
		for (var i=0;i<list.length;i++) {
			if (this.notHidden(list[i],title)) {
				var countString = this.getTaggingCount(list[i].title);
				var excerpt = this.getExcerpt(title,list[i].title);
				if (useCommas)
					output.push((first ? "" : ", ") + "[[" + list[i].title + "]]" + countString + excerpt);
				else
					output.push("*[[" + list[i].title + "]]" + countString + excerpt + "\n");

				first = false;
			}
		}

		return this.drawTable(place,
			this.makeColumns(output,useCommas ? 1 : parseInt(this.getTagglyOpt(title,"numCols"))),
			useCommas ? "commas" : "normal");
	},

	// this is for the "grouped" mode
	createTagglyListGrouped: function(place,title,isTagExpr) {
		var sortBy = this.getTagglyOpt(title,"sortBy");
		var sortOrder = this.getTagglyOpt(title,"sortOrder");

		var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);

		if (sortOrder == "desc")
			list = list.reverse();

		var leftOvers = []
		for (var i=0;i<list.length;i++)
			leftOvers.push(list[i].title);

		var allTagsHolder = {};
		for (var i=0;i<list.length;i++) {
			for (var j=0;j<list[i].tags.length;j++) {

				if (list[i].tags[j] != title) { // not this tiddler

					if (this.notHidden(list[i].tags[j],title)) {

						if (!allTagsHolder[list[i].tags[j]])
							allTagsHolder[list[i].tags[j]] = "";

						if (this.notHidden(list[i],title)) {
							allTagsHolder[list[i].tags[j]] += "**[["+list[i].title+"]]"
										+ this.getTaggingCount(list[i].title) + this.getExcerpt(title,list[i].title) + "\n";

							leftOvers.setItem(list[i].title,-1); // remove from leftovers. at the end it will contain the leftovers

						}
					}
				}
			}
		}

		var allTags = [];
		for (var t in allTagsHolder)
			allTags.push(t);

		var sortHelper = function(a,b) {
			if (a == b) return 0;
			if (a < b) return -1;
			return 1;
		};

		allTags.sort(function(a,b) {
			var tidA = store.getTiddler(a);
			var tidB = store.getTiddler(b);
			if (sortBy == "title") return sortHelper(a,b);
			else if (!tidA && !tidB) return 0;
			else if (!tidA) return -1;
			else if (!tidB) return +1;
			else return sortHelper(tidA[sortBy],tidB[sortBy]);
		});

		var leftOverOutput = "";
		for (var i=0;i<leftOvers.length;i++)
			if (this.notHidden(leftOvers[i],title))
				leftOverOutput += "*[["+leftOvers[i]+"]]" + this.getTaggingCount(leftOvers[i]) + this.getExcerpt(title,leftOvers[i]) + "\n";

		var output = [];

		if (sortOrder == "desc")
			allTags.reverse();
		else if (leftOverOutput != "")
			// leftovers first...
			output.push(leftOverOutput);

		for (var i=0;i<allTags.length;i++)
			if (allTagsHolder[allTags[i]] != "")
				output.push("*[["+allTags[i]+"]]" + this.getTaggingCount(allTags[i]) + this.getExcerpt(title,allTags[i]) + "\n" + allTagsHolder[allTags[i]]);

		if (sortOrder == "desc" && leftOverOutput != "")
			// leftovers last...
			output.push(leftOverOutput);

		return this.drawTable(place,
				this.makeColumns(output,parseInt(this.getTagglyOpt(title,"numCols"))),
				"grouped");

	},

	// used to build site map
	treeTraverse: function(title,depth,sortBy,sortOrder,isTagExpr) {

		var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);

		if (sortOrder == "desc")
			list.reverse();

		var indent = "";
		for (var j=0;j<depth;j++)
			indent += "*"

		var childOutput = "";

		if (depth > this.config.siteMapDepthLimit)
			childOutput += indent + this.lingo.tooDeepMessage;
		else
			for (var i=0;i<list.length;i++)
				if (list[i].title != title)
					if (this.notHidden(list[i].title,this.config.inTiddler))
						childOutput += this.treeTraverse(list[i].title,depth+1,sortBy,sortOrder,false);

		if (depth == 0)
			return childOutput;
		else
			return indent + "[["+title+"]]" + this.getTaggingCount(title) + this.getExcerpt(this.config.inTiddler,title,depth) + "\n" + childOutput;
	},

	// this if for the site map mode
	createTagglyListSiteMap: function(place,title,isTagExpr) {
		this.config.inTiddler = title; // nasty. should pass it in to traverse probably
		var output = this.treeTraverse(title,0,this.getTagglyOpt(title,"sortBy"),this.getTagglyOpt(title,"sortOrder"),isTagExpr);
		return this.drawTable(place,
				this.makeColumns(output.split(/(?=^\*\[)/m),parseInt(this.getTagglyOpt(title,"numCols"))), // regexp magic
				"sitemap"
				);
	},

	macros: {
		tagglyTagging: {
			handler: function (place,macroName,params,wikifier,paramString,tiddler) {
				var parsedParams = paramString.parseParams("tag",null,true);
				var refreshContainer = createTiddlyElement(place,"div");

				// do some refresh magic to make it keep the list fresh - thanks Saq
				refreshContainer.setAttribute("refresh","macro");
				refreshContainer.setAttribute("macroName",macroName);

				var tag = getParam(parsedParams,"tag");
				var expr = getParam(parsedParams,"expr");

				if (expr) {
					refreshContainer.setAttribute("isTagExpr","true");
					refreshContainer.setAttribute("title",expr);
					refreshContainer.setAttribute("showEmpty","true");
				}
				else {
					refreshContainer.setAttribute("isTagExpr","false");
					if (tag) {
        				refreshContainer.setAttribute("title",tag);
						refreshContainer.setAttribute("showEmpty","true");
					}
					else {
        				refreshContainer.setAttribute("title",tiddler.title);
						refreshContainer.setAttribute("showEmpty","false");
					}
				}
				this.refresh(refreshContainer);
			},

			refresh: function(place) {
				var title = place.getAttribute("title");
				var isTagExpr = place.getAttribute("isTagExpr") == "true";
				var showEmpty = place.getAttribute("showEmpty") == "true";
				removeChildren(place);
				addClass(place,"tagglyTagging");
				var countFound = config.taggly.getTiddlers(title,'title',isTagExpr).length
				if (countFound > 0 || showEmpty) {
					var lingo = config.taggly.lingo;
					config.taggly.createListControl(place,title,"hideState");
					if (config.taggly.getTagglyOpt(title,"hideState") == "show") {
						createTiddlyElement(place,"span",null,"tagglyLabel",
								isTagExpr ? lingo.labels.exprLabel.format([title]) : lingo.labels.label.format([title]));
						config.taggly.createListControl(place,title,"title");
						config.taggly.createListControl(place,title,"modified");
						config.taggly.createListControl(place,title,"created");
						config.taggly.createListControl(place,title,"listMode");
						config.taggly.createListControl(place,title,"excerpts");
						config.taggly.createListControl(place,title,"numCols");
						config.taggly.createTagglyList(place,title,isTagExpr);
						if (countFound == 0 && showEmpty)
							createTiddlyElement(place,"div",null,"tagglyNoneFound",lingo.labels.noneFound);
					}
				}
			}
		}
	},

	// todo fix these up a bit
	styles: [
"/*{{{*/",
"/* created by TagglyTaggingPlugin */",
".tagglyTagging { padding-top:0.5em; }",
".tagglyTagging li.listTitle { display:none; }",
".tagglyTagging ul {",
"	margin-top:0px; padding-top:0.5em; padding-left:2em;",
"	margin-bottom:0px; padding-bottom:0px;",
"}",
".tagglyTagging { vertical-align: top; margin:0px; padding:0px; }",
".tagglyTagging table { margin:0px; padding:0px; }",
".tagglyTagging .button { visibility:hidden; margin-left:3px; margin-right:3px; }",
".tagglyTagging .button, .tagglyTagging .hidebutton {",
"	color:[[ColorPalette::TertiaryLight]]; font-size:90%;",
"	border:0px; padding-left:0.3em;padding-right:0.3em;",
"}",
".tagglyTagging .button:hover, .hidebutton:hover, ",
".tagglyTagging .button:active, .hidebutton:active  {",
"	border:0px; background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];",
"}",
".selected .tagglyTagging .button { visibility:visible; }",
".tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }",
".selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }",
".tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }",
".tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }",
".tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}",
".tagglyTagging ul ul li {margin-left:0.5em; }",
".editLabel { font-size:90%; padding-top:0.5em; }",
".tagglyTagging .commas { padding-left:1.8em; }",
"/* not technically tagglytagging but will put them here anyway */",
".tagglyTagged li.listTitle { display:none; }",
".tagglyTagged li { display: inline; font-size:90%; }",
".tagglyTagged ul { margin:0px; padding:0px; }",
".excerpt { color:[[ColorPalette::TertiaryDark]]; }",
".excerptIndent { margin-left:4em; }",
"div.tagglyTagging table,",
"div.tagglyTagging table tr,",
"td.tagglyTagging",
" {border-style:none!important; }",
".tagglyTagging .contents { border-bottom:2px solid [[ColorPalette::TertiaryPale]]; padding:0 1em 1em 0.5em;",
"  margin-bottom:0.5em; }",
".tagglyTagging .indent1  { margin-left:3em;  }",
".tagglyTagging .indent2  { margin-left:4em;  }",
".tagglyTagging .indent3  { margin-left:5em;  }",
".tagglyTagging .indent4  { margin-left:6em;  }",
".tagglyTagging .indent5  { margin-left:7em;  }",
".tagglyTagging .indent6  { margin-left:8em;  }",
".tagglyTagging .indent7  { margin-left:9em;  }",
".tagglyTagging .indent8  { margin-left:10em; }",
".tagglyTagging .indent9  { margin-left:11em; }",
".tagglyTagging .indent10 { margin-left:12em; }",
".tagglyNoneFound { margin-left:2em; color:[[ColorPalette::TertiaryMid]]; font-size:90%; font-style:italic; }",
"/*}}}*/",
		""].join("\n"),

	init: function() {
		merge(config.macros,this.macros);
		config.shadowTiddlers["TagglyTaggingStyles"] = this.styles;
		store.addNotification("TagglyTaggingStyles",refreshStyles);
	}
};

config.taggly.init();

//}}}

/***
InlineSlidersPlugin
By Saq Imtiaz
http://tw.lewcid.org/sandbox/#InlineSlidersPlugin

// syntax adjusted to not clash with NestedSlidersPlugin
// added + syntax to start open instead of closed

***/
//{{{
config.formatters.unshift( {
	name: "inlinesliders",
	// match: "\\+\\+\\+\\+|\\<slider",
	match: "\\<slider",
	// lookaheadRegExp: /(?:\+\+\+\+|<slider) (.*?)(?:>?)\n((?:.|\n)*?)\n(?:====|<\/slider>)/mg,
	lookaheadRegExp: /(?:<slider)(\+?) (.*?)(?:>)\n((?:.|\n)*?)\n(?:<\/slider>)/mg,
	handler: function(w) {
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart ) {
			var btn = createTiddlyButton(w.output,lookaheadMatch[2] + " "+"\u00BB",lookaheadMatch[2],this.onClickSlider,"button sliderButton");
			var panel = createTiddlyElement(w.output,"div",null,"sliderPanel");
			panel.style.display = (lookaheadMatch[1] == '+' ? "block" : "none");
			wikify(lookaheadMatch[3],panel);
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
		}
   },
   onClickSlider : function(e) {
		if(!e) var e = window.event;
		var n = this.nextSibling;
		n.style.display = (n.style.display=="none") ? "block" : "none";
		return false;
	}
});

//}}}

/***
|Name:|ToggleTagPlugin|
|Description:|Makes a checkbox which toggles a tag in a tiddler|
|Version:|3.1.0 ($Rev: 4907 $)|
|Date:|$Date: 2008-05-13 03:15:46 +1000 (Tue, 13 May 2008) $|
|Source:|http://mptw.tiddlyspot.com/#ToggleTagPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Usage
{{{<<toggleTag }}}//{{{TagName TiddlerName LabelText}}}//{{{>>}}}
* TagName - the tag to be toggled, default value "checked"
* TiddlerName - the tiddler to toggle the tag in, default value the current tiddler
* LabelText - the text (gets wikified) to put next to the check box, default value is '{{{[[TagName]]}}}' or '{{{[[TagName]] [[TiddlerName]]}}}'
(If a parameter is '.' then the default will be used)
* TouchMod flag - if non empty then touch the tiddlers mod date. Note, can set config.toggleTagAlwaysTouchModDate to always touch mod date
!!Examples
|Code|Description|Example|h
|{{{<<toggleTag>>}}}|Toggles the default tag (checked) in this tiddler|<<toggleTag>>|
|{{{<<toggleTag TagName>>}}}|Toggles the TagName tag in this tiddler|<<toggleTag TagName>>|
|{{{<<toggleTag TagName TiddlerName>>}}}|Toggles the TagName tag in the TiddlerName tiddler|<<toggleTag TagName TiddlerName>>|
|{{{<<toggleTag TagName TiddlerName 'click me'>>}}}|Same but with custom label|<<toggleTag TagName TiddlerName 'click me'>>|
|{{{<<toggleTag . . 'click me'>>}}}|dot means use default value|<<toggleTag . . 'click me'>>|
!!Notes
* If TiddlerName doesn't exist it will be silently created
* Set label to '-' to specify no label
* See also http://mgtd-alpha.tiddlyspot.com/#ToggleTag2
!!Known issues
* Doesn't smoothly handle the case where you toggle a tag in a tiddler that is current open for editing
* Should convert to use named params
***/
//{{{

if (config.toggleTagAlwaysTouchModDate == undefined) config.toggleTagAlwaysTouchModDate = false;

merge(config.macros,{

	toggleTag: {

		createIfRequired: true,
		shortLabel: "[[%0]]",
		longLabel: "[[%0]] [[%1]]",

		handler: function(place,macroName,params,wikifier,paramString,tiddler) {
			var tiddlerTitle = tiddler ? tiddler.title : '';
			var tag   = (params[0] && params[0] != '.') ? params[0] : "checked";
			var title = (params[1] && params[1] != '.') ? params[1] : tiddlerTitle;
			var defaultLabel = (title == tiddlerTitle ? this.shortLabel : this.longLabel);
			var label = (params[2] && params[2] != '.') ? params[2] : defaultLabel;
			var touchMod = (params[3] && params[3] != '.') ? params[3] : "";
			label = (label == '-' ? '' : label); // dash means no label
			var theTiddler = (title == tiddlerTitle ? tiddler : store.getTiddler(title));
			var cb = createTiddlyCheckbox(place, label.format([tag,title]), theTiddler && theTiddler.isTagged(tag), function(e) {
				if (!store.tiddlerExists(title)) {
					if (config.macros.toggleTag.createIfRequired) {
						var content = store.getTiddlerText(title); // just in case it's a shadow
						store.saveTiddler(title,title,content?content:"",config.options.txtUserName,new Date(),null);
					}
					else 
						return false;
				}
				if ((touchMod != "" || config.toggleTagAlwaysTouchModDate) && theTiddler)
						theTiddler.modified = new Date();
				store.setTiddlerTag(title,this.checked,tag);
				return true;
			});
		}
	}
});

//}}}

/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|3.4.5|
|''Date:''|Oct 15, 2006|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.0.0|
|''Browser:''|Firefox 1.5; InternetExplorer 6.0; Safari|
|''Include:''|config.lib.file; config.lib.log; config.lib.options; PasswordTweak|
|''Require:''|[[UploadService|http://tiddlywiki.bidix.info/#UploadService]]|
***/
//{{{
version.extensions.UploadPlugin = {
	major: 3, minor: 4, revision: 5, 
	date: new Date(2006,9,15),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	documentation: 'http://tiddlywiki.bidix.info/#UploadDoc',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.0.0',
	browser: 'Firefox 1.5; InternetExplorer 6.0; Safari'
};
//}}}

////+++!![config.lib.file]

//{{{
if (!config.lib) config.lib = {};
if (!config.lib.file) config.lib.file= {
	author: 'BidiX',
	version: {major: 0, minor: 1, revision: 0}, 
	date: new Date(2006,3,9)
};
config.lib.file.dirname = function (filePath) {
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(0, lastpos);
	} else {
		return filePath.substring(0, filePath.lastIndexOf("\\"));
	}
};
config.lib.file.basename = function (filePath) {
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("#")) != -1) 
		filePath = filePath.substring(0, lastpos);
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(lastpos + 1);
	} else
		return filePath.substring(filePath.lastIndexOf("\\")+1);
};
window.basename = function() {return "@@deprecated@@";};
//}}}
////===

////+++!![config.lib.log]

//{{{
if (!config.lib) config.lib = {};
if (!config.lib.log) config.lib.log= {
	author: 'BidiX',
	version: {major: 0, minor: 1, revision: 1}, 
	date: new Date(2006,8,19)
};
config.lib.Log = function(tiddlerTitle, logHeader) {
	if (version.major < 2)
		this.tiddler = store.tiddlers[tiddlerTitle];
	else
		this.tiddler = store.getTiddler(tiddlerTitle);
	if (!this.tiddler) {
		this.tiddler = new Tiddler();
		this.tiddler.title = tiddlerTitle;
		this.tiddler.text = "| !date | !user | !location |" + logHeader;
		this.tiddler.created = new Date();
		this.tiddler.modifier = config.options.txtUserName;
		this.tiddler.modified = new Date();
	if (version.major < 2)
		store.tiddlers[tiddlerTitle] = this.tiddler;
	else
		store.addTiddler(this.tiddler);
	}
	return this;
};

config.lib.Log.prototype.newLine = function (line) {
	var now = new Date();
	var newText = "| ";
	newText += now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getFullYear() + " ";
	newText += now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+" | ";
	newText += config.options.txtUserName + " | ";
	var location = document.location.toString();
	var filename = config.lib.file.basename(location);
	if (!filename) filename = '/';
	newText += "[["+filename+"|"+location + "]] |";
	this.tiddler.text = this.tiddler.text + "\n" + newText;
	this.addToLine(line);
};

config.lib.Log.prototype.addToLine = function (text) {
	this.tiddler.text = this.tiddler.text + text;
	this.tiddler.modifier = config.options.txtUserName;
	this.tiddler.modified = new Date();
	if (version.major < 2)
	store.tiddlers[this.tiddler.tittle] = this.tiddler;
	else {
		store.addTiddler(this.tiddler);
		story.refreshTiddler(this.tiddler.title);
		store.notify(this.tiddler.title, true);
	}
	if (version.major < 2)
		store.notifyAll(); 
};
//}}}
////===

////+++!![config.lib.options]

//{{{
if (!config.lib) config.lib = {};
if (!config.lib.options) config.lib.options = {
	author: 'BidiX',
	version: {major: 0, minor: 1, revision: 0}, 
	date: new Date(2006,3,9)
};

config.lib.options.init = function (name, defaultValue) {
	if (!config.options[name]) {
		config.options[name] = defaultValue;
		saveOptionCookie(name);
	}
};
//}}}
////===

////+++!![PasswordTweak]

//{{{
version.extensions.PasswordTweak = {
	major: 1, minor: 0, revision: 3, date: new Date(2006,8,30),
	type: 'tweak',
	source: 'http://tiddlywiki.bidix.info/#PasswordTweak'
};
//}}}
/***
!!config.macros.option
***/
//{{{
config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordType = "password"; // password | text

config.macros.option.onChangeOption = function(e)
{
	var opt = this.getAttribute("option");
	var elementType,valueField;
	if(opt) {
		switch(opt.substr(0,3)) {
			case "txt":
				elementType = "input";
				valueField = "value";
				break;
			case "pas":
				elementType = "input";
				valueField = "value";
				break;
			case "chk":
				elementType = "input";
				valueField = "checked";
				break;
		}
		config.options[opt] = this[valueField];
		saveOptionCookie(opt);
		var nodes = document.getElementsByTagName(elementType);
		for(var t=0; t<nodes.length; t++) 
			{
			var optNode = nodes[t].getAttribute("option");
			if (opt == optNode) 
				nodes[t][valueField] = this[valueField];
			}
		}
	return(true);
};

config.macros.option.handler = function(place,macroName,params)
{
    var opt = params[0];
    if(config.options[opt] === undefined) {
        return;}
    var c;
    switch(opt.substr(0,3)) {
		case "txt":
			c = document.createElement("input");
			c.onkeyup = this.onChangeOption;
			c.setAttribute ("option",opt);
			c.className = "txtOptionInput "+opt;
			place.appendChild(c);
			c.value = config.options[opt];
			break;
		case "pas":
			// input password
			c = document.createElement ("input");
			c.setAttribute("type",config.macros.option.passwordType);
			c.onkeyup = this.onChangeOption;
			c.setAttribute("option",opt);
			c.className = "pasOptionInput "+opt;
			place.appendChild(c);
			c.value = config.options[opt];
			// checkbox link with this password "save this password on this computer"
			c = document.createElement("input");
			c.setAttribute("type","checkbox");
			c.onclick = this.onChangeOption;
			c.setAttribute("option","chk"+opt);
			c.className = "chkOptionInput "+opt;
			place.appendChild(c);
			c.checked = config.options["chk"+opt];
			// text savePasswordCheckboxLabel
			place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
			break;
		case "chk":
			c = document.createElement("input");
			c.setAttribute("type","checkbox");
			c.onclick = this.onChangeOption;
			c.setAttribute("option",opt);
			c.className = "chkOptionInput "+opt;
			place.appendChild(c);
			c.checked = config.options[opt];
			break;
	}
};
//}}}
/***
!! Option cookie stuff
***/
//{{{
window.loadOptionsCookie_orig_PasswordTweak = window.loadOptionsCookie;
window.loadOptionsCookie = function()
{
	var cookies = document.cookie.split(";");
	for(var c=0; c<cookies.length; c++) {
		var p = cookies[c].indexOf("=");
		if(p != -1) {
			var name = cookies[c].substr(0,p).trim();
			var value = cookies[c].substr(p+1).trim();
			switch(name.substr(0,3)) {
				case "txt":
					config.options[name] = unescape(value);
					break;
				case "pas":
					config.options[name] = unescape(value);
					break;
				case "chk":
					config.options[name] = value == "true";
					break;
			}
		}
	}
};

window.saveOptionCookie_orig_PasswordTweak = window.saveOptionCookie;
window.saveOptionCookie = function(name)
{
	var c = name + "=";
	switch(name.substr(0,3)) {
		case "txt":
			c += escape(config.options[name].toString());
			break;
		case "chk":
			c += config.options[name] ? "true" : "false";
			// is there an option link with this chk ?
			if (config.options[name.substr(3)]) {
				saveOptionCookie(name.substr(3));
			}
			break;
		case "pas":
			if (config.options["chk"+name]) {
				c += escape(config.options[name].toString());
			} else {
				c += "";
			}
			break;
	}
	c += "; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";
	document.cookie = c;
};
//}}}
/***
!! Initializations
***/
//{{{
// define config.options.pasPassword
if (!config.options.pasPassword) {
	config.options.pasPassword = 'defaultPassword';
	window.saveOptionCookie('pasPassword');
}
// since loadCookies is first called befor password definition
// we need to reload cookies
window.loadOptionsCookie();
//}}}
////===

////+++!![config.macros.upload]

//{{{
config.macros.upload = {
	accessKey: "U",
	formName: "UploadPlugin",
	contentType: "text/html;charset=UTF-8",
	defaultStoreScript: "store.php"
};

// only this two configs need to be translated
config.macros.upload.messages = {
	aboutToUpload: "About to upload TiddlyWiki to %0",
	backupFileStored: "Previous file backuped in %0",
	crossDomain: "Certainly a cross-domain isue: access to an other site isn't allowed",
	errorDownloading: "Error downloading",
	errorUploadingContent: "Error uploading content",
	fileLocked: "Files is locked: You are not allowed to Upload",
	fileNotFound: "file to upload not found",
	fileNotUploaded: "File %0 NOT uploaded",
	mainFileUploaded: "Main TiddlyWiki file uploaded to %0",
	passwordEmpty: "Unable to upload, your password is empty",
	urlParamMissing: "url param missing",
	rssFileNotUploaded: "RssFile %0 NOT uploaded",
	rssFileUploaded: "Rss File uploaded to %0"
};

config.macros.upload.label = {
	promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
	promptParamMacro: "Save and Upload this TiddlyWiki in %0",
	saveLabel: "save to web", 
	saveToDisk: "save to disk",
	uploadLabel: "upload"	
};

config.macros.upload.handler = function(place,macroName,params){
	// parameters initialization
	var storeUrl = params[0];
	var toFilename = params[1];
	var backupDir = params[2];
	var uploadDir = params[3];
	var username = params[4];
	var password; // for security reason no password as macro parameter
	var label;
	if (document.location.toString().substr(0,4) == "http")
		label = this.label.saveLabel;
	else
		label = this.label.uploadLabel;
	var prompt;
	if (storeUrl) {
		prompt = this.label.promptParamMacro.toString().format([this.toDirUrl(storeUrl, uploadDir, username)]);
	}
	else {
		prompt = this.label.promptOption;
	}
	createTiddlyButton(place, label, prompt, 
						function () {
							config.macros.upload.upload(storeUrl, toFilename, uploadDir, backupDir, username, password); 
							return false;}, 
						null, null, this.accessKey);
};
config.macros.upload.UploadLog = function() {
	return new config.lib.Log('UploadLog', " !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |" );
};
config.macros.upload.UploadLog.prototype = config.lib.Log.prototype;
config.macros.upload.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir,  backupDir) {
	var line = " [[" + config.lib.file.basename(storeUrl) + "|" + storeUrl + "]] | ";
	line += uploadDir + " | " + toFilename + " | " + backupDir + " |";
	this.newLine(line);
};
config.macros.upload.UploadLog.prototype.endUpload = function() {
	this.addToLine(" Ok |");
};
config.macros.upload.basename = config.lib.file.basename;
config.macros.upload.dirname = config.lib.file.dirname;
config.macros.upload.toRootUrl = function (storeUrl, username)
{
	return root = (this.dirname(storeUrl)?this.dirname(storeUrl):this.dirname(document.location.toString()));
}
config.macros.upload.toDirUrl = function (storeUrl,  uploadDir, username)
{
	var root = this.toRootUrl(storeUrl, username);
	if (uploadDir && uploadDir != '.')
		root = root + '/' + uploadDir;
	return root;
}
config.macros.upload.toFileUrl = function (storeUrl, toFilename,  uploadDir, username)
{
	return this.toDirUrl(storeUrl, uploadDir, username) + '/' + toFilename;
}
config.macros.upload.upload = function(storeUrl, toFilename, uploadDir, backupDir, username, password)
{
	// parameters initialization
	storeUrl = (storeUrl ? storeUrl : config.options.txtUploadStoreUrl);
	toFilename = (toFilename ? toFilename : config.options.txtUploadFilename);
	backupDir = (backupDir ? backupDir : config.options.txtUploadBackupDir);
	uploadDir = (uploadDir ? uploadDir : config.options.txtUploadDir);
	username = (username ? username : config.options.txtUploadUserName);
	password = config.options.pasUploadPassword; // for security reason no password as macro parameter
	if (!password || password === '') {
		alert(config.macros.upload.messages.passwordEmpty);
		return;
	}
	if (storeUrl === '') {
		storeUrl = config.macros.upload.defaultStoreScript;
	}
	if (config.lib.file.dirname(storeUrl) === '') {
		storeUrl = config.lib.file.dirname(document.location.toString())+'/'+storeUrl;
	}
	if (toFilename === '') {
		toFilename = config.lib.file.basename(document.location.toString());
	}

	clearMessage();
	// only for forcing the message to display
	 if (version.major < 2)
		store.notifyAll();
	if (!storeUrl) {
		alert(config.macros.upload.messages.urlParamMissing);
		return;
	}
	// Check that file is not locked
	if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {
		if (BidiX.GroupAuthoring.lock.isLocked() && !BidiX.GroupAuthoring.lock.isMyLock()) {
			alert(config.macros.upload.messages.fileLocked);
			return;
		}
	}
	
	var log = new this.UploadLog();
	log.startUpload(storeUrl, toFilename, uploadDir,  backupDir);
	if (document.location.toString().substr(0,5) == "file:") {
		saveChanges();
	}
	var toDir = config.macros.upload.toDirUrl(storeUrl, toFilename, uploadDir, username);
	displayMessage(config.macros.upload.messages.aboutToUpload.format([toDir]), toDir);
	this.uploadChanges(storeUrl, toFilename, uploadDir, backupDir, username, password);
	if(config.options.chkGenerateAnRssFeed) {
		//var rssContent = convertUnicodeToUTF8(generateRss());
		var rssContent = generateRss();
		var rssPath = toFilename.substr(0,toFilename.lastIndexOf(".")) + ".xml";
		this.uploadContent(rssContent, storeUrl, rssPath, uploadDir, '', username, password, 
			function (responseText) {
				if (responseText.substring(0,1) != '0') {
					displayMessage(config.macros.upload.messages.rssFileNotUploaded.format([rssPath]));
				}
				else {
					var toFileUrl = config.macros.upload.toFileUrl(storeUrl, rssPath, uploadDir, username);
					displayMessage(config.macros.upload.messages.rssFileUploaded.format(
						[toFileUrl]), toFileUrl);
				}
				// for debugging store.php uncomment last line
				//DEBUG alert(responseText);
			});
	}
	return;
};

config.macros.upload.uploadChanges = function(storeUrl, toFilename, uploadDir, backupDir, 
		username, password) {
	var original;
	if (document.location.toString().substr(0,4) == "http") {
		original =  this.download(storeUrl, toFilename, uploadDir, backupDir, username, password);
		return;
	}
	else {
		// standard way : Local file
		
		original = loadFile(getLocalPath(document.location.toString()));
		if(window.Components) {
			// it's a mozilla browser
			try {
				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
				var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
									.createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
				converter.charset = "UTF-8";
				original = converter.ConvertToUnicode(original);
			}
			catch(e) {
			}
		}
	}
	//DEBUG alert(original);
	this.uploadChangesFrom(original, storeUrl, toFilename, uploadDir, backupDir, 
		username, password);
};

config.macros.upload.uploadChangesFrom = function(original, storeUrl, toFilename, uploadDir, backupDir, 
		username, password) {
	var startSaveArea = '<div id="' + 'storeArea">'; // Split up into two so that indexOf() of this source doesn't find it
	var endSaveArea = '</d' + 'iv>';
	// Locate the storeArea div's
	var posOpeningDiv = original.indexOf(startSaveArea);
	var posClosingDiv = original.lastIndexOf(endSaveArea);
	if((posOpeningDiv == -1) || (posClosingDiv == -1))
		{
		alert(config.messages.invalidFileError.format([document.location.toString()]));
		return;
		}
	var revised = original.substr(0,posOpeningDiv + startSaveArea.length) + 
				allTiddlersAsHtml() + "\n\t\t" +
				original.substr(posClosingDiv);
	var newSiteTitle;
	if(version.major < 2){
		newSiteTitle = (getElementText("siteTitle") + " - " + getElementText("siteSubtitle")).htmlEncode();
	} else {
		newSiteTitle = (wikifyPlain ("SiteTitle") + " - " + wikifyPlain ("SiteSubtitle")).htmlEncode();
	}

	revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
	revised = revised.replaceChunk("<!--PRE-HEAD-START--"+">","<!--PRE-HEAD-END--"+">","\n" + store.getTiddlerText("MarkupPreHead","") + "\n");
	revised = revised.replaceChunk("<!--POST-HEAD-START--"+">","<!--POST-HEAD-END--"+">","\n" + store.getTiddlerText("MarkupPostHead","") + "\n");
	revised = revised.replaceChunk("<!--PRE-BODY-START--"+">","<!--PRE-BODY-END--"+">","\n" + store.getTiddlerText("MarkupPreBody","") + "\n");
	revised = revised.replaceChunk("<!--POST-BODY-START--"+">","<!--POST-BODY-END--"+">","\n" + store.getTiddlerText("MarkupPostBody","") + "\n");

	var response = this.uploadContent(revised, storeUrl, toFilename, uploadDir, backupDir, 
		username, password, function (responseText) {
					if (responseText.substring(0,1) != '0') {
						alert(responseText);
						displayMessage(config.macros.upload.messages.fileNotUploaded.format([getLocalPath(document.location.toString())]));
					}
					else {
						if (uploadDir !== '') {
							toFilename = uploadDir + "/" + config.macros.upload.basename(toFilename);
						} else {
							toFilename = config.macros.upload.basename(toFilename);
						}
						var toFileUrl = config.macros.upload.toFileUrl(storeUrl, toFilename, uploadDir, username);
						if (responseText.indexOf("destfile:") > 0) {
							var destfile = responseText.substring(responseText.indexOf("destfile:")+9, 
							responseText.indexOf("\n", responseText.indexOf("destfile:")));
							toFileUrl = config.macros.upload.toRootUrl(storeUrl, username) + '/' + destfile;
						}
						else {
							toFileUrl = config.macros.upload.toFileUrl(storeUrl, toFilename, uploadDir, username);
						}
						displayMessage(config.macros.upload.messages.mainFileUploaded.format(
							[toFileUrl]), toFileUrl);
						if (backupDir && responseText.indexOf("backupfile:") > 0) {
							var backupFile = responseText.substring(responseText.indexOf("backupfile:")+11, 
							responseText.indexOf("\n", responseText.indexOf("backupfile:")));
							toBackupUrl = config.macros.upload.toRootUrl(storeUrl, username) + '/' + backupFile;
							displayMessage(config.macros.upload.messages.backupFileStored.format(
								[toBackupUrl]), toBackupUrl);
						}
						var log = new config.macros.upload.UploadLog();
						log.endUpload();
						store.setDirty(false);
						// erase local lock
						if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {
							BidiX.GroupAuthoring.lock.eraseLock();
							// change mtime with new mtime after upload
							var mtime = responseText.substr(responseText.indexOf("mtime:")+6);
							BidiX.GroupAuthoring.lock.mtime = mtime;
						}
						
						
					}
					// for debugging store.php uncomment last line
					//DEBUG alert(responseText);
				}
			);
};

config.macros.upload.uploadContent = function(content, storeUrl, toFilename, uploadDir, backupDir, 
		username, password, callbackFn) {
	var boundary = "---------------------------"+"AaB03x";		
	var request;
	try {
		request = new XMLHttpRequest();
		} 
	catch (e) { 
		request = new ActiveXObject("Msxml2.XMLHTTP"); 
		}
	if (window.netscape){
			try {
				if (document.location.toString().substr(0,4) != "http") {
					netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');}
			}
			catch (e) {}
		}		
	//DEBUG alert("user["+config.options.txtUploadUserName+"] password[" + config.options.pasUploadPassword + "]");
	// compose headers data
	var sheader = "";
	sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
	sheader += config.macros.upload.formName +"\"\r\n\r\n";
	sheader += "backupDir="+backupDir
				+";user=" + username 
				+";password=" + password
				+";uploaddir=" + uploadDir;
	// add lock attributes to sheader
	if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {
		var l = BidiX.GroupAuthoring.lock.myLock;
		sheader += ";lockuser=" + l.user
				+ ";mtime=" + l.mtime
				+ ";locktime=" + l.locktime;
	}
	sheader += ";;\r\n"; 
	sheader += "\r\n" + "--" + boundary + "\r\n";
	sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+toFilename+"\"\r\n";
	sheader += "Content-Type: " + config.macros.upload.contentType + "\r\n";
	sheader += "Content-Length: " + content.length + "\r\n\r\n";
	// compose trailer data
	var strailer = new String();
	strailer = "\r\n--" + boundary + "--\r\n";
	//strailer = "--" + boundary + "--\r\n";
	var data;
	data = sheader + content + strailer;
	//request.open("POST", storeUrl, true, username, password);
	try {
		request.open("POST", storeUrl, true);		
	}
	catch(e) {
		alert(config.macros.upload.messages.crossDomain + "\nError:" +e);
		exit;
	}
	request.onreadystatechange = function () {
				if (request.readyState == 4) {
				     if (request.status == 200)
						callbackFn(request.responseText);
					else
						alert(config.macros.upload.messages.errorUploadingContent + "\nStatus: "+request.status.statusText);
				}
		};
	request.setRequestHeader("Content-Length",data.length);
	request.setRequestHeader("Content-Type","multipart/form-data; boundary="+boundary);
	request.send(data); 
};


config.macros.upload.download = function(uploadUrl, uploadToFilename, uploadDir, uploadBackupDir, 
	username, password) {
	var request;
	try {
		request = new XMLHttpRequest();
	} 
	catch (e) { 
		request = new ActiveXObject("Msxml2.XMLHTTP"); 
	}
	try {
		if (uploadUrl.substr(0,4) == "http") {
			netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
			}
		else {
			netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
		}
	} catch (e) { }
	//request.open("GET", document.location.toString(), true, username, password);
	try {
		request.open("GET", document.location.toString(), true);
	}
	catch(e) {
		alert(config.macros.upload.messages.crossDomain + "\nError:" +e);
		exit;
	}
	
	request.onreadystatechange = function () {
		if (request.readyState == 4) {
			if(request.status == 200) {
				config.macros.upload.uploadChangesFrom(request.responseText, uploadUrl, 
					uploadToFilename, uploadDir, uploadBackupDir, username, password);
			}
			else
				alert(config.macros.upload.messages.errorDownloading.format(
					[document.location.toString()]) + "\nStatus: "+request.status.statusText);
		}
	};
	request.send(null);
};

//}}}
////===

////+++!![Initializations]

//{{{
config.lib.options.init('txtUploadStoreUrl','store.php');
config.lib.options.init('txtUploadFilename','');
config.lib.options.init('txtUploadDir','');
config.lib.options.init('txtUploadBackupDir','');
config.lib.options.init('txtUploadUserName',config.options.txtUserName);
config.lib.options.init('pasUploadPassword','');
setStylesheet(
	".pasOptionInput {width: 11em;}\n"+
	".txtOptionInput.txtUploadStoreUrl {width: 25em;}\n"+
	".txtOptionInput.txtUploadFilename {width: 25em;}\n"+
	".txtOptionInput.txtUploadDir {width: 25em;}\n"+
	".txtOptionInput.txtUploadBackupDir {width: 25em;}\n"+
	"",
	"UploadOptionsStyles");
if (document.location.toString().substr(0,4) == "http") {
	config.options.chkAutoSave = false; 
	saveOptionCookie('chkAutoSave');
}
config.shadowTiddlers.UploadDoc = "[[Full Documentation|http://tiddlywiki.bidix.info/l#UploadDoc ]]\n"; 

//}}}
////===

////+++!![Core Hijacking]

//{{{
config.macros.saveChanges.label_orig_UploadPlugin = config.macros.saveChanges.label;
config.macros.saveChanges.label = config.macros.upload.label.saveToDisk;

config.macros.saveChanges.handler_orig_UploadPlugin = config.macros.saveChanges.handler;

config.macros.saveChanges.handler = function(place)
{
	if ((!readOnly) && (document.location.toString().substr(0,4) != "http"))
		createTiddlyButton(place,this.label,this.prompt,this.onClick,null,null,this.accessKey);
};

//}}}
////===
[[UploadPlugin]] は TW をサーバ上で更新可能にする。
詳しくは以下を。

[>][[サーバサイドの TiddlyWiki 運用-UploadPluginの使い方]]
/***
|''Name:''|UploadToFileMacro|
|''Description:''|Upload a tiddler as a file using UploadPlugin context. Used with the SimonBaird's RunMacroIfTagged in [[ViewTemplate|BidiXStyleViewTemplate]] provides a new command in the tiddler toolbar.|
|''Version:''|1.0.0|
|''Date:''|Mar 14, 2006|
|''Source:''|http://tiddlywiki.bidix.info/#UploadToFileMacro|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadToFileMacroDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.0.0|
|''Browser:''|Firefox 1.5; InternetExplorer 6.0; Safari|
|''Include:''|none|
|''Require:''|UploadPlugin|
***/
//{{{
version.extensions.UploadToFileMacro = {
	major: 1, minor: 0, revision: 0, 
	date: new Date(2006,3,13),
	source: 'http://tiddlywiki.bidix.info/#UploadToFilePlugin',
	documentation: 'http://tiddlywiki.bidix.info/#UploadToFilePluginDoc',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.0.0',
	browser: 'Firefox 1.5; InternetExplorer 6.0; Safari'
};

config.macros.uploadToFile = {
	label: "uploadToFile",
	prompt: "upload tiddler '%0' to file '%1' ",
	warning: "Are you sure you want to upload '%0'?",
	dirname: config.lib.file.dirname,
	basename: config.lib.file.dirname
};

config.macros.uploadToFile.messages = {
	fileUploaded: "tiddler '%0' uploaded to file '%1'",
	fileNotUploaded: "tiddler '%0' NOT uploaded"
};

config.macros.uploadToFile.handler = function(place, macroName, params, wikifier,paramString, tiddler) {
	// parameters initialization
	var toFilename = params[0];
	var tiddlerTitle = params[1];
	if (!tiddlerTitle) { 
		tiddlerTitle = tiddler.title;
	} else {
		tiddler = store.getTiddler(tiddlerTitle);
	}
	if (!toFilename) { 
		toFilename = tiddlerTitle;
	} 
	var prompt = this.prompt.format([tiddlerTitle, toFilename]);
	createTiddlyButton(place, this.label, this.prompt.format([tiddlerTitle, toFilename]), 
						function () {
							config.macros.uploadToFile.upload(tiddler, toFilename); 
							return false;}, 
						null, null, null);
};

config.macros.uploadToFile.upload = function(tiddler, toFilename, storeUrl, toFilename, uploadDir, backupDir, username, password) {
		var uploadIt = true; 
		if (this.warning)
			uploadIt = confirm(this.warning.format([tiddler.title])); 
		if (uploadIt) {
			if (!tiddler)	{
				alert("Tiddler not found.");
				return;
			}
			if (!config.macros.upload.uploadContent) {
				alert ("no UploadPlugin extension");
				return;
			}
			// parameters initialization
			storeUrl = (storeUrl ? storeUrl : config.options.txtUploadStoreUrl);
			toFilename = (toFilename ? toFilename : tiddler.title);
			backupDir = (backupDir ? backupDir : config.options.txtUploadBackupDir);
			uploadDir = (uploadDir ? uploadDir : config.options.txtUploadDir);
			username = (username ? username : config.options.txtUploadUserName);
			password = (password ? password :config.options.pasUploadPassword); 
			config.macros.upload.uploadContent(tiddler.text, storeUrl, toFilename, uploadDir, backupDir, username, password, 
					function (responseText) {
						if (responseText.substring(0,1) != '0') {
							displayMessage(config.macros.uploadToFile.messages.fileNotUploaded.format([tiddler.title]));
						}
						else {
							if (uploadDir) {
								toFilename = uploadDir + "/" + config.macros.uploadToFile.basename(toFilename);
							} 
							displayMessage(config.macros.uploadToFile.messages.fileUploaded.format(
								[tiddler.title, config.macros.uploadToFile.dirname(storeUrl)+"/"+toFilename]), config.macros.upload.dirname(storeUrl)+"/"+toFilename);
						}
						// for debugging store.php uncomment last line
						//DEBUG alert(responseText);
					});
		}
		return false;
};

config.shadowTiddlers.UploadToFileMacroDoc= "[[Full Documentation|http://tiddlywiki.bidix.info/l#UploadToFileMacroDoc]]\n"; 
//}}}
モータ制御技術はこれまで産業界で広く用いられ,現在の製品製造技術においてなくてはならないものとなっています。
一方,昨今少子高齢化の問題が表面化してきた日本社会では,今後人間生活をアシストする技術へのニーズが高まり,モータ制御技術も福祉機器や介護ロボット等のより人間の身近な分野へ応用されていくことが考えられます。
本研究ではモータ制御技術を応用し,シルバーカーやベビーカー,荷物運搬用カートなどの移動台車(手押し台車)にアシスト制御機能を付加しようと試みている。具体的には,移動台車の駆動輪にモータを用い,移動台車に対して使用者が加えた力をモータの制御器が検知し,使用者を補助するアシストトルクをモータに出力させるような機器の開発を構想し。将来的に,人間が電機機器を操作していると意識することなく使用可能な,人間親和性の高い移動台車の開発を目指しています。
<html>
<img style="width: 150px; " alt="" src="Picture/cart1.jpg" align="">
<img style="width: 320px; " alt="" src="Picture/cart2.jpg" align="">
</html>
開発中のカート               トルクアシスト実験結果
<<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>><<slider chkSliderContents [[TabContents]] 'contents »' 'contents'>>
<html>
<body>
<CENTER><TABLE>
<TR>
  <TD>あなたは累計</TD>
  <TD>
    <TABLE BORDER="1">
    <TR>
      <TD><img src="count/dayx.cgi?gif"></TD>
    </TR>
    </TABLE>
  </TD>
  <TD>番目の訪問者です。</TD>
</TR>
</TABLE>
(本日<img src="count/dayx.cgi?today">番目のアクセスです。
昨日は<img src="count/dayx.cgi?yes">回のアクセスがありました)
<br>
Copyright &copy; <strong>KENT-WEB</strong> &amp;
<strong><a href="http://www.kent-net.jp/">KENT-NET</a></strong> 1997-2008.</span><br />
</CENTER>
</body>
</html>
[[集計一覧|http://www.life.kyutech.ac.jp/~hanamoto/count/dayxmgr.cgi]]
The tiddler 'excludeLists' doesn't yet exist. Double-click to create it
研究室配属が花本研に決まった学生は
@@4月7日17:00@@に若松キャンパス1F1720室に集合の事。
研究室配属が花本研に決まった学生は
@@4月6日(月)17:00@@に若松キャンパス1F1720室に集合の事。

これに先立ち
@@3月31日(火)11:00@@に若松キャンパス1F1720室で研究内容の紹介
をしますので可能であれば参加してください。
研究室配属が花本研に決まった学生は

新B4の学生は
@@3月31日(木)14:00@@に若松キャンパス1F1720室に集合の事。
研究内容の紹介をしますので参加してください。

新M1、新Bの学生共に
@@4月4日(月)14:30@@に若松キャンパス1F1720室に集合し
当日15:10~新M2の中間発表を聴講するように。

<html><head> <title>小ウィンドウ表示</title> 
</head><body bgcolor=black> <center>
 <embed src="intro_2008_x264.swf" border="0" width="320" height="300" ShowStatusBar="1">
 </center> </body></html>
<html>
<center>
<embed src="intro_life.swf" menu="false" quality="high" bgcolor="#333333" width="650" height="480" name="main" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</center>
</html>
<html>
<img style="width: 400px; " alt="" src="Picture/32matcon_ss.jpg" align="">
<img style="width: 300px; " alt="" src="Picture/mat3ksimu.png" align="">
</html>

重ね抵抗溶接は,電極間に二枚の金属板を重ね,被溶接部に発生するジュール熱を利用して溶接する方法であり,種々の産業分野において利用されており,溶接母材や溶接製品の多様化からさらなる高性能化が必要となってきている。そこで,電力変換部にパワーエレクトロニクス技術を適用し,電流・電力の制御を行い,省エネルギーと高品質製品を同時に実現することを目標とする。ここでは、三相-単相マトリックスコンバータを用いて電源側の高力率制御と負荷側の高速応答制御を同時に実現することを目指す。

<html>
<img style="width: 250px; " alt="" src="Picture/MATCON2011_ss.jpg" align="">
</html>

/%
[img[32matcon|Picture/32matcon_ss.jpg]]
[img[32matconsimu|Picture/mat3ksimu.png]]
%/
同期電動機の1種類であるシンクロナスリタクタンスモータ(SynRM)の電気系のパラメータをブロックパルス関数を用いてオンラインで推定,特に駆動状態によって変化するパラメータの把握を行い,センサレス制御の精度向上を目指す。

!!@@color(red):''平成21年度研究室を希望する学生の皆さんへ''@@

キーワード
*パワーエレクトロニクス
*モーションコントロール
*低速・密着型・安全
*省エネ・小型
*軽量・安心


[img[Hanamoto_lab2009_ss.jpg]]
[[2009年研究室説明会紹介資料|LAB introduce]]   @@color(red):''click !!''@@ 


本研究室は,人間親和型制御システムを目指しています。ベースとなるのは主としてパワーエレクトロニクスの応用分野の研究です。授業(4年次パワーエレクトロニクス)では説明をしていない,制御を含めたモータの可変速駆動や電力変換回路の研究が代表的なものです。活動場所は若松キャンパスになりますが,授業がある学生用に戸畑キャンパスにも部屋を確保しています。
質問,見学希望等は@@color(red):''メール''@@にて受け付けます。

具体的には,サーボモータの制御を主に行っています。特に共振系の制振制御をモータ情報のみで行うインテリジェント制御や、モータの位置・速度センサが不要なセンサレス制御の研究により,モータを思い通りに制御することを目指しています。これからはモータだけでなく,ロボット、移動車等の駆動部分を含めた制御システムを考え,その制御方法を開発していく予定です。従来の産業用の制御方法を発展させて,一般家庭や人々と接しながらも,人や物に対して危害を与えないような特性を持たせたり,小型,軽量,省エネを考慮した人に優しい装置となるようなことを考えています。

研究テーマとしては
#[[係数図を用いた多慣性速度制御系の制御器設計に関する研究|CDM]]
#[[磁束推定に基づいた同期リラクタンスモータのセンサレス速度制御に関する研究|sensorless]]
#[[FPGAを用いたPMSMの高精度トルク制御に関する研究|FPGA]]
#[[FPGAを用いた交流電動機駆動系のオンライン・リアルタイム・シミュレータに関する研究|HILS]]
#[[パラメータ推定機能を付加した電気移動車のトルクアシスト制御に関する研究|cart]]
#[[三相‐単相マトリックスコンバータを用いた重ね抵抗溶接機の高精度制御に関する研究|matcon]]

/%#[[同期リラクタンスモータのオンラインパラメータ推定方法に関する研究|paraest]]%/
/%#[[PCLPFを用いた同期リラクタンスモータのセンサレス制御|PCLPF]]%/
/%#[[FPGAを用いた交流電動機駆動系のオンライン・リアルタイム・シミュレータに関する研究|RTSim]]%/


などを,考えています。
いずれも,パソコンを用いた制御が基本となります。C言語が分かっていると便利ですが,例年研究室に配属された段階では知識が無い学生がほとんどです。
また,実際に回路を作成することもありますので,物を作るのが好きな人にも向いています。

/%
[[実験に関するいくつかの写真|Lab Picture2]]をおいておきますので,参考にしてください。
%/


!!@@color(red):''平成26年度に研究室配属を希望するB3の学生さんへ''@@
!!終了しました

! 2014年2月25日 16:00より若松キャンパスで研究室見学を行います、希望者は下記メールアドレスに連絡をして下さい
hanamoto (at) life.kyutech.ac.jp 
 ((at) を置き換えて下さい。)

他の日時を希望する場合もメールで連絡して下さい、できるだけ時間調整をします。

!!!キーワード
*パワーエレクトロニクス
*モーターコントロール
*電力変換
*エネルギーハーベスト
など

<html>
<center><img style="width: 600px; " alt="" src="OC_life1_2014_hanamoto_0118.jpg" align=""></center>
</html>

本研究室は,環境調和対応パワーエレクトロニクス技術を目指しています。パワーエレクトロニクスの応用分野の研究です。制御を含めたモータの可変速駆動や電力変換回路の研究が代表的なものです。


具体的には,サーボモータの制御を主に行っています。モータの位置・速度センサが不要なセンサレス制御の研究や制御をハードウェアで行う方法、制御則を速やかに実現できるシステムの構築等を目指しています。小型,軽量,省エネを考慮した人に優しい装置となるようなことを考えています。また、限りあるエネルギーを有効に使う方法や、高機能な制御を電力変換にて実現することを考えています。


!!!研究テーマ
#ディジタルハードウェア制御を用いた永久磁石同期電動機の高性能化に関する研究
#マトリックスコンバータのディジタル制御器設計に関する研究
#マトリックスコンバータの電力系統補償装置への適用に関する研究
#自立運転機能を有する熱電発電システムに関する研究
#永久磁石同期電動機の始動時位置推定に関する研究

など

いずれも,パソコンを用いた制御が基本となります。C言語が分かっていると便利ですが,例年研究室に配属された段階では知識が無い学生がほとんどです。
シミュレーションツールで解析することもあります。また,実際に回路を作成することが多いので,物を作るのが好きな人にも向いています。

!!!過去5年の修士学生の就職状況(2014年 4月 入社予定を含む)

三菱電機株式会社、富士電機、株式会社東芝、TOTO、本田技研工業株式会社、トヨタ自動車九州株式会社、ダイキン、宇部興産機械
パナソニック株式会社、三菱自動車工業株式会社、三菱重工業株式会社 , 株式会社国分電機
曙ブレーキ工業株式会社 , 株式会社トヨタ車体研究所、三洋電機株式会社 , 株式会社鶴見製作所 , アルプス電気株式会社
凸版印刷株式会社 , 株式会社安川電機、日本電営株式会社 
(複数人入社を含む)

/% 
#[[係数図を用いた多慣性速度制御系の制御器設計に関する研究|CDM]] 
#[[パラメータ推定機能を付加した電気移動車のトルクアシスト制御に関する研究|cart]]
%/
/%#[[同期リラクタンスモータのオンラインパラメータ推定方法に関する研究|paraest]]%/
/%#[[PCLPFを用いた同期リラクタンスモータのセンサレス制御|PCLPF]]%/
/%#[[FPGAを用いた交流電動機駆動系のオンライン・リアルタイム・シミュレータに関する研究|RTSim]]%/
!!@@color(red):''平成22年度生命体入学を希望する学生の皆さんへ''@@
!!入試は年4回開催されています。

キーワード
*パワーエレクトロニクス
*モーションコントロール
*低速・密着型・安全
*省エネ・小型
*軽量・安心


[img[Hanamoto_lab2009_ss.jpg]]
[[2009年研究室説明会紹介資料|LAB introduce]]   @@color(red):''学部生用の資料ですが参考にして下さい''@@ 


本研究室は,人間親和型制御システムを目指しています。ベースとなるのは主としてパワーエレクトロニクスの応用分野の研究です。制御を含めたモータの可変速駆動や電力変換回路の研究が代表的なものです。
質問,見学希望等は@@color(red):''メール''@@にて受け付けます。


具体的には,サーボモータの制御を主に行っています。特に共振系の制振制御をモータ情報のみで行うインテリジェント制御や、モータの位置・速度センサが不要なセンサレス制御の研究により,モータを思い通りに制御することを目指しています。これからはモータだけでなく,ロボット、移動車等の駆動部分を含めた制御システムを考え,その制御方法を開発していく予定です。従来の産業用の制御方法を発展させて,一般家庭や人々と接しながらも,人や物に対して危害を与えないような特性を持たせたり,小型,軽量,省エネを考慮した人に優しい装置となるようなことを考えています。

研究テーマとしては
#[[係数図を用いた多慣性速度制御系の制御器設計に関する研究|CDM]]
#[[磁束推定に基づいた同期リラクタンスモータのセンサレス速度制御に関する研究|sensorless]]
#[[FPGAを用いたPMSMの高精度トルク制御に関する研究|FPGA]]
#[[FPGAを用いた交流電動機駆動系のオンライン・リアルタイム・シミュレータに関する研究|HILS]]
#[[パラメータ推定機能を付加した電気移動車のトルクアシスト制御に関する研究|cart]]
#[[三相‐単相マトリックスコンバータを用いた重ね抵抗溶接機の高精度制御に関する研究|matcon]]


などを,考えています。
いずれも,パソコンを用いた制御が基本となります。C言語が分かっていると便利ですが,例年研究室に配属された段階では知識が無い学生がほとんどです。
また,実際に回路を作成することもありますので,物を作るのが好きな人にも向いています。

/%#[[同期リラクタンスモータのオンラインパラメータ推定方法に関する研究|paraest]]%/
/%#[[PCLPFを用いた同期リラクタンスモータのセンサレス制御|PCLPF]]%/
/%#[[FPGAを用いた交流電動機駆動系のオンライン・リアルタイム・シミュレータに関する研究|RTSim]]%/
!!@@color(red):''平成24年度に研究室を希望する学生の皆さんへ''@@

キーワード
*パワーエレクトロニクス
*モーターコントロール
*低速・密着型・安全
*省エネ・小型
*軽量・安心


[img[Hanamoto_lab2011_ss.jpg]]

説明会資料はこちら(2011/2/28説明分)  >>>>  [[2011年研究室説明会紹介資料|LAB introduce]]   
/%@@color(red):''H23年4月配属学部生用の資料ですが参考にして下さい''@@ %/


本研究室は,人間親和型制御システムを目指しています。ベースとなるのは主としてパワーエレクトロニクスの応用分野の研究です。制御を含めたモータの可変速駆動や電力変換回路の研究が代表的なものです。
質問,見学希望等は@@color(red):''メール''@@にて受け付けます。


具体的には,サーボモータの制御を主に行っています。特に共振系の制振制御をモータ情報のみで行うインテリジェント制御や、モータの位置・速度センサが不要なセンサレス制御の研究により,モータを思い通りに制御することを目指しています。これからはモータだけでなく,ロボット、移動車等の駆動部分を含めた制御システムを考え,その制御方法を開発していく予定です。従来の産業用の制御方法を発展させて,一般家庭や人々と接しながらも,人や物に対して危害を与えないような特性を持たせたり,小型,軽量,省エネを考慮した人に優しい装置となるようなことを考えています。

研究テーマとしては
#[[磁束推定に基づいた同期リラクタンスモータのセンサレス速度制御に関する研究|sensorless]]
#[[FPGAを用いたPMSMの高精度トルク制御に関する研究|FPGA]]
#[[FPGAを用いた交流電動機駆動系のオンライン・リアルタイム・シミュレータに関する研究|HILS]]
#[[三相‐単相マトリックスコンバータを用いた重ね抵抗溶接機の高精度制御に関する研究|matcon]]
#熱電発電用MPPT制御に関する研究

/% 
#[[係数図を用いた多慣性速度制御系の制御器設計に関する研究|CDM]] 
#[[パラメータ推定機能を付加した電気移動車のトルクアシスト制御に関する研究|cart]]
%/

などを,考えています。
いずれも,パソコンを用いた制御が基本となります。C言語が分かっていると便利ですが,例年研究室に配属された段階では知識が無い学生がほとんどです。
また,実際に回路を作成することもありますので,物を作るのが好きな人にも向いています。

/%#[[同期リラクタンスモータのオンラインパラメータ推定方法に関する研究|paraest]]%/
/%#[[PCLPFを用いた同期リラクタンスモータのセンサレス制御|PCLPF]]%/
/%#[[FPGAを用いた交流電動機駆動系のオンライン・リアルタイム・シミュレータに関する研究|RTSim]]%/
!!@@color(red):''平成25年度に研究室を希望する学生の皆さんへ''@@

!!!キーワード
*パワーエレクトロニクス
*モーターコントロール
*電力変換
*熱電素子
*エネルギーハーベスト

<html>
<img style="width: 300px; " alt="" src="Hanamoto_lab2012.jpg" align="">
</html>


説明会資料はこちら(2012/03/02説明分)  >>>>  [[2012年研究室説明会紹介資料|LAB introduce]]   
/%@@color(red):''H24年4月配属学部生用の資料ですが参考にして下さい''@@ %/

本研究室は,環境調和対応パワーエレクトロニクス技術を目指しています。パワーエレクトロニクスの応用分野の研究です。制御を含めたモータの可変速駆動や電力変換回路の研究が代表的なものです。
質問,見学希望等は@@color(red):''メール''@@にて受け付けます。


具体的には,サーボモータの制御を主に行っています。モータの位置・速度センサが不要なセンサレス制御の研究や制御をハードウェアで行う方法、制御則を速やかに実現できるシステムの構築等を目指しています。小型,軽量,省エネを考慮した人に優しい装置となるようなことを考えています。また、限りあるエネルギーを有効に使う方法や、高機能な制御を電力変換にて実現することを考えています。

!!!研究テーマ
#[[磁束推定に基づいた同期リラクタンスモータのセンサレス速度制御に関する研究|sensorless]]
#[[FPGAを用いたPMSMの高精度トルク制御に関する研究|FPGA]]
#[[FPGAを用いた交流電動機駆動系のオンライン・リアルタイム・シミュレータに関する研究|HILS]]
#[[三相‐単相高周波マトリックスコンバータの高精度制御に関する研究|matcon]]
#マトリックスコンバータの電力補償装置への適用に関する研究
#熱電発電用MPPT制御に関する研究

など

いずれも,パソコンを用いた制御が基本となります。C言語が分かっていると便利ですが,例年研究室に配属された段階では知識が無い学生がほとんどです。
また,実際に回路を作成することもありますので,物を作るのが好きな人にも向いています。

!!!過去5年の就職状況(2012 4月 入社予定を含む)

三菱電機株式会社 , 株式会社安川電機 5 , 三菱化学エンジニアリング(株) 
株式会社デンソー 2 , ミナト医科学株式会社 , 三菱自動車工業株式会社 3
株式会社ニッキ , 本田技研工業株式会社 , 住友金属鉱山株式会社
日本電営株式会社 ,曙ブレーキ工業株式会社 , 株式会社トヨタ車体研究所
三洋電機株式会社 , 株式会社鶴見製作所 , アルプス電気株式会社
凸版印刷株式会社 , パナソニック株式会社 , トヨタ自動車九州株式会社
三菱重工業株式会社 , 株式会社国分電機


/% 
#[[係数図を用いた多慣性速度制御系の制御器設計に関する研究|CDM]] 
#[[パラメータ推定機能を付加した電気移動車のトルクアシスト制御に関する研究|cart]]
%/
/%#[[同期リラクタンスモータのオンラインパラメータ推定方法に関する研究|paraest]]%/
/%#[[PCLPFを用いた同期リラクタンスモータのセンサレス制御|PCLPF]]%/
/%#[[FPGAを用いた交流電動機駆動系のオンライン・リアルタイム・シミュレータに関する研究|RTSim]]%/
!!@@color(red):''平成27年度に研究室を希望する学生の皆さんへ''@@

2015OpenCampasのポスター
[[OpenCampasLabPoster]]

!!!キーワード
*パワーエレクトロニクス
*モーターコントロール
*電力変換
*MPPT制御

<html>
<img style="width: 300px; " alt="" src="Hanamoto_lab2015.jpg" align="">
</html>


説明会資料はこちら(2015/02作成)  >>>>  [[2015年研究室説明会紹介資料|LAB introduce]]   

本研究室は,環境調和対応パワーエレクトロニクス技術を目指しています。パワーエレクトロニクスの応用分野の研究です。制御を含めたモータの可変速駆動や電力変換回路の研究が代表的なものです。
質問,見学希望等は@@color(red):''メール''@@にて受け付けます。


具体的には,サーボモータの制御を主に行っています。モータの位置・速度センサが不要なセンサレス制御の研究や制御をハードウェアで行う方法、制御則を速やかに実現できるシステムの構築等を目指しています。小型,軽量,省エネを考慮した人に優しい装置となるようなことを考えています。また、限りあるエネルギーを有効に使う方法や、高機能な制御を電力変換にて実現することを考えています。



!!!研究テーマ
#再生可能エネルギー電源のMPPT制御に関する研究
#FPGAを用いたDDPWM方式3相-3相マトリックスコンバータ駆動回路の構築
#表面界磁永久磁石同期電動機の高回転位置センサレス制御に関する研究
#FRITを用いた永久磁石同期電動機の電流・速度制御器設計に関する研究
#2種類のオブザーバを組み合わせた表面界磁永久磁石同期電動機のセンサレス始動方式
#FRITで設計したマトリクスコンバータ型UPFCの高応答安定化制御に関する研究
など

いずれも,パソコンを用いた制御が基本となります。C言語が分かっていると便利ですが,例年研究室に配属された段階では知識が無い学生がほとんどです。
また,実際に回路を作成することもありますので,物を作るのが好きな人にも向いています。

!!!過去数年の就職状況(2015 4月 入社を含む)

三菱電機株式会社 , 株式会社安川電機  , 三菱化学エンジニアリング(株) 
株式会社デンソー , ミナト医科学株式会社 , 三菱自動車工業株式会社
株式会社ニッキ , 本田技研工業株式会社 , 住友金属鉱山株式会社
日本電営株式会社 ,曙ブレーキ工業株式会社 , 株式会社トヨタ車体研究所
三洋電機株式会社 , 株式会社鶴見製作所 , アルプス電気株式会社
凸版印刷株式会社 , パナソニック株式会社 , トヨタ自動車九州株式会社
三菱重工業株式会社 , 株式会社国分電機、TOTO、 ダイキン、宇部興産機械
三菱電機x2、東芝、富士電機
2015 トヨタ自動車九州株式会社、日立製作所、パナソニック株式会社、
三菱日立パワーシステム、安川電機、中国電力

/% 
#[[係数図を用いた多慣性速度制御系の制御器設計に関する研究|CDM]] 
#[[パラメータ推定機能を付加した電気移動車のトルクアシスト制御に関する研究|cart]]
%/
/%#[[同期リラクタンスモータのオンラインパラメータ推定方法に関する研究|paraest]]%/
/%#[[PCLPFを用いた同期リラクタンスモータのセンサレス制御|PCLPF]]%/
/%#[[FPGAを用いた交流電動機駆動系のオンライン・リアルタイム・シミュレータに関する研究|RTSim]]%/
!!@@color(red):''平成29年度に研究室を希望する学生の皆さんへ''@@


戸畑キャンパス電気電子工学の3年生へ
3月1日 13:00-14:30 5号棟 E-314室で説明を行います。
アポなしでも大丈夫です。<== @@会議で飛ばしました、申し訳ありません@@

3月2日 10:00-16:00 若松キャンパスで研究室見学を行います。
質問,見学希望等は@@color(red):''メール''@@を下さい。

 [[2017年研究室説明会紹介資料|labintro2017/Hanamoto_lab201703011withMovie.htm]]   


2016OpenCampasのポスター
[[OpenCampasLabPoster]]

!!!キーワード
*パワーエレクトロニクス
*モーターコントロール
*電力変換
*MPPT制御
/%
説明会資料はこちら(2015/02作成)  >>>>  [[2015年研究室説明会紹介資料|LAB introduce]]   
%/

本研究室は,環境調和対応パワーエレクトロニクス技術を目指しています。パワーエレクトロニクスの応用分野の研究です。制御を含めたモータの可変速駆動や電力変換回路の研究が代表的なものです。

具体的には,サーボモータの制御を主に行っています。モータの位置・速度センサが不要なセンサレス制御の研究や制御をハードウェアで行う方法、制御則を速やかに実現できるシステムの構築等を目指しています。小型,軽量,省エネを考慮した人に優しい装置となるようなことを考えています。また、限りあるエネルギーを有効に使う方法や、高機能な制御を電力変換にて実現することを考えています。



!!!研究テーマ
#再FRITを用いた多慣性系の振動抑制速度制御器設計に関する研究
#SysGENを用いたDDPWM方式3相-3相マトリックスコンバータの制御に関する研究
#表面界磁永久磁石同期電動機の高回転位置センサレス制御に関する研究
#3相PWMコンバータを用いた永久磁石同期発電機のMPPT制御に関する研究
#FPGAでの構築した永久磁石同期電動機の空間ベクトルPWMに関する研究
など

いずれも,パソコンを用いた制御が基本となります。C言語が分かっていると便利ですが,例年研究室に配属された段階では知識が無い学生がほとんどです。
また,実際に回路を作成することもありますので,物を作るのが好きな人にも向いています。

!!!過去数年の就職状況(2016 4月 入社予定を含む)

2012.4   パナソニック,三菱重工,トヨタ自動車九州, 三菱自動車,国分電機
2013.4   TOTO,本田技研工業,トヨタ自動車九州, ダイキン工業,宇部興産機械
2014.4   三菱電機x2,東芝,富士電機
2015.4  トヨタ自動車九州,日立製作所、安川電機, パナソニック、中国電力、三菱日立パワーシステムズ

2016.4(予定)三菱電機x2、パナソニックエコシステムズ、富士電機、宇部興産機械、安川電機、アイシンコムクルーズ、三菱自動車


/% 
#[[係数図を用いた多慣性速度制御系の制御器設計に関する研究|CDM]] 
#[[パラメータ推定機能を付加した電気移動車のトルクアシスト制御に関する研究|cart]]
%/
/%#[[同期リラクタンスモータのオンラインパラメータ推定方法に関する研究|paraest]]%/
/%#[[PCLPFを用いた同期リラクタンスモータのセンサレス制御|PCLPF]]%/
/%#[[FPGAを用いた交流電動機駆動系のオンライン・リアルタイム・シミュレータに関する研究|RTSim]]%/
!!資料
初めに [[第1回授業内容|limited/robotcont/RobotControl_Intro2011.pdf]]
第1章 [[第1章|limited/robotcont/2011RobotControl1.pdf]]
第2章(1) [[第2-1章|limited/robotcont/2011RobotControl2_1.pdf]]
第2章(2) [[第2-2章|limited/robotcont/2011RobotControl2_2.pdf]]
第3章 [[第3章|limited/robotcont/2011RobotControl3_1.pdf]]
第5章 [[第5章|limited/robotcont/2011RobotControl5.pdf]]


平成23年度レポート [[レポート課題|limited/robotcont/2011RobotControl_report1.pdf]]

/%
第2章 [[DCDC変換|limited/powerele/sec2/pele_S2.pdf]]
第3章 [[DCAC変換|limited/powerele/sec3/pele_S3.pdf]]
第4章 [[ACDC変換|limited/powerele/sec4/pele_S4.pdf]]
第5章 [[ACAC変換|limited/powerele/sec5/pele_S5.pdf]]
%/

[img[2mass|Picture/SynRM2_ss.jpg]]
 交流電動機の位置・速度制御は,パワーエレクトロニクスの代表的な応用例であり,現在の産業を支えている技術の1つといえる。その中で,位置センサを使用しないセンサレス制御は,装置の小型化,軽量化,設置環境の拡大化の要求や,センサに混入するノイズや断線による制御系の信頼性低下阻止の目的で広く研究され,実用化しているものも多数ある。
 ここでは,永久磁石型同期電動機(PMSM)や同期リラクタンスモータ(SynRM)の高速・高精度,全速度領域センサレス制御の実現を目指している。特にSynRMは回転子にレアメタルを使用した永久磁石が不要であるため今後の実用化が望まれている。一方で磁束飽和による非線形性が強いためロバストな制御手法を実現する必要である。
 本研究室では,解決策の1つとして状態オブザーバに基づいた,交流波形を推定するのに都合の良い拡張磁束オブザーバを提案している。さらに,オブザーバをフィルタとみなし特性解析を行い広い範囲でのセンサレスの実用化を目指している。