0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

電機(jī)運(yùn)行時(shí)間進(jìn)行排列 是分為兩個(gè)部分來(lái)完成這個(gè)程序的設(shè)計(jì)的

aYPB_plc ? 來(lái)源:陳年麗 ? 2019-07-19 08:57 ? 次閱讀

前幾天有個(gè)學(xué)員咨詢一個(gè)程序設(shè)計(jì)的問題,程序的控制要求如下:需要控制5臺(tái)電機(jī)的運(yùn)行,每臺(tái)電機(jī)運(yùn)行時(shí)需要記錄運(yùn)行時(shí)間,電機(jī)啟動(dòng)運(yùn)行時(shí),根據(jù)記錄的運(yùn)行時(shí)間,從小到大,每個(gè)2s依次啟動(dòng)電機(jī)的運(yùn)行。

我想對(duì)于這個(gè)程序的控制要求來(lái)講,他的難點(diǎn)在于如何對(duì)這些電機(jī)運(yùn)行時(shí)間進(jìn)行排列,排列好了后,如何根據(jù)排列的順序去起動(dòng)電機(jī)的運(yùn)行,從這個(gè)控制要求中我們可以看出,這主要是分為兩個(gè)部分來(lái)完成這個(gè)程序的設(shè)計(jì)的:

第一部分、用于對(duì)電機(jī)的運(yùn)行時(shí)間進(jìn)行從小到大順序的排列

第二部分、根據(jù)排列好的數(shù)據(jù),如何判斷需要起動(dòng)那一臺(tái)電機(jī)

前幾天有個(gè)學(xué)員咨詢一個(gè)程序設(shè)計(jì)的問題,程序的控制要求如下:需要控制5臺(tái)電機(jī)的運(yùn)行,每臺(tái)電機(jī)運(yùn)行時(shí)需要記錄運(yùn)行時(shí)間,電機(jī)啟動(dòng)運(yùn)行時(shí),根據(jù)記錄的運(yùn)行時(shí)間,從小到大,每個(gè)2s依次啟動(dòng)電機(jī)的運(yùn)行。

我想對(duì)于這個(gè)程序的控制要求來(lái)講,他的難點(diǎn)在于如何對(duì)這些電機(jī)運(yùn)行時(shí)間進(jìn)行排列,排列好了后,如何根據(jù)排列的順序去起動(dòng)電機(jī)的運(yùn)行,從這個(gè)控制要求中我們可以看出,這主要是分為兩個(gè)部分來(lái)完成這個(gè)程序的設(shè)計(jì)的:

第一部分、用于對(duì)電機(jī)的運(yùn)行時(shí)間進(jìn)行從小到大順序的排列

第二部分、根據(jù)排列好的數(shù)據(jù),如何判斷需要起動(dòng)那一臺(tái)電機(jī)

這里我們以西門子S7-200SMART系列PLC為例,先說說,如何編寫一個(gè)數(shù)據(jù)排列的帶參數(shù)的子程序。

數(shù)據(jù)排列帶參數(shù)子程序設(shè)計(jì)思路:

西門子S7-200系列的PLC中不像三菱的FX系列PLC具有數(shù)據(jù)排列的指令,因此我們要實(shí)現(xiàn)這個(gè)數(shù)據(jù)的排列功能,必須自己去搭建一個(gè)這樣的功能塊,在搭建這個(gè)功能塊的時(shí)候,會(huì)使用到間接尋址和循環(huán)指令,同時(shí)還需要應(yīng)用到帶參數(shù)的子程序。那么如何編寫一個(gè)數(shù)據(jù)排列的子程序呢?

假設(shè)有5個(gè)數(shù)據(jù)需要把他們的數(shù)據(jù)的大小按照順序從小到大排列,那么我們可以先在這五個(gè)數(shù)中找到最大的數(shù)放在最后面。然后在剩下的四個(gè)數(shù)中找到最大的數(shù)放到倒數(shù)第二個(gè)的位置,接著在剩下的三個(gè)數(shù)中找到最大的值放到倒數(shù)第三的位置,依次下去,這樣當(dāng)全部比較完后,我們的數(shù)據(jù)就按照從小到大的順序排列好了。那么很明顯,我們需要用兩個(gè)循環(huán)指令進(jìn)行嵌套。外層的循環(huán)指令需要循環(huán)4次,而內(nèi)層的循環(huán)指令的循環(huán)次數(shù)是會(huì)變化的,因?yàn)榈谝淮螐?個(gè)數(shù)據(jù)中找出最大值,循環(huán)4次,第二次的時(shí)候從4個(gè)數(shù)據(jù)中找出最大值,循環(huán)3次,依次下去,每次需要改變循環(huán)的次數(shù)。

如何找出最大值呢?我們可以進(jìn)行比較,首先用第二個(gè)數(shù)跟第一個(gè)數(shù)比較,如果第二個(gè)數(shù)比第一個(gè)數(shù)大,那么指針往下移動(dòng)變成第二個(gè)數(shù)跟第三個(gè)數(shù)比較,如果第二個(gè)數(shù)比第三個(gè)數(shù)大,那么對(duì)第二個(gè)數(shù)和第三個(gè)數(shù)進(jìn)行交換,依次下去,當(dāng)比較完成后,最大的數(shù)就放到最后的地址里面去了。

程序設(shè)計(jì):

(1)建立變量表

(2)根據(jù)變量表,編寫數(shù)據(jù)排列子程序

第二部分的內(nèi)容:根據(jù)排列好的數(shù)據(jù),如何判斷需要起動(dòng)那一臺(tái)電機(jī)。

在啟動(dòng)電機(jī)時(shí),我們需要把每一臺(tái)電機(jī)運(yùn)行的時(shí)間拿過來(lái)與排列好的數(shù)據(jù)進(jìn)行比較,看看他是位于我們這個(gè)排列好的數(shù)據(jù)中的的什么位置。然后根據(jù)這個(gè)位置來(lái)判斷啟動(dòng)的時(shí)候。

設(shè)計(jì)思路:

在這里面我們會(huì)用到兩個(gè)功能,第一個(gè)功能時(shí)把我們電機(jī)運(yùn)行的時(shí)間,按照編號(hào)順序放到表格中,例如VW20到VW28分別表示電機(jī)1到電機(jī)5的運(yùn)行時(shí)間,把它放到表格中,而后把我們排列好的數(shù)據(jù),拿過來(lái)與表格中的數(shù)據(jù)進(jìn)行比較(可以使用查表指令),看看最小的值時(shí)位于表格中的哪個(gè)位置,根據(jù)查表指令所查找的位置來(lái)啟動(dòng)那條電機(jī),比如查找出來(lái)的值時(shí)3則表示的就是第三臺(tái)電機(jī)的運(yùn)行時(shí)間最少,可以啟動(dòng)這第三臺(tái)電機(jī),這里我們需要用到表格指令及間接尋址。

程序:

總結(jié)

本程序作為一個(gè)框架程序,主要應(yīng)用到了以下幾個(gè)內(nèi)容,間接尋址的時(shí)候用,循環(huán)指令的應(yīng)用,帶參數(shù)子程序的應(yīng)用,查表指令的使用,希望讀者看完后,對(duì)自己以后設(shè)計(jì)程序時(shí)思路會(huì)有所啟發(fā),若有考慮不周之處或更好的方法,望指出,謝謝。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 西門子
    +關(guān)注

    關(guān)注

    93

    文章

    2996

    瀏覽量

    115485
  • 電機(jī)
    +關(guān)注

    關(guān)注

    142

    文章

    8874

    瀏覽量

    144850

原文標(biāo)題:資深工程師分享:PLC程序設(shè)計(jì)思路,初學(xué)者福利!

文章出處:【微信號(hào):plcfans,微信公眾號(hào):PLC發(fā)燒友】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何縮短Vivado的運(yùn)行時(shí)間

    在Vivado Implementation階段,有時(shí)是有必要分析一下什么原因?qū)е?b class='flag-5'>運(yùn)行時(shí)間(runtime)過長(zhǎng),從而找到一些方法來(lái)縮短運(yùn)行時(shí)間。
    的頭像 發(fā)表于 05-29 14:37 ?1.4w次閱讀
    如何縮短Vivado的<b class='flag-5'>運(yùn)行時(shí)間</b>

    獲取單片機(jī)運(yùn)行時(shí)間

    的開始階段使單片機(jī)的一個(gè)GPIO輸出高電平,在待測(cè)程序段的結(jié)尾階段再令這個(gè)GPIO輸出低電平。用示波器通過檢查高電平的時(shí)間長(zhǎng)度,就知道了這段代碼的運(yùn)
    的頭像 發(fā)表于 08-26 20:26 ?1815次閱讀
    獲取單片<b class='flag-5'>機(jī)運(yùn)行時(shí)間</b>

    程序運(yùn)行時(shí)間計(jì)時(shí)小程序

    本帖最后由 sushu 于 2013-3-9 22:40 編輯 看到一個(gè)帖子[求助] 計(jì)算程序運(yùn)行時(shí)間,想要計(jì)算指示燈點(diǎn)亮和熄滅的時(shí)間,想了想:使用事件結(jié)構(gòu)就可以
    發(fā)表于 03-09 22:39

    labview中計(jì)算程序運(yùn)行時(shí)間

    可能這個(gè)對(duì)大家來(lái)說不是什么大問題,也有很多人有很多方法來(lái)實(shí)現(xiàn)程序運(yùn)行時(shí)間的計(jì)算,要么兩個(gè)計(jì)時(shí)器,要么用到事件結(jié)構(gòu)。我這里用移位寄存器實(shí)現(xiàn)。 希望大家不要吐槽,如果大家有更好的,希望共
    發(fā)表于 05-23 21:52

    電機(jī)參數(shù)檢測(cè)程序運(yùn)行時(shí)間有多長(zhǎng)?

    、Flag_Run_Identify;這個(gè)使能位控制電機(jī)運(yùn)轉(zhuǎn),我看是通過PWM的使能來(lái)控制,這樣是不是立刻停止電機(jī)和啟動(dòng)電機(jī),在系統(tǒng)內(nèi)部有緩慢啟動(dòng)和停止機(jī)制嗎?四、
    發(fā)表于 06-19 13:47

    freertos的任務(wù)運(yùn)行時(shí)間怎么設(shè)置

    對(duì)于相同優(yōu)先級(jí)的任務(wù)采用時(shí)間片輪詢的方式運(yùn)行,那比如說有兩個(gè)優(yōu)先級(jí)都為5的任務(wù),那這兩個(gè)任務(wù)的運(yùn)行時(shí)間如何設(shè)置呢?在rt-thread中創(chuàng)建
    發(fā)表于 07-19 08:03

    電機(jī)運(yùn)行時(shí)嘯叫、噪音過大是為什么?

    電機(jī)運(yùn)行時(shí)嘯叫、噪音過大?
    發(fā)表于 11-08 08:18

    C語(yǔ)言教程之顯示程序運(yùn)行時(shí)間

    C語(yǔ)言教程之顯示程序運(yùn)行時(shí)間,很好的C語(yǔ)言資料,快來(lái)學(xué)習(xí)吧。
    發(fā)表于 04-25 16:09 ?0次下載

    如何用SysTick實(shí)現(xiàn)測(cè)量程序運(yùn)行時(shí)間

    在實(shí)際的項(xiàng)目開發(fā)過程中,常常遇到需要得到一段代碼的運(yùn)行時(shí)間,通常的方法是用示波器來(lái)測(cè)量,這篇博文將用 SysTick 來(lái)實(shí)現(xiàn) 精確測(cè)量 程序運(yùn)行時(shí)間。 STM32F4 的內(nèi)核定時(shí)
    的頭像 發(fā)表于 05-09 14:07 ?5992次閱讀
    如何用SysTick實(shí)現(xiàn)測(cè)量<b class='flag-5'>程序</b><b class='flag-5'>運(yùn)行時(shí)間</b>

    淺析STM32代碼運(yùn)行時(shí)間的技巧

    前言 ????測(cè)試代碼的運(yùn)行時(shí)間種方法: 使用單片機(jī)內(nèi)部定時(shí)器,在待測(cè)程序段的開始啟動(dòng)定時(shí)器,在待測(cè)程序段的結(jié)尾關(guān)閉定時(shí)器。為了測(cè)量的準(zhǔn)確性,要
    的頭像 發(fā)表于 11-09 09:52 ?3806次閱讀
    淺析STM32代碼<b class='flag-5'>運(yùn)行時(shí)間</b>的技巧

    ch32v307記錄程序運(yùn)行時(shí)間

    ch32v307記錄程序運(yùn)行時(shí)間程序開發(fā)中,很重要的一項(xiàng)任務(wù)就是對(duì)程序運(yùn)行時(shí)間進(jìn)行評(píng)估。對(duì)
    的頭像 發(fā)表于 08-22 15:53 ?834次閱讀

    變頻器帶動(dòng)電機(jī)運(yùn)行時(shí)發(fā)抖是怎么回事?

    頻率,則變頻器不輸出10-14Hz的頻率,直接跳過。帶動(dòng)電機(jī)運(yùn)行時(shí)產(chǎn)生抖動(dòng)的處理方案以三菱變頻器帶動(dòng)電機(jī)運(yùn)行時(shí)產(chǎn)生抖動(dòng)分析為例,如下:(一)、機(jī)械共振原因:機(jī)械共振
    的頭像 發(fā)表于 10-31 08:07 ?1282次閱讀
    變頻器帶動(dòng)<b class='flag-5'>電機(jī)運(yùn)行時(shí)</b>發(fā)抖是怎么回事?

    西門子SCL編程50臺(tái)電機(jī)運(yùn)行時(shí)間累計(jì)方法

    當(dāng)RUN信號(hào)為TRUE時(shí),開始計(jì)時(shí),為FALSE時(shí)停止計(jì)時(shí),單次運(yùn)行時(shí)間清零,長(zhǎng)按RESET為5秒時(shí),單次和總運(yùn)行時(shí)間都清零。
    發(fā)表于 11-27 09:59 ?1727次閱讀
    西門子SCL編程50臺(tái)<b class='flag-5'>電機(jī)運(yùn)行時(shí)間</b>累計(jì)方法

    jvm運(yùn)行時(shí)內(nèi)存區(qū)域劃分

    的內(nèi)存區(qū)域劃分對(duì)于了解Java程序的內(nèi)存使用非常重要,本文將詳細(xì)介紹JVM運(yùn)行時(shí)的內(nèi)存區(qū)域劃分。 JVM運(yùn)行時(shí)內(nèi)存區(qū)域主要?jiǎng)?b class='flag-5'>分為以下幾個(gè)部分
    的頭像 發(fā)表于 12-05 14:08 ?490次閱讀

    變頻器帶動(dòng)電機(jī)運(yùn)行時(shí)發(fā)抖的原因及處理方法

    變頻器作為現(xiàn)代工業(yè)控制領(lǐng)域的重要設(shè)備,廣泛應(yīng)用于電機(jī)調(diào)速控制中。然而,在實(shí)際應(yīng)用中,有時(shí)會(huì)遇到變頻器帶動(dòng)電機(jī)運(yùn)行時(shí)產(chǎn)生抖動(dòng)的問題。這種抖動(dòng)不僅影響電機(jī)的正常運(yùn)行,還可能對(duì)生產(chǎn)效率和設(shè)備
    的頭像 發(fā)表于 05-31 14:43 ?5099次閱讀