搜档网
当前位置:搜档网 › 《编译原理》实验指导书(1)

《编译原理》实验指导书(1)

《编译原理》实验指导书(1)
《编译原理》实验指导书(1)

《编译原理》实验指导书

实验目的和内容

编译原理实验的目的是使学生将编译理论运用到实际当中,实现一个简单语言集的词法、语法和语义分析程序,验证实际编译系统的实现方法,并加深对编译技术的认识。

实验内容共需实现编译器的词法、语法和语义分析程序三个组成部分。要求学生必须完成每个实验的基本题目要求,有余力的同学可尝试实验的扩展要求部分。

实验报告

每人(组)针对所完成的实验内容上交一份实验报告,其中主要包括三方面内容:1、实验设计:实验采用的实现方法和依据(如描述语言的文法及其机内表示,词法分

析的单词分类码表、状态转换图或状态矩阵等,语法分析中用到的分析表或优先矩阵等,语法制导翻译中文法的拆分和语义动作的设计编写等);具体的设计结果(应包括整体设计思想和实现算法,程序结构的描述,各部分主要功能的说明,以及所用数据结构的介绍等)。

2、程序代码:实验实现的源程序清单,要求符合一般的程序书写风格,有详细的注释。

3、实验结果分析:自行编写若干源程序作为测试用例,对所生成的编译程序进行测试

(编译程序的输入与输出以文件的形式给出);运行结果分析(至少包括一个正确和一个错误单词或语句的运行结果);以及改进设想等。

注意事项

1、电子版实验报告和源程序在最后一次机时后的一周内上交。(每人(组)上交一个

压缩文件,其命名格式为“学号_姓名.rar”(“组长学号_姓名.rar”),内含实验报告和一个命名为“源程序”的文件夹。注意提交的源程序应是经过调试、测试成功的较为通用的程序,并应有相应的注释、运行环境和使用方法简介。)

2、不接受不完整的实验报告和没有说明注释的源程序,或者说明与程序、运行结果不

符合的作业。

特别鼓励:扩展题目

1、小组合作:为亲身经历一个小型编译器的开发全过程,触摸一下与实际编译器开发

相关的工作,大家可以自由组成3人左右的小组,推举组长,模拟一个团队分工协作开发大型软件的实战环境,融入软件工程的思想规范和一般理论方法,初步体验从系统分析设计、编码测试到交付维护的一个完整编译器软件的开发过程。要求组长为每个小组成员分配主要负责的任务,完成相应的分析设计员、程序员和测试员等角色的工作,并以小组为单位提交一份实验报告和源程序,在报告封面上写明每个同学主要完成和负责的部分。要求以组为单位完成的实验内容至少必须整合词法、语法和语义三个部分的实验,对于选定的适当规模的文法(如C语言的一个大小适宜的子集),进行系统的总体设计、功能分析、编码测试等工作。完成一个从对源程序的词法分析开始,到中间代码生成的完整的编译器前端的开发,使所涉及到的编译系统的各个组成模块有机地衔接在一起,提交一份完整的实验报告和源程序。

2、自拟题目:根据自己的研究兴趣自主选择或自定实验题目。要求先提交一份申请文

档,说明所选题目、实现方案和技术路线;然后当面与教师就题目的难易程度和工作量等具体讨论调整,细化课程设计内容,最终确定要完成的主要工作;在得到老师的认可之后方可继续进行。

实验一词法分析程序实现

一、实验目的与要求

通过编写和调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将字符流形式的源程序转化为一个由各类单词符号组成的流的词法分析方法。二、实现方法与环境

词法分析是编译程序的第一个处理阶段,可以通过两种途径来构造词法分析程序。其一是根据对语言中各类单词的某种描述或定义(如BNF),用手工的方式(例如可用C语言)构造词法分析程序。一般地,可以根据文法或状态转换图构造相应的状态矩阵,该状态矩阵连同控制程序一起便组成了编译器的词法分析程序;也可以根据文法或状态转换图直接编写词法分析程序。构造词法分析程序的另外一种途径是所谓的词法分析程序的自动生成,即首先用正规式对语言中的各类单词符号进行词型描述,并分别指出在识别单词时,词法分析程序所应进行的语义处理工作,然后由一个所谓词法分析程序的构造程序对上述信息进行加工。如美国BELL实验室研制的LEX就是一个被广泛使用的词法分析程序的自动生成工具。

总的来说,开发一种新语言时,由于它的单词符号在不停地修改,采用LEX等工具生成的词法分析程序比较易于修改和维护。一旦一种语言确定了,则采用手工编写词法分析程序效率更高。

三、实验内容

基本实验题目:若某一程序设计语言中的单词包括五个关键字begin、end、if、then、else;标识符;无符号常数;六种关系运算符;一个赋值符和四个算术运算符,试构造能识别这些单词的词法分析程序(各类单词的分类码参见表I)。

输入:由符合和不符合所规定的单词类别结构的各类单词组成的源程序文件。

输出:把所识别出的每一单词均按形如(CLASS,V ALUE)的二元式形式输出,并将结果放到某个文件中。对于标识符和无符号常数,CLASS字段为相应的类别码的助记符;V ALUE字段则是该标识符、常数的具体值;对于关键字和运算符,采用一词一类的编码形式,仅需在二元式的CLASS字段上放置相应单词的类别码的助记符,V ALUE字段则为“空”。

扩展实验:试对基本实验内容进行扩充,例如:在词法分析过程中建立变量名表,以备后续的编译过程查询;扩充关键字的数目、增加逻辑运算符等单词类别、将常数再细分成字符串常量、整型常量和实型常量等;添加词法分析中单词出错的位置和错误类型,以及删除注释部分等。

表I 语言中的各类单词符号及其分类码表

四、要求

1、上机前的准备:完成词法分析程序的程序流图,并选择好相应的数据结构。

2、编程:用C语言或你熟悉的其它高级程序设计语言编写扫描器程序。

3、调试:将各个模块连接成一个完整程序,并整体调试成功。

4、测试:用于测试扫描器的实例源文件中应有词法正确的,也应有错误的字符串,并至少应包含两行以上的源代码。

5、输出结果:对于输入的测试用例的源程序文件,以对照的形式将扫描器的分析结果在输出文件中表示出来,必要时给出错误提示信息。例如,若输入文件中的内容为:“if myid>=1.5E?2+100 then x:=y”,则输出文件中的内容应为:

(IF,)

(ID,’myid’)

(GE,)

(UCON,0.015)

(PL,)

(UCON,100)

(THEN,)

(ID,’x’)

(IS,)

(ID,’y’)

五、参考实现方法

1、处理过程简述:在一个程序设计语言中,一般都含有若干类单词符号,为此可首先为每类单词建立一张状态转换图,然后将这些状态转换图合并成一张统一的状态图,即得到了一个有限自动机,再进行必要的确定化和状态数最小化处理,最后添加当进行状态转移时所需执行的语义动作,就可以据此构造词法分析程序了。

为了使词法分析程序结构比较清晰,且尽量避免某些枝节问题的纠缠,我们假定要编译的语言中,全部关键字都是保留字,程序员不得将它们作为源程序中的标识符;在源程序的输入文本中,关键字、标识符、无符号常数之间,若未出现关系和算术运算符以及赋值符,则至少须用一个空白字符加以分隔。作了这些限制以后,就可以把关键字和标识符的识别统一进行处理。即每当开始识别一个单词时,若扫视到的第一个字符为字母,则把后续输入的字母或数字字符依次进行拼接,直至扫视到非字母、数字字符为止,以期获得一个尽可能长的字母数字字符串,然后以此字符串查所谓保留字表(此保留字表要事先造好),若查到此字符串,则取出相应的类别码;反之,则表明该字符串应为一标识符。

采用上述策略后,针对表I中的部分单词可以参考教材P80的图3-22(见图1)和P81的程序3-4(见程序一),用C语言编写出符合以上几项要求的一个扫描器程序。注意还需要按照实验题目的具体要求将其中的整常数改为无符号常数。关于无符号数的文法可参见教材P49,其识别方法参考P51的图3-3(见图2)、P55的表3-1(见表II)和P57的程序3-3(见程序二)。

图1 识别表I所列语言中的部分单词的DFA及相关的语义过程图1中所出现的语义变量及语义函数的含义和功能说明如下:

函数GETCHAR:每调用一次,就把扫描指示器当前所指示的源程序字符送入字符变量ch,然后把扫描指示器前推一个字符位置。

字符数组TOKEN:用来依次存放一个单词词文中的各个字符。

函数CAT:每调用一次,就把当前ch中的字符拼接于TOKEN中所存字符串的右边。

函数LOOKUP:每调用一次,就以TOKEN中的字符串查保留字表,若查到,就将相应关键字的类别码赋给整型变量c;否则将c置为零。

函数RETRACT:每调用一次,就把扫描指示器回退一个字符位置(即退回多读的那个字符)。

函数OUT:一般仅在进入终态时调用此函数,调用的形式为OUT(c,VAL)。其中,实参c为相应单词的类别码助记符;实参V AL为TOKEN(即词文)或为空串。函数OUT的功能是,在送出一

个单词的内部表示之后,返回到调用该词法分析程序的那个程序。

程序一根据图1编写的扫描器# include

# include

# include

# define ID 6

# define INT 7

# define LT 8

# define LE 9

# define EQ 10

# define NE 11

# define GT 12

# define GE 13

char TOKEN[20];

extern int lookup (char*);

extern void out (int, char*);

extern report_error (void);

void scanner_example (FILE *fp)

{

char ch; int i, c;

ch=fgetc (fp);

if (isalpha (ch)) /*it must be a identifer!*/

{

TOKEN[0]=ch; ch=fgetc (fp); i=1;

while (isalnum (ch))

{

TOKEN[i]=ch; i++;

ch=fgetc (fp);

}

TOKEN[i]= ′\0′

fseek(fp,-1,1); /* retract*/

c=lookup (TOKEN);

if (c==0) out (ID,TOKEN); else out (c," ");

}

else

if(isdigit(ch))

{

TOKEN[0]=ch; ch=fgetc(fp); i=1;

while(isdigit(ch))

{

TOKEN[i]=ch; i++;

ch=fgetc(fp);

}

TOKEN[i]= ′\0′;

fseek(fp,-1,1);

out(INT,TOKEN);

}

else

switch(ch)

{

case ′<′: ch=fgetc(fp);

if(ch==′=′)out(LE," ");

else if(ch==′>′) out (NE," ");

else

{

fseek (fp,-1,1);

out (LT," ");

}

break;

case ′=′: out(EQ, " "); break;

case ′>′: ch=fgetc(fp);

if(ch==′=′)out(GE," ");

else

{

fseek(fp,-1,1);

out(GT," ");

}

break;

default: report_error( ); break;

}

return;

}

2、两点提示:

①程序一中所用的若干函数以及主程序有待于具体编写,并需事先建立好保留字表,以备查询。例如:

/* 建立保留字表*/

#define MAX_KEY_NUMBER 20 /*关键字的数量*/

#define KEY_WORD_END “waiting for your expanding”/*关键字结束标记*/

char *KeyWordTable[MAX_KEY_NUMBER]={“begin”,“end”, “if”, “then”, “else”, KEY_WORD_END}; /* 查保留字表,判断是否为关键字*/

int lookup (char *token)

{

int n=0;

while (strcmp(KeyWordTable[n], KEY_WORD_END)) /*strcmp比较两串是否相同,若相同返回0*/ {

if (!strcmp(KeyWordTable[n], token)) /*比较token所指向的关键字和保留字表中哪个关键字相符*/ {

return n+1; /*根据单词分类码表I,设置正确的关键字类别码,并返回此类别码的值*/

break;

}

n++;

}

return 0; /*单词不是关键字,而是标识符*/

}

另外,在扫描源程序字符串时,一旦识别出关键字、标识符、无符号常数以及运算符中之一,即以二元式形式(类别编码的助记符,值)输出单词到指定文件中。每次调用该词法分析程序,它均能自动继续扫描下去,形成下一个单词,直至整个源程序全部扫描完毕,并形成相应的单词串形式的源程序文件。

②需要将程序一中的整常数扩展为无符号常数,以满足题目的要求。描述无符号数的右线性文法G1[<无符号数>]如下:

〈无符号数〉→d〈余留无符号数〉

〈无符号数〉→·〈小数部分〉

〈无符号数〉→ d

〈余留无符号数〉→d〈余留无符号数〉

〈余留无符号数〉→·〈十进小数〉

〈余留无符号数〉→E〈指数部分〉

〈余留无符号数〉→ d

〈余留无符号数〉→·

〈十进小数〉→E〈指数部分〉

〈十进小数〉→d〈十进小数〉

〈十进小数〉→ d

〈小数部分〉→d〈十进小数〉

〈小数部分〉→ d

〈指数部分〉→d〈余留整指数〉

〈指数部分〉→+〈整指数〉

〈指数部分〉→-〈整指数〉

〈指数部分〉→ d

〈整指数〉→d〈余留整指数〉

〈整指数〉→ d

〈余留整指数〉→d〈余留整指数〉

〈余留整指数〉→d

图2所示为上述文法的状态转换图,其中编号0、1、2、…、6分别代表非终结符号<无符号数>、<余留无符号数>、<十进小数>、<小数部分>、<指数部分>、<整指数>及<余留整指数>。

图2 文法G1[<无符号数>]的状态转换图

无符号数识别中的语义处理方法详见教材P56。表II即为嵌入了语义动作的状态矩阵,其功能是在扫描源程序字符串的过程中,把识别出的字符串形式的无符号数的值,逐步转换为相应的二进制整数(ICON)或二进制浮点数(FCON)的内部形式。(注:考虑能否采用C语言的库函数实现此语义处理工作;是否可将无符号常数这一类单词进一步细分成整型常数和浮点型常数两类单词。)

根据表II所示的加入了语义过程说明的识别无符号数的状态矩阵,编写词法分析程序,部分实现代码如程序二所示。

表II 包含语义处理过程的识别无符号数的状态矩阵

程序二单词分类码为UCON的无符号数的识别程序

1 #include

2 #include

3 #include

4

5 #define DIGIT 1

6 #define POINT 2

7 #define OTHER 3

8 #define POWER 4

9 #define PLUS 5

10 #define MINUS 6

11 #define UCON 7 //Suppose the class number of unsigned constant is 7

12 #define ClassOther 200

13 #define EndState -1

14 int w,n,p,e,d;

15 int Class; //Used to indicate class of the word

16 int ICON;

17 float FCON;

18 static int CurrentState; //Used to present current state, the initial value:0

19

20 int GetChar (void);

21 int EXCUTE (int,int);

22 int LEX (void);

23 int HandleOtherWord (void)

24 {return ClassOther;

25 }

26 int HandleError (void)

27 {printf ("Error!\n"); return 0;}

28

29 int GetChar (void)

30 {

31 int c;

32 c=getchar ( );

33 if(isdigit(c)) {d=c-′0′;return DIGIT;}

34 if (c==′.′) return POINT;

35 if (c==′E′||c==′e′) return POWER;

36 if (c==′+′) return PLUS;

37 if (c==′-′) return MINUS;

38 return OTHER;

39 }

40 int EXCUTE (int state, int symbol)

41 {

42 switch (state)

43 {

44 case 0:switch (symbol)

45 {

46 case DIGIT: n=0;p=0;e=1;w=d;CurrentState=1;Class=UCON;break;

47 case POINT: w=0;n=0;p=0;e=1;CurrentState=3;Class=UCON;break;

48 default: HandleOtherWord( );Class=ClassOther;

49 CurrentState=EndState;

50 }

51 break;

52 case 1:switch (symbol)

53 {

54 case DIGIT: w=w*10+d;break; //CurrentState=1

55 case POINT: CurrentState=2;break;

56 case POWER: CurrentState=4;break;

57 default: ICON=w;CurrentState=EndState;

58 }

59 break;

60 case 2:switch (symbol)

61 {

62 case DIGIT: n++;w=w*10+d;break;

63 case POWER: CurrentState=4;break;

64 default: FCON=w*pow(10,e*p-n);CurrentState=EndState;

65 }

66 break;

67 case 3:switch (symbol)

68 {

69 case DIGIT: n++;w=w*10+d;CurrentState=2;break;

70 default: HandleError( );CurrentState=EndState;

71 }

72 break;

73 case 4:switch (symbol)

74 {

75 case DIGIT: p=p*10+d;CurrentState=6;break;

76 case MINUS: e=-1;CurrentState=5;break;

77 case PLUS: CurrentState=5;break;

78 default: HandleError( );CurrentState=EndState;

79 }

80 break;

81 case 5:switch (symbol)

82 {

83 case DIGIT: p=p*10+d;CurrentState=6;break;

84 default: HandleError( );CurrentState=EndState;

85 }

86 break;

87 case 6:switch (symbol)

88 {

89 case: DIGIT:p=p*10+d;break;

90 default: FCON=w*pow(10,e*p-n);CurrentState=EndState;

91 }

92 break;

93 }

94 return CurrentState;

95 }

96 int LEX (void)

97 {

98 int ch;

99 CurrentState=0;

100 while (CurrentState!=EndState)

101 {

102 ch=GetChar( );

103 EXCUTE (CurrentState,ch);

104 }

105 return Class;

106 }

实验二语法分析程序实现

一、实验目的与要求

通过设计、编制、调试一个典型的语法分析程序(任选一种有代表性的语法分析方法,如算符优先法、递归下降法、LL(1)、SLR(1)、LR(1)等,作为编制语法分析程序的依据),对实验一所得扫描器提供的单词序列进行语法检查和结构分析,实现并进一步掌握常用的语法分析方法。

二、一般实现方法说明

为了在对源程序的一遍扫描过程中,同时完成词法和语法分析任务,应注意首先修改实验一中的词法分析程序,将它编写为子程序的形式,以便供语法分析程序调用。另外,应加强错误检查,对输入符号串中的词法、语法错误,给出必要的说明信息,尽可能多地、确切地指出错误的位置、原因和性质。例如,在词法分析阶段,对当前正在处理的字符ch,可进一步定义一些与该字符相关的信息row和col,即定义:char ch; /*The current character*/

int row; /*The line number position of the current character*/

int col; /*The column number position of the current character*/

分别表示该字符所在的行和列,这些内容在出错处理时用来提供和源程序位置相关的信息。

三、实验内容

基本实验题目:选择对各种常见高级程序设计语言都较为通用的语法结构——算术表达式的一个简化子集——作为分析对象,根据如下描述其语法结构的BNF定义G2[<算术表达式>],任选一种学过的语法分析方法,针对运算对象为无符号常数和变量的四则运算,设计并实现一个语法分析程序。

G2[<算术表达式>]:

<算术表达式> → <项> | <算术表达式>+<项> | <算术表达式>-<项>

<项> → <因式> | <项>*<因式> | <项>/<因式>

<因式> → <运算对象> | (<算术表达式>)

若将语法范畴<算术表达式>、<项>、<因式>和<运算对象>分别用E、T、F和i代表,则G2可写成:

G2[E]:E → T | E+T | E-T T → F | T*F | T/F F → i | (E)

输入:由实验一输出的单词串,例如:UCON,PL,UCON,MU,ID ······

输出:若输入源程序中的符号串是给定文法的句子,则输出“RIGHT”,并且给出每一步分析过程;若不是句子,即输入串有错误,则输出“ERROR”,并且显示分析至此所得的中间结果,如分析栈、符号栈中的信息等,以及必要的出错说明信息。

扩展实验:对所给算术表达式的文法G2,完成两种以上不同的语法分析程序的设计与实现;或在G2的基础上,适当增加功能,如进一步选择高级语言中的赋值语句、复合语句、流程控制语句等其它类型的语法结构作为分析对象。

四、要求

1、上机前的准备:结合题目的要求,确定语法分析程序的流程图,同时考虑相应的数据结构,用C或其它高级语言初步编写一个语法分析源程序。

2、调试:将词法、语法分析合在一起构成一个完整的程序,并调试成功。

3、测试:供测试的例子应包括符合语法规则的语句,及分析程序能判别的若干错例。

4、结果输出:对于所输入的字符串,不论对错,都应有明确的信息告诉外界。

5、编写的源程序中应有较为详细的说明和注释。例如,对文法机内表示的解释、数据结构的说明、函数的作用、全局变量的含义等等。

五、参考实现方法

下面分别简要给出基于递归下降法、预测分析法、算符优先法、SLR(1)四种语法分析程序的开发方法示例说明,仅供参考。

1、示例一:采用具有递归功能的高级语言编制递归下降法的语法分析程序。

运算对象i可以进一步定义为变量、常数等,例如,此处将i定义为:

i→<变量> <变量>→<标识符> <标识符>→<字母> <字母>→A|B|C|…|X|Y|Z

利用扩充的BNF消除G2[E]中E和T的直接左递归后,采用递归下降法分析上述算术表达式的框图见图3。其中ZC过程为总控程序,被设计成可以分析无穷多个算术表达式,主要完成:①通知外界键入算术表达式。②控制E过程分析算术表达式。③根据分析结果之正误,分别输出不同的信息。E、T和F三个过程分别对应<算术表达式>、<项>和<因式>三个产生式的处理。它们都利用到一个公共过程ADV ANCE。ADV ANCE 过程负责从输入字符串ST中取出下一个字符,并存入SYM中等待分析;然后再剔除ST 中的首字符,这可通过挪动字符串指针的办法来实现(而实际上是通过调用词法分析程序来实现ADV ANCE功能的)。变量TZ之值标志分析的结果,表明表达式是否有错。

图3 递归下降法分析算术表达式的框图

(a) ZC 过程 (b) E 过程 (c) T 过程 (d) F 过程 (e) ADV ANCE 过程

2、示例二:基于预测分析法的语法分析程序。

参考教材P121例4.3,首先编写无二义性的简单算术表达式的文法(4.1),并通过消除左递归对其进行改写得到文法(4.1)’。然后求出如表4-1所示的各个FIRST集和FOLLOW集。再检查是不是LL(1)文法,并按照LL(1)文法构造如表4-2所示的预测分析表。最后根据预测分析器的工作流程,实现预测分析器的控制程序。

3、示例三:用C语言编制算符优先分析法的语法分析程序如程序三所示。其中使用了分析栈stack,用来在分析过程中存放当前句型的某一前缀,一旦句型的最左素短语在栈顶形成,便立即进行归约。

程序三算符优先分析算法

#define RIGHT 1

#define ERROR 0

#define MAXINPUT 300

#define MAXSTACK 100

#define STARTSYMBOL ′S′

int stack[MAXSTACK],a[MAXINPUT]; /* a[ ] is input line */

int IsHigherThan (int, int); /* priority detection */

int IsLowerThan (int, int); /* priority detection */

int IsEqualTo (int, int); /* priority detection */

int Reduce (int begin, int end, int len);

int IsVt (int); /* determine if stack symbol is in Vt */

int parser (void)

{

int i, k, r, NewVn; /* NewVn holds left side of a production */

i=0; k=0; /* i, k is index of a[ ] and stack[ ] separately */

stack[0]= ′#′;

do

{

int j;

r=a[i++];

if (IsVt(stack[k])) j=k; else j=k-1;

while (IsHigherThan(stack[j],r))

{

int q;

do {

q=stack[j];

if (IsVt(stack[j-1])) j--; else j-=2;

} while(!IsLowerThan(stack[j],q);

NewVn=Reduce(stack[j+1],stack[k],k-j);

k=j+1; /* reduce the leftmost prime phrase */

stack[k]=NewVn; /* it is stack[j+1] stack[j+2] … stack[k] */

} /*end of while*/

if (IsLowerThan(stack[j],r)) || IsEqualTo(stack[j],r))

stack[++k]=r;

else return ERROR;

} while (r!=′#′);

return RIGHT;

}

程序三给出的仅是采用算符优先分析方法的示意性识别算法,还有许多工作要做。如:首先要确定一种合适的数据结构,以便构造所给文法G2[<算术表达式>]的机内表示。然后,构造该文法的算符优先关系矩阵,在此可以根据算术表达式中各算符的优先级和结合性,直接手工构造算符优先关系。最后,编写程序三中所用到的各个函数,完成整个算符优先语法分析器的开发。

4、示例四:SLR(1)分析器的开发。

首先,对于分析对象,即算术表达式的文法G2[E],引入一个新的开始符号E’,得到G2[E]的拓广文法G2’[E’]:

0. E’→E 1. E→E+T 2. E→E-T 3. E→T 4. T→T*F 5. T→T/F 6. T→F 7. F→(E) 8. F→i

求出文法中各个非终结符号的FOLLOW集如下:

Follow(E)={#,),+,-} Follow(T)={#,),+,-,*,/} Follow(F)={#,),+,-,*,/} 然后,根据文法G2’[E’]构造识别其全部活前缀的DFA,以便据此构造SLR(1)分析表,参见表III。

表III G2’[E’]的SLR(1)分析表

最后,编程实现SLR(1)分析表的驱动程序,即开发LR分析器的总控程序,完成对算术表达式的识别。

实验三语义分析程序实现

一、实验目的与要求

在实现词法、语法分析程序的基础上,编写相应的语义子程序,进行语义处理,加深对语法制导翻译原理的理解,进一步掌握将语法分析所识别的语法范畴变换为某种中间代码(四元式)的语义分析方法,并完成相关语义分析器的代码开发。

二、一般实现方法

语法制导翻译模式是在语法分析的基础上,增加语义操作来实现的,实际上是对前后文无关文法的一种扩展。一般而言,首先需要根据进行的语义分析工作,完成对给定文法的必要拆分和语义动作的编写,从而为每一个产生式都配备相应的语义子程序,以便在进行语法分析的同时进行语义解释。即在语法分析过程中,每当用一个产生式进行推导或归约时,语法分析程序除执行相应的语法分析动作之外,还要调用相应的语义子程序,以便完成生成中间代码、查填有关表格、检查并报告源程序中的语义错误等工作。每个语义子程序需指明相应产生式中各个符号的具体含义,并规定使用该产生式进行分析时所应采取的语义动作。这样,语法制导翻译程序在对源程序从左到右进行的一遍扫描中,既完成语法分析任务,又完成语义分析和中间代码生成方面的工作。本实验要求从编译器的整体设计出发,重点通过对实验二中语法分析程序的扩展,完成一个编译器前端程序的编写、调试和测试工作,形成一个将源程序翻译为中间代码序列的编译系统。

三、实验内容

基本实验题目:对文法G2[<算术表达式>]中的产生式添加语义处理子程序,完成运算对象是简单变量(标识符)和无符号数的四则运算的计值处理,将输入的四则运算转换为四元式形式的中间代码。

输入:包含测试用例(由标识符、无符号数和+、?、*、/、(、)构成的算术表达式)的源程序文件。

输出:将源程序转换为中间代码形式表示,并将中间代码序列输出到文件中。若源程序中有错误,应指出错误信息。

扩展实验:在所给文法G2的基础上,增加语义分析的范围,如运算对象不再只局限于常量和简单变量,还可以是函数调用、数组元素等。另外,可进一步选择表达式串、

赋值语句、流程控制语句等其它语法结构类型进行语义分析。

四、要求

1、上机前的准备:完成语法制导翻译系统的程序流图设计,并编写语义动作。

2、调试:结合实验一和实验二中的相关内容,完成编译器前端程序的调试工作。

3、测试:对完成的编译系统要进行全面测试,供测试的例子应包括符合语义规则的语句,以及分析程序能够判别的若干错例,并给出执行结果。

4、结果输出:将所涉及到的分析过程中的信息,即词法、语法、语义分析的结果输出到文件中。对于有错误的输入字符串,应有较为明确的信息告诉外界。

五、参考实现方法

示例:对文法G2[<算术表达式>]在利用递归下降法进行语法分析的同时,生成四元式形式的中间代码序列。其语法制导翻译程序的核心部分(指表达式E、项T和因式F 的处理)的算法思想,可用程序四所示的框架描述。

程序四利用递归下降法生成简单算术表达式的四元式序列E( ) /* 识别<算术表达式> */

{

E1_PLACE=T( ); /*调用T( )分析产生算术表达式计算的第一项E1*/

while (SYM=’+’ || SYM=’-’)

{

ADVANCE; /*使输入串指针指向下一个输入符号,即调用扫描器读入下一个单词符号*/

E2_PLACE=T( ); /*调用T( )分析产生算术表达式计算的第二项*/

T1=NewTemp( ); /*分配一个新的临时变量,以便存储计算结果*/

GEN(±, E1_PLACE, E2_PLACE, T1); /*根据所给实参产生一个四元式,送入四元式表*/

E1_PLACE=T1; /*将计算结果作为下一次表达式计算的第一项*/

}

return E1_PLACE;

}

T( ) /* 识别<项>*/

{

T1_PLACE=F( );

while (SYM=’*’ || SYM=’/’)

{

ADVANCE;

T2_PLACE=F( );

T1=NewTemp( );

GEN(*/, T1_PLACE, T2_PLACE, T1);

T1_PLACE=T1;

}

return T1_PLACE;

}

F( ) /* 识别<因式>*/

{

if (SYM=’标识符’) /*在此设运算对象i为标识符,即简单变量*/

{

ADVANCE;

return Entry(i.词文); /*以标识符的词文为名字查、填符号表,可理解为返回标识符的值*/ }

else

if ( SYM=’(’ )

{

ADVANCE;

PLACE=E( );

if ( SYM=’)’ )

{

ADVANCE;

return PLACE;

}

else ERROR; /*例如:输出“缺少‘)’错误”*/

}

else ERROR; /*例如:输出“算术表达式应以‘标识符’或‘(’开头”*/ }

说明:

①程序四中出现的主要语义变量和辅助函数的功能为:

E1_PLACE:文法符号E1的一个语义属性,用于描述变量在符号表中登记项的序号(>0时)或临时变量的编号(<0时),可理解为代表其值。

void GEN(char *Op, char *Arg1, char *Arg2, char *Result):用来生成一个四元式,将其送到四元式表中。参考代码如下:

void GEN(char *Op, char *Arg1, char *Arg2, char *Result)

{

strcpy (pQuad[NXQ].op, Op); /*pQuad为全局变量,是用于存放四元式的数组*/

strcpy (pQuad[NXQ].arg1, Arg1);

strcpy (pQuad[NXQ].arg2, Arg2);

strcpy (pQuad[NXQ].result, Result);

NXQ++; /*全局变量NXQ用于指示所要产生的下一个四元式的编号*/

}

char *NewTemp(void):产生临时变量的函数,每调用一次都产生一个新的临时变量,并返回这个新的临时变量名,临时变量名产生的顺序依次为T1、T2、T3、……。例如:

char *NewTemp(void) /*产生一个临时变量*/

{

char *TempID=(char *)malloc(MAXLENGTH);

sprintf (TempID, “T%d”, NXTemp++); /*整型变量NXTemp指示临时变量的编号*/

return TempID;

}

②注意修改已在前面两个实验中完成的词法、语法分析器,以便在此基础上进行语义分析。如有必要,从总体设计的角度出发,重新定义整个系统所需要的一些数据结构、宏和全局变量等。例如:

/*定义与词法分析器的接口*/

union WORDCONTENT /*存放单词词文内容的联合*/

{

char Val1[MAXLENGTH]; /*对于标识符、关键字或由一个以上字符组成的复合单词结构的词文(如:=、<=、<>等),采用字符串作为其值的内部表示*/

int Val2; /*对于数值常量采用其二进制值作为它们的内部表示*/

float Val3;

char Val4; /*记录由一个字符组成的单词的词文(如+、-、*、/ 等)*/

};

struct WORD /*单词的二元式形式表示*/

{

int Sym; /*单词的类别编码*/

union WORDCONTENT value; /*单词的值*/

}word; /*word存放由词法分析程序扫描得到的二元式形式的单词*/

/*定义语法(语义)分析器的接口*/

struct QUA TERNION /*四元式表的结构*/

{

char op[MAXLENGTH]; /*操作符*/

char arg1[MAXLENGTH]; /*第一个操作数*/

char arg2[MAXLENGTH]; /*第二个操作数*/

char result[MAXLENGTH]; /*运算结果*/

}*pQuad; /*存放四元式的数组*/

这样用于处理表达式、项和因式的函数原型可分别写为char *E(void)、char *T(void)和char *F(void)。在此仅给出处理表达式的函数的参考代码:

char *E(void)

{

char opp[2], *E1_place, *E2_place, *Temp_place;

E1_place=T( );

while (word.Sym==PL || word.Sym==MI) /*单词为’+’或’?’*/

{

sprintf(opp, ”%c”, word.value.Val4);

scanner( ); /*调扫描器读下一个单词,并将其二元式形式的表示送入全局变量word中*/

E2_place=T( );

Temp_place=NewTemp( );

GEN(opp, E1_place, E2_place, Temp_place);

E1_place=Temp_place;

}

return E1_place;

}

大地测量学实验指导书汇总

《大地测量学基础》实验指导书 XXX大学土木工程系测绘工程教研室 2010年7月

第一部分:实验与实习须知 控制测量学是测绘工程专业一门践性很强的专业主干课程,其实验与实习是教学中必不可少的重要环节。只有通过实验与实习,才能巩固课堂所学的基本理论,进而掌握仪器操作的基本技能和测量作业的基本方法,并为深入学习测绘专业理论和有关专业知识打下基础。在进行实验之前,必须明确实验的基本规定,了解仪器的借还手序及仪器的保护、保养等知识,做到爱护仪器,达到实习之目的,防患于未然。 实验与实习规定 1.在实验或实习之前,必须复习教材中的有关内容,认真仔细地预习本指导书,以明确目的、了解任务、熟悉实验步骤和过程、注意有关事项并准备好所需文具用品。 2.实验或实习分小组进行,组长负责组织协调工作,办理所用仪器工具和借领和归还手续。 3.实验或学习应在规定的时间进行,不得无故缺席或迟到早退;应在指定的场地进行,不得擅自改变地点或离开现场。 4.必须遵守“测量仪器工具的借领与使用规则”和“测量记录与计算规则”。 5.应该服从教师的指导,严格按照本指导书的要求认真、按时、独立地完成任务。每项实验或实习,都应取得合格的成果,提交书写工整规范的实验报告或实习记录,经指导教师审阅同意后,才可交还仪器工具,结束工作。 6.在实验或实习过程中,还应遵守纪律,爱护现场的花草、树木和农作物,爱护周围的各种公共设施,任意砍折、踩踏或损环者应予赔偿。 测量仪器工具的借领与使用规则 对测量仪器工具的正确使用、精心爱护和科学保养,是测量人员必须具备的素质和应该掌握的技能,也是保证测量成果质量、提高测量工作效率和延长仪器工具使用寿命的必要条件。在仪器工具的借领与使用中,必须严格遵守下列规定。 一、仪器工具的借领 1.在指定的地点凭学生证办理借领手续,以小组为单位领取仪器工具。 2.借领时应该当场清点检查。实物与清单是否相符,仪器工具及其附件是否齐全,背带及提手是否牢固,脚架是否完好等。如有缺损,可以补领或更换。 3.离开借领地点之前,必须锁好仪器箱并捆扎好各种工具;搬运仪器工具时,必须轻取轻放,避免剧烈震动。 4.借出仪器工具之后,不得与其他小组擅自调换或转借。

控制工程基础实验指导书(答案)

控制工程基础实验指导书 自控原理实验室编印

(内部教材)

实验项目名称: (所属课 程: 院系: 专业班级: 姓名: 学号: 实验日期: 实验地点: 合作者: 指导教师: 本实验项目成绩: 教师签字: 日期: (以下为实验报告正文) 、实验目的 简述本实验要达到的目的。目的要明确,要注明属哪一类实验(验证型、设计型、综合型、创新型)。 二、实验仪器设备 列出本实验要用到的主要仪器、仪表、实验材料等。 三、实验内容 简述要本实验主要内容,包括实验的方案、依据的原理、采用的方法等。 四、实验步骤 简述实验操作的步骤以及操作中特别注意事项。 五、实验结果

给出实验过程中得到的原始实验数据或结果,并根据需要对原始实验数据或结果进行必要的分析、整理或计算,从而得出本实验最后的结论。 六、讨论 分析实验中出现误差、偏差、异常现象甚至实验失败的原因,实验中自己发现了什么问题,产生了哪些疑问或想法,有什么心得或建议等等。 七、参考文献 列举自己在本次准备实验、进行实验和撰写实验报告过程中用到的参考文献资 料。 格式如下 作者,书名(篇名),出版社(期刊名),出版日期(刊期),页码

实验一控制系统典型环节的模拟、实验目的 、掌握比例、积分、实际微分及惯性环节的模拟方法; 、通过实验熟悉各种典型环节的传递函数和动态特性; 、了解典型环节中参数的变化对输出动态特性的影响。 二、实验仪器 、控制理论电子模拟实验箱一台; 、超低频慢扫描数字存储示波器一台; 、数字万用表一只;

、各种长度联接导线。 三、实验原理 运放反馈连接 基于图中点为电位虚地,略去流入运放的电流,则由图 由上式可以求得下列模拟电路组成的典型环节的传递函数及其单位阶跃响应。 、比例环节 实验模拟电路见图所示 U i R i U o 接示波器 以运算放大器为核心元件,由其不同的输入网络和反馈网络组成的各种典型环节,如图所示。图中和为复数阻抗,它们都是构成。 Z2 Z1 Ui ,— U o 接示波器 得:

岩相学实验

实验一偏光显微镜的构造、调节和使用 一、实验目的 1.熟悉偏光显微镜的构造及各部件的用途。 2.掌握偏光显微镜的调节和使用方法。 二、偏光显微镜的构造 偏光显微镜的型号繁多,但基本构造原理是类似的。主要由支架系统(机械系统)、放大系统、照明系统、载物台以及零件盒组成。 三、偏光显微镜的使用和调节 (1)安装镜头 (2)调节照明 推出上偏光镜和勃氏镜、打开锁光圈,调节光源光栏至理想视域亮度。 (3)调节焦距(准焦) 调节焦距主要是为了使物像清晰可见,其步骤如下: ①将欲观察的薄片置于物台上,使盖玻片朝上,薄片中的矿物正对物镜,并将薄片用夹子压紧在载物台上。 ②从侧面看着镜头,旋转粗动螺丝,将镜筒下降到最低位置(高倍物镜要下降到几乎与薄片接触为止)。 ③从目镜中观察、拧动粗动螺丝使镜筒缓缓上升,直至视域中物像清楚为止。如果物像不够清楚,可转动微动螺丝使之更清晰。 应当注意,物镜与薄片之间的工作距离因放大倍数而不同,低倍物镜工作距离长,高倍物镜工作距离短,所以调节高倍物镜的焦距时切忌只看镜筒里面而下降镜简,这样最容易压碎薄片而使镜头损坏。 (4)校正中心 偏光显微镜镜筒的轴应与载物台的旋转轴相一致,这样,视域中心的被测矿物才不至于在旋转物台后离开原来位置,甚至跑出视线之外,给鉴定工作带来不便。因此,偏光显微镜在使用前应进行中心校正,使镜筒铀与载物台转轴相重合。校正中心的具体步骤如下: ①准焦后,在薄片中任选一小黑点置于十字丝交点,如图1-2(a)。旋转物台360°,若在旋转物台过程中小黑点在十字丝交点始终不动,则表明镜筒轴与物台转轴重合,中心已校正好。若在物台旋转过程中小黑点离开十字丝交点或跑出视域之外,则表明中心不正。这时小黑点会围绕偏心O作圆周运动、如图1-2(b)所示。 ②若偏心不大,转动物台小黑点在视域内旋转出现时,这时应将小黑点由十字丝中心旋转180°至图1-2(c)中的a’处。

电工学实验指导书汇总Word版

电工学实验指导书 武汉纺织大学 实验一直流电路实验 (1)

实验二正弦交流电路的串联谐振 (4) 实验三功率因数的提高 (6) 实验四三相电路实验 (9) 实验五微分积分电路实验 (12) 实验六三相异步电动机单向旋转控制 (14) 实验七三相异步电动机正、反转控制 (16) 实验八单相桥式整流和稳压电路 (18) 实验九单管交流放大电路 (19) 实验十一集成运算放大器的应用 (24) 实验十二组合逻辑电路 (26) 实验十三移位寄存器 (29) 实验十四十进制计数器 (33)

实验一直流电路实验 一、实验目的: 1.验证基尔霍夫定律 2.研究线性电路的叠加原理 3.等效电源参数的测定 二、实验原理: 1.基尔霍夫定律是电路理论中最重要的定律之一,它阐明了电路整体结构必须遵守的定律,基尔霍夫定律有两条即电流定律和电压定律。 电流定律:在任一时刻,流入电路中任一节点的电流之和等于流出该节点的电流之和,换句话来说就是在任一时刻,流入到电路中任一节点的电流的代数和为零,即∑I=0。 电压定律:在任一时刻,沿任一闭合回路的循行方向,回路中各段电压降的代数和等于零,即 ∑U=0。 2.叠加原理:n个电源在某线性电路共同作用时,它们在电路中任一支路中产生的电流或在任意两点间所产生的电压降等于这些电源单独作用时,在该部分所产生的电流或电压降的代数和。三、仪器设备及选用组件箱: 1.直流稳压电源 GDS----02 GDS----03 2.常规负载 GDS----06 3.直流电压表和直流电流表 GDS----10 四、实验步骤: 1.验证基尔霍夫定律 按图1—1接线,(U S1、U S2分别由GDS---02,GDS---03提供)调节U SI=3V,U S2=10V,然后分别用电流表测取表1—1中各待测参数,并填入表格中。 2.研究线性电路的叠加原理 ⑴将U S2从上述电路中退出,并用导线将c、d间短接,接入U S1,仍保持3V,测得各项电流,电压,把所测数据填入表1—2中;

控制工程基础实验指导书(答案) 2..

实验二二阶系统的瞬态响应分析 一、实验目的 1、熟悉二阶模拟系统的组成。 2、研究二阶系统分别工作在ξ=1,0<ξ<1,和ξ> 1三种状态下的单 位阶跃响应。 3、分析增益K对二阶系统单位阶跃响应的超调量σP、峰值时间tp和调 整时间ts。 4、研究系统在不同K值时对斜坡输入的稳态跟踪误差。 5、学会使用Matlab软件来仿真二阶系统,并观察结果。 二、实验仪器 1、控制理论电子模拟实验箱一台; 2、超低频慢扫描数字存储示波器一台; 3、数字万用表一只; 4、各种长度联接导线。 三、实验原理 图2-1为二阶系统的原理方框图,图2-2为其模拟电路图,它是由惯性环节、积分环节和反号器组成,图中K=R2/R1,T1=R2C1,T2=R3C2。 图2-1 二阶系统原理框图

图2-1 二阶系统的模拟电路 由图2-2求得二阶系统的闭环传递函 12 22 122112 /() (1)()/O i K TT U S K U S TT S T S K S T S K TT ==++++ :而二阶系统标准传递函数为 (1)(2), 对比式和式得 n ωξ== 12 T 0.2 , T 0.5 , n S S ωξ====若令则。调节开环增益K 值,不仅能改变系统无阻尼自然振荡频率ωn 和ξ的值,可以得到过阻尼(ξ>1)、 临界阻尼(ξ=1)和欠阻尼(ξ<1)三种情况下的阶跃响应曲线。 (1)当K >0.625, 0 < ξ < 1,系统处在欠阻尼状态,它的单位阶跃响应表达式为: 图2-3 0 < ξ < 1时的阶跃响应曲线 (2)当K =0.625时,ξ=1,系统处在临界阻尼状态,它的单位阶跃响应表达式为: 如图2-4为二阶系统工作临界阻尼时的单位响应曲线。 (2) +2+=222n n n S S )S (G ωξω ω1 ()1sin( ) (3) 2-3n t o d d u t t tg ξωωωω--=+=式中图为二阶系统在欠阻尼状态下的单位阶跃响应曲线 e t n o n t t u ωω-+-=)1(1)(

指导书

《地质学基础》 实验教案 绵阳师范学院资源环境工程学院 2013年3月

实验一矿物的形态和物理性质 (一)目的要求 1.认识矿物的形态和物理物理性质. 2.初步学习鉴定矿物形态和物理性质的方法并掌握系统描述矿物标本的一般方法,为以后鉴定矿物打下基础. (二)课前准备 1.预习:矿物的概念。矿物的单体形态和集合形态。矿物的光学性质、力学性质和其他性质。附录一相关内容。 2.用具:条痕板,小刀,摩氏硬度计,放大镜,手磁铁,稀盐酸,报告纸等。 (三)实验步骤和方法 先由教师讲解肉眼观察与描述矿物形态和物理性质的方法。然后,学生在教师指导下观察矿物标本,矿物形态、颜色、光泽和透明度以眼睛观察为主,其他矿物性质除详细观察外,按指定的方法进行实际操作。最后由学生独立观察和描述4块矿物标本并写出实验报告。(四)实验内容 1.矿物的单体形态和集合体形态 柱状、针状:石英(具柱面横纹)、电气石、绿柱石、辉锑矿(具晶面纵纹)。 纤维状、放身状:石棉、纤维石膏、红柱石。 板状、片状、鳞片状:石膏、黑钨矿、云母、辉钼矿、鳞片状石墨。 立方体、粒状:黄铁矿(具三组直交的晶面条纹)、橄榄石、石榴子石。 双晶:石膏(接触双晶)、氟石(穿插双晶)、纳长石(聚片双晶)。 晶簇:石英晶簇、方解石晶簇、氟石晶簇。 致密块状:辉铜矿、闪锌矿。 结核和鲕状体:钙结核、鲕状赤铁矿。 分泌体:玛瑙。 钟乳状和葡萄状体:钟乳石、肾状赤铁矿、葡萄状硬锰矿。 被膜状:孔雀石、蓝铜矿。 土状:铝土矿、高岭石。 2.矿物的颜色 红:辰砂(粉末)紫:紫水晶乳白:石英 肉红色:正长石橙:雄黄褐色:褐铁矿 铅灰:方铅矿砖红:赤铁矿黄:雌黄 黑:黑色电气石铜黄:黄铜矿铁黑:磁铁矿 绿:孔雀石灰:铝土矿铜红:自然铜 晕色:方解石、云母蓝:蓝铜矿白:方解石 黄绿:绿帘石锖色:斑铜矿 3.矿物的条痕色 樱红:赤铁矿。灰黑:方铅矿。绿褐:铬铁矿。绿黑:黄铁矿 4.矿物的光泽和透明度。 金属光泽不透明:黄铜矿、辉锑矿。 半金属光泽不透明:磁铁矿、鲕状赤铁矿。 金刚光泽半透明:浅色闪锌矿。 玻璃光泽透明:水晶。

测试技术实验指导书及实验报告2006级用汇总

矿压测试技术实验指导书 学号: 班级: 姓名: 安徽理工大学 能源与安全学院采矿工程实验室

实验一常用矿山压力仪器原理及使用方法 第一部分观测岩层移动的部分仪器 ☆深基点钻孔多点位移计 一、结构简介 深基点钻孔多点位移计是监测巷道在掘进和受采动影响的整个服务期间,围岩内部变形随时间变化情况的一种仪器。 深基点钻孔多点位移包括孔内固定装置、孔中连接钢丝绳、孔口测读装置组成。每套位移计内有5~6个测点。其结构及其安装如图1所示。 二、安装方法 1.在巷道两帮及顶板各钻出φ32的钻孔。 2.将带有连接钢丝绳的孔内固定装置,由远及近分别用安装圆管将其推至所要求的深度。(每个钻孔布置5~6个测点,分别为;6m、5m、4m、3m、2m、lm或12m、10m、8m、6m、4m、2m)。 3.将孔口测读装置,用水泥药圈或木条固定在孔口。 4。拉紧每个测点的钢丝绳,将孔口测读装置上的测尺推至l00mm左右的位置后,由螺丝将钢丝绳与测尺固定在一起。 三、测试方法 安装后先读出每个测点的初读数,以后每次读得的数值与初读数之差,即为测点的位移值。当读数将到零刻度时,松开螺丝,使测尺再回到l00mm左右的位置,重新读出初读数。 ☆顶板离层指示仪 一、结构简介: 顶板离层指示仪是监测顶板锚杆范围内及锚固范围外离层值大小的一种监测仪器,在顶板钻孔中布置两个测点,一个在围岩深部稳定处,一个在锚杆端部围岩中。离层值就是围岩中两测点之间以及锚杆端部围岩与巷道顶板表面间的相对位移值。顶板离层指示仪由孔内固定装置、测量钢丝绳及孔口显示装置组成如图1所示。

二、安装方法: 1.在巷道顶板钻出φ32的钻孔,孔深由要求而定。 2.将带有长钢丝绳的孔内固定装置用安装杆推到所要求的位置;抽出安装杆后再将带有短钢丝绳的孔内固定装置推到所要求的位置。 3.将孔口显示装置用木条固定在孔口(在显示装置与钻孔间要留有钢丝绳运动的间隙)。 4.将钢丝绳拉紧后,用螺丝将其分别与孔口显示装置中的圆管相连接,且使其显示读数超过零刻度线。 三、测读方法: 孔口测读装置上所显示的颜色,反映出顶板离层的范围及所处状态,显示数值表示顶板的离层量。☆DY—82型顶板动态仪 一、用途 DY-82型顶板动态仪是一种机械式高灵敏位移计。用于监测顶底板移近量、移近速度,进行采场“初次来压”和“周期来压”的预报,探测超前支撑压力高 峰位置,监测顶板活动及其它相对位移的测量。 二、技术特征 (1)灵敏度(mm) 0.01 (2)精度(%) 粗读±1,微读±2.5 (3)量程(mm) 0~200 (4)使用高度(mm) 1000~3000 三、原理、结构 其结构和安装见图。仪器的核心部件是齿条6、指针8 以及与指针相连的齿轮、微读数刻线盘9、齿条下端带有读 数横刻线的游标和粗读数刻度管11。 当动态仪安装在顶底板之间时,依靠压力弹簧7产生的 弹力而站立。安好后记下读数(初读数)并由手表读出时间。 粗读数由游标10的横刻线在刻度管11上的位置读出,每小 格2毫米,每大格(标有“1”、“22'’等)为10毫米,微读数 由指针8在刻线盘9的位置读出,每小格为0.01毫米(共200 小格,对应2毫米)。粗读数加微读数即为此时刻的读数。当 顶底板移近时,通过压杆3压缩压力弹簧7,推动齿条6下 移,带动齿轮,齿轮带动指针8顺时针方向旋转,顶底板每 移近0.01毫米,指针转过1小格;同时齿条下端游标随齿条 下移,读数增大。后次读数减去前次读数,即为这段时间内的顶底板移近量。除以经过的时间,即得

《控制系统计算机仿真》实验指导书

实验一 Matlab使用方法和程序设计 一、实验目的 1、掌握Matlab软件使用的基本方法; 2、熟悉Matlab的数据表示、基本运算和程序控制语句 3、熟悉Matlab绘图命令及基本绘图控制 4、熟悉Matlab程序设计的基本方法 二、实验内容 1、帮助命令 使用help命令,查找sqrt(开方)函数的使用方法; 2、矩阵运算 (1)矩阵的乘法 已知A=[1 2;3 4]; B=[5 5;7 8]; 求A^2*B (2)矩阵除法 已知A=[1 2 3;4 5 6;7 8 9]; B=[1 0 0;0 2 0;0 0 3]; A\B,A/B (3)矩阵的转置及共轭转置 已知A=[5+i,2-i,1;6*i,4,9-i]; 求A.', A' (4)使用冒号选出指定元素 已知:A=[1 2 3;4 5 6;7 8 9]; 求A中第3列前2个元素;A中所有列第2,3行的元素; (5)方括号[] 用magic函数生成一个4阶魔术矩阵,删除该矩阵的第四列 3、多项式 (1)求多项式p(x) = x3 - 2x - 4的根 (2)已知A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4] , 求矩阵A的特征多项式; 求特征多项式中未知数为20时的值; 4、基本绘图命令 (1)绘制余弦曲线y=cos(t),t∈[0,2π] (2)在同一坐标系中绘制余弦曲线y=cos(t-0.25)和正弦曲线y=sin(t-0.5),t∈[0,2π] 5、基本绘图控制 绘制[0,4π]区间上的x1=10sint曲线,并要求: (1)线形为点划线、颜色为红色、数据点标记为加号; (2)坐标轴控制:显示范围、刻度线、比例、网络线 (3)标注控制:坐标轴名称、标题、相应文本; 6、基本程序设计 (1)编写命令文件:计算1+2+?+n<2000时的最大n值; (2)编写函数文件:分别用for和while循环结构编写程序,求2的0到n次幂的和。 三、预习要求 利用所学知识,编写实验内容中2到6的相应程序,并写在预习报告上。

煤矿地质学实验指导书

煤矿地质学 实验指导书 资源与地球科学学院 目录 实验一矿物 实验二火成岩 实验三沉积岩与变质岩 实验四煤的肉眼鉴定 实验五读图方法及读倾斜岩层地区地质图并作剖面实验六读褶皱地区地质图并作剖面 实验七编制勘探线剖面图 实验八编制煤层顶板等高线图——剖面法 实验九编制断煤交线图和水平切面图

实验一矿物 一、目的与要求 1. 通过观察,了解矿物形态和物理性质。 2. 通过观察,熟悉和掌握矿物的描述、鉴定方法。 3. 掌握常见矿物的基本鉴定特征。 二、实验内容 石墨、黄铁矿、滑石、石膏、方解石、萤石、磷灰石、正长石、斜长石、石英、方铅矿、普通角闪石、黑云母、白云母、普通辉石、高岭石、橄榄石、石榴子石、黄铜矿、赤铁矿、磁铁矿 三、观察与描述内容 观察和描述矿物标本以如下顺序进行: 单体形态、集合体形态、颜色、条痕色、透明度、光泽、解理(包括组数、完全程度)、断口、硬度(用小刀、指甲刻划比较)、比重(用手掂重)、最后命名。 四、注意事项 1. 实验前注意复习有关内容。 2. 观察时注意相似矿物之间的比较。 五、作业 1. 描述部分标本。 2. 比较黄铁矿和黄铜矿的区别?

实验二火成岩 一、目的与要求 1. 通过实验认识常见的火成岩的结构、构造。复习常见火成岩的造岩矿物的鉴定特征以及火成岩类型及其特征(见教材71页表2-4)。 2. 掌握火成岩的观察、鉴定和描述方法,了解火成岩命名方法。 3. 通过观察,了解常见火成岩的宏观鉴定特征。 二、实验内容 观察以下标本,并做好观察记录: 超基性岩类:橄榄岩 基性岩类:辉长岩、玄武岩 中性岩类:闪长岩、安山岩 酸性岩类:花岗岩、流纹岩 三、观察与描述内容 观察、鉴定辉长岩标本时,按以下顺序进行观察和描述,最好利用表格形式:颜色、结构、矿物成分及其百分含量、其它特点(如次生变化、孔洞、裂隙等)、命名。 四、作业 描述上述标本 实验三沉积岩与变质岩 一、目的与要求

操作系统实验指导书汇总

操作系统实验指导书 东北大学软件学院 2008年10月

实验要求 (1)预习实验指导书有关部分,认真做好实验的准备工作。 (2)实验中及时分析记录。 (3)按指导书要求书写实验报告,提交打印版(A4)。 实验的验收将分为两个部分。第一部分是上机操作,包括检查程序运行和即时提问。第二部分是提交的实验报告。

实验一进程调度(4学时) 一、实验目的 在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理机数时,就必须依照某种策略来决定哪些进程优先占用处理机。本实验模拟在单处理机情况下的处理机调度,帮助学生加深了解处理机调度的工作。 二、实验类型 设计型。 三、预习内容 预习课本处理机调度有关内容,包括进程占用处理机的策略方法。 四、实验内容与提示 本实验中共有两个实验题。 第一题:编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法对五个进程进行调度。 <一>最高优先级优先调度算法 1)优先级简介 动态优先数是指在进程创建时先确定一个初始优先数,以后在进程运行中随着进程特性的改变不断修改优先数,这样,由于开始优先数很低而得不到CPU 的进程,就能因为等待时间的增长而优先数变为最高而得到CPU运行。 例如:在进程获得一次CPU后就将其优先数减少1。或者,进程等待的时间超过某一时限时增加其优先数的值,等等。 2)详细设计 优先权调度算法: 1、设定系统中有五个进程,每一个进程用一个进程控制块( PCB)表示,

进程队列采用链表数据结构。 2、进程控制块包含如下信息:进程名、优先数、需要运行时间、已用 CPU时间、进程状态等等。 3、在每次运行设计的处理调度程序之前,由终端输入五个进程的“优 先数”和“要求运行时间”。 4、进程的优先数及需要的运行时间人为地指定。进程的运行时间以时 间片为单位进行计算。 5、采用优先权调度算法,将五个进程按给定的优先数从大到小连成就 绪队列。用头指针指出队列首进程,队列采用链表结构。 6、处理机调度总是选队列首进程运行。采用动态优先数办法,进程每 运行一次优先数减“1”,同时将已运行时间加“1”。 7、进程运行一次后,若要求运行时间不等于已运行时间,则再将它加 入就绪队列;否则将其状态置为“结束”,且退出就绪队列。 8、“就绪”状态的进程队列不为空,则重复上面6,7步骤,直到所 有进程都成为“结束”状态。 9、在设计的程序中有输入语句,输入5个进程的“优先数”和“要求 运行时间”,也有显示或打印语句,能显示或打印每次被选中进程 的进程名、运行一次后队列的变化,以及结束进程的进程名。10、最后,为五个进程任意确定一组“优先数”和“要求运行时间”,运行并调试所设计的程序,显示或打印出逐次被选中进程的进程名及其进程控制块的动态变化过程。

岩相学与晶体学期末考试试题极其答案

晶体: 内部质点在三度空间成周期性重复排列的固体或者说晶体是具有格子状构造的固体。空间格子: 晶体内部质点在空间作格子状排列。空间格子要素: 质点,行列,网面,平行六面体。形成过程: (非)自发形成晶芽。对称: 物体相同部分有规律的重复。对称要素: 对称面,对称中心,对称轴,旋转反身轴。对称型: 全部对称要素的组合。单形: 以对称要素联系着的一组晶面的总称,依空间格子规律,格子中相同面网所形成的总和。 聚形: 两个以上的单形的聚合。三大晶族: 低xx。七大晶系: 三斜,单斜,四方,三方,六方,等轴。晶面符号: 晶体定向后,晶面在空间的相对位置即可根据它与晶轴的关系予以确定。这种相对位置可以用一定的符号来表征。表征晶面空间方位的符号,称为晶面符号。整数定律: 晶面在晶轴上的截距系数之比为简单整数比。 矿物中的水: 吸附水,结晶水,沸石水,层间水,结构水。类质同象:

晶体结构中某种质点为他种类似的质点所替代,仅使晶格常数发生不大的变化。同质多象: 同种化学成分的物质,在不同的物理化学条件下,形成不同结构的晶体现象。矿物物理性质: 光学(颜色,条痕,透明度,光泽)、力学(解理,压电性,热点性,介电性)、热学性质、磁学、矿物的放射性、其他(挥发性,易燃性,吸水性)。硅酸盐结构类型: 岛(镁橄榄石,锆石),环(绿柱石,电气石),链(透辉石,透闪石),层(滑石,高岭石,云母),架状结构(霞石,石榴石)。钾长石: 肉红色、玻璃光泽,厚板状晶体,有 (001)(010)两组完全解理,无断口,解理夹角近似90度,硬度 6。"xx: 乳白色成白色、油脂光泽、铁污染后表面为黄褐色、无解理、有贝壳状断口、常见六方柱和六方双锥的聚行晶体、本多为致密快状**体,硬度 7。" 光率体: 光波震动方向与相应折射率值之间关系的一种光性指示体。显微镜调节:1装卸镜头、2调节照明灯光、3调节焦距、4校正中心、5视域直径的测定6目镜十字丝的检查7偏光镜的校正。贝克线成因: 相邻两物质折射率值不同,光通过接触界面时发生折射、反射作用引起。提高镜筒,贝克线向折射率大的物质移动。突起等级: h< 1."48负高、 1.48—

C语言实验指导书(刘联海20131106)

《C语言程序设计》实验指导书

目录 实验1 C语言编程环境和运行C程序的方法 (1) 实验2 简单的顺序结构程序设计 (3) 实验3 数据类型和表达式 (5) 实验4 选择结构程序设计 (7) 实验5 循环结构程序设计(1) (10) 实验6 循环结构程序设计(2) (13) 实验7 数组 (16) 实验8 函数 (18)

实验1 C语言编程环境和运行C程序的方法 一、实验目的 1、熟悉Visual C6.0集成开发环境的使用方法; 2、熟悉C语言程序从编辑、编译、连接到最后运行得到结果的过程及各过程的作用; 3、了解C语言程序的结构特征与书写规则,能够编写简单的C程序; 4、初步理解程序调试的思想,能找出并改正C程序中的语法错误。 二、实验内容 1、熟悉上机环境 ⑴熟悉VC++6.0集成环境,重点是其中常用菜单、工具按钮的功能; ⑵在D盘建立一个自己的工作文件夹,文件夹以班名+学号后两位+姓名来命名(如:应用1105张三);分别创建、编辑并运行下列程序,初步熟悉C源程序的结构特点和运行方式。 #include main() { printf(“This is my first program!\n") ; } 2、编写一个程序实现分两行输出自己的姓名及联系电话。 3、程序改错调试 以下给定程序的功能是在屏幕上显示“Welcome to You!”,其中存在3处错误,请指出错误所在,并调试程序使其能运行得到正确结果。 #include mian() //1 { printf(Welcome to You!\n") //2 } 4、选做题 ⑴自学教材P47内容以及附录B中的字符与ASCII码对照表,编程输出以下图形: ? ? ⑵编程输出如下通讯录功能菜单界面

控制工程-实验指导书-修订版

《控制工程基础》实验指导书常熟理工学院机械工程学院 2009.9

目录 1.MATLAB时域分析实验 (2) 2.MATLAB频域分析实验 (4) 3.Matlab校正环节仿真实验 (8) 4.附录:Matlab基础知识 (14)

实验1 MATLAB 时域分析实验 一、实验目的 1. 利用MATLAB 进行时域分析和仿真。 要求:(1)计算连续系统的时域响应(单位脉冲输入,单位阶跃输入,任意输入)。 2.掌握Matlab 系统分析函数impulse 、step 、lsim 、roots 、pzmap 的应用。 二、实验内容 1.已知某高阶系统的传递函数为 ()265432 220501584223309240100 s s G s s s s s s s ++=++++++,试求该系统的单位脉冲响应、单位阶跃响应、单位速度响应和单位加速度响应。 MATLAB 计算程序 num=[2 20 50]; den=[1 15 84 223 309 240 100]; t= (0: 0.1: 20); figure (1); impulse (num,den,t); %Impulse Response figure (2); step(num,den,t);%Step Response figure (3); u1=(t); %Ramp.Input hold on; plot(t,u1); lsim(num,den,u1,t); %Ramp. Response gtext(‘t’); figure (4); u2=(t.*t/2);%Acce.Input u2=(0.5*(t.*t)) hold on; plot(t,u2); lsim(num,den,u2,t);%Acce. Response

岩相学实验指导书

实验二偏光显微镜的认识、调节和校正 一、实验目的 1.熟悉偏光显微镜的构造及各部件的用途。 2.掌握偏光显微镜的调节和使用方法。 二、实验原理 1.偏光显微镜的构造 偏光显微镜的型号很多,但其主要构成部件大同小异,下面以实验室现有型偏光显微镜为例,对照实物做逐一介绍。 镜座:支持显微镜全部重力的基座,其外形一般为马蹄形或圆台形。 镜臂:连接镜筒与镜座的弓形臂,可向后自由倾斜。但倾斜角度不宜过大,以防显微镜向后翻倒。 反光镜:一个具有平、凹两面的的小圆镜。可以任意转动,以便对准光源,把光反射到显微镜的光路中去。一般进行中、低倍观察时,用平面反光镜;若进行高倍观察,应使用凹面反光镜使光线少许聚敛,增加视域亮度。 下偏光镜:位于反光镜之上,从反光镜反射来的自然光,通过下偏光镜后即成为振动方向固定的偏光。下偏光镜可以转动,以便调节其振动方向。 锁光圈:在下偏光镜之上,可自由开合,用以控制进入视域的光量。 聚光镜:在锁光圈之上,可以把下偏光镜透出的偏光聚敛成锥形偏光。用以观察晶体的干涉图。聚光镜可自由推进或拉出光路系统。 载物台:一个可以转动的圆形平台。边缘有0°~360°的刻度,并附有游标尺,可以读出旋转的角度。有固定螺丝可以固定物台。物台上有一对弹簧夹,用来夹持矿物薄片。 镜筒:联结在镜臂上的一个长形圆筒。转动镜臂上的粗动螺丝或微动螺丝可使镜筒上升和下降,用以调节焦距。镜筒上端装有目镜,下端装有物镜,中间有试板孔、上偏光镜和勃式镜。 物镜:决定显微镜成像性能的重要构件。每台显微镜上至少有三个不同放大倍数的物镜,物镜上均刻有放大倍数、数值孔径(N·A)等。一般显微镜通常备有低倍(4×),中倍(10×、25×)和高倍(40×、63×)等物镜。 目镜:一般有5×、10×两个目镜,目镜中带有十字丝或分度尺,并附有测微尺和网格尺

DDSZ1实验指导书

Tianhuang Teaching Apparatuses 天煌教仪 电机系列实验 DDSZ-1型 电机及电气技术实验装置Motor And Electric Technique Experimental Equipment 实验指导书 天煌教仪 浙江天煌科技实业有限公司

DDSZ-1型电机及电气技术实验装置受试电机铭牌数据一览表

DDSZ-1型电机及电气技术实验装置交流及直流电源操作说明 实验中开启及关闭电源都在控制屏上操作。开启三相交流电源的步骤为: 1)开启电源前。要检查控制屏下面“直流电机电源”的“电枢电源”开关(右下角)及“励磁电源”开关(左下角)都须在“关”断的位置。控制屏左侧端面上安装的调压器旋钮必须在零位,即必须将它向逆时针方向旋转到底。 2)检查无误后开启“电源总开关”,“关”按钮指示灯亮,表示实验装置的进线接到电源,但还不能输出电压。此时在电源输出端进行实验电路接线操作是安全的。 3)按下“开”按钮,“开”按钮指示灯亮,表示三相交流调压电源输出插孔U、V、W及N上已接电。实验电路所需的不同大小的交流电压,都可适当旋转调压器旋钮用导线从这三相四线制插孔中取得。输出线电压为0-450V(可调)并可由控制屏上方的三只交流电压表指示。当电压表下面左边的“指示切换”开关拨向“三相电网电压”时,它指示三相电网进线的线电压;当“指示切换”开关拨向“三相调压电压”时,它指示三相四线制插孔U、V、W和N输出端的线电压。 4)实验中如果需要改接线路,必须按下“关”按钮以切断交流电源,保证实验操作安全。实验完毕,还需关断“电源总开关”,并将控制屏左侧端面上安装的调压器旋钮调回到零位。将“直流电机电源”的“电枢电源”开关及“励磁电源”开关拨回到“关”断位置。 开启直流电机电源的操作: 1)直流电源是由交流电源变换而来,开启“直流电机电源”,必须先完成开启交流电源,即开启“电源总开关”并按下“开”按钮。 2)在此之后,接通“励磁电源”开关,可获得约为220V、0.5A不可调的直流电压输出。接通“电枢电源”开关,可获得40~230V、3A可调节的直流电压输出。励磁电源电压及电枢电源电压都可由控制屏下方的1只直流电压表指示。当将该电压表下方的“指示切换”开关拨向“电枢电压”时,指示电枢电源电压,当将它拨向“励磁电压”时,指示励磁电源电压。但在电路上“励磁电源”与“电枢电源”,“直流电机电源”与“交流三相调压电源”都是经过三相多绕组变压器隔离的,可独立使用。 3)“电枢电源”是采用脉宽调制型开关式稳压电源,输入端接有滤波用的大电容,为了不使过大的充电电流损坏电源电路,采用了限流延时的保护电路。所以本电源在开机时,从电枢电源开合闸到直流电压输出约有3~4秒钟的延时,这是正常的。 4)电枢电源设有过压和过流指示告警保护电路。当输出电压出现过压时,会自动切断输出,并告警指示。此时需要恢复电压,必须先将“电压调节”旋钮逆时针旋转调低电压到正常值(约240V以下),再按“过压复位”按钮,即能输出电压。当负载电流过大(即负载电阻过

机械控制工程基础实验指导书

机械控制工程基础实验 指导书 Company number【1089WT-1898YT-1W8CB-9UUT-92108】

河南机电高等专科学校《机械控制工程基础》 实验指导书 专业:机械制造与自动化、起重运输机械设计与制造等 机械制造与自动化教研室编 2012年12月

目录

实验任务和要求 一、自动控制理论实验的任务 自动控制理论实验是自动控制理论课程的一部分,它的任务是: 1、通过实验进一步了解和掌握自动控制理论的基本概 念、控制系统的分析方法和设计方法; 2、重点学习如何利用MATLAB工具解决实际工程问题和 计算机实践问题; 3、提高应用计算机的能力及水平。 二、实验设备 1、计算机 2、MATLAB软件 三、对参加实验学生的要求 1、阅读实验指导书,复习与实验有关的理论知识,明确每次实验的目的,了解内容和方法。 2、按实验指导书要求进行操作;在实验中注意观察,记录有关数据和图 像,并由指导教师复查后才能结束实验。 3、实验后关闭电脑,整理实验桌子,恢复到实验前的情况。 4、认真写实验报告,按规定格式做出图表、曲线、并分析实验结果。字迹 要清楚,画曲线要用坐标纸,结论要明确。 5、爱护实验设备,遵守实验室纪律。 实验模块一 MATLAB基础实验 ——MATLAB环境下控制系统数学模型的建立 一、预备知识 的简介

MATLAB为矩阵实验室(Matrix Laboratory)的简称,由美国MathWorks公司出品的商业数学软件。主要用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。 来源:20世纪70年代,美国新墨西哥大学计算机科学系主任Cleve Moler 为了减轻学生编程的负担,用FORTRAN编写了最早的MATLAB。1984年由 Little、Moler、Steve Bangert合作成立了的MathWorks公司正式把MATLAB推向市场。到20世纪90年代,MATLAB已成为国际控制界的标准计算软件。 地位:和Mathematica、Maple并称为三大数学软件,在数学类科技应用软件中,在数值计算方面首屈一指。 功能:矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等。 应用范围:工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 图1-1 MATLAB图形处理示例 的工作环境 启动MATLAB,显示的窗口如下图所示。 MATLAB的工作环境包括菜单栏、工具栏以及命令运行窗口区、工作变量区、历史指令区、当前目录窗口和M文件窗口。 (1)菜单栏用于完成基本的文件输入、编辑、显示、MATLAB工作环境交互性设置等操作。 (2)命令运行窗口“Command Window”是用户与MATLAB交互的主窗口。窗口中的符号“》”表示MATLAB已准备好,正等待用户输入命令。用户可以在“》”提示符后面输入命令,实现计算或绘图功能。 说明:用户只要单击窗口分离键,即可独立打开命令窗口,而选中命令窗口中Desktop菜单的“Dock Command Window”子菜单又可让命令窗口返回桌面(MATLAB桌面的其他窗口也具有同样的操作功能);在命令窗口中,可使用方向

水泥工艺技术实验指导书

水泥工艺技术实验 指导书 1

水泥工艺技术实验指导书 <水泥工艺技术>实验须知 一、实验目的及要求 水泥工艺实验是水泥工艺技术课程重要的实践教学环节。实验既是课程的重要组成部分,也是学习和研究的重要方法。经过实验: 1、使学生增加感性认识,验证所学理论知识; 2、熟悉仪器原理、性能和操作方法,掌握基本的试验方法; 3、进行科学研究的基本训练,培养分析问题和解决问题的能力。 为了达到上述目的,要求学生做到以下几点: 1、认真阅读实验指导书,了解实验目的、内容及操作程序; 2、在老师的指导下,独立、全面、规范地完成实验内容,详细做好实验记录; 3、按要求整理实验数据,填写好实验报告。 二、实验要求 1、实验分小组进行,每组安排一位小组长,负责组织、协调实验的有关工作; 2、岩相实验分两大组,每人独立完成实验,工艺实验分三组, 3、对实验规定的内容,小组成员要积极参与,分工协作,实验报告独立完 成。 三、实验室规定

为了加强实训中心的建设和管理,确保实训(实验)教学质量和实训(实验)教学改革方案顺利进行,使学生能够养成良好的实训(实验)习惯,达到全面提高学生整体素质的目的,对进行实训(实验)的学生特定如下守则。 第一条学生应按照课程教学要求为,准时上实训(实验)课,不准迟到、早退、无故缺席。 第二条树立良好的学风。实验前认真预习,力争目的明确,原理清楚,方案可行;认真听讲,积极思维;实验中头脑清楚,细致观察,仔细操作,严谨求实,勇于创新;按时完成实验,结果合理可靠;原始记录真实完整;按时交实验报告,内容简明,数据完整,字迹清楚,讨论就实验质量、实验成功失败要点、发现的问题等具体深入展开; 第三条进入实训(实验)室必须着装整齐,不准穿拖鞋进入实训(实验)室; 第四条实训(实验)室内不准聊天、进食、喧哗和打闹,不准抽烟、随地吐痰和乱扔纸屑杂物; 第五条实训(实验)过程中的废料必须倒入指定的地点,不准随意排放; 第六条爱护实训(实验)器材,节约实训(实验)材料,使用仪器设备时要严格遵守操作规程。仪器设备发生故障、损坏、丢失应及时报告指导教师,并按学院有关规定进行处理; 第七条在指定位置进行指定项目的实训(实验),不准擅自离岗、窜岗。非本次实训(实验)所用仪器设备,未经允许不准动用; 第八条实训(实验)时应精心操作,细心观察现象,认真记录,原始记录要真实完整,不准随意涂改,所得数据必须经指导教师签字认可。实训(实验)结束后认真清理实训(实验)器材,将仪器恢复原状,经检查批准后方可离开实训(实验)室;

PLC实验指导书

可编程序控制器(PLC)实验指导书 华晨辉编 电子科技大学成都学院电子信息工程系 2010年11月

前言 《可编程序控制器(PLC)实验指导书》是根据专业课程《机电一体化现代设计方法》的教学大纲以及教学计划,共安排16个课时的实验学习课程。 《可编程序控制器(PLC)实验指导书》基于GX-DEVELOPER创建PLC程序的软件及GX Simulator调试的软件,实验中安排学生首先学习使用GX-DEVELOPER 软件进行梯形图制作,掌握PLC基本编程技能和操作方法,然后学会使用GX Simulator调试的软件仿真PLC实例,掌握在实际应用中PLC的输入输出及时序图控制等基本操作,为同学们在今后工程实践中的软件应用打下良好的基础。 编者

实验一 PLC的工程及梯形图的制作 【实验目的】 1.熟悉GX-DEVELOPER编程PLC软件。 2.学会在GX-DEVELOPER软件中创建、打开、保存、结束PLC工程。 3.掌握梯形图制作步骤。 【实验内容】 1.熟悉GX-DEVELOPER编程软件界面; 【项目说明】: ①. 工程名。(图示中“工程未设置”是指还未命名该工程) ②. 工程数据一览:是指将工程内的数据按类别用浏览的形式表示; 在其任意一项数据上按右键可以对该工程数据进行新建/复制/删除/改变数据名等操作; 工程数据一览可以用左键拖动来改变其放置的位置,也可以改变其大小。 ③. 单击此处可以关闭工程数据一览。 ④. 单击此项目符号可以显示/不显示工程数据一览。 ⑤. 梯形图程序编写栏。 ⑥. 创建梯形图的工具按钮。 2.创建工程; 【设定要求】:新建工程时,首先需设定必要的PLC系列名、PLC类型和工程名。 【操作步骤】:[工程]——[新建工程];或者点击工具按钮或者用快捷键Ctrl+N。 【项目说明】: ①. PLC系列:点击下拉菜单可以选择适当的PLC系列。 ②. PLC类型:点击下拉菜单可以选择特定PLC系列的类型。 ③. 程序类型:可以选择梯形图或SFC程序。

哈工大_机电系统控制基础实验_指导书

前言 《机电系统控制基础》既是一门理论性较强、又紧密联系工程实际的实践性较强的课程,本课程的重点在于培养学生对机电系统进行建模、分析与控制的能力。难点在于如何使机电类专业的学生结合工程实际,特别是结合机械工程实际,从整体分析系统的动态行为,理解和掌握略显深奥、难懂的经典控制理论,并应用经典控制论中的基本概念和基本方法来分析、研究和解决机械工程中的实际问题。 通过实验教学环节使学生验证课堂教学的理论,使学生能够建立机电系统控制的整体概念,加深对经典控制论中基本概念和基本方法的理解,并掌握其在分析、研究和解决实际机械工程控制问题中的应用。通过三方面的实验:原理性仿真实验,面向机电系统中典型物理对象/系统的特性测试与分析实验,和典型机电系统的控制三方面实验。将所学的课程内容融会贯通,培养学生分析和解决问题的能力。

1 机电系统控制基础原理性仿真实验 1.1 实验目的 通过仿真实验,掌握在典型激励作用下典型机电控制系统的时间响应特性,分析系统开环增益、系统阻尼、系统刚度、负载、无阻尼自振频率等机电参数对响应、超调量、峰值时间、调整时间、以及稳态跟踪误差的影响;掌握系统开环传递函数的各参数辨识方法,最后,学会使用matlab软件对机电系统进行仿真,加深理解系统动态响应特性与系统各参数的关系。 1.2系统典型输入的响应实验 1.2.1 实验原理 1.一阶系统的单位脉冲响应 惯性环节(一阶系统)单位脉冲响应simulink实现图,如图1-1所示 (a)可观测到输出曲线 (b)输入、输出曲线均可观测到 图1-1惯性环节(一阶系统)单位脉冲响应simulink实现图 2.一阶系统的单位阶跃响应 一阶系统的单位阶跃响应simulink实现图如图1-2所示。

相关主题