亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        俄羅斯方塊應(yīng)用程序的PLC設(shè)計與實現(xiàn)

        2022-06-23 04:22:16雷紅華楊國富
        關(guān)鍵詞:數(shù)組方塊應(yīng)用程序

        雷紅華,楊國富

        (襄陽職業(yè)技術(shù)學(xué)院,湖北 襄陽 441050)

        隨著大規(guī)模集成電路的發(fā)展,以微處理器為核心的可編程序控制器(PLC)得到了迅猛的發(fā)展,它在現(xiàn)代工業(yè)的應(yīng)用也越來越廣泛,PLC也成為了各大高職院校制造類相關(guān)專業(yè)必修的專業(yè)核心能力課程。面對高職學(xué)生自控性較差、班級學(xué)生組成結(jié)構(gòu)復(fù)雜、水平層次參差不齊、學(xué)習(xí)激情不高的特點,利用博途PLC程序、HMI人機界面和一些外部配件設(shè)計完成了俄羅斯方塊應(yīng)用程序,通過制作這個游戲項目,讓學(xué)生較好的掌握PLC工作原理、工作方式、流程控制和應(yīng)用編程等,將被動學(xué)習(xí)變?yōu)橹鲃訉W(xué)習(xí)。

        俄羅斯方塊最早是由俄羅斯人阿列克謝·帕基特諾夫于1984年6月發(fā)明的一款經(jīng)典游戲,[1]娛樂性強,規(guī)則簡單,項目的設(shè)計難度適中,既培養(yǎng)學(xué)習(xí)人員的編程思維,又使自我效能感獲得增強。[2]

        一、俄羅斯方塊應(yīng)用程序的總控制流程

        (一)俄羅斯方塊應(yīng)用程序的設(shè)備條件

        俄羅斯方塊應(yīng)用程序可一個人獨立完成,其所需設(shè)備為一臺西門子S7-1200系列PLC 1212C DC/DC/DC,及一個配套的HMI KPT 900 Basic,四個外部按鈕,一個三色燈。PLC作為一個處理器處理所有的數(shù)據(jù),HMI作為一個輸入輸出設(shè)備既可以用來顯示畫面,也可以采集玩家的操作,并移交于PLC處理。整套設(shè)備特別要注意通信類型的匹配。

        (二)俄羅斯方塊應(yīng)用程序的基本組成

        游戲中所有的俄羅斯方塊都是由四個正方形塊在一個4*4的矩形中組合而成的,共有七種,加上每個方塊都有四個不同的方向(2*2的矩形方塊四個不同方向形狀一致也算四個)共有28種。游戲操作是在一個10*20的矩形中進行的,至少需要四個功能鍵:左移、右移、旋轉(zhuǎn)、快速下落,以及一些基礎(chǔ)的“開始、結(jié)束、暫停鍵”等,而且游戲界面需顯示操作者當(dāng)前得分。

        所有畫面和動畫的顯示都借助HMI完成,添加200個矩形對象排列成10*20的狀態(tài),并為其添加相應(yīng)的動畫,將200個矩形動畫與顯示數(shù)組一一關(guān)聯(lián)起來。所有的實體與虛體都被存儲在對應(yīng)的數(shù)組里,數(shù)組顯示為實體與虛體的總合,即顯示所有的實體和虛體,虛體中的數(shù)據(jù)是根據(jù)方塊的位置和方塊的模型生成的。

        (三)俄羅斯方塊應(yīng)用程序的操作原理

        該游戲的基本規(guī)則是通過一定的旋轉(zhuǎn)和移動來放置方塊,并根據(jù)規(guī)則消除滿行。[3]在按下開始鍵后,系統(tǒng)會隨機生成一個方塊,并隨機生成一個位置。每個下落周期游離的方塊(以下簡稱“虛體”)都會下落一次,在下落的過程中,可以進行相應(yīng)的移動和旋轉(zhuǎn)操作,每個下落周期結(jié)束后,系統(tǒng)都會判斷虛體是否已經(jīng)碰觸底部,或者是已經(jīng)固定的方塊(以下簡稱“實體”)。若已觸及底部或?qū)嶓w則當(dāng)前的游離周期(從模型生成至虛體到轉(zhuǎn)化為實體稱一個游離周期)結(jié)束,接著所有的虛體都轉(zhuǎn)化成實體。若實體超出了上邊界,則游戲被結(jié)束,所有實體和虛體都會被清空。若游戲未結(jié)束,則從下往上判斷是否存在一整行的實體,若存在,則消除該行,將該行以上的實體都下移一行,然后從該行繼續(xù)判斷,若不存在,則向上判斷,直至判斷完所有實體。判斷完成后生成下一個隨機模型,開始下一次游離周期。在平移或旋轉(zhuǎn)操作后,若虛體超出邊界或與實體重合,則該次操作是不被允許的,虛體不會發(fā)生任何改變。

        (四)俄羅斯方塊應(yīng)用程序的總流程控制框圖

        玩家通過外部的開始按鈕啟動游戲,游戲一開始系統(tǒng)就會自動生成一個隨機模型和一個隨機位置,然后開始一個游離周期,在游離周期過程中,玩家可以左右移動及旋轉(zhuǎn)操作,也可以通過外部按鈕暫停游戲。在暫停期間外部的三色燈黃色閃爍,游戲進行時三色燈綠色亮起,當(dāng)游戲結(jié)束時紅燈會亮起。若玩家想要終止游戲也可以通過一個外部按鈕來結(jié)束當(dāng)前的游戲。俄羅斯方塊應(yīng)用程序總流程控制框圖如圖1所示。

        圖1 總控制流程框圖

        二、俄羅斯方塊應(yīng)用程序的模型生成

        (一)方塊模型的生成

        如圖2所示為一個俄羅斯方塊,以右下角為低位,左上角為高位,每個方塊都表示一個16位二進制數(shù),將圖2中16位二進制數(shù)轉(zhuǎn)換為一個十進制整數(shù)1112,則這個整數(shù)就表示當(dāng)前模型,同理制作另外27個模型,將28個模型存儲在一個模型倉庫數(shù)組中,相同方塊不同方向的模型在存儲時下標(biāo)相差7,例如當(dāng)前模型被存儲在了模型倉庫數(shù)組第一個位置,則其模型的下一個方向應(yīng)該是由上一個模型順時針旋轉(zhuǎn)90度后存儲到數(shù)組第八個,用同樣的方法存儲到第十五個、第二十二個。

        圖2 方塊模型

        (二)隨機模型的生成

        由于TIA博途中沒有自帶有關(guān)的隨機函數(shù),需自行設(shè)計一段生成隨機數(shù)的程序,利用一個函數(shù)RD_SYS_T讀取系統(tǒng)的時間。再利用當(dāng)前時間的納秒數(shù)值除1 000后加上秒數(shù)并除28求余(除1000是為了防止讀取的納秒數(shù)值后3位都為0,加上秒數(shù)是為了增加隨機性,以達到生成隨機數(shù)的目的),將求取的余數(shù)作為下標(biāo)。接著建立一個長度為17位模型數(shù)組,即在模型數(shù)組中前16位數(shù)表示模型的形狀,最后一位數(shù)值則表示模型在模型倉庫中的位置既下標(biāo),同樣也可以表示種類號,即在模型倉庫中抽取一個隨機模型,將隨機模型對應(yīng)的十進制整數(shù)依次除2求余,形成一個16位二進制數(shù),若余數(shù)為1,則將模型的種類號存儲到模型數(shù)組當(dāng)中。七種方塊對應(yīng)七個種類號,不同的種類號會令方塊顯示不同的顏色,通過這個方法可以再次將圖2的模型表示了出來。同時,在圖上顯示方塊,除了需要一個確定形狀的模型,還需要一個位置。再次使用隨機抽取模型的方法,在“隨機位置”數(shù)組中任意取一個位置作為模型位置。以模型左上角與模型位置為較準(zhǔn)點等比例將模型映射到虛體(可變化可移動)上作為一個確定的方塊,因每個周期模型位置都會下降一行(模型左上角是與模型位置重合的,一行有十個方塊,將模型位置+10,正好將模型位置下移一行),所以整個方塊也會下降一行。

        三、俄羅斯方塊應(yīng)用程序的功能實現(xiàn)

        (一)左、右移動功能的實現(xiàn)

        因為確定了模型位置,所以在移動過程中只需移動模型位置,整個方塊的位置也會隨之改變。當(dāng)HMI收到左移的指令時,PLC會判斷虛體是否已經(jīng)接觸左邊界或虛體左側(cè)存在實體。若已接觸左邊界或左側(cè)存在實體那么條件不滿足,不執(zhí)行移動。若模型位置-1則向左移動一格;右移同理。

        (二)旋轉(zhuǎn)功能的實現(xiàn)

        在制作模型的過程中,已將一種模型的四個不同方向方塊存儲在了模型倉庫數(shù)組中,并且各個不同方向模型在數(shù)組中下標(biāo)相差7。按下旋轉(zhuǎn)命令后,則將模型數(shù)組的最后一個數(shù)值加上7后除28求余(防止下標(biāo)越界),既可得到新的模型下標(biāo),通過新的模型下標(biāo)即可在模型倉庫數(shù)組中得到新的模型,用上面相同的方法將模型存儲到模型數(shù)組的前16位中。這樣新的模型數(shù)組中的模型就是旋轉(zhuǎn)后的模型了。若旋轉(zhuǎn)后的虛體與實體相重合,或超出邊界,則旋轉(zhuǎn)的條件不滿足,模型會被還原到旋轉(zhuǎn)之前的樣子。

        (三)下落及其完成判定

        利用一個定時器,每隔一段時間就會觸發(fā)一次下落的程序。下落前會進行一次判斷,判斷是否虛體已經(jīng)接觸底部或者下方存在實體。若未接觸或下方不存在實體,則會觸發(fā)一次下落,既將模型位置+10。若已接觸底部或下方存在實體,則會將虛體轉(zhuǎn)換為實體,既將虛體中所有不為0的值賦值給實體,然后從下往上判斷實體中是否存在一整行的情況,若存在則從該行開始,依次將上一行的值賦值給下一行。然后繼續(xù)判斷該行,若不存在,則向上判斷直至判斷完全是實體。完成后,再次生成一個隨機模型和隨機模型位置,繼續(xù)下一個游離周期。

        四、俄羅斯方塊應(yīng)用程序的PLC編程與HMI人機界面

        (一)PLC程序的編寫

        以模型生成的程序為例,首先添加一個FC的函數(shù)塊,更改名字為“模型生成”,更改編程語言為SCL語言。新建兩個DB塊,一個命名為“命令”,一個命令為“數(shù)據(jù)”。在“數(shù)據(jù)”塊中添加變量如圖3如示,在“命令”塊中添加變量如圖4所示。

        圖3 數(shù)據(jù)塊中的變量

        添加完所有程序數(shù)據(jù)后,便可開始編程了,生成模型程序如圖5所示。如圖6所示完成的PLC主控程序,按下按鈕1開始鍵后,“開始”、“生成模型”變量會被置位。當(dāng)“生成模型”變量被置位后,生成模型函數(shù)中對應(yīng)的程序會被觸發(fā),首先通過讀取時間,再將讀取到的時間做一個運算獲得一個隨機數(shù),求余數(shù)后保存至模型數(shù)組最后一個值。再通過這個值在模型倉庫中獲取相應(yīng)的模型,并存儲到一個臨時變量#m中,再將#m依次除二求取余數(shù),若求取的余數(shù)為1則將種類號存儲到模型數(shù)組相應(yīng)的位置。并把“下一個”置位以啟動其他的程序,然后將“生成模型”復(fù)位。

        圖4 命令塊中的變量

        參照上述的各個功能的描述和解釋,依次編寫所有的函數(shù)塊,并將所有函數(shù)塊在主程序中調(diào)用。并在主程序中編寫外部按鈕和三色燈的程序。實現(xiàn)按下按鈕1后置位“生成模型”和“開始”,按下按鈕2后暫停游戲,第二次按下后繼續(xù)游戲,既按下時將“暫?!比》?按下按鈕3后結(jié)束游戲,既置位“停止”。當(dāng)“暫?!睘?時,三色燈黃燈閃爍,當(dāng)“開始”為1并且“暫?!辈粸?時綠燈常亮,當(dāng)“開始”“暫?!倍疾粸?時紅燈常亮。

        (二)HMI人機界面的設(shè)計

        完成PLC的程序編寫后,需布局HMI中的畫面及一些事件。設(shè)計一個如圖7所示的畫面。

        圖7 HMI人機界面圖

        圖8 方塊顏色設(shè)定

        并為每個方塊都添加圖8所示多種不同顏色的動畫,關(guān)聯(lián)對應(yīng)變量,即可讓不同的方塊顯示不同的顏色。添加“GAME OVER”的字樣,設(shè)置其可見性,僅在游戲結(jié)束時出現(xiàn)。添加四個操作按鍵并關(guān)聯(lián)對應(yīng)的事件,以及四個流程的控制鍵及其變量關(guān)聯(lián)。添加兩個“I/O域”用于顯示難度和得分。在完成PLC程序和HMI的動畫和事件后,可將其下載至PLC和HMI中查看效果,點擊開始鍵后,整個游戲便可開始運行了。

        五、結(jié)論

        職業(yè)技術(shù)教育是通過教學(xué)使學(xué)生具有扎實的理論知識和熟練的動手操作能力,為企業(yè)培養(yǎng)生產(chǎn)一線上的復(fù)合型技能人才。[4]針對于制造類應(yīng)用性、實踐性較強的PLC課程教學(xué),既以企業(yè)典型工作任務(wù)或者項目為載體,開展“教學(xué)做一體化”課堂教學(xué),讓課程理論與企業(yè)實踐達到無縫對接。同時,又利用現(xiàn)有基礎(chǔ)開發(fā)些益智類、趣味性強的小游戲或創(chuàng)客項目,調(diào)動學(xué)生積極性,培養(yǎng)學(xué)生的開發(fā)能力,達到以能力為本位,創(chuàng)客教育活動為載體,培養(yǎng)創(chuàng)新型機器人人才的目的,[5]整體提升工業(yè)機器人技術(shù)專業(yè)人才培養(yǎng)的質(zhì)量。

        猜你喜歡
        數(shù)組方塊應(yīng)用程序
        方塊村(1)
        旋轉(zhuǎn)吧!方塊!
        有多少個方塊
        JAVA稀疏矩陣算法
        電腦報(2022年13期)2022-04-12 00:32:38
        不一樣的方塊橋
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        電腦報(2020年24期)2020-07-15 06:12:41
        刪除Win10中自帶的應(yīng)用程序
        電腦報(2019年12期)2019-09-10 05:08:20
        尋找勾股數(shù)組的歷程
        關(guān)閉應(yīng)用程序更新提醒
        電腦迷(2012年15期)2012-04-29 17:09:47
        VB數(shù)組在for循環(huán)中的應(yīng)用
        考試周刊(2012年88期)2012-04-29 04:36:47
        精品国产3p一区二区三区| 亚洲暴爽av人人爽日日碰| 91亚洲国产成人aⅴ毛片大全| 久久精品国产亚洲av蜜桃av| 午夜av天堂精品一区| 亚洲视频在线观看| 亚洲熟妇色xxxxx欧美老妇y| 99日本亚洲黄色三级高清网站| 久久精品国产亚洲综合av| 成人无码av一区二区| 国产suv精品一区二区69| 人妻系列影片无码专区| 亚洲视频在线观看第一页| 亚洲午夜久久久久久久久久| 无码人妻精品一区二区三区66 | 北岛玲中文字幕人妻系列| 少妇高潮精品正在线播放| 中文在线中文a| 欧洲日本一线二线三线区本庄铃| 一本加勒比hezyo无码视频| 国产伦理一区二区久久精品| 日本久久久久亚洲中字幕| 中文字幕精品久久久久人妻红杏1| 国产啪精品视频网站免| 国产三级精品三级在线专区| 亚洲妇女自偷自偷图片| 久久精品波多野结衣中文字幕| 国产内射视频在线观看| 国产免费av手机在线观看片| 国产成人无码一区二区三区在线| 国产精品入口蜜桃人妻| 毛片在线视频成人亚洲| 成人欧美日韩一区二区三区| 国产2021精品视频免费播放| 国产精品久久国产三级国| 色综合天天综合网国产成人网| 亚洲永久无码7777kkk| 无码一区二区三区久久精品| 虎白m粉嫩小在线播放| 看av免费毛片手机播放| 亚洲精品123区在线观看|