基于S7-300控制的音樂演奏系統(tǒng)仿真設(shè)計(jì)
摘要:針對西門子S7—300可編程控制器的脈沖輸出功能,將25個半音階音符的周期及對應(yīng)的脈沖數(shù)存放S7—300相應(yīng)的內(nèi)存單元中,通過合理分配S7—300的I/O端口,設(shè)計(jì)了一種音樂演奏控制系統(tǒng)。在硬件電路和軟件編程的基礎(chǔ)上,結(jié)合Wincc flexible仿真軟件進(jìn)行仿真與調(diào)試,實(shí)現(xiàn)了音樂演奏系統(tǒng)的功能需求。實(shí)踐表明,該設(shè)計(jì)具有功能強(qiáng)、運(yùn)用靈活、可靠性高、穩(wěn)定性好、編程簡單、使用方便以及體積小、功耗低等特點(diǎn)。
本文引用地址:http://2s4d.com/article/201609/304498.htm可編程序控制器PLC是一種新型的通用自動控制裝置,它將傳統(tǒng)的繼電器控制技術(shù)、計(jì)算機(jī)技術(shù)和通訊技術(shù)融為一體,是專門為工業(yè)控制而設(shè)計(jì)的。其中西門子S7—300具有功能強(qiáng)、運(yùn)用靈活、可靠性高、穩(wěn)定性好、抗干擾能力強(qiáng)、編程簡單、使用方便以及體積小、重量輕、功耗低等一系列特點(diǎn)。本次設(shè)計(jì)以S7—300作為主控器件設(shè)計(jì)一種音樂演奏控制系統(tǒng),通過該設(shè)計(jì)可以使學(xué)習(xí)者充分掌握S7—300的基本應(yīng)用方法。
1 系統(tǒng)硬件結(jié)構(gòu)圖
音樂演奏控制系統(tǒng)的組成結(jié)構(gòu)圖如圖1所示,主要包括PLC控制單元、觸摸屏、按鈕、揚(yáng)聲器、指示燈和系統(tǒng)控制計(jì)算機(jī)。其中按鈕和觸摸屏用來控制系統(tǒng)的啟動與停止,PLC用來通知觸摸屏顯示揚(yáng)聲器的工作狀態(tài),以及控制電路中的工作指示燈。
2 硬件設(shè)計(jì)
2.1 控制需求分析
為保證揚(yáng)聲器按照一定的音符演奏所需要的樂曲信息,可將從“A”(400 Hz)開始的25個半音階音符的音符周期時間與之對應(yīng)的脈沖數(shù)存放在音符表(即內(nèi)存單元V4~V103)中,內(nèi)存單元(V600~V743)和內(nèi)存單元(V800~V1059)分別存放通道0和1的樂曲信息。因?yàn)槭峭瑫r演奏2個音符,所以要將兩個樂曲信息分別用脈沖通道0和通道1輸出,并均被設(shè)置成脈沖序列輸出(PTO)。當(dāng)系統(tǒng)啟動與停止時通過PLC的I/O端口來分配功能。
根據(jù)對控制需求分析,可確定出PLC控制的輸入、輸出地址分配表如表1所示。
2.2 硬件電路設(shè)計(jì)
根據(jù)演奏音樂功能分析,可以設(shè)計(jì)出該電氣控制系統(tǒng)的硬件接線圖,如圖2所示。當(dāng)啟動按鈕SB1接通時,開始演奏音樂,并從Q0.0和Q0.1輸出脈沖信號來控制揚(yáng)聲器。當(dāng)按下停止按鈕SB2,系統(tǒng)停止。
3 軟件設(shè)計(jì)
3.1 程序設(shè)計(jì)的思路
本系統(tǒng)軟件設(shè)計(jì)采用PLC梯形圖語言編寫,針對梯形圖語言的特點(diǎn),本設(shè)計(jì)在軟件設(shè)計(jì)時采用了結(jié)構(gòu)化程序設(shè)計(jì)方法。即先把程序分為幾大的模塊,包括音符表、通道0樂曲、通道1樂曲、脈沖序列、第一音符、各通道的第二個音符排入隊(duì)列、啟動中斷連續(xù)演奏等。然后再用編程語言實(shí)現(xiàn)。在編程時力求每個模塊的獨(dú)立性和通用性,而且做到清晰易讀、易修改。
編程時首先建立25個音符周期的音符表并初始化音符表,同時初始化通道0和1樂曲表及脈沖序列,然后用隊(duì)列中斷程序附著于脈沖序列輸出(PTO)完成事件,完成音符連續(xù)演奏。
兩個脈沖通道都被設(shè)置成脈沖序列輸出(PTO),當(dāng)演奏每個通道的第一個音符時,就請求第二個音符,這樣就構(gòu)成了深度為1的隊(duì)列(一個在進(jìn)程中,一個在隊(duì)列中)。中斷子程序附著于PTO完成事件。第一個音符演奏完,中斷程序調(diào)用下一個音符,這個過程繼續(xù)下去,直到樂曲結(jié)束。
3.2 PLC內(nèi)存單元分配
音樂演奏程序使用了較多的PLC內(nèi)存單元,用于存儲音符表、指針、及樂曲表通道等,具體分工如下:
V4~V103音符表。
V500~V503指向音符表的指針。
V504~V507指向通道0樂曲表的指針。
V508~V511臨時的工作寄存器。
V554~V557指向通道1樂曲表的指針。
V600~V743通道0樂曲表。
V800~V1059通道1樂曲表。
3.3 程序流程圖
音樂演奏控制程序由1個主程序、7個子程序和2個中斷程序組成,其控制程序流程如圖3所示。
1)主程序:只在第一個掃描周期中執(zhí)行,如果主菜單關(guān)閉,主程序也結(jié)束運(yùn)行。
2)SBR0:初始化程序所使用的音符。用MOVD指令把用十六進(jìn)制數(shù)表示的音符存于內(nèi)存中,前4個字符碼表征音符的頻率,后4個字符表示持續(xù)音調(diào)0.125秒所需的脈沖數(shù)。
3)SBR1:由于樂曲的演奏需雙重的音符,所以必須定義兩個不同的通道(0和1),SBR1就是初始化通道0的樂曲,每個MOVD指令包含4個字節(jié),每個字節(jié)是音符的參考號碼(1~125),第二個字母是0.125秒時間單位的數(shù)目;第三個字節(jié)是下一個音符的參考號碼,第四個字節(jié)是下一個音符的0.125秒時間單位的數(shù)目。
4)SBR2:初始化通道1的樂曲。
5)SBR3:初始化脈沖序列輸出,特殊標(biāo)志字節(jié)定義輸出端Q0.0和Q0.1輸出的方波特性。
6)SBR4:演奏每個通道的第一個音符,通道0的音符參考號碼和與之匹配的時間單位數(shù)被裝入脈沖輸出0,同樣的過程在通道1中進(jìn)行,因此能同時演奏兩個音符。
7)SBR5:把每個通道的第二個音符排入隊(duì)列,通道0的音符參考號碼和與之匹配的時間單位數(shù)被裝入脈沖輸出0,同樣的過程在通道1進(jìn)行,因此能同時演奏兩個音符。
8)SBR6:設(shè)置的中斷對于連續(xù)地演奏樂曲是很重要的,中斷0是脈沖輸出0的脈沖計(jì)數(shù)中斷事件,中斷1是脈沖輸出1的脈沖計(jì)數(shù)中斷事件,演奏完一個音符后中斷發(fā)生。
9)INT0:演奏完通道0的一個音符后,就激活中斷程序0,下一個音符的參考號碼和計(jì)算出的時間單位數(shù)將被傳給通道0的脈沖輸出,當(dāng)樂曲的最后一個音符演奏完成時,將自動禁止中斷,程序終止。
10)INT1:演奏完通道1的一個音符后,就激活中斷程序1,下一個音符的參考號碼和計(jì)算出的時間單位數(shù)將被傳給通道1的脈沖輸出,當(dāng)樂曲的最后一個音符演奏完成時,將自動禁止中斷,程序終止。
評論