《機(jī)電控制系統(tǒng)仿真與軟件設(shè)計(jì)》_第1頁
《機(jī)電控制系統(tǒng)仿真與軟件設(shè)計(jì)》_第2頁
《機(jī)電控制系統(tǒng)仿真與軟件設(shè)計(jì)》_第3頁
《機(jī)電控制系統(tǒng)仿真與軟件設(shè)計(jì)》_第4頁
《機(jī)電控制系統(tǒng)仿真與軟件設(shè)計(jì)》_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 機(jī)械與車輛學(xué)院機(jī)電控制系統(tǒng)仿真與軟件設(shè)計(jì)報(bào)告(2014-2015學(xué)年第一學(xué)期) 課程設(shè)計(jì)題目:水塔水位機(jī)電控制系統(tǒng)設(shè)計(jì)與仿真一、課程設(shè)計(jì)性質(zhì)和目的 機(jī)械電子工程專業(yè)是一個(gè)對實(shí)踐、應(yīng)用能力要求很強(qiáng)的專業(yè),機(jī)電控制系統(tǒng)設(shè)計(jì)與仿真課程學(xué)習(xí)的目的是讓學(xué)生借助MATLAB軟件來研究機(jī)電控制系統(tǒng)的設(shè)計(jì)方法,與傳統(tǒng)控制系統(tǒng)設(shè)計(jì)采用直接編寫程序代碼不同的是,本課程是在MATLAB/SIMULINK中設(shè)計(jì)出控制系統(tǒng)模型,再通過EmbeddedCoder將控制系統(tǒng)模型生成可執(zhí)行的C代碼,然后加載至MCU中去,采用這種新穎的方法,不用再專注于繁瑣程序代碼的編寫工作,而可以將精力花費(fèi)在控制算法的研究上。通過學(xué)習(xí)本課

2、程讓學(xué)生也了解現(xiàn)代控制行業(yè)發(fā)展趨勢及控制系統(tǒng)實(shí)現(xiàn)的先進(jìn)方法。二、課程設(shè)計(jì)的內(nèi)容及要求 在Proteus中建立起水位控制系統(tǒng)仿真模型,如圖所示:B表示為下限水位傳感器,C表示為上限水位傳感器,D1為指示燈,電機(jī)為泵。 圖1水位控制系統(tǒng)仿真模型下限水位傳感器B接單片機(jī)P1.0管腳,上限水位傳感器接單片機(jī)P1.1管腳,指示燈D1接單片機(jī)P1.3管腳,電機(jī)由單片機(jī)P1.2經(jīng)過光耦和繼電器來控制。工作過程是:(1)水位未到下限水位時(shí),泵工作抽水,同時(shí)D1指示燈常亮,水位超過下限水位繼續(xù)上升。(2)當(dāng)水位上升到上限水位時(shí),泵停止工作,同時(shí)D1指示燈滅,(3)如果下限水位傳感器未動作,而上限水位傳感器卻動作

3、了,則泵停止工作,同時(shí)指示燈D1開始按一定時(shí)間間隔閃爍報(bào)警。(4)根據(jù)上述的控制要求在SIMULINK中,運(yùn)用Stateflow工具箱建立起該控制系統(tǒng)的模型,并進(jìn)行仿真運(yùn)行分析,達(dá)到控制系統(tǒng)要求后,再通過SIMULINK菜單code選項(xiàng),c/c+code/buildmodel,生成嵌入式C代碼。然后在Keil中對生成的C代碼進(jìn)行I/O配置和適當(dāng)修改,編譯成HEX文件,最后將該HEX文件加載至Proteus仿真平臺就可以驗(yàn)證代碼的正確性了。三、課程設(shè)計(jì)的進(jìn)度及安排序號項(xiàng) 目時(shí) 間1布置任務(wù),講授MATLAB基本知識1天2水塔水位控制系統(tǒng)SIMULINK建模仿真1天3控制代碼的自動生成和修改、編譯

4、與仿真1天4仿真控制系統(tǒng)調(diào)試分析、編寫設(shè)計(jì)報(bào)告1天5答辯1天 表1 課程安排四、MATLAB/Stateflow學(xué)習(xí) 通過MATLAB是一種科學(xué)計(jì)算軟件,專門以矩陣的形式處理數(shù)據(jù)。MATLAB將高性能的數(shù)值計(jì)算能力和強(qiáng)大的數(shù)字可視化功能集成在一起,提供了大量的內(nèi)置函數(shù),因而被廣泛地應(yīng)用于科學(xué)計(jì)算、控制系統(tǒng)、信息處理等領(lǐng)域的分析仿真和設(shè)計(jì)工作;而Stateflow是集成于Simulink中的圖形化設(shè)計(jì)與開發(fā)工具,主要用于針對控制系統(tǒng)中的復(fù)雜控制邏輯進(jìn)行建模和仿真,即適用于對事件響應(yīng)系統(tǒng)進(jìn)行建模和仿真。Stateflow和Simulink結(jié)合起來,可以創(chuàng)建確定性監(jiān)管控制系統(tǒng)。利用Stateflow

5、可視化的模型和直觀的仿真能力,可以清晰、簡潔地反映出動態(tài)邏輯關(guān)系。它的基礎(chǔ)是有限狀態(tài)機(jī)理論,它通過狀態(tài)圖、流程圖的創(chuàng)建,對事件驅(qū)動系統(tǒng)進(jìn)行建模和仿真。此次課程設(shè)計(jì)是基于MATLAB/Stateflow軟件上的一次實(shí)踐,利用Stateflow可視化的模型和直觀的仿真能力,對水塔進(jìn)行邏輯圖的繪制,建立動態(tài)系統(tǒng)模型進(jìn)行仿真。然后對仿真出來的代碼進(jìn)行修改和添加。這樣就不需要花太多時(shí)間從事代碼的開發(fā),可以讓設(shè)計(jì)者騰出更多的精力進(jìn)行頂層控制策略的設(shè)計(jì)。采用Stateflow進(jìn)行系統(tǒng)建模,直觀、邏輯關(guān)系清晰、簡便,RTW生成執(zhí)行代碼正確,可以大大縮短系統(tǒng)開發(fā)周期。五、水位控制系統(tǒng)模型 首先在matlab20

6、13asimulink下建立起水塔水位控制模型如圖2所示,并保存。圖2 simulink下建立控制模型 In1、In2為控制輸入端(P1.0口、P1.1口的按鍵輸入),設(shè)定信號名稱為delay,該信號作為stateflow中狀態(tài)之間變換的轉(zhuǎn)換條件(等效按鍵的按下產(chǎn)生的脈沖)。Out1、Out2為模型的輸出端。(電機(jī)和指示燈的輸出端口) 在stateflow菜單view下的Model Explorer中設(shè)定輸入、輸出。輸入High_a,port為1,數(shù)據(jù)類型DataType為uit8,輸入low_b,port為1,數(shù)據(jù)類型DataType為uit8,輸入delay觸發(fā)Trigger為Fallin

7、g(因?yàn)閱纹瑱C(jī)中,設(shè)置是按鍵按下時(shí)產(chǎn)生一個(gè)下降沿)。輸出為M、led,port分別為1、2,數(shù)據(jù)類型DataType為uit8如圖所示。圖3 Model Explorer輸入輸出設(shè)定Chart模塊為stateflow模塊,定義了High_a、Low_b兩個(gè)輸入變量、M、led兩個(gè)輸出端口。圖4 stateflow建模 初始狀態(tài):有4種不同的情況High_a和Low_b都為1;High_a和Low_b都為0;High_a為1,Low_b為0;High_a為0,Low_b為1。這4種狀態(tài)將直接進(jìn)入四種不同的固定狀態(tài),執(zhí)行相應(yīng)的命令。四種固定狀態(tài):(1)狀態(tài)A為(工作狀態(tài)):水位在水位的下限Low_

8、b下,輸入信號High_a和Low_b都為1。M(抽水電機(jī)工作狀態(tài)),此時(shí)led=1(指示燈亮)。(2)狀態(tài)A1為(故障狀態(tài)):水位在水位的下限High_a以上,未到達(dá)水位上限Low_b。,此時(shí)motor=0(電機(jī)停止),led閃爍(由子狀態(tài)來實(shí)現(xiàn))A4、A5狀態(tài)間的轉(zhuǎn)移以delay條件實(shí)現(xiàn)亮滅。 圖5 A1模型(3) 狀態(tài)A2為(中間狀態(tài)):電機(jī)和指示燈都保持原來的運(yùn)行狀態(tài)不變。(4) 狀態(tài)A3為(停機(jī)狀態(tài)):水位在水位的下限Low_b以上,也到達(dá)水位上限High_a。M(抽水電機(jī)停止?fàn)顟B(tài)),此時(shí)led=0(指示燈滅)。(5) delay事件(delay為轉(zhuǎn)移條件用fail(下降邊沿觸發(fā))。

9、(6) 狀態(tài)1、狀態(tài)2、狀態(tài)3之間的轉(zhuǎn)移條件為水位傳感器B、C來決定。(即由輸入信號High_a和Low_b決定)當(dāng)輸入信號High_a和Low_b都為1,進(jìn)入狀態(tài)A執(zhí)行命令。完畢后進(jìn)入中間狀態(tài)A2,等待下一個(gè)輸入信號(High_a和Low_b)的變化,再選擇進(jìn)入相應(yīng)的狀態(tài)執(zhí)行命令。 圖6 狀態(tài)及狀態(tài)轉(zhuǎn)換設(shè)定好stateflow了以后,再設(shè)置simulink中的Configuration Parameters,Solver options中Type選擇定步長Fixed-step,其他默認(rèn);硬件Hardware Implement選項(xiàng)Device vendor選擇Intel,Device typ

10、e選擇8051,其他默認(rèn);Real-time Workshop中,System target file選項(xiàng)選擇ert.tlc,編譯語言language選擇C,其他默認(rèn)。 然后在simulink菜單中Tools選擇Real-time Workshop下的Build Model,在matlab命令窗口command window中可以看到詳細(xì)的編譯步驟,編譯成功后,simulink文件所在文件夾會出現(xiàn)名為test_ert_rtw的文件夾,在該文件夾下,建立 如圖所示的proteus仿真模型,取名為test;并建立名為test的keil新工程,芯片選擇ATMEL公司的AT89C51,接下來要將rtw

11、編譯所得到的C源文件導(dǎo)入keil中修改并進(jìn)行編譯生成單片機(jī)可執(zhí)行的.hex文件。 六、嵌入式C代碼 描在simulink菜單中Tools選擇Real-timeWorkshop下的BuildModel,在matlab命令窗口commandwindow中可以看到詳細(xì)的編譯步驟,編譯成功后,simulink文件所在文件夾會出現(xiàn)名為untitled_ert_rtw的文件夾。在該文件夾下,建立如附錄3所示的proteus仿真模型,取名為水塔電路圖;并建立名為untitled的keil新工程,芯片選擇ATMEL公司的AT89C51,接下來要將rtw編譯所得到的C源文件導(dǎo)入keil中修改并進(jìn)行編譯生成單片機(jī)

12、可執(zhí)行的.hex文件。在keil工程中,SourceGroup1導(dǎo)入rtw編譯所得到的C源文件,共有3個(gè),一個(gè)為ert_main.c、一個(gè)為untitled.c還有rt_zcfcn.c,ert_main.c為主程序,里面要設(shè)定輸入輸出端口,untitled.c為功能程序。圖7 導(dǎo)入C源文件(1)如果不進(jìn)行修改,直接編譯會報(bào)錯(cuò),不能編譯通過。主要是要修改ert_main.c文件,打開后在頭文件處加入#include,并對所到的管腳進(jìn)行定義。如圖所示。圖8 修改頭文件和加入管腳定義 (2)接下來設(shè)定模型輸入輸出管腳,如圖所示。圖9 添加模型輸入輸出管腳(3)其中輸入輸出管腳的名稱,可以在test.

13、c中查找得到,必須保持一致。接下來,要對main函數(shù)進(jìn)行修改。改成(4)將如下程序段屏蔽或者刪除。在while循環(huán)體中添加rt_OneStep();即變成將程序中的(void)(argc);fflush(NULL);程序段屏蔽如圖所示。 (5)進(jìn)行編譯,會提示找不到solver_zc.h文件,解決辦法為:在matlab安裝目錄下,搜索查找solver_zc.h,將找到的這個(gè)文件,復(fù)制到test_ert_rtw的文件夾即可,然后右鍵點(diǎn)擊keil工程中Target 1,選擇Options for Target Target 1中Output,選擇Creat HEX file,設(shè)定好了后,點(diǎn)擊編譯,

14、成功編譯后,便得到test.hex文件,再打開proteus仿真模型,雙擊AT89C51芯片,加載test.hex文件,運(yùn)行便得到了任務(wù)要求的效果。七、調(diào)試運(yùn)行及分析 修改完,經(jīng)過編譯正確,將編譯好的hex文件導(dǎo)入proteus軟件中進(jìn)行仿真,見圖4。當(dāng)水位低于下限,B、C未觸發(fā)時(shí),抽水電機(jī)運(yùn)行抽水,指示燈點(diǎn)亮。當(dāng)水位高于下限低于上限,B觸發(fā),C未觸發(fā)時(shí),抽水電機(jī)運(yùn)行抽水,指示燈點(diǎn)亮。當(dāng)水位上升至上限,B、C均觸發(fā)時(shí),抽水電機(jī)停止抽水,指示燈滅。出現(xiàn)錯(cuò)誤時(shí),電機(jī)停止運(yùn)轉(zhuǎn),指示燈閃爍。 圖10 proteus仿真模型八、心得體會(1)在第一次設(shè)計(jì)與仿真練習(xí)過程中遇到了許多的問題其中:在改寫嵌入C

15、語言編譯時(shí)因?yàn)闆]有屏蔽原程序中的void)(argc);fflush(NULL);語句導(dǎo)致程序無法編譯。(2)在第一次的仿真控制8個(gè)LED燈時(shí),8個(gè)LED燈全都點(diǎn)亮。開始時(shí)以為是程序模型的錯(cuò)誤,經(jīng)過多次的檢查證實(shí)了程序模型沒有錯(cuò)誤。最后在同學(xué)的幫助下,發(fā)現(xiàn)了是在嵌入C語言編譯中,rt_OneStep();沒有放入主函數(shù)中。(3)在水塔水位機(jī)電系統(tǒng)設(shè)計(jì)與仿真實(shí)驗(yàn)中:仿真時(shí)發(fā)現(xiàn)了proteus仿真模型的運(yùn)行狀態(tài)不正確,通過多次的檢查發(fā)現(xiàn)了在stateflow建模時(shí)有一個(gè)輸入端口沒有大寫,導(dǎo)致輸入端口的信號不能與模型連接。(4)通過本次水位控制系統(tǒng)的Matlab機(jī)電控制系統(tǒng)設(shè)計(jì)與仿真,使我Matla

16、b的應(yīng)用有了一個(gè)深刻的認(rèn)識,也有了一個(gè)全面的提高。這主要得益老師耐心的教誨與同學(xué)們提供資料與幫助的結(jié)果。通過這次課程設(shè)計(jì),我學(xué)到了一個(gè)全新的軟件,讓自己在理論知識和軟件操作能力方面都得到了很好的訓(xùn)練!還學(xué)會了充分利用網(wǎng)絡(luò)資源等一切可以利用的資源九、參考文獻(xiàn)1 王靜霞.單片機(jī)應(yīng)用技術(shù),電子工業(yè)出版社.2009.2 MathworksCorp.StateflowUsersGuideR2013aZ.2013.3 劉杰.基于模型的設(shè)計(jì)MCU篇,北京航空航天大學(xué)出版社.2011.4 張威.Matlab.Stateflow邏輯系統(tǒng)建模,西安電子科技大學(xué)出版社.2007.十、致謝 在本次課程設(shè)計(jì)中許多同學(xué)給

17、予我?guī)椭鉀Q了不少在課程設(shè)計(jì)中遇到的問題。同時(shí)也幫助我自己獲取了許多過去沒有的學(xué)到的知識。在這里我要特別感謝唐偉杰老師的耐心教導(dǎo),鄭建偉同學(xué)的建議和提醒!/* * File: ert_main.c * * Code generated for Simulink model untitled. * * Model version : 1.6 * Simulink Coder version : 8.5 (R2013b) 08-Aug-2013 * C/C+ source code generated on : Sun Oct 26 23:45:21 2014 * * Target select

18、ion: ert.tlc * Embedded hardware selection: Intel-8051 Compatible * Code generation objectives: Unspecified * Validation result: Not run */#include /* This ert_main.c example uses printf/fflush */#include untitled.h /* Models header file */#include rtwtypes.h#include sbit P1_0=P10;sbit P1_1=P11;sbit

19、 P1_2=P12;sbit P1_3=P13;/* Associating rt_OneStep with a real-time clock or interrupt service routine * is what makes the generated code real-time. The function rt_OneStep is * always associated with the base rate of the model. Subrates are managed * by the base rate from inside the generated code.

20、Enabling/disabling * interrupts and floating point context switches are target specific. This * example code indicates where these should take place relative to executing * the generated code step function. Overrun behavior should be tailored to * your application needs. This example simply sets an

21、error status in the * real-time model and returns from rt_OneStep.*/void rt_OneStep(void)static boolean_T OverrunFlag = 0; /* Disable interrupts here */ /* Check for overrun */ if (OverrunFlag) rtmSetErrorStatus(untitled_M, Overrun); return; OverrunFlag = TRUE; /* Save FPU context here (if necessary

22、) */ /* Re-enable timer or interrupt here */ /* Set model inputs here */untitled_U.In2=P1_0;untitled_U.In1=P1_1; /* Step the model */ untitled_step(); /* Get model outputs here */P1_2=untitled_Y.Out2;P1_3=untitled_Y.Out1; /* Indicate task complete */ OverrunFlag = FALSE; /* Disable interrupts here *

23、/ /* Restore FPU context here (if necessary) */ /* Enable interrupts here */* The example main function illustrates what is required by your * application code to initialize, execute, and terminate the generated code. * Attaching rt_OneStep to a real-time clock is target specific. This example * ill

24、ustates how you do this relative to initializing the model.*/int_T main()/* Unused arguments */ /(void)(argc); /(void)(argv); /* Initialize model */ untitled_initialize(); /* Attach rt_OneStep to a timer or interrupt service routine with * period 0.5 seconds (the models base sample time) here. /* Di

25、sable rt_OneStep() here */ /* Terminate model */ untitled_terminate(); return 0;/* * File trailer for generated code. * * EOF */附錄/* * File: rt_zcfcn.c * * Code generated for Simulink model untitled. * * Model version : 1.6 * Simulink Coder version : 8.5 (R2013b) 08-Aug-2013 * C/C+ source code gener

26、ated on : Sun Oct 26 23:45:21 2014 * * Target selection: ert.tlc * Embedded hardware selection: Intel-8051 Compatible * Code generation objectives: Unspecified * Validation result: Not run */#include rt_zcfcn.h/* Detect zero crossings events. */ZCEventType rt_ZCFcn(ZCDirection zcDir, ZCSigState* pre

27、vZc, real_T currValue) slZcEventType zcsDir; slZcEventType tempEv; ZCEventType zcEvent = NO_ZCEVENT; /* assume */ /* zcEvent matrix */ static const slZcEventType eventMatrix44 = /* ZER POS NEG UNK */ SL_ZCS_EVENT_NUL, SL_ZCS_EVENT_Z2P, SL_ZCS_EVENT_Z2N, SL_ZCS_EVENT_NUL ,/* ZER */ SL_ZCS_EVENT_P2Z,

28、SL_ZCS_EVENT_NUL, SL_ZCS_EVENT_P2N, SL_ZCS_EVENT_NUL ,/* POS */ SL_ZCS_EVENT_N2Z, SL_ZCS_EVENT_N2P, SL_ZCS_EVENT_NUL, SL_ZCS_EVENT_NUL ,/* NEG */ SL_ZCS_EVENT_NUL, SL_ZCS_EVENT_NUL, SL_ZCS_EVENT_NUL, SL_ZCS_EVENT_NUL /* UNK*/; The * call syntax for rt_OneStep is * * rt_OneStep(); */ /fflush(NULL); w

29、hile (rtmGetErrorStatus(untitled_M) = (NULL) /* Perform other application tasks here */rt_OneStep(); /* Disable rt_OneStep() here */ /* Terminate model */ untitled_terminate(); return 0;/* * File trailer for generated code. * * EOF */ else currEv = SL_ZCS_EVENT_NUL; /* Update prevZc */ tempEv = (slZ

30、cEventType)(currEv 2); slZcSignalSignType prevSign = (slZcSignalSignType)(uint8_T)(*prevZc) & 0x03); /* get current zcSignal sign from current zcSignal value */ slZcSignalSignType currSign = (slZcSignalSignType)(currValue) 0.0 ? SL_ZCS_SIGN_POS : (currValue) 0.0 ? SL_ZCS_SIGN_NEG : SL_ZCS_SIGN_ZERO)

31、; /* get current zcEvent based on prev and current zcSignal value */ slZcEventType currEv = eventMatrixprevSigncurrSign; /* get slZcEventType from ZCDirection */ switch (zcDir) case ANY_ZERO_CROSSING: zcsDir = SL_ZCS_EVENT_ALL; break; case FALLING_ZERO_CROSSING: zcsDir = SL_ZCS_EVENT_ALL_DN; break;

32、case RISING_ZERO_CROSSING: zcsDir = SL_ZCS_EVENT_ALL_UP; break; default: zcsDir = SL_ZCS_EVENT_NUL; break; /*had event, check if double zc happend remove double detection. */ if (slZcHadEvent(currEv, zcsDir) currEv = (slZcEventType)(slZcUnAliasEvents(prevEv, currEv); /* Model step function */void un

33、titled_step(void) real_T rtb_PulseGenerator; ZCEventType zcEvent; /* DiscretePulseGenerator: /Pulse Generator */ rtb_PulseGenerator = (untitled_DW.clockTickCounter = 0L) ? untitled_P.PulseGenerator_Amp : 0.0; if (untitled_DW.clockTickCounter = untitled_P.PulseGenerator_Period - 1.0) untitled_DW.cloc

34、kTickCounter = 0L; else untitled_DW.clockTickCounter+; /* End of DiscretePulseGenerator: /Pulse Generator */ /* Chart: /Chart1 incorporates: * TriggerPort: /delay */ zcEvent = rt_ZCFcn(FALLING_ZERO_CROSSING,&untitled_PrevZCX.Chart1_Trig_ZCE, (rtb_PulseGenerator); if (zcEvent != NO_ZCEVENT) /* Gatewa

35、y: Chart1 */ /* Event: :29 */ /* During: Chart1 */ if (untitled_DW.is_active_c2_untitled = 0U) /* Entry: Chart1 */ untitled_DW.is_active_c2_untitled = 1U; /* Inport: /In2 incorporates: * Inport: /In1*/ /* Entry Internal: Chart1 */ if (untitled_U.In2 = 1) & (untitled_U.In1 = 1) /* Transition: :20 */

36、untitled_DW.is_c2_untitled = untitled_IN_A; /* Outport: /Out1 */ /* Entry A: :2 */ untitled_Y.Out1 = 1U; /* Outport: /Out2 */* * File: untitled.c * * Code generated for Simulink model untitled. * * Model version : 1.6 * Simulink Coder version : 8.5 (R2013b) 08-Aug-2013 * C/C+ source code generated o

37、n : Sun Oct 26 23:45:21 2014 * * Target selection: ert.tlc * Embedded hardware selection: Intel-8051 Compatible * Code generation objectives: Unspecified * Validation result: Not run */#include untitled.h#include untitled_private.h/* Named constants for Chart: /Chart1 */#define untitled_IN_A (uint8_

38、T)1U)#define untitled_IN_A1 (uint8_T)2U)#define untitled_IN_A2 (uint8_T)3U)#define untitled_IN_A3 (uint8_T)4U)#define untitled_IN_A4 (uint8_T)1U)#define untitled_IN_A5 (uint8_T)2U)#define untitled_IN_NO_ACTIVE_CHILD (uint8_T)0U)/* Block states (auto storage) */DW_untitled_T untitled_DW;/* Previous z

39、ero-crossings (trigger) states */PrevZCX_untitled_T untitled_PrevZCX;/* External inputs (root inport signals with auto storage) */ExtU_untitled_T untitled_U;/* External outputs (root outports fed by signals with auto storage) */ExtY_untitled_T untitled_Y;/* Real-time model */RT_MODEL_untitled_T unti

40、tled_M_;RT_MODEL_untitled_T *const untitled_M = &untitled_M_; untitled_Y.Out2 = 1U; else if (untitled_U.In2 = 1) & (untitled_U.In1 = 0) /* Transition: :21 */ untitled_DW.is_c2_untitled = untitled_IN_A2; /* Outport: /Out2 */ /* Entry A2: :4 */ untitled_Y.Out2 = 0U; else if (untitled_U.In2 = 0) & (unt

41、itled_U.In1 = 0) /* Transition: :22 */ untitled_DW.is_c2_untitled = untitled_IN_A3; /* Outport: /Out1 */ /* Entry A3: :5 */ untitled_Y.Out1 = 0U; /* Outport: /Out2 */ untitled_Y.Out2 = 0U; else if (untitled_U.In2 = 0) & (untitled_U.In1 = 1) /* Transition: :23 */ untitled_DW.is_c2_untitled = untitled

42、_IN_A1; /* Outport: /Out1 */ /* Entry A1: :3 */ untitled_Y.Out1 = 0U; /* Entry Internal A1: :3 */ /* Transition: :18 */ untitled_DW.is_A1 = untitled_IN_A4; /* Outport: /Out2 */ /* Entry A4: :13 */ untitled_Y.Out2 = 0U; else switch (untitled_DW.is_c2_untitled) case untitled_IN_A: /* Inport: /In2 incorporates: * Inport: /In1 */ /* During A: :2 */ if (untitled_U.In2 = 1) & (untitled_U.In1 = 0) /* Transition: :8 */ untitled_DW.is_c2_untitled = untitled_IN_A2; /* Outport: /Out2 */ /* Entry A2: :4 */ un

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論