M1に続きB4も配属決定,今年も3名です,これで全メンバーが決まりましたので,今年度も活動を開始です。といってもまだ何も行っていません。\n!!フリーソフトの紹介\n*数式処理プログラム・・・授業の準備でラプラス変換をするプログラムを探していました。MuPADでもできるのですが,[[AXIOM|http://wiki.axiom-developer.org/FrontPage]]+[[Texmacs|http://www.texmacs.org/tmweb/download/windows.en.html]]でいいかんじです。TexmacsがWindowsでもうごくのであればMaximaでよかったかも。デスクトップには入れましたがnotePCはまだです。\n*Texmacs・・・TeXのフロントエンド,数式処理の結果もきれいに表示してくれます。日本語は通りません。Linuxがもともとでしょうが,最近はWindows版の開発も進んでいるようです。[[Tips]]にも上げておきます
試行としてパスワードを使わない日記も上げていこうと思います。特に読者は想定せずに思いついたことを記述することとします。メモとして,防備録代りに使用するかもしれません。
!!研究室ゼミ初回\n私の研究室は,学外からの進学者も多いので,各自が行った卒論の研究内容について,ゼミの初回に紹介してもらうことにしています。\n今年の感想ですが,それぞれ面白い研究をしていると感じましたが,私のところを含め,教えてもらったことを一生懸命行ったという感想です。博士前期課程(修士のほうが分かりやすいですね)に,進んだので今後は自分のオリジナルを入れた研究ができるように”精進”してください。精進は以前もBLOGに何度か登場していますが,ある先生からメールを頂いたときに書かれていた言葉です。なんか頑張れ,努力,とかよりもいっそう勉学に励まないといけないようで気が引き締まったので,あえて書いてみました。\nB4も来年は,同じことを行います。その前に卒論発表もあります。それまでに,人前で話ができるように訓練しましょう。\n
!!1999\n\n 1. 池田 英広、花本 剛士、辻  輝生、田中 良明、速度ループを極配置法で設計した2慣性系の位置制御、電気学会論文誌 119-D巻、4号, 544-545\n 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\n 3. ウメルジャン サウット,梅田 信弘, 花本 剛士, 辻 輝生,非線形オブザーバを用いたフレキシブルアームの制振制御,計測自動制御学会論文集,Vol.35, No.3, 401/406\n 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\n 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\n 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\n\n!!1998\n\n 1. 花本 剛士,里見 篤生,辻  輝生,田中 良明,電流形PWMコンバータの最適制御による過渡振動抑制制御の供試機による検証、電気学会論文誌 118-D巻、7/8号, 951-952\n 2. 花本 剛士,原  英博,田中 良明,辻  輝生,拡張誘起電圧オブザーバを用いたBLDCMのセンサレス制御,電気学会論文誌 118-D巻、9号, 1089-1090\n 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\n 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 \n\n\n
!!2001\n# 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 \n\n!!2000\n# 池田 英広,花本 剛士,辻  輝生,田中 良明,遺伝的アルゴリズムを用いた2慣性共振系の位置制御系設計、電気学会論文誌 120-D巻、6号, 838-844\n# 花本 剛士,ハサン ジダン,小黒 龍一,田中 良明,辻  輝生,磁束鎖交数の推定値を用いた円筒型PMSMのセンサレス速度制御,電気学会論文誌 120-D巻、7号, 877-883\n# 原  英博,花本 剛士,田中 良明,辻  輝生,小黒 龍一,ブロックパルス関数を用いたBLDCMロバストセンサレス制御,電気学会論文誌 120-D巻、7号, 884-890\n# ウメルジャン サウット,花本 剛士,辻  輝生,最終スライディングモードによるフレキシブルアームの制振制御,,計測自動制御学会論文集,Vol.36, No.8, 723/725\n# 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\n# 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\n# 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\n# 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\n\n
!!2003\n# T.Tsuji, T.Hanamoto, N.Umeda, R.Oguro, Adaptive speed con- trol of motor with rotational angle dep- endent disturbance,Electromotion,Vol10, No.4, pp.691~pp.696 \n\n!!2002\n# 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\n# T.Hanamoto, T.Tsuji, T.Mochizuki, Sensorless Speed Control of IPMSM using the modified flux linkage observer, Proc. of ICEM 2002, No.332
!!2005\n#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\n#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\n!!2004\n# 花本剛士,池田英広,樋口智之,辻 輝生,田中良明, 係数図法を用いた多慣性共振系の振動抑制速度制御,電気学会論文誌,124-D巻、9号, pp.878~pp.895\n# 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\n# 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年\n#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\n#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\n!!2006年\n#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\n#吉岡康哉,花本剛士,"総合最小二乗法を用いた制振制御のための振動モード同定法",電気学会論文誌D,126-D巻 6号, 2006, pp794-803\n#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\n#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\n#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\n#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\n#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\n#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年\n#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\n\n!!2008年\n#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\n#H. Ikeda, T. Hanamoto, T. Tsuji "Design of Multi‐Inertia Digital Speed Control System Using TaughiMethod", Proc. of ICEM PB.3.9, 6pages(CD-ROM) \n#T. Hanamoto, M. Deriha, H. Ikeda, T. Tsuji "Digital Hardware Circuit Using FPGA for Speed Control System of Permanent Magnet Synchronous Motor", Proc. of ICEM PB.3.18, 5pages(CD-ROM) \n\n
*授業形態について\nこの前飲んだときに研究室の学生から聞いたことの中で,学部の学生から「なんで花本の授業は黒板に書いてくれないのか?」と言われたといってました。ちょっと考えるところですね。私はプロジェクタを使用したほうが理解度が上がると思っていましたが,そうではない場合も有るのですね。プログラムを実行したり,色をつけたり,場合によっては写真を見せたりと一応苦労して作っているのですが。黒板にしっかり書いていったほうがそれをノートに写していって理解が深まるのかなあとも思いだしました。もちろんプロジェクタで行う場合にもノートはとるようにとは言っているのですが。すらっと流すと頭に入らないのでしょうかね。とはいえ,今年ももプロジェクタで進める予定です。
! [[生命体工学研究科|LSSE_Class]]\n\n! [[工学部電気工学科|ELE_Class]]\n
! December 2005\n[[27 December 2005]]\n[[23 December 2005]]\n[[22 December 2005]]\n[[20 December 2005]]\n[[19 December 2005]]\n[[16 December 2005]]\n[[15 December 2005]]\n[[14 December 2005]]\n[[12 December 2005]]\n[[11 December 2005]]\n[[7 December 2005]]\n[[6 December 2005]]\n! November 2005\n[[25 November 2005]]\n[[24 November 2005]]\n[[22 November 2005]]\n[[18 November 2005]]\n[[17 November 2005]]\n[[16 November 2005]]\n[[15 November 2005]]\n[[14 November 2005]]\n[[11 November 2005]]\n[[10 November 2005]]\n[[8 November 2005]]\n[[7 November 2005]]\n[[4 November 2005]]\n[[2 November 2005]]\n[[1 Nov 2005]]\n! October 2005\n[[31 Oct 2005]]\n[[29 Oct 2005]]\n[[28 Oct 2005]]\n[[27 Oct 2005]]
!お勧めソフトウェア\n* GTD TiddyWiki\n* QT for win\n* Scilab\n* MuPAD\n* mame4\n* FireFox\n* ThunderBird
|>|>|>|>|>|>| !October 2005 |\n|Su|Mo|Tu|We|Th|Fr|Sa|\n|||||||1|\n|2|3|4|5|6|7|8|\n|9|10|11|12|13|14|15|\n|16|17|18|19|20|21|22|\n|23|24|[[25|25 Oct 2005]]|[[26|26 Oct 2005]]|[[27|27 Oct 2005]]|[[28|28 Oct 2005]]|[[29|29 Oct 2005]]|\n|30|[[31|31 Oct 2005]]||||||\n\n|>|>|>|>|>|>| !November 2005 |\n|Su|Mo|Tu|We|Th|Fr|Sa|\n|||[[1|1 Nov 2005]]|[[2|2 November 2005]]|3|[[4|4 November 2005]]|5|\n|6|[[7|7 November 2005]]|[[8|8 November 2005]]|9|[[10|10 November 2005]]|[[11|11 November 2005]]|12|\n|13|[[14|14 November 2005]]|[[15|15 November 2005]]|[[16|16 November 2005]]|[[17|17 November 2005]]|[[18|18 November 2005]]|19|\n|20|21|[[22|22 November 2005]]|23|[[24|24 November 2005]]|[[25|25 November 2005]]|26|\n|27|28|29|30||||\n\n|>|>|>|>|>|>| !December 2005 |\n|Su|Mo|Tu|We|Th|Fr|Sa|\n| | | | | 1| 2| 3|\n| 4| 5|[[6|6 December 2005]]|[[7|7 December 2005]]| 8| 9|10|\n|[[11|11 December 2005]]|[[12|12 December 2005]]|13|[[14|14 December 2005]]|[[15|15 December 2005]]|[[16|16 December 2005]]|17|\n|18|[[19|19 December 2005]]|[[20|20 December 2005]]|21|[[22|22 December 2005]]|[[23|23 December 2005]]|24|\n|25|26|[[27|27 December 2005]]|28|29|30|31|\n\nhttp://33ad.org/tools/gtdtwcal.php
! Study on the motor control method\nMotor drive system are used in many industrial application. For example, robot actuators, automoble, NC machines.\nIn our lab. the following themes are studied and developed.\n\n* [[Vibration control of resonant system using the Coefficient Diagram Method|CDM]]\n* [[Online parameter estimation of the resonant system|paraest]]\n* [[Speed sensorless control of AC servo motors|sensorless]]\n<html>\n<center>\n<img style="width: 171px; height: 130px;" alt="" src="thema/expsys_col.jpg"><img style="width: 168px; height: 130px;" alt="" src="thema/SynRM.jpg">\n</center>\n</html>\n! Study on the logic circuit of the motion control using FPFA devices\n* Co-design of software and hardware\n* Development of the interface curcuit of the motion control\n* [[Digital hardware conttrol using FPGA devices|FPGA]]\n* Digital motor control system without CPU\n\n[img[FPGAS|Picture/FPGASys_ss.jpg]][img[FPBAB|Picture/FPGABoard_ss.jpg]]\n\n! High frequency 3 phase to single phase matrix converter for static machine \nTo achieve the high efficiency and high performance, high frequency 3 phase to single phase matrix converter has been started in my lab. Especially for non rotating machine the method is seemed to be effective.\nHigh speed response of load current and unity power factor control are the goal of the research.\n\n<html>\n<img style="width: 400px; " alt="" src="Picture/32matcon_ss.jpg" align="">\n<img style="width: 300px; " alt="" src="Picture/mat3ksimu.png" align="">\n</html>\n\n! Development enviromnent for labs and research\n* [[Online real time simulation using RTLinux|RTSim]]\n* Development enviromnent of control systems for AC servo motors using RTLinux\n
Coefficient Diagram Method (CDM) has been proposed to design the control parameter of the resonant system. Here, we consider the convienient and simple method to apply the CDM to the multi-mass resonant systems and discrete models.
<<calendar thismonth>>
/***\n''Name:'' Calendar plugin\n''Version:'' <<getversion calendar>> (<<getversiondate calendar "DD MMM YYYY">>)\n''Author:'' SteveRumsby\n\n''Configuration:''\n\n|''First day of week:''|<<option txtCalFirstDay>>|(Monday = 0, Sunday = 6)|\n|''First day of weekend:''|<<option txtCalStartOfWeekend>>|(Monday = 0, Sunday = 6)|\n\n''Syntax:'' \n|{{{<<calendar>>}}}|Produce a full-year calendar for the current year|\n|{{{<<calendar year>>}}}|Produce a full-year calendar for the given year|\n|{{{<<calendar year month>>}}}|Produce a one-month calendar for the given month and year|\n|{{{<<calendar thismonth>>}}}|Produce a one-month calendar for the current month|\n|{{{<<calendar lastmonth>>}}}|Produce a one-month calendar for last month|\n|{{{<<calendar nextmonth>>}}}|Produce a one-month calendar for next month|\n\n***/\n// //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.\n\n// // ''Changes by ELS 2005.10.30:''\n// // config.macros.calendar.handler()\n// // ^^use "tbody" element for IE compatibility^^\n// // ^^IE returns 2005 for current year, FF returns 105... fix year adjustment accordingly^^\n// // createCalendarDays()\n// // ^^use showDate() function (if defined) to render autostyled date with linked popup^^\n// // calendar stylesheet definition\n// // ^^use .calendar class-specific selectors, add text centering and margin settings^^\n\n//{{{\nconfig.macros.calendar = {};\n\nconfig.macros.calendar.monthnames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];\nconfig.macros.calendar.daynames = ["M", "T", "W", "T", "F", "S", "S"];\n\nconfig.macros.calendar.weekendbg = "#c0c0c0";\nconfig.macros.calendar.monthbg = "#e0e0e0";\nconfig.macros.calendar.holidaybg = "#ffc0c0";\n\n//}}}\n// //''Code section:''\n// (you should not need to alter anything below here)//\n//{{{\nif(config.options.txtCalFirstDay == undefined)\n config.options.txtCalFirstDay = 0;\nif(config.options.txtCalStartOfWeekend == undefined)\n config.options.txtCalStartOfWeekend = 5;\n\nconfig.macros.calendar.tiddlerformat = "0DD/0MM/YYYY"; // This used to be changeable - for now, it isn't// <<smiley :-(>> \n\nversion.extensions.calendar = { major: 0, minor: 6, revision: 0, date: new Date(2006, 1, 22)};\nconfig.macros.calendar.monthdays = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nconfig.macros.calendar.holidays = [ ]; // Not sure this is required anymore - use reminders instead\n//}}}\n\n// //Is the given date a holiday?\n//{{{\nfunction calendarIsHoliday(date)\n{\n var longHoliday = date.formatString("0DD/0MM/YYYY");\n var shortHoliday = date.formatString("0DD/0MM");\n\n for(var i = 0; i < config.macros.calendar.holidays.length; i++) {\n if(config.macros.calendar.holidays[i] == longHoliday || config.macros.calendar.holidays[i] == shortHoliday) {\n return true;\n }\n }\n return false;\n}\n//}}}\n\n// //The main entry point - the macro handler.\n// //Decide what sort of calendar we are creating (month or year, and which month or year)\n// // Create the main calendar container and pass that to sub-ordinate functions to create the structure.\n// ELS 2005.10.30: added creation and use of "tbody" for IE compatibility and fixup for year >1900//\n// ELS 2005.10.30: fix year calculation for IE's getYear() function (which returns '2005' instead of '105')//\n//{{{\nconfig.macros.calendar.handler = function(place,macroName,params)\n{\n var calendar = createTiddlyElement(place, "table", null, "calendar", null);\n var tbody = createTiddlyElement(calendar, "tbody", null, null, null);\n var today = new Date();\n var year = today.getYear();\n if (year<1900) year+=1900;\n if (params[0] == "thismonth")\n {\n cacheReminders(new Date(year, today.getMonth(), 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, today.getMonth());\n } \n else if (params[0] == "lastmonth") {\n var month = today.getMonth()-1; if (month==-1) { month=11; year--; }\n cacheReminders(new Date(year, month, 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, month);\n }\n else if (params[0] == "nextmonth") {\n var month = today.getMonth()+1; if (month>11) { month=0; year++; }\n cacheReminders(new Date(year, month, 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, month);\n }\n else {\n if (params[0]) year = params[0];\n if(params[1])\n {\n cacheReminders(new Date(year, params[1]-1, 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, params[1]-1);\n }\n else\n {\n cacheReminders(new Date(year, 0, 1, 0, 0), 366);\n createCalendarYear(tbody, year);\n }\n }\n window.reminderCacheForCalendar = null;\n}\n//}}}\n//{{{\n//This global variable is used to store reminders that have been cached\n//while the calendar is being rendered. It will be renulled after the calendar is fully rendered.\nwindow.reminderCacheForCalendar = null;\n//}}}\n//{{{\nfunction cacheReminders(date, leadtime)\n{\n if (window.findTiddlersWithReminders == null)\n return;\n window.reminderCacheForCalendar = {};\n var leadtimeHash = [];\n leadtimeHash [0] = 0;\n leadtimeHash [1] = leadtime;\n var t = findTiddlersWithReminders(date, leadtimeHash, null, 1);\n for(var i = 0; i < t.length; i++) {\n //just tag it in the cache, so that when we're drawing days, we can bold this one.\n window.reminderCacheForCalendar[t[i]["matchedDate"]] = "reminder:" + t[i]["params"]["title"]; \n }\n}\n//}}}\n//{{{\nfunction createCalendarOneMonth(calendar, year, mon)\n{\n var row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, true, year, mon);\n row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarDayHeader(row, 1);\n createCalendarDayRowsSingle(calendar, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonth(calendar, year, mon)\n{\n var row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, false, year, mon);\n row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarDayHeader(row, 1);\n createCalendarDayRowsSingle(calendar, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarYear(calendar, year)\n{\n var row;\n row = createTiddlyElement(calendar, "tr", null, null, null);\n var back = createTiddlyElement(row, "td", null, null, null);\n var backHandler = function() {\n removeChildren(calendar);\n createCalendarYear(calendar, year-1);\n };\n createTiddlyButton(back, "<", "Previous year", backHandler);\n back.align = "center";\n\n var yearHeader = createTiddlyElement(row, "td", null, "calendarYear", year);\n yearHeader.align = "center";\n yearHeader.setAttribute("colSpan", 19);\n\n var fwd = createTiddlyElement(row, "td", null, null, null);\n var fwdHandler = function() {\n removeChildren(calendar);\n createCalendarYear(calendar, year+1);\n };\n createTiddlyButton(fwd, ">", "Next year", fwdHandler);\n fwd.align = "center";\n\n createCalendarMonthRow(calendar, year, 0);\n createCalendarMonthRow(calendar, year, 3);\n createCalendarMonthRow(calendar, year, 6);\n createCalendarMonthRow(calendar, year, 9);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonthRow(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon], false, year, mon);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+1], false, year, mon);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+2], false, year, mon);\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDayHeader(row, 3);\n createCalendarDayRows(cal, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonthHeader(cal, row, name, nav, year, mon)\n{\n var month;\n if(nav) {\n var back = createTiddlyElement(row, "td", null, null, null);\n back.align = "center";\n back.style.background = config.macros.calendar.monthbg;\n\n/*\n back.setAttribute("colSpan", 2);\n\n var backYearHandler = function() {\n var newyear = year-1;\n removeChildren(cal);\n cacheReminders(new Date(newyear, mon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, mon);\n };\n createTiddlyButton(back, "<<", "Previous year", backYearHandler);\n*/\n var backMonHandler = function() {\n var newyear = year;\n var newmon = mon-1;\n if(newmon == -1) { newmon = 11; newyear = newyear-1;}\n removeChildren(cal);\n cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, newmon);\n };\n createTiddlyButton(back, "<", "Previous month", backMonHandler);\n\n\n month = createTiddlyElement(row, "td", null, "calendarMonthname", name)\n// month.setAttribute("colSpan", 3);\n month.setAttribute("colSpan", 5);\n\n var fwd = createTiddlyElement(row, "td", null, null, null);\n fwd.align = "center";\n fwd.style.background = config.macros.calendar.monthbg; \n\n// fwd.setAttribute("colSpan", 2);\n var fwdMonHandler = function() {\n var newyear = year;\n var newmon = mon+1;\n if(newmon == 12) { newmon = 0; newyear = newyear+1;}\n removeChildren(cal);\n cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, newmon);\n };\n createTiddlyButton(fwd, ">", "Next month", fwdMonHandler);\n/*\n var fwdYear = createTiddlyElement(row, "td", null, null, null);\n var fwdYearHandler = function() {\n var newyear = year+1;\n removeChildren(cal);\n cacheReminders(new Date(newyear, mon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, mon);\n };\n createTiddlyButton(fwd, ">>", "Next year", fwdYearHandler);\n*/\n } else {\n month = createTiddlyElement(row, "td", null, "calendarMonthname", name)\n month.setAttribute("colSpan", 7);\n }\n month.align = "center";\n month.style.background = config.macros.calendar.monthbg;\n}\n//}}}\n\n//{{{\nfunction createCalendarDayHeader(row, num)\n{\n var cell;\n for(var i = 0; i < num; i++) {\n for(var j = 0; j < 7; j++) {\n var d = j + (config.options.txtCalFirstDay - 0);\n if(d > 6) d = d - 7;\n cell = createTiddlyElement(row, "td", null, null, config.macros.calendar.daynames[d]);\n\n if(d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))\n cell.style.background = config.macros.calendar.weekendbg;\n }\n }\n}\n//}}}\n\n//{{{\nfunction createCalendarDays(row, col, first, max, year, mon)\n{\n var i;\n for(i = 0; i < col; i++) {\n createTiddlyElement(row, "td", null, null, null);\n }\n var day = first;\n for(i = col; i < 7; i++) {\n var d = i + (config.options.txtCalFirstDay - 0);\n if(d > 6) d = d - 7;\n var daycell = createTiddlyElement(row, "td", null, null, null);\n var isaWeekend = ((d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))? true:false);\n\n if(day > 0 && day <= max) {\n var celldate = new Date(year, mon, day);\n // ELS 2005.10.30: use <<date>> macro's showDate() function to create popup\n if (window.showDate) {\n showDate(daycell,celldate,"popup","DD","DD-MMM-YYYY",true, isaWeekend); \n } else {\n if(isaWeekend) daycell.style.background = config.macros.calendar.weekendbg;\n var title = celldate.formatString(config.macros.calendar.tiddlerformat);\n if(calendarIsHoliday(celldate)) {\n daycell.style.background = config.macros.calendar.holidaybg;\n }\n if(window.findTiddlersWithReminders == null) {\n var link = createTiddlyLink(daycell, title, false);\n link.appendChild(document.createTextNode(day));\n } else {\n var button = createTiddlyButton(daycell, day, title, onClickCalendarDate);\n }\n }\n }\n day++;\n }\n}\n//}}}\n\n// //We've clicked on a day in a calendar - create a suitable pop-up of options.\n// //The pop-up should contain:\n// // * a link to create a new entry for that date\n// // * a link to create a new reminder for that date\n// // * an <hr>\n// // * the list of reminders for that date\n//{{{\nfunction onClickCalendarDate(e)\n{\n var button = this;\n var date = button.getAttribute("title");\n var dat = new Date(date.substr(6,4), date.substr(3,2)-1, date.substr(0, 2));\n\n date = dat.formatString(config.macros.calendar.tiddlerformat);\n var popup = createTiddlerPopup(this);\n popup.appendChild(document.createTextNode(date));\n var newReminder = function() {\n var t = store.getTiddlers(date);\n displayTiddler(null, date, 2, null, null, false, false);\n if(t) {\n document.getElementById("editorBody" + date).value += "\sn<<reminder day:" + dat.getDate() +\n " month:" + (dat.getMonth()+1) +\n " year:" + (dat.getYear()+1900) + " title: >>";\n } else {\n document.getElementById("editorBody" + date).value = "<<reminder day:" + dat.getDate() +\n " month:" + (dat.getMonth()+1) +\n " year:" + (dat.getYear()+1900) + " title: >>";\n }\n };\n var link = createTiddlyButton(popup, "New reminder", null, newReminder); \n popup.appendChild(document.createElement("hr"));\n\n var t = findTiddlersWithReminders(dat, [0,14], null, 1);\n for(var i = 0; i < t.length; i++) {\n link = createTiddlyLink(popup, t[i].tiddler, false);\n link.appendChild(document.createTextNode(t[i].tiddler));\n }\n}\n//}}}\n\n//{{{\nfunction calendarMaxDays(year, mon)\n{\n var max = config.macros.calendar.monthdays[mon];\n if(mon == 1 && (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0)) {\n max++;\n }\n return max;\n}\n//}}}\n\n//{{{\nfunction createCalendarDayRows(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n\n var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first1 < 0) first1 = first1 + 7;\n var day1 = -first1 + 1;\n var first2 = (new Date(year, mon+1, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first2 < 0) first2 = first2 + 7;\n var day2 = -first2 + 1;\n var first3 = (new Date(year, mon+2, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first3 < 0) first3 = first3 + 7;\n var day3 = -first3 + 1;\n\n var max1 = calendarMaxDays(year, mon);\n var max2 = calendarMaxDays(year, mon+1);\n var max3 = calendarMaxDays(year, mon+2);\n\n while(day1 <= max1 || day2 <= max2 || day3 <= max3) {\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;\n createCalendarDays(row, 0, day2, max2, year, mon+1); day2 += 7;\n createCalendarDays(row, 0, day3, max3, year, mon+2); day3 += 7;\n }\n}\n//}}}\n\n//{{{\nfunction createCalendarDayRowsSingle(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n\n var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first1 < 0) first1 = first1+ 7;\n var day1 = -first1 + 1;\n var max1 = calendarMaxDays(year, mon);\n\n while(day1 <= max1) {\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;\n }\n}\n//}}}\n\n// //ELS 2005.10.30: added styles\n//{{{\nsetStylesheet(".calendar, .calendar table, .calendar th, .calendar tr, .calendar td { font-size:10pt; text-align:center; } .calendar, .calendar a { margin:0px !important; padding:0px !important; }", "calendarStyles");\n//}}}\n
/***\n''Date Plugin for TiddlyWiki version 2.x''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#DatePlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n^^last update: <<date tiddler "DDD, MMM DDth, YYYY hh:0mm:0ss">>^^\n\nThere 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.\n\nYou can ''specify a date using a combination of year, month, and day number values or mathematical expressions (such as "Y+1" or "D+30")'', and then just display it as formatted date text, or create a ''link to a 'dated tiddler''' for quick blogging, or create a ''popup menu'' containing the dated tiddler link plus links to ''tiddlers that were changed'' as well as any ''scheduled reminders'' for that date.\n!!!!!Usage\n<<<\nWhen 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>>}}}.\n\nHowever, 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:\n* [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.\n* [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. \n* [format] and [linkformat] uses standard ~TiddlyWiki date formatting syntax. The default is "YYYY.0MM.0DD"\n>^^''DDD'' - day of week in full (eg, "Monday"), ''DD'' - day of month, ''0DD'' - adds leading zero^^\n>^^''MMM'' - month in full (eg, "July"), ''MM'' - month number, ''0MM'' - adds leading zero^^\n>^^''YYYY'' - full year, ''YY'' - two digit year, ''hh'' - hours, ''mm'' - minutes, ''ss'' - seconds^^\n>^^//note: use of hh, mm or ss format codes is only supported with ''tiddler'', ''today'' or ''filedate'' values//^^\n* [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\n\nIn 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:\n\n''{{{showDate(place, date, mode, format, linkformat, autostyle, weekend)}}}'' \n\nNote that in addition to the parameters provided by the macro interface, the javascript API also supports two optional true/false parameters:\n* [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.\n* [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.\n<<<\n!!!!!Examples\n<<<\nThe current date: <<date>>\nThe current time: <<date today "0hh:0mm:0ss">>\nToday's blog: <<date link today "DDD, MMM DDth, YYYY">>\nRecent blogs/changes/reminders: <<date popup Y M D-1 "yesterday">> <<date popup today "today">> <<date popup Y M D+1 "tomorrow">>\nThe first day of next month will be a <<date Y M+1 1 "DDD">>\nThis tiddler (DatePlugin) was last updated on: <<date tiddler "DDD, MMM DDth, YYYY">>\nThe SiteUrl was last updated on: <<date tiddler:SiteUrl "DDD, MMM DDth, YYYY">>\nThis document was last saved on <<date filedate "DDD, MMM DDth, YYYY at 0hh:0mm:0ss">>\n<<date 2006 07 24 "MMM DDth, YYYY">> will be a <<date 2006 07 24 "DDD">>\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''DatePlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n''2006.02.14 [2.0.5]''\nwhen 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.\n''2006.02.05 [2.0.4]''\nadded var to variables that were unintentionally global. Avoids FireFox 1.5.0.1 crash bug when referencing global variables\n''2006.01.18 [2.0.3]''\nIn 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.\n''2006.01.11 [2.0.2]''\ncorrect 'weekend' override detection logic in showDate()\n''2006.01.10 [2.0.1]''\nallow custom-defined weekend days (default defined in config.macros.date.weekend[] array)\nadded flag param to showDate() API to override internal weekend[] array\n''2005.12.27 [2.0.0]''\nUpdate for TW2.0\nAdded parameter handling for 'linkformat'\n''2005.12.21 [1.2.2]''\nFF'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.\n''2005.11.07 [1.2.1]''\nadded support for "tiddler" dynamic date parameter\n''2005.11.06 [1.2.0]''\nadded support for "tiddler:title" dynamic date parameter\n''2005.11.03 [1.1.2]''\nwhen 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.\n''2005.11.03 [1.1.1]''\nTemporarily 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).\n''2005.11.01 [1.1.0]''\ncorrected 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...\n''2005.10.31 [1.0.1]''\ndocumentation and code cleanup\n''2005.10.31 [1.0.0]''\ninitial public release\n''2005.10.30 [0.9.0]''\npre-release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.date = {major: 2, minor: 0, revision: 5, date: new Date(2006,2,14)};\n//}}}\n\n//{{{\n// 1.2.x compatibility\nif (!window.story) window.story=window;\nif (!store.getTiddler) store.getTiddler=function(title){return store.tiddlers[title]}\nif (!store.addTiddler) store.addTiddler=function(tiddler){store.tiddlers[tiddler.title]=tiddler}\nif (!store.deleteTiddler) store.deleteTiddler=function(title){delete store.tiddlers[title]}\n//}}}\n\n//{{{\nconfig.macros.date = {\n format: "YYYY.0MM.0DD", // default date display format\n linkformat: "YYYY.0MM.0DD", // 'dated tiddler' link format\n weekendbg: "#c0c0c0", // "cocoa"\n holidaybg: "#c0ffee", // "coffee"\n modifiedsbg: "#bbeeff", // "beef"\n remindersbg: "#ffaace", // "face"\n holidays: [ "01/01", "07/04", "07/24", "11/24" ], // NewYearsDay, IndependenceDay(US), Eric's Birthday (hooray!), Thanksgiving(US)\n 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 ]\n};\n//}}}\n\n//{{{\nconfig.macros.date.handler = function(place,macroName,params)\n{\n // do we want to see a link, a popup, or just a formatted date?\n var mode="display";\n if (params[0]=="display") { mode=params[0]; params.shift(); }\n if (params[0]=="popup") { mode=params[0]; params.shift(); }\n if (params[0]=="link") { mode=params[0]; params.shift(); }\n // get the date\n var now = new Date();\n var date = now;\n if (!params[0] || params[0]=="today")\n { params.shift(); }\n else if (params[0]=="filedate")\n { date=new Date(document.lastModified); params.shift(); }\n else if (params[0]=="tiddler")\n { date=store.getTiddler(story.findContainingTiddler(place).id.substr(7)).modified; params.shift(); }\n else if (params[0].substr(0,8)=="tiddler:")\n { var t; if ((t=store.getTiddler(params[0].substr(8)))) date=t.modified; params.shift(); }\n else {\n var y = eval(params.shift().replace(/Y/ig,(now.getYear()<1900)?now.getYear()+1900:now.getYear()));\n var m = eval(params.shift().replace(/M/ig,now.getMonth()+1));\n var d = eval(params.shift().replace(/D/ig,now.getDate()+0));\n date = new Date(y,m-1,d);\n }\n // date format with optional custom override\n var format=this.format; if (params[0]) format=params.shift();\n var linkformat=this.linkformat; if (params[0]) linkformat=params.shift();\n showDate(place,date,mode,format,linkformat);\n}\n//}}}\n\n//{{{\nwindow.showDate=showDate;\nfunction showDate(place,date,mode,format,linkformat,autostyle,weekend)\n{\n if (!mode) mode="display";\n if (!format) format=config.macros.date.format;\n if (!linkformat) linkformat=config.macros.date.linkformat;\n if (!autostyle) autostyle=false;\n\n // format the date output\n var title = date.formatString(format);\n var linkto = date.formatString(linkformat);\n\n // just show the formatted output\n if (mode=="display") { place.appendChild(document.createTextNode(title)); return; }\n\n // link to a 'dated tiddler'\n var link = createTiddlyLink(place, linkto, false);\n link.appendChild(document.createTextNode(title));\n link.title = linkto;\n link.date = date;\n link.format = format;\n link.linkformat = linkformat;\n\n // if using a popup menu, replace click handler for dated tiddler link\n // with handler for popup and make link text non-italic (i.e., an 'existing link' look)\n if (mode=="popup") {\n link.onclick = onClickDatePopup;\n link.style.fontStyle="normal";\n }\n\n // format the popup link to show what kind of info it contains (for use with calendar generators)\n if (!autostyle) return;\n if (hasModifieds(date))\n { link.style.fontStyle="normal"; link.style.fontWeight="bold"; }\n if (hasReminders(date))\n { link.style.textDecoration="underline"; }\n if(isToday(date))\n { link.style.border="1px solid black"; }\n\n if( (weekend!=undefined?weekend:isWeekend(date)) && (config.macros.date.weekendbg!="") )\n { place.style.background = config.macros.date.weekendbg; }\n if(isHoliday(date)&&(config.macros.date.holidaybg!=""))\n { place.style.background = config.macros.date.holidaybg; }\n if (hasModifieds(date)&&(config.macros.date.modifiedsbg!=""))\n { place.style.background = config.macros.date.modifiedsbg; }\n if (hasReminders(date)&&(config.macros.date.remindersbg!=""))\n { place.style.background = config.macros.date.remindersbg; }\n}\n//}}}\n\n//{{{\nfunction isToday(date) // returns true if date is today\n { var now=new Date(); return ((now-date>=0) && (now-date<86400000)); }\n\nfunction isWeekend(date) // returns true if date is a weekend\n { return (config.macros.date.weekend[date.getDay()]); }\n\nfunction isHoliday(date) // returns true if date is a holiday\n{\n var longHoliday = date.formatString("0MM/0DD/YYYY");\n var shortHoliday = date.formatString("0MM/0DD");\n for(var i = 0; i < config.macros.date.holidays.length; i++) {\n var holiday=config.macros.date.holidays[i];\n if (holiday==longHoliday||holiday==shortHoliday) return true;\n }\n return false;\n}\n//}}}\n\n//{{{\n// Event handler for clicking on a day popup\nfunction onClickDatePopup(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var popup = createTiddlerPopup(this);\n if(popup) {\n // always show dated tiddler link (or just date, if readOnly) at the top...\n if (!readOnly || store.tiddlerExists(this.date.formatString(this.linkformat)))\n createTiddlyLink(popup,this.date.formatString(this.linkformat),true);\n else\n createTiddlyText(popup,this.date.formatString(this.linkformat));\n addModifiedsToPopup(popup,this.date,this.format);\n addRemindersToPopup(popup,this.date,this.linkformat);\n }\n scrollToTiddlerPopup(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n\n//{{{\nfunction indexModifieds() // build list of tiddlers, hash indexed by modification date\n{\n var modifieds= { };\n var tiddlers = store.getTiddlers("title");\n for (var t = 0; t < tiddlers.length; t++) {\n var date = tiddlers[t].modified.formatString("YYYY0MM0DD")\n if (!modifieds[date])\n modifieds[date]=new Array();\n modifieds[date].push(tiddlers[t].title);\n }\n return modifieds;\n}\nfunction hasModifieds(date) // returns true if date has modified tiddlers\n{\n if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();\n return (config.macros.date.modifieds[date.formatString("YYYY0MM0DD")]!=undefined);\n}\n\nfunction addModifiedsToPopup(popup,when,format)\n{\n if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n var mods = config.macros.date.modifieds[when.formatString("YYYY0MM0DD")];\n if (mods) {\n mods.sort();\n var e=createTiddlyElement(popup,"div",null,null,"changes:");\n for(var t=0; t<mods.length; t++) {\n var link=createTiddlyLink(popup,mods[t],false);\n link.appendChild(document.createTextNode(indent+mods[t]));\n createTiddlyElement(popup,"br",null,null,null);\n }\n }\n}\n//}}}\n\n//{{{\nfunction indexReminders() // build list of tiddlers with reminders, hash indexed by reminder date\n{\n var reminders = { };\n\n if(window.findTiddlersWithReminders==undefined) return; // reminder plugin not installed\n\n var matches = store.search("reminder",false,false,"title","excludeSearch");\n var macroPattern = "<<([^>\s\ss]+)(?:\s\ss*)([^>]*)>>";\n var macroRegExp = new RegExp(macroPattern,"mg");\n var arr = [];\n for(var t=matches.length-1; t>=0; t--)\n {\n var targetText = matches[t].text;\n do {\n // Get the next formatting match\n var formatMatch = macroRegExp.exec(targetText);\n if(formatMatch)\n {\n if (formatMatch[1] != null && formatMatch[1].toLowerCase() == "reminder")\n {\n //Find the matching date.\n var params = formatMatch[2].readMacroParams();\n var dateHash = getParamsForReminder(params);\n var date = findDateForReminder(dateHash);\n if (date != null)\n {\n var dateindex = date.formatString("YYYY0MM0DD")\n if (!reminders[dateindex])\n reminders[dateindex]=new Array();\n reminders[dateindex].pushUnique(t);\n }\n }\n }\n } while(formatMatch);\n }\n return reminders;\n}\n\nfunction hasReminders(date) // returns true if date has reminders\n{\n if (window.reminderCacheForCalendar != null)\n return window.reminderCacheForCalendar[date] != null;\n return false; // ELS 2005.11.03: BYPASS due to performance issues\n if (!config.macros.date.reminders) config.macros.date.reminders = indexReminders();\n return (config.macros.date.reminders[date.formatString("YYYY0MM0DD")]!=undefined);\n}\n\nfunction addRemindersToPopup(popup,when,format)\n{\n if(window.findTiddlersWithReminders==undefined) return; // reminder plugin not installed\n\n var indent = String.fromCharCode(160)+String.fromCharCode(160);\n var reminders=findTiddlersWithReminders(when, [0,31],null,1);\n var e=createTiddlyElement(popup,"div",null,null,"reminders:"+(!reminders.length?" none":""));\n for(var t=0; t<reminders.length; t++) {\n link = createTiddlyLink(popup,reminders[t].tiddler,false);\n var diff=reminders[t].diff;\n diff=(!diff)?"Today":((diff==1)?"Tomorrow":diff+" days");\n var txt=(reminders[t].params["title"])?reminders[t].params["title"]:reminders[t].tiddler;\n link.appendChild(document.createTextNode(indent+diff+" - "+txt));\n createTiddlyElement(popup,"br",null,null,null);\n }\n if (readOnly) return; // omit "new reminder..." link\n var link = createTiddlyLink(popup,indent+"new reminder...",true); createTiddlyElement(popup,"br");\n var title = when.formatString(format);\n link.title="add a reminder to '"+title+"'";\n link.onclick = function() {\n // show tiddler editor\n story.displayTiddler(null, title, 2, null, null, false, false);\n // find body 'textarea'\n var c =document.getElementById("tiddler" + title).getElementsByTagName("*");\n for (var i=0; i<c.length; i++) if ((c[i].tagName.toLowerCase()=="textarea") && (c[i].getAttribute("edit")=="text")) break;\n // append reminder macro to tiddler content\n if (i<c.length) {\n if (store.tiddlerExists(title)) c[i].value+="\sn"; else c[i].value="";\n c[i].value += "<<reminder day:"+when.getDate()+" month:"+(when.getMonth()+1)+" year:"+(when.getFullYear())+' title:"Enter a title" >>';\n }\n };\n}\n//}}}\n
[[welcome]]\n[[MainMenu]]
!!![[電気工学実験III|Ele ExpIII]]\n!!![[電力発生工学I|Ele Gen]]\n!!![[パワーエレクトロニクスI|PowerElectronics I]]\n
Bコース 3年次 後期\n\n1.目的\n 電気機器の特性を実測すること,および電力用半導体の基本特性,PWM制御等の実験を行いその原理の理解を深めることを目的とする。\n\n2.授業計画\n 1.変圧器の特性\n 2.同期電動機の特性\n 3.DCサーボモータの特性と速度制御\n 4.永久磁石同期電動機の特性と可変速駆動\n \n3.評価方法\n 各テーマに関する実験報告書の内容,および報告書が締め切り期日までに提出されたか,実験中の質疑応答等を総合して評価する。\n\n4.履修上の注意事項\n 実験に取りかかる前に実験の目的と原理について説明を求めるので,あらかじめ予習が必要である。\n 電気機器,パワーエレクトロニクスを修得していることが望ましい。\n\n5.参考書・教科書\n 1.電気工学実験Ⅲ実験書 (HPよりダウンロード)\n 2.野中作太郎著:電気機器Ⅰ,Ⅱ(森北出版)\n 3.堀 孝正編著:パワーエレクトロニクス(オーム社)\n 4.相良節夫:基礎電気制御(森北出版)\n
\n*テキスト\n[[EX3_textH17.pdf|limited/exp3/EX3_textH17.pdf]]\n*日程表\n[[Aコース (pdf)|limited/exp3/LIST_H17A.pdf]] \n[[Bコース (pdf)|limited/exp3/LIST_H17B.pdff]]\n\nテキストは各自ダウンロードすること\n
Aコース 3年次 前期\n平成17年度にて終了
電気Bコース 3年次 前期\n機械知能Bコース 4年次 前期\n\n!!!テキスト\n森北出版 川田,西岡:\n''[[MATLAB/~SImulinkによるわかりやすい制御工学|http://www.morikita.co.jp/mokuji/9172.html]]\n[[サポートページ|http://web.maizuru-ct.ac.jp/control/kawata/study/book/book_page.html]]\n\n!!!シミュレーションソフトウェア\n[[PSIMの紹介]]\n[[Scilabの紹介]]@@color(red):''NEW''@@\n\n!!!授業計画\n# 制御とその方式について\n# 静的システムと動的システム\n# ラプラス変換による電気システムのモデル化\n# ラプラス変換による力学システムのモデル化\n# 一次系の過渡特性と定常特性\n# 高次系の過渡特性と定常特性\n# s領域でのフィードバックシステムの安定性判別\n# 根軌跡の性質と安定性解析\n# 定常特性と定常偏差\n# 標準型PID制御装置の設計\n# 改良型PID制御装置の設計\n# 周波数応答と周波数特性\n# 周波数領域でのフィードバックシステムの安定性判別\n# システムの状態空間モデル\n# 試験\n\n\n!!!出席状況\n[[2006年出席表|limited/EleCont/EleContH18.html]]
RTLinuxを用いた制御環境の充実がソフトウェア面での開発環境とすれば,FPGAを用いたインターフェイス回路の開発は,ハードウェアの開発環境の充実となる。\n\nFPGAは書き換え可能な高密度ロジック素子で,従来の汎用ICの組み合わせによる回路開発を1チップで実現できるもので,近年その利用が急速に増加している。モータの制御をCPUを用いずに全てディジタルハードウェアで実現することや,高速応答が必要な回路をハードウェア化し,従来よりも高精度なモータ制御系を構築する。\n\n
研究室内で連絡用に使用している日記から,一部を抜き出して一般公開(?)することにしました。\n書き込みはできません。\n\n|>|>|>|>|>|>| !April |\n| Sun | Mon | Tue | Wed | Thu | Fri | Sat |\n|>|>|>|>|>|!|bgcolor(#DEDEAD): 1 |\n|bgcolor(#DEDEAD): 2 | 3 |[[ 4|4 April 2006]] | 5 | 6 | 7 |bgcolor(#DEDEAD): 8 |\n|bgcolor(#DEDEAD): 9 | 10 | 11 | 12 | [[13|13 April 2006]] | 14 |bgcolor(#DEDEAD): 15 |\n|bgcolor(#DEDEAD): 16 | 17 | 18 | [[19|19 April 2006]] | 20 | 21 |bgcolor(#DEDEAD): 22 |\n|bgcolor(#DEDEAD): 23 | 24 | 25 | 26 | 27 | 28 |bgcolor(#DEDEAD): 29 |\n|bgcolor(#DEDEAD): 30 |>|>|>|>|>|!|\n\n|>|>|>|>|>|>| !March |\n| Sun | Mon | Tue | Wed | Thu | Fri | Sat |\n|>|>|!| 1 | 2 | 3 |bgcolor(#DEDEAD): 4 |\n|bgcolor(#DEDEAD): 5 | 6 | 7 | 8 | 9 | 10 |bgcolor(#DEDEAD): 11 |\n|bgcolor(#DEDEAD): 12 | 13 | 14 | 15 | 16 | [[17|17 March 2006]] |bgcolor(#DEDEAD): 18 |\n|bgcolor(#DEDEAD): 19 | 20 | 21 | 22 | 23 | 24 |bgcolor(#DEDEAD): 25 |\n|bgcolor(#DEDEAD): 26 | 27 | 28 | 29 | 30 | 31 |!|\n----\nカレンダー作成用HP\nhttp://zrenard.com/tiddlywiki/cal.php?
研究室紹介のFLASH版です。画像をクリックするとページか進みます。\n<html>\n<center>\n<EMBED SRC="Hanamoto_lab2006.swf" WIDTH=700 HEIGHT=500>\n</center>\n</html>
!!! [[ロボット制御|http://eclass.lsse.kyutech.ac.jp/itsclass]]\n*概要\nロボット制御(人間型ロボット,生体模倣ロボット)は様々な要素技術の集大成である。そこで以下の項目について学習する。\n\n・電気技術・・・パワーエレクトロニクス,電気機器\n・電子技術・・・ハードウェア設計,インターフェイス回路,エレクトロニクス技術\n・情報技術・・・ソフトウェア,ネットワーク,通信\n・機械技術・・・構造,合成,実現化\n・制御技術・・・古典制御理論,現代制御理論,ソフトコンピューティング\n実際にもの(ロボット)を動かすには理論だけでは足りない。\n実学を目指す。現在ある環境を有効に使用する。\n* [[IT'sClass|http://eclass.lsse.kyutech.ac.jp/itsclass]]へのリンク\n
<html>\n<img style="width: 350px; " alt="" src="Picture/CIMG0141.JPG" align="right">\n</html>
<html>\n<img style="width: 350px; " alt="" src="Picture/CIMG0141.JPG" align="right">\n<img style="width: 350px; " alt="" src="Picture/QT_Panel.JPG" align="left">\n<BR>QTで作成したOnline Real Time SImulator 制御用操作パネル\n<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>\n<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>\n<BR><BR><BR><BR>\n<img style="width: 350px; " alt="" src="Picture/iden1.JPG" align="right">\n<BR>多慣性系同定,制御用実験装置,DSP搭載PC\n<img style="width: 350px; " alt="" src="Picture/idenSys.JPG" align="right">\n<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>\n<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>\nSynRM実験装置\n<img style="width: 350px; " alt="" src="Picture/SynRMsystem.jpg" align="left">\n</html>\n
<html>\n<center>\n<img style="width: 600px; " alt="" src="LabPoster2010.gif" align="">\n</center>\n</html>\n
[[Members|Members]]\n[[Profile]]\n[[Paper List|PaperList]]\n[[Research|@Research]]\n[[Poster of Lab.|LabPoster]] \n[[Lab movie|lab movie]]\n!![[Class|@Classes]]\n[[RobotControl|http://eclass.lsse.kyutech.ac.jp/itsclass]]\n[[Power Electronics|PowerElectronics]]\n[[Electrical Control|Electrical Control 1]]\n----\nMainMenu\n[[welcome|welcome]]\n----\n[[HANAMOTO Lab|http://www.life.kyutech.ac.jp/~hanamoto]]\n[[Japanese vsersion|http://www.life.kyutech.ac.jp/~hanamoto/hanamoto/index.html]]\n\n
!!!Professor\n[[HANAMOTO Tsuyoshi|Professor]] \n!!!Doctral course students\n[[2009D3]]\n[[2009D1]]\n!!!Master course students\n[[2009M2]]\n[[2009M1]]\n!!!Bachelor course students\n[[2009B4]]\n!!!OB/OG\n[[2008M2]]\n[[2008B4]]
<html>\n<img style="width: 162px; height: 180px;" alt="" src="ProfHanamoto.jpg">\n</html>\n
!!シミュレーションソフトの紹介\nPSIM [授業で使用する]の最新のバージョンは6.1\n*ダウンロードはこちら \n  プログラム [[psim61_demo.lzh(6.2M) |limited/powerele/psim61_demo.lzh]]\n  マニュアル [[psim61manual.pdf(2.5M)|limited/powerele/psim61manual.pdf]]\n  講習会テキスト [[psim_text.pdf(2.2M)|limited/powerele/psim_text.pdf]]\n*LINK先\n  本家  [[powersimtechのホームページ|http://www.powersimtech.com]]\n  日本での販売している [[マイウェイラボ(株)のホームページ|http://www.myway-labs.co.jp/psim/index.html]]\n\n!!PSIM解析例\n!!! Power Electronics I\n第2章 [[sec2.lzh|limited/powerele/sec2/sec2.lzh]]\n第3章 [[sec3.lzh|limited/powerele/sec3/sec3.lzh]]\n第4章 [[sec3.lzh|limited/powerele/sec4/sec4.lzh]]\n!!! Electrical Control I\n
The tiddler 'Paper List' doesn't yet exist. Double-click to create it
/***\n|Name|HoverMenuPlugin|\n|Created by|SaqImtiaz|\n|Location|http://lewcid.googlepages.com/lewcid.html#HoverMenuPlugin|\n|Version|1.11|\n|Requires|~TW2.x|\n!Description:\nProvides a hovering menu on the edge of the screen for commonly used commands, that scrolls with the page.\n\n!Demo:\nObserve the hovering menu on the right edge of the screen.\n\n!Installation:\nCopy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.\nTo customize your HoverMenu, edit the HoverMenu shadow tiddler.\n\nTo 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!\n\nThe menu has an id of hoverMenu, in case you want to style the buttons in it using css.\n\n!Notes:\nSince 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.\n\nIf you dont intend to use these three macros at all, feel free to remove those sections of code in this tiddler.\n\n!To Do:\n* rework code to allow multiple hovering menus in different positions, horizontal etc.\n* incorporate code for keyboard shortcuts that correspond to the buttons in the hovermenu\n\n!History:\n*03-08-06, ver 1.11: fixed error with button tooltips\n*27-07-06, ver 1.1 : added JumpMacro to hoverMenu\n*23-07-06\n\n!Code\n***/\n\n/***\nstart HoverMenu plugin code\n***/\n//{{{\nconfig.hoverMenu={};\n//}}}\n\n/***\nHoverMenu configuration settings\n***/\n//{{{\nconfig.hoverMenu.settings={\n align: 'right', //align menu to right or left side of screen, possible values are 'right' and 'left' \n x: 1, // horizontal distance of menu from side of screen, increase to your liking.\n y: 158 //vertical distance of menu from top of screen at start, increase or decrease to your liking\n };\n//}}}\n\n//{{{\n//continue HoverMenu plugin code\nconfig.hoverMenu.handler=function()\n{\n var theMenu = createTiddlyElement(document.getElementById("contentWrapper"), "div","hoverMenu");\n theMenu.setAttribute("refresh","content");\n theMenu.setAttribute("tiddler","HoverMenu");\n var menuContent = store.getTiddlerText("HoverMenu");\n wikify(menuContent,theMenu);\n\n var Xloc = this.settings.x;\n Yloc =this.settings.y;\n var ns = (navigator.appName.indexOf("Netscape") != -1);\n function SetMenu(id)\n {\n var GetElements=document.getElementById?document.getElementById(id):document.all?document.all[id]:document.layers[id];\n if(document.layers)GetElements.style=GetElements;\n GetElements.sP=function(x,y){this.style[config.hoverMenu.settings.align]=x +"px";this.style.top=y +"px";};\n GetElements.x = Xloc;\n GetElements.y = findScrollY();\n GetElements.y += Yloc;\n return GetElements;\n }\n window.LoCate_XY=function()\n {\n var pY = findScrollY();\n ftlObj.y += (pY + Yloc - ftlObj.y)/15;\n ftlObj.sP(ftlObj.x, ftlObj.y);\n setTimeout("LoCate_XY()", 10);\n }\n ftlObj = SetMenu("hoverMenu");\n LoCate_XY();\n};\n\nwindow.old_lewcid_hovermenu_restart = restart;\nrestart = function()\n{\n window.old_lewcid_hovermenu_restart();\n config.hoverMenu.handler();\n};\n\nsetStylesheet(\n"#hoverMenu .button, #hoverMenu .tiddlyLink {border:none; font-weight:bold; background:#18f; color:#FFF; padding:0 5px; float:right; margin-bottom:4px;}\sn"+\n"#hoverMenu .button:hover, #hoverMenu .tiddlyLink:hover {font-weight:bold; border:none; color:#fff; background:#000; padding:0 5px; float:right; margin-bottom:4px;}\sn"+\n"#hoverMenu .button {width:100%; text-align:center}"+\n"#hoverMenu { position:absolute; width:7px;}\sn"+\n"\sn","hoverMenuStyles");\n\n\nconfig.macros.renameButton={};\nconfig.macros.renameButton.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n\n if (place.lastChild.tagName!="BR")\n {\n place.lastChild.firstChild.data = params[0];\n if (params[1]) {place.lastChild.title = params[1];}\n }\n};\n\nconfig.shadowTiddlers["HoverMenu"]="<<top>>\sn<<toggleSideBar>><<renameButton '>' >>\sn<<jump j '' top>>\sn<<saveChanges>><<renameButton s 'Save TiddlyWiki'>>\sn<<newTiddler>><<renameButton n>>\sn";\n//}}}\n//end HoverMenu plugin code\n\n//Start ToggleSideBarMacro code\n//{{{\nconfig.macros.toggleSideBar={};\n\nconfig.macros.toggleSideBar.settings={\n styleHide : "#sidebar { display: none;}\sn"+"#contentWrapper #displayArea { margin-right: 1em;}\sn"+"",\n styleShow : " ",\n arrow1: "«",\n arrow2: "»"\n};\n\nconfig.macros.toggleSideBar.handler=function (place,macroName,params,wikifier,paramString,tiddler)\n{\n var tooltip= params[1]||'toggle sidebar';\n var mode = (params[2] && params[2]=="hide")? "hide":"show";\n var arrow = (mode == "hide")? this.settings.arrow1:this.settings.arrow2;\n var label= (params[0]&&params[0]!='.')?params[0]+" "+arrow:arrow;\n var theBtn = createTiddlyButton(place,label,tooltip,this.onToggleSideBar,"button HideSideBarButton");\n if (mode == "hide")\n { \n (document.getElementById("sidebar")).setAttribute("toggle","hide");\n setStylesheet(this.settings.styleHide,"ToggleSideBarStyles");\n }\n};\n\nconfig.macros.toggleSideBar.onToggleSideBar = function(){\n var sidebar = document.getElementById("sidebar");\n var settings = config.macros.toggleSideBar.settings;\n if (sidebar.getAttribute("toggle")=='hide')\n {\n setStylesheet(settings.styleShow,"ToggleSideBarStyles");\n sidebar.setAttribute("toggle","show");\n this.firstChild.data= (this.firstChild.data).replace(settings.arrow1,settings.arrow2);\n }\n else\n { \n setStylesheet(settings.styleHide,"ToggleSideBarStyles");\n sidebar.setAttribute("toggle","hide");\n this.firstChild.data= (this.firstChild.data).replace(settings.arrow2,settings.arrow1);\n }\n\n return false;\n}\n\nsetStylesheet(".HideSideBarButton .button {font-weight:bold; padding: 0 5px;}\sn","ToggleSideBarButtonStyles");\n//}}}\n//end ToggleSideBarMacro code\n\n//start JumpToTopMacro code\n//{{{\nconfig.macros.top={};\nconfig.macros.top.handler=function(place,macroName)\n{\n createTiddlyButton(place,"^","jump to top",this.onclick);\n}\nconfig.macros.top.onclick=function()\n{\n window.scrollTo(0,0);\n};\n\nconfig.commands.top =\n{\n text:" ^ ",\n tooltip:"jump to top"\n};\n\nconfig.commands.top.handler = function(event,src,title)\n{\n window.scrollTo(0,0);\n}\n//}}}\n//end JumpToStartMacro code\n\n//start JumpMacro code\n//{{{\nconfig.macros.jump= {};\nconfig.macros.jump.handler = function (place,macroName,params,wikifier,paramString,tiddler)\n{\n var label = (params[0] && params[0]!=".")? params[0]: 'jump';\n var tooltip = (params[1] && params[1]!=".")? params[1]: 'jump to an open tiddler';\n var top = (params[2] && params[2]=='top') ? true: false; \n\n var btn =createTiddlyButton(place,label,tooltip,this.onclick);\n if (top==true)\n btn.setAttribute("top","true")\n}\n\nconfig.macros.jump.onclick = function(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var top = theTarget.getAttribute("top");\n var popup = Popup.create(this);\n if(popup)\n {\n if(top=="true")\n {createTiddlyButton(createTiddlyElement(popup,"li"),'Top ↑','Top of TW',config.macros.jump.top);\n createTiddlyElement(popup,"hr");}\n \n story.forEachTiddler(function(title,element) {\n createTiddlyLink(createTiddlyElement(popup,"li"),title,true);\n });\n }\n Popup.show(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return false;\n}\n\nconfig.macros.jump.top = function()\n{\n window.scrollTo(0,0);\n}\n//}}}\n//end JumpMacro code\n\n//utility functions\n//{{{\nPopup.show = function(unused,slowly)\n{\n var curr = Popup.stack[Popup.stack.length-1];\n var rootLeft = findPosX(curr.root);\n var rootTop = findPosY(curr.root);\n var rootHeight = curr.root.offsetHeight;\n var popupLeft = rootLeft;\n var popupTop = rootTop + rootHeight;\n var popupWidth = curr.popup.offsetWidth;\n var winWidth = findWindowWidth();\n if (isChild(curr.root,'hoverMenu'))\n var x = config.hoverMenu.settings.x;\n else\n var x = 0;\n if(popupLeft + popupWidth+x > winWidth)\n popupLeft = winWidth - popupWidth -x;\n if (isChild(curr.root,'hoverMenu'))\n {curr.popup.style.right = x + "px";}\n else\n curr.popup.style.left = popupLeft + "px";\n curr.popup.style.top = popupTop + "px";\n curr.popup.style.display = "block";\n addClass(curr.root,"highlight");\n if(config.options.chkAnimate)\n anim.startAnimating(new Scroller(curr.popup,slowly));\n else\n window.scrollTo(0,ensureVisible(curr.popup));\n}\n\nwindow.isChild = function(e,parentId) {\n while (e != null) {\n var parent = document.getElementById(parentId);\n if (parent == e) return true;\n e = e.parentNode;\n }\n return false;\n};\n//}}}
Bコース 3年次 後期\n*目的\nパワーエレクトロニクスとは,パワー半導体素子を用いて電力の変換,制御および電力回路の開閉などを行う技術とその応用分野を取り扱う工学である。本講義では,デバイスの基礎的な特性,電力変換回路の動作原理を理解すると共に,産業界での適用例についても学習することを目的とする。\n*授業計画\n以下の項目についての講義を行う。\n 1.パワーエレクトロニクスの基礎\n 2.パワー半導体素子の基本特性(1)\n 3.パワー半導体素子の基本特性(2)\n 4.~DC-DC変換(バックコンバータ)\n 5.~DC-DC変換(ブーストコンバータ)\n 6.~DC-DC変換(共振スイッチコンバータ)\n 7.~DC-AC変換(単相電圧形インバータ)\n 8.~DC-AC変換(単相電流形インバータ)\n 9.~DC-AC変換(3相インバータ)\n 10.~AC-DC変換(単相コンバータ)\n 11.~AC-DC変換(3相コンバータ)\n 12.~AC-AC変換\n 13.パワーエレクトロニクス応用(1)\n 14.パワーエレクトロニクス応用(2)\n 15.期末試験\n*評価方法\n 期末試験の結果による\n*履修上の注意事項\n 電気機器,電気回路,制御システム工学の履修を希望する。過渡現象の\n修得が望ましい。\n*参考書・教科書\n#野中作太郎他著:パワーエレクトロニクス入門(朝倉書店)\n#堀孝正編著:パワーエレクトロニクス(オーム社)\n#河村他共訳:基礎パワーエレクトロニクス(コロナ社)\n#正田英介監修:パワーエレクトロニクス(オーム社)\n\n
!H17年度後期パワーエレクトロニクス\n''下の資料にはパスワードによるアクセス制限がかかっています''\n\n!!!資料\n初めに [[第1回授業内容|limited/powerele/intro/pele_S0H17B.swf]]\n第1章 [[電力用半導体素子|limited/powerele/sec1/pele_S1.swf]]\n第2章 [[DCDC変換|limited/powerele/sec2/pele_S2.swf]]\n第3章 [[DCAC変換|limited/powerele/sec3/pele_S3.swf]]\n第4章 [[ACDC変換|limited/powerele/sec4/pele_S4.swf]]\n第5章 [[ACAC変換|limited/powerele/sec5/pele_S5.swf]]\n!!!シミュレーションソフトの紹介\nPSIM [授業で使用する]の最新のバージョンは6.1\n*ダウンロードはこちら \n  プログラム [[psim61_demo.lzh(6.2M) |limited/powerele/psim61_demo.lzh]]\n  マニュアル [[psim61manual.pdf(2.5M)|limited/powerele/psim61manual.pdf]]\n  講習会テキスト [[psim_text.pdf(2.2M)|limited/powerele/psim_text.pdf]]\n*LINK先\n  本家  [[powersimtechのホームページ|http://www.powersimtech.com]]\n  日本での販売している [[マイウェイラボ(株)のホームページ|http://www.myway-labs.co.jp/psim/index.html]]\n\n!!!PSIM解析例\n第2章 [[sec2.lzh|limited/powerele/sec2/sec2.lzh]]\n第3章 [[sec3.lzh|limited/powerele/sec3/sec3.lzh]]\n第4章 [[sec3.lzh|limited/powerele/sec4/sec4.lzh]]\n\n!!!出席状況\n[[2005年Bコース|limited/powerele/pele2005b.html]]\n\n!!!平成17年度後期再試験\n[[問題|limited/powerele/H17Btest/h17bsq.pdf]]\n[[解答例|limited/powerele/H17Btest/h17bsa.pdf]]\n\n\n
<html>\n<img alt="" src="ProfHanamoto.jpg" WIDTH=140 align="right"> \n</html>\n\n!!!Profile\nEducation:\n1984 BSc at Dept. of Electrical Enginering, Kyushu Inst. of Tech.\n1986 MSc ar Graduate school of Dept. Electrical Enginering, KIT\n\nProfessional Experience:\n1986 Engineer, Kobe works Kobe Steel Co., Ltd, \n1990 Researh assosicate, Center for cooperative research, Kyushu Inst. of Tech.\n1997 Researh assosicate, Dept. of Electrical Enginering, Kyushu Inst. of Tech.\n1998 Associate Prof. , Dept. of Electrical Enginering, Kyushu Inst. of Tech.\n2000 Associate Prof. Graduate school of Life science and systems engineering, Kyushu Inst. of Tech\n2006 Prof. Graduate school of Life science and systems engineering, Kyushu Inst. of Tech\n\n!!!Paper list\n[[Paper list|PaperList]]\n
<html>\n<img alt="" src="ProfHanamoto.jpg" WIDTH=140 align="right"> \n</html>\n\nEducation:\n1984 BSc at Dept. of Electrical Enginering, Kyushu Inst. of Tech.\n1986 MSc ar Graduate school of Dept. Electrical Enginering, KIT\n\nProfessional Experience:\n1986 Engineer, Kobe works Kobe Steel Co., Ltd, \n1990 Researh assosicate, Center for cooperative research, Kyushu Inst. of Tech.\n1997 Researh assosicate, Dept. of Electrical Enginering, Kyushu Inst. of Tech.\n1998 Associate Prof. , Dept. of Electrical Enginering, Kyushu Inst. of Tech.\n2000 Associate Prof. Graduate school of Life science and systems engineering, Kyushu Inst. of Tech\n2006 Prof. Graduate school of Life science and systems engineering, Kyushu Inst. of Tech\n\n
各種制御理論を提案し,実際に有効であるかどうかを確認するためには,実験は不可欠である。近年のパーソナルコンピュータの発達により制御理論を実現するアルゴリズムを短時間に演算することが可能となった。一方でシミュレーションを行うことで予め実験の予測を行うことも必要である。これらを順番で行うのではなく同一環境に組みこみ,実験とシミュレーションを繰り返すことで,制御システム全体の高性能化を目指す。\n\nそこで,近年注目を浴びているLinuxにリアルタイム処理を付加したRTLinuxを用いた制御開発環境の充実を図ることを目的とした研究を行う。\n
[[Scilab|http://www.scilab.org]]はフランスINRIAで開発された数値演算処理用のソフトウェアで学術利用の場合には無料で使用できる。現在の最新バージョンはver.4である。\n!!ホームページ\n本家 : http://www.scilab.org \n国内の情報 : \nhttp://feedback.mech.fukui-u.ac.jp/scilab/scilab0.html \nhttp://www.ecl.sys.hiroshima-u.ac.\n\n!!特徴\n\n行列の演算は,ほぼMATLABと同じ命令でおこなえる.\n行列の加減,乗除算が簡単にできる.\n\n!!使い方(少し古いバージョン)ファイル [[pdfファイル|limited/EleCont/textA4_scilab.pdf]]\n\npdfファイルにあるものは,scilabの端末(window)から,処理を行うものが中心であるが,通常は他のプログラム言語と同じように,エディタを用いてプログラムを書き,実行する。\nscilabには組込まれたエディタがあり,関数の色分けやエディタから直接実行,デバッグ等もできるので,これを用いても良い。もちろん通常使用しているエディタで書いて,実行はscilabからexecコマンドを用いて行っても良い。\n\n!!基本的なプログラム例\n!!!1次遅れ関数のインパルス応答 R=[K/(T*s+1)];\n\n{{{\nclear;\n\nK=1.0; //ゲイン\nT=1; //時定数\n\ns=poly(0,'s');  // 多項式定義\nR=[K/(T*s+1)]; //伝達関数\nSl=syslin('c',R); //線形システムの作成\n\nx0=[0 0]';\ninstants=0:0.05:20;\n//y=csim('step',instants,Sl); //ステップ応答\ny=csim('impulse',instants,Sl); //インパルス応答\nplot2d(instants',y'); //2次元プロット\nxtitle('Time response')\n\n}}}\n\n[img[Picture/imp_1.gif]]\n\n{{{\n\n!!!RL直列回路のステップ応答 R=[E0/(s*L+R)];\n\nclear;\n\nR=50;\nL=0.2;\nE0=1.0;\ns=poly(0,'s');\nRLcir=[E0/(s*L+R)];\nSl=syslin('c',RLcir);\n\nx0=[0 0]';\ninstants=0:0.0005:0.05;\ny=csim('step',instants,Sl);\nplot2d(instants',y');\nxtitle('Time response')\nxgrid(2);\n}}}\n\n[img[Picture/step_1.gif]]\n
|<<calendar lastmonth>>|<<calendar thismonth>>|<<calendar nextmonth>>|
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>><<slider chkSliderContents [[TabContents]] 'contents »' 'contents'>>
<<calendar thismonth>>
Information of HANAMOTO Labs using [[tiddly wiki|http://www.tiddlywiki.com/]]
HANAMOTO Tsuyoshi's Home Page
http://www.life.kyutech.ac.jp/~hanamoto/hanamoto/index_e.html
/***\nIncluded Styles\n***/\n/*{{{*/\n[[Styles TagglyTagging]]\n[[Styles HorizontalMainMenu]]\n[[Styles MessageArea]]\n[[Styles SideBarOptions]]\n[[Styles Calendar]]\n[[Styles Editor]]\n[[Styles Breadcrumbs]]\n/*}}}*/\n\n/***\nCosmetic fixes\n***/\n/*{{{*/\nh1,h2,h3,h4,h5 { color: #000; background: transparent; }\n\nbody { \n background: #eee; }\n\n.headerShadow {\n padding: 1.0em; }\n\n.headerForeground {\n padding: 1.0em; }\n\n.selected .tagging, .selected .tagged {\n padding: 0.5em;\n background-color: #eee;\n border-top: 1px solid #ccc; \n border-left: 1px solid #ccc; \n border-bottom: 3px solid #ccc; \n border-right: 3px solid #ccc; \n -moz-border-radius: 1em; }\n\n.shadow .title {\n color: #999; }\n\n.siteTitle {\n font-size: 2.5em; }\n\n.siteSubtitle {\n font-size: 1.0em; }\n\n.tabSelected{\n padding-top: 0.0em;\n padding-left: 1em;\n padding-right: 1em;\n -moz-border-radius-topleft: 0.5em; \n -moz-border-radius-topright: 0.5em;}\n\n.tabUnselected {\n padding-top: 0.0em;\n padding-left: 1em;\n padding-right: 1em;\n -moz-border-radius-topleft: 0.5em; \n -moz-border-radius-topright: 0.5em;}\n\n.tabContents {\n margin: 0px;\n padding-top: 0px;\n padding-bottom: 0px;\n padding-left: 2px;\n padding-right: 2px;\n -moz-border-radius: 1em; }\n\n.tagging, .tagged {\n padding: 0.5em;\n background-color: #eee;\n border-top: 1px solid #ccc; \n border-left: 1px solid #ccc; \n border-bottom: 3px solid #ccc; \n border-right: 3px solid #ccc; \n -moz-border-radius: 1em; }\n\n.tiddler {\n border-top: 1px solid #ccc; \n border-left: 1px solid #ccc; \n border-bottom: 3px solid #ccc; \n border-right: 3px solid #ccc; \n margin: 0.5em; \n background:#fff; \n padding: 0.5em; \n -moz-border-radius: 1em; }\n\n.title {\n color:black; \n font-size: 2em; }\n\n.viewer .listTitle { \n list-style-type: none; \n margin-left: -2em; }\n\n.viewer pre { \n background-color: #f8f8ff; \n border-color: #ddf }\n\n/*}}}*/\n
/***\nCalendar\n***/\n/*{{{*/\n.calendar a { margin:0px !important; padding:0px !important; } \n/*}}}*/\n
/***\nStyles Editor\n***/\n/*{{{*/\n.editor textarea {height:200px;background-color:#F2F2F2;}\n\n.editorFooter .button { \n padding-top: 0px; \n padding-bottom:0px; \n background: #fff;\n color: #000; \n border-top: 1px solid #ccc; \n border-left: 1px solid #ccc; \n border-bottom: 2px solid #ccc; \n border-right: 2px solid #ccc; \n margin-left: 3px;\n padding-top: 1px;\n padding-bottom: 1px;\n padding-left: 5px;\n padding-right: 5px; }\n \n.editorFooter .button:hover { \n border-top: 2px solid #ccc; \n border-left: 2px solid #ccc; \n border-bottom: 1px solid #ccc; \n border-right: 1px solid #ccc; \n margin-left: 3px;\n padding-top: 1px;\n padding-bottom: 1px;\n padding-left: 5px;\n padding-right: 5px; }\n/*}}}*/\n
/***\nStyle Message Area\n***/\n/*{{{*/\n#messageArea { \n background-color: #eee; \n border-color: #8ab; \n border-width: 4px; \n border-style: dotted; \n font-size: 90%; \n padding: 0.5em; \n -moz-border-radius: 1em; }\n#messageArea .button { text-decoration:none; font-weight:bold; background:transparent; border:0px; }\n#messageArea .button:hover {background: #acd; }\n/*}}}*/\n
/***\nStyles SideBarOptions\n***/\n/*{{{*/\n#sidebarOptions .sliderPanel {\n border: 0px solid #ccc; \n background-color: #eee;\n margin: 0px;\n margin-left: 0.5em;\n padding: 0px;\n -moz-border-radius: 1em; }\n\n#sidebarOptions .sliderPanel .tabSelected{\n border: 1px solid #ccc; \n background-color: #fff;\n margin: 0px;\n padding-top: 5px;\n padding-bottom: 0px;\n padding-left: 2px;\n padding-right: 2px;\n -moz-border-radius-topleft: 1em; \n -moz-border-radius-topright: 1em;}\n\n#sidebarOptions .sliderPanel .tabUnselected{\n border: 1px solid #ccc; \n background-color: #eee;\n margin: 0px;\n padding-top: 5px;\n padding-bottom: 0px;\n padding-left: 2px;\n padding-right: 2px;\n -moz-border-radius-topleft: 1em; \n -moz-border-radius-topright: 1em;}\n\n#sidebarOptions { \n border-top: 1px solid #ccc; \n border-left: 1px solid #ccc; \n border-bottom: 3px solid #ccc; \n border-right: 3px solid #ccc; \n padding: 0.5em; \n margin: 0.5em; \n -moz-border-radius: 1em; }\n\n#sidebarOptions .button {\n margin: 1px;\n border-color:white;\n border-top: 1px solid #ccc; \n border-left: 1px solid #ccc; \n border-bottom: 2px solid #ccc; \n border-right: 2px solid #ccc; \n}\n\n#sidebarOptions .button:hover {\n color: #000;\n background: #fff;\n border-top: 2px solid #ccc; \n border-left: 2px solid #ccc; \n border-bottom: 1px solid #ccc; \n border-right: 1px solid #ccc; \n}\n\n#sidebarOptions .button:active {\n color: #000;\n background: #fff;\n}\n/*}}}*/\n
<<tabs txtMainTab Timeline Timeline TabTimeline All 'All tiddlers' TabAll Tags 'All tags' TabTags More 'More lists' TabMore>>
The tiddler 'excludeLists' doesn't yet exist. Double-click to create it
<html><head> <title>小ウィンドウ表示</title> \n</head><body bgcolor=black> <center>\n <embed src="introduction_noBGM.wmv" border="0" width="320" height="300" ShowStatusBar="1">\n </center> </body></html>
Online parameter estimation method using Block Pulse Function is proposed. To applying the method for the motor drive system, the precise control are achieved because the parameters are obtain under driving conditions. \nThis method is effective fot SynRM, which has the chracteristics which parameter is depend on the driving condition.\n
!平成18年度研究室を希望する学生の皆さんへ\n\n研究テーマ\n''人間親和型制御開発環境の構築及びインテリジェントモータコントロール''\n\n本研究室では,サーボモータの制御を主に行っています。特に共振系の制振制御をモータ情報のみで行うインテリジェント制御や、モータの位置・速度センサが不要なセンサレス制御の研究により,モータを思い通りに制御することを目指しています。これからはモータだけでなく,ロボット、移動車等の駆動部分を含めた制御システムを考え,その制御方法を開発していく予定です。従来の産業用の制御方法を発展させて,一般家庭や人々と接しながらも,人や物に対して危害を与えないような特性を持たせたり,小型,軽量,省エネを考慮した人に優しい装置となるようなことを考えています。\n\n[[研究室説明会紹介資料|LAB introduce]] 3月6日に電気コースの3年生に説明した資料です \n本研究室は,主としてパワーエレクトロニクスの応用分野の研究をしています。授業(パワーエレクトロニクスI)では説明をしていない,制御を含めたモータの可変速駆動の研究が代表的なものです。活動場所は若松キャンパスになりますが,授業がある学生用に戸畑キャンパスにも部屋を確保しています。\n質問,見学希望等は@@color(red):''メール''@@にて受け付けます。\n\n具体的な研究テーマとしては\n#[[離散型係数図法を用いた共振系の振動抑制制御に関する研究|CDM]]\n#[[シンクロナスリラクタンスモータのオンラインパラメータ推定方法に関する研究|paraest]]\n#[[RTLinuxによるPMSMのオンラインリアルタイムシミュレータに関する研究|RTSim]]\n#[[FPGAを用いたモータ用ディジタル制御回路の作成に関する研究|FPGA]]\n#[[交流小型電動機の高精度センサレス制御に関する研究|sensorless]]\nなどを,考えています。\nいずれも,パソコンを用いた制御が基本となります。C言語が分かっていると便利ですが,例年研究室に配属された段階では知識が無い学生がほとんどです。\nまた,実際に回路を作成することもありますので,物を作るのが好きな人にも向いています。\n\n[[実験に関するいくつかの写真|Lab Picture2]]をおいておきますので,参考にしてください。\n\n\n\n
交流電動機の位置・速度制御は,パワーエレクトロニクスの代表的な応用例であり,現在の産業を支えている技術の1つといえる。その中で,位置センサを使用しないセンサレス制御は,装置の小型化,軽量化,設置環境の拡大化の要求や,センサに混入するノイズや断線による制御系の信頼性低下阻止の目的で広く研究され,実用化しているものも多数ある。\nここでは,永久磁石型同期電動機(PMSM)や同期リラクタンスモータ(SynRM)の高速・高精度,全速度領域センサレス制御の実現を目指している。\n制御手法としては状態オブザーバに基づいたものであり,交流波形を推定するのに都合の良い拡張磁束オブザーバを提案している。\n\n\n\n
This page is used [[Tiddly Wiki|http://www.tiddlywiki.com]].\nPlease choose the menu from the left side.\nTranslation from Japanese to English is not finished.\nSome contents are limitted by only Lab. users or still written in japanese.