新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于S7-300控制的音乐演奏系统仿真设计

基于S7-300控制的音乐演奏系统仿真设计

作者:时间:2016-09-12来源:网络收藏

摘要:针对西门子S7—300可编程控制器的脉冲输出功能,将25个半音阶音符的周期及对应的脉冲数存放S7—300相应的内存单元中,通过合理分配S7—300的I/O端口,设计了一种音乐演奏控制系统。在硬件电路和软件编程的基础上,结合Wincc flexible仿真软件进行仿真与调试,实现了音乐演奏系统的功能需求。实践表明,该设计具有功能强、运用灵活、可靠性高、稳定性好、编程简单、使用方便以及体积小、功耗低等特点。

本文引用地址:http://www.eepw.com.cn/article/201609/304498.htm

可编程序控制器PLC是一种新型的通用自动控制装置,它将传统的继电器控制技术、计算机技术和通讯技术融为一体,是专门为工业控制而设计的。其中西门子S7—300具有功能强、运用灵活、可靠性高、稳定性好、抗干扰能力强、编程简单、使用方便以及体积小、重量轻、功耗低等一系列特点。本次设计以S7—300作为主控器件设计一种音乐演奏控制系统,通过该设计可以使学习者充分掌握S7—300的基本应用方法。

1 系统硬件结构图

音乐演奏控制系统的组成结构图如图1所示,主要包括PLC控制单元、触摸屏、按钮、扬声器、指示灯和系统控制计算机。其中按钮和触摸屏用来控制系统的启动与停止,PLC用来通知触摸屏显示扬声器的工作状态,以及控制电路中的工作指示灯。

基于S7-300控制的音乐演奏系统仿真设计

2 硬件设计

2.1 控制需求分析

为保证扬声器按照一定的音符演奏所需要的乐曲信息,可将从“A”(400 Hz)开始的25个半音阶音符的音符周期时间与之对应的脉冲数存放在音符表(即内存单元V4~V103)中,内存单元(V600~V743)和内存单元(V800~V1059)分别存放通道0和1的乐曲信息。因为是同时演奏2个音符,所以要将两个乐曲信息分别用脉冲通道0和通道1输出,并均被设置成脉冲序列输出(PTO)。当系统启动与停止时通过PLC的I/O端口来分配功能。

根据对控制需求分析,可确定出PLC控制的输入、输出地址分配表如表1所示。

基于S7-300控制的音乐演奏系统仿真设计

2.2 硬件电路设计

根据演奏音乐功能分析,可以设计出该电气控制系统的硬件接线图,如图2所示。当启动按钮SB1接通时,开始演奏音乐,并从Q0.0和Q0.1输出脉冲信号来控制扬声器。当按下停止按钮SB2,系统停止。

基于S7-300控制的音乐演奏系统仿真设计

3 软件设计

3.1 程序设计的思路

本系统软件设计采用PLC梯形图语言编写,针对梯形图语言的特点,本设计在软件设计时采用了结构化程序设计方法。即先把程序分为几大的模块,包括音符表、通道0乐曲、通道1乐曲、脉冲序列、第一音符、各通道的第二个音符排入队列、启动中断连续演奏等。然后再用编程语言实现。在编程时力求每个模块的独立性和通用性,而且做到清晰易读、易修改。

编程时首先建立25个音符周期的音符表并初始化音符表,同时初始化通道0和1乐曲表及脉冲序列,然后用队列中断程序附着于脉冲序列输出(PTO)完成事件,完成音符连续演奏。

两个脉冲通道都被设置成脉冲序列输出(PTO),当演奏每个通道的第一个音符时,就请求第二个音符,这样就构成了深度为1的队列(一个在进程中,一个在队列中)。中断子程序附着于PTO完成事件。第一个音符演奏完,中断程序调用下一个音符,这个过程继续下去,直到乐曲结束。

3.2 PLC内存单元分配

音乐演奏程序使用了较多的PLC内存单元,用于存储音符表、指针、及乐曲表通道等,具体分工如下:

V4~V103音符表。

V500~V503指向音符表的指针。

V504~V507指向通道0乐曲表的指针。

V508~V511临时的工作寄存器。

V554~V557指向通道1乐曲表的指针。

V600~V743通道0乐曲表。

V800~V1059通道1乐曲表。

3.3 程序流程图

音乐演奏控制程序由1个主程序、7个子程序和2个中断程序组成,其控制程序流程如图3所示。

基于S7-300控制的音乐演奏系统仿真设计

1)主程序:只在第一个扫描周期中执行,如果主菜单关闭,主程序也结束运行。

2)SBR0:初始化程序所使用的音符。用MOVD指令把用十六进制数表示的音符存于内存中,前4个字符码表征音符的频率,后4个字符表示持续音调0.125秒所需的脉冲数。

3)SBR1:由于乐曲的演奏需双重的音符,所以必须定义两个不同的通道(0和1),SBR1就是初始化通道0的乐曲,每个MOVD指令包含4个字节,每个字节是音符的参考号码(1~125),第二个字母是0.125秒时间单位的数目;第三个字节是下一个音符的参考号码,第四个字节是下一个音符的0.125秒时间单位的数目。

4)SBR2:初始化通道1的乐曲。

5)SBR3:初始化脉冲序列输出,特殊标志字节定义输出端Q0.0和Q0.1输出的方波特性。

6)SBR4:演奏每个通道的第一个音符,通道0的音符参考号码和与之匹配的时间单位数被装入脉冲输出0,同样的过程在通道1中进行,因此能同时演奏两个音符。

7)SBR5:把每个通道的第二个音符排入队列,通道0的音符参考号码和与之匹配的时间单位数被装入脉冲输出0,同样的过程在通道1进行,因此能同时演奏两个音符。

8)SBR6:设置的中断对于连续地演奏乐曲是很重要的,中断0是脉冲输出0的脉冲计数中断事件,中断1是脉冲输出1的脉冲计数中断事件,演奏完一个音符后中断发生。

9)INT0:演奏完通道0的一个音符后,就激活中断程序0,下一个音符的参考号码和计算出的时间单位数将被传给通道0的脉冲输出,当乐曲的最后一个音符演奏完成时,将自动禁止中断,程序终止。

10)INT1:演奏完通道1的一个音符后,就激活中断程序1,下一个音符的参考号码和计算出的时间单位数将被传给通道1的脉冲输出,当乐曲的最后一个音符演奏完成时,将自动禁止中断,程序终止。


上一页 1 2 下一页

关键词:

评论


相关推荐

技术专区

关闭