專利名稱::用于可編程序邏輯控制器的脈沖輸出功能的制作方法本申請是申請?zhí)枮?2826810.5、申請日為2002年12月17日、發(fā)明名稱為“用于可編程序邏輯控制器的脈沖輸出功能”的分案申請.相關(guān)申請的交叉引用本申請要求下列待審臨時申請的優(yōu)先權(quán),并且在此全部引入作為參考:2002年1月7日提交的編號為60/346,488(代理人號No.2002P00150).
背景技術(shù):
:美國專利申請US4,156,170(Strunc)依其陳述在其摘要中說明:一種微處理器控制步進(jìn)式馬達(dá)的運行.使用一種包含數(shù)目序列的查找表來產(chǎn)生該步進(jìn)式馬達(dá)的升或者降速度控制.該微處理器針對該步進(jìn)式馬達(dá)速度控制而供應(yīng)該查找表中的數(shù)目,這使得該步進(jìn)式馬達(dá)按照該微處理器所供應(yīng)的數(shù)目確定的速率來步進(jìn)。美國專利申請US4,714,867(Palmin)依其陳述在其摘要中說明:一種步進(jìn)式馬達(dá)隨著拋物線速度輪廓而加速和減速。獲得拋物線速度輪廓的脈沖之間的時間由基于微處理器的步進(jìn)式馬達(dá)控制器根據(jù)希望的起/停速度值、最大速度和達(dá)到最大速度的時間來確定。所需要的時間存儲在隨機(jī)存取存儲器中,并且被使用來在加速和減速期間向該馬達(dá)供應(yīng)遵循該拋物線速度輪廓的脈沖串.
發(fā)明內(nèi)容在本發(fā)明的一個方面,提供了一種方法,包括:獲取第一位置、第二位置以及用于在第一位置和第二位置之間的移動的最大運動參數(shù);創(chuàng)建一個包括用于所述移動的多個目標(biāo)頻率的數(shù)值表,所述數(shù)值表還包括與所述多個目標(biāo)頻率中的每一目標(biāo)頻率相對應(yīng)的脈沖寬度、脈沖計數(shù)和差分脈沖寬度;從一個脈沖發(fā)生器輸出所述數(shù)值的至少一部份。在本發(fā)明的另一個方面,提供了一種方法,包括:獲取第一頻率和第二頻率;創(chuàng)建一個包括多個位于第一和第二頻率中間的目標(biāo)頻率的數(shù)值表,所述數(shù)值表還包括與所述多個目標(biāo)頻率中的每一個目標(biāo)頻率相對應(yīng)的脈沖寬度、脈沖計數(shù)以及差分脈沖寬度;將所述數(shù)值的至少一部份輸出到一個運動裝置.在本發(fā)明的又一個方面,提供了一種方法,包括:獲取多個目標(biāo)脈沖寬度;從所述多個目標(biāo)脈沖寬度計算在兩個時間上鄰近的目標(biāo)脈沖寬度之間的多個中間脈沖寬度,所述中間脈沖寬度根據(jù)增量和子增量的時鐘計數(shù)確定;以及將所述多個中間脈沖寬度輸出到一個運動裝置.在本發(fā)明的又一個方面,提供了一種裝置,包括:一個適合于產(chǎn)生多個脈沖的脈沖發(fā)生器,每一脈沖通過在預(yù)計算出的目標(biāo)之間內(nèi)插而產(chǎn)生,每一脈沖的寬度由增量和子增量的時鐘計數(shù)相加確定.在本發(fā)明的又一個方面,提供了一種裝置,包括:一個脈沖發(fā)生器,適合于通過重復(fù)地在多個預(yù)計算出的中間脈沖輸出頻率之間內(nèi)插而產(chǎn)生從第一脈沖輸出頻率到第二脈沖輸出頻率的變化,所述多個預(yù)計算出的中間脈沖輸出頻率中的每一個預(yù)計算出的中間脈沖輸出頻率與緊跟的前一個脈沖輸出頻率相差一個預(yù)定百分比。在本發(fā)明的又一個方面,提供了一種系統(tǒng),包括:一個可連接到可編程邏輯控制器的、由子增量時鐘計數(shù)導(dǎo)出可變頻率脈沖發(fā)生器,所述脈沖發(fā)生器包括:一個連接到所述脈沖發(fā)生器的數(shù)據(jù)處理器;以及一個連接到所述數(shù)據(jù)處理器的存儲器,所述存儲器存儲多個運動控制輪廓,所述脈沖發(fā)生器對所述多個運動控制輪廓中的每一個的執(zhí)行可由所述數(shù)據(jù)處理器計算.在本發(fā)明的又一個方面,提供了一種系統(tǒng),包括:用于獲取多個目標(biāo)脈沖寬度的裝置;用于從所述多個目標(biāo)脈沖寬度計算在兩個時間上鄰近的目標(biāo)脈沖寬度之間的多個中間脈沖寬度的裝置,所述中間脈沖寬度根據(jù)增量和子增量的時鐘計數(shù)確定;以及用于將所述多個中間的脈沖寬度輸出到一個運動裝置的裝置。在本發(fā)明的又一個方面,提供了一種系統(tǒng),包括:用于獲取半對數(shù)分布的多個目標(biāo)脈沖寬度的裝置;用于從所述多個目標(biāo)脈沖寬度計算在兩個時間上鄰近的目標(biāo)脈沖寬度之間的多個中間脈沖寬度的裝置,所述中間脈沖寬度根據(jù)增量和子增量的時鐘計數(shù)確定;以及用于從一個可編程邏輯控制器的一個脈沖發(fā)生器輸出與所述多個中間脈沖寬度相對應(yīng)的多個脈沖的裝置。參考附圖,經(jīng)由以下某些典型實施例的詳細(xì)說明,可以容易地理解本發(fā)明及其可能的實施例的廣義范圍,在這些附圖中:圖1是本發(fā)明方法1000的典型實施例的流程圖;圖2是本發(fā)明系統(tǒng)2000的典型實施例的方框圖;圖3是本發(fā)明信息裝置3000的典型實施例的方框圖;圖4是本發(fā)明典型運動模塊的高速緩沖存儲器工作情況(behavior)的典型實施例的方框圖;圖5是本發(fā)明典型運動模塊的一個參考點查找圖表;圖6是本發(fā)明典型運動模塊的一個參考點查找圖表;圖7是本發(fā)明典型運動模塊的一個參考點查找圖表;圖8是本發(fā)明典型運動模塊的一個參考點查找圖表;圖9是本發(fā)明典型運動模塊的兩個參考點查找圖表;圖10是示出了本發(fā)明典型運動模塊的燈的典型布局和標(biāo)記的方框圖;圖11是示出用于本發(fā)明典型運動模塊的各輸入輸出以及相關(guān)聯(lián)的用戶電源端子的典型電路的電路圖;圖12是用于所述運動模塊的典型實施例的脈沖輸出發(fā)生框圖;圖13是用于本發(fā)明典型實施例的頻率-時間圖;圖14是用于本發(fā)明典型實施例的頻率-時間圖;圖15是用于本發(fā)明典型實施例的頻率-時間的S曲線圖。詳細(xì)說明本發(fā)明的至少一個典型實施例包括一種方法,所述方法包括獲取第一位置、第二位置以及用于在第一位置和第二位置之間的移動的最大運動參數(shù)。所述方法還包括創(chuàng)建一種包括用于所述運動的多個目標(biāo)頻率的數(shù)值表,所述數(shù)值表還包括與所述多個目標(biāo)頻率中的每一個目標(biāo)頻率相對應(yīng)的脈沖寬度、脈沖計數(shù)以及差分脈沖寬度。所述方法還包括從脈沖發(fā)生器輸出所述數(shù)值的至少一部份。本發(fā)明的至少一個典型實施例包括一種方法,所述方法包括獲取第一頻率和第二頻率.所述方法還包括創(chuàng)建一種包括位于第一和第二頻率中間的多個目標(biāo)頻率的數(shù)值表,所述數(shù)值表還包括與所述多個目標(biāo)頻率中的每一個目標(biāo)頻率相對應(yīng)的脈沖寬度、脈沖計數(shù)以及差分脈沖寬度。所述方法還包括將所述數(shù)值的至少一部份輸出到一個運動裝置。所述方法還可以包含通過因特網(wǎng)發(fā)送所述數(shù)值的至少一部份.本發(fā)明的至少一個典型實施例包括一個裝置,所述裝置包括一個子增量時鐘計數(shù)導(dǎo)出脈沖發(fā)生器.本發(fā)明的至少一個典型實施例包括一裝置,所述裝置包括一個適合于通過在預(yù)先計算出的中間脈沖輸出頻率之間內(nèi)插從而產(chǎn)生從第一脈沖輸出頻率到第二頻率的變化的脈沖發(fā)生器,每一脈沖的寬度根據(jù)在加速和減速期間時鐘計數(shù)的實時子增量相加導(dǎo)出.本發(fā)明的至少一個典型實施例包括一個系統(tǒng),所述系統(tǒng)包括一個算術(shù)邏輯單元。所述系統(tǒng)還包括一個存儲器,所述存儲器通過管道機(jī)制連接到所述算術(shù)邏輯單元,該存儲器包括一個預(yù)先計算的表,表中有目標(biāo)脈沖寬度、脈沖寬度變化以及按照約束的半對數(shù)分布而分布的脈沖計數(shù).所述系統(tǒng)進(jìn)一步地包括一狀態(tài)機(jī),其適于將每個所述目標(biāo)脈沖寬度和脈沖寬度變化以預(yù)先確定的脈沖計數(shù)間隔從所述存儲器加載到所述算術(shù)邏輯單元中,同時保持對由所述算術(shù)邏輯單元產(chǎn)生的脈沖寬度的控制.圖1是本發(fā)明方法1000的典型實施例的流程圖.在某些實施例中,可以連同對運動裝置起作用的脈沖發(fā)生器一起使用方法1000。運動裝置可以是由一可變頻率脈沖列控制的任何裝置,包括:例如步進(jìn)馬達(dá)控制器、伺服控制器、致動器控制器等等這樣的運動控制器;例如步進(jìn)器驅(qū)動器、伺服驅(qū)動器等等這樣的運動驅(qū)動器;和/或例如步進(jìn)馬達(dá)、伺服馬達(dá)、線性馬達(dá)、馬達(dá)、滾珠螺桿、伺服閥、液壓致動器、氣動閥等等這樣的致動器??梢钥闯?,脈沖發(fā)生器能產(chǎn)生稱作脈沖列的一系列脈沖。根據(jù)本發(fā)明的某些實施例,一可變頻率脈沖發(fā)生器產(chǎn)生能在頻率、計數(shù)、寬度、和/或差分寬度(在此也稱為"脈沖寬度的變化")方面變化的脈沖列.在所述運動裝置處,所述脈沖列的頻率可以控制速度并且/或者所述脈沖計數(shù)可以控制位置。在活動(activity)1100,可以由所述脈沖發(fā)生器的一用戶創(chuàng)建一運動控制輪廓(profile)。所述用戶可以提供期望的成角度的和/或線性的行進(jìn)距離以及通過這一距離的速度。在某些實施例中,所述用戶可以提供最大速度、最大加速度、加速度相對于時間的最大變化(有時稱作“最大加速度率(jerk)”或規(guī)定為“最大加速度率時間(jerktime)”)和/或最大加速度率相對于時間的最大變化.用戶可以確定地和/或經(jīng)驗地確定這些值以實現(xiàn)所期望的機(jī)器運動和/或避免非所期望的結(jié)果,比如馬達(dá)停轉(zhuǎn)、馬達(dá)滑動或其它的運動裝置問題(例如過度壓力、在傳送物品和運輸帶之間的摩擦損失、液體的急沖(flinging)等等).作為響應(yīng),可以提供一個運動控制輪廓.在某些實施例中,所述運動控制輪廓可以在位置-時間曲線圖上為運動裝置指出所期望的位置和時間.在其它的實施例中,所述運動控制輪廓可以在頻率-時間曲線圖上指出所期望的運動裝置的頻率斜率.這樣的一種運動控制輪廓可以包括頻率的開始和結(jié)束,并且可以是直線的、曲線的或是在所述頻率之間的直線和曲線部分的組合.在有些情況下,可以根據(jù)用戶的輸入,所述運動控制輪廓可以反映出一條S曲線,其中從開始頻率的"起飛"逐漸地在頻率變化上斜升,而到結(jié)束頻率的"降落"在頻率變化上逐漸地斜降,以避免在接近開始和結(jié)束頻率處的頻率突變.所述運動控制輪廓例如可以被存儲為一種時間-頻率點的表。其它可能的曲線可以包括位置-脈沖計數(shù)、頻率-脈沖計數(shù)、速度-時間、速度-位置、加速度-時間、加速度-脈沖計數(shù)、加速度-位置、加速度-頻率、和/或加速度-速度。注意:一個運動控制輪廓可以明確地提供某些運動參數(shù),并且可以暗示其它的運動參數(shù)。例如,一個運動控制輪廓可以明確地描述一開始位置、一終點位置以及在開始和終點位置之間運動發(fā)生的時間,其中隱含地描述運動的平均速度。在活動1200,所述運動控制輪廓可以被存儲在比如一個存儲器中,以供以后檢索.在活動1300,例如可以通過一種可編程序邏輯控制器(“PLC”)的脈沖發(fā)生器模塊的運動控制處理器來獲取所述運動控制輪廓。在活動1400,所述運動控制處理器可以加載來自所述運動控制輪廓的第一和第二頻率,并且可以計算多個中間頻率。所述運動控制處理器可以設(shè)法調(diào)整所述每個脈沖的脈沖寬度,以便實現(xiàn)所述頻率(與速度相對應(yīng))、加速度、和/或特定應(yīng)用的加速度規(guī)范的變化,而同時滿足中間的和/或總的脈沖計數(shù)(與距離相對應(yīng))的規(guī)范。因為每個脈沖具有有限的寬度,并且因為脈沖寬度可以在脈沖列之內(nèi)變化,所以在當(dāng)前的典型的應(yīng)用中,對脈沖寬度新值的需求可以從每秒幾次到每秒幾十萬或幾百萬次.對于一種打算供給大范圍終端使用需求的運動控制處理器來說,適當(dāng)?shù)倪\動參數(shù)的范圍(例如,頻率、加速度、時間、和/或距離等等)可以由浮點值表示和計算,和/或以一種具有許多有效位的萬用定點格式表示。在本發(fā)明的某些實施例中,可以在需要前計算所述值并保存在存儲器中以供檢索和實時使用.本發(fā)明的至少一個實施例可以在運動開始之前計算與介于所述運動控制輪廓的第一和第二頻率值之間的多個頻率相關(guān)聯(lián)的值(例如脈沖寬度、脈沖寬度的變化和/或脈沖數(shù)等等),并且可以將所述值存儲在存儲器中。在執(zhí)行所述運動期間,可以以預(yù)先確定的脈沖計數(shù)間隔從存儲器處取出這些值.在所述間隔期間、在取出的值之間所發(fā)出的各脈沖的脈沖寬度可以被計算為在每一脈沖的脈沖寬度方面的簡單的線性相加,同時實時完成在與多個中間頻率相關(guān)聯(lián)的脈沖寬度的預(yù)計算值之間的內(nèi)插。當(dāng)計算時間相對自由時,在所述運動開始之前的數(shù)值計算可以使用處理器而允許所述計算達(dá)到期望的精度水平,所述處理器在大小、成本和/或功率方面受到限制.與足夠分散的多個中間頻率相關(guān)聯(lián)的數(shù)值計算可以允許將預(yù)計算的數(shù)據(jù)存儲在存儲器中,所述存儲器在大小、成本和/或功率方面受限制。在某些情況下,通過在所述預(yù)計算出的點之間的一種簡單的加法內(nèi)插而改變每一脈沖寬度可以比僅僅通過使用多個中間頻率得到更接近所期望的運動控制輪廓的近似,同時限制了對于每一脈沖發(fā)生時要求一個可用新值的計算裝置的成本、尺寸和/或功率。如果一個脈沖被定義為包括邏輯"1"和邏輯"0"的這樣一個周期的事件,那么將一個定值簡單的加入到每一脈沖的所述脈沖寬度會產(chǎn)生一個在頻率方面的非線性變化,因為頻率是脈沖寬度的倒數(shù).將一定值持續(xù)的加入到所述脈沖寬度可以相對于時間在頻率方面產(chǎn)生一顯著地曲線變換,其具有在低頻區(qū)小的加速度和在高頻區(qū)大的加速度.為了實現(xiàn)所期望的遵循于特定的頻率輪廓,可以控制在多個中間頻率之間的所述間隔,從而控制通過將常數(shù)加入到所述脈沖寬度所產(chǎn)生的曲率。在輪廓的恒定加速區(qū),所述曲率在頻率的下限值更為明顯。通過根據(jù)半對數(shù)行進(jìn)(progression)來分配在許多頻率的點之間的間隔,(或相當(dāng)于,以前一頻率的預(yù)定百分比提高每個遞增頻率的間隔),可以實現(xiàn)一種點的分配,借此更多點被放置在所述頻率的下限值處,其中要求更加注意到曲率控制,因此與借助于在時間上平均分配的點相比,使用了較少的點而實現(xiàn)了遵循所述輪廓的期望水平.完全遵循此一半對數(shù)點分布可能導(dǎo)致在頻率變化區(qū)的高頻率部分有很少的點.對于包括加速度受控的變化(S曲線、或受控的"jerk")的頻率輪廓,在高頻率區(qū)可以包括充足的點以便描述——在所期望的精確度水平下——在大加速度區(qū)和小加速度區(qū)或無加速度(等速)區(qū)之間的所期望的受限的加速度變化.因此,可以約束(constrain)或限制在由半對數(shù)行進(jìn)暗示的預(yù)計算出的頻率點之間的遞增間隔,以便以某一與表示期望用于S曲線(或受限加速度的情形)的曲率的預(yù)期范圍一致的最大間隔提供各點.進(jìn)一步地,對點之間的最小間隔可能有實際極限,這例如是由加載一組新值所需的處理器中斷響應(yīng)時間所要求的,和/或是當(dāng)可實現(xiàn)的間隔大于當(dāng)前脈沖寬度時所要求的.因此,由所述半對數(shù)分布計算出的間隔可能被檢驗并且適當(dāng)?shù)丶s束為不小于由實現(xiàn)系統(tǒng)約束所確定的某一最小量。通過計數(shù)出某一高頻率主時鐘的時鐘事件的整數(shù)可以產(chǎn)生每一脈沖寬度,所述時鐘事件的數(shù)量可以是脈沖寬度值的存儲表示,并且通過給所述當(dāng)前值增加一正數(shù)或負(fù)數(shù)可以產(chǎn)生脈沖寬度的變化.為了以所期望的精確度水平實現(xiàn)所期望的頻率范圍、加速度和/或脈沖計數(shù),本發(fā)明的至少一個實施例可以以一個時鐘事件的整數(shù)和一個時鐘事件的子整數(shù)或分?jǐn)?shù)部分表示脈沖寬度的變化.盡管不必以每一所實現(xiàn)的脈沖寬度的非整數(shù)個時鐘事件來表示時鐘事件的分?jǐn)?shù)部分,但是該分?jǐn)?shù)部分卻可以累積在用于指定內(nèi)插間隔的每一脈沖寬度變化的相加上.如果分?jǐn)?shù)或子整數(shù)部分的累積超過一整數(shù)值,那么該整數(shù)值可以變成每一脈沖寬度的整數(shù)時鐘時間的表示數(shù)值的一部分.在活動1500,可以調(diào)節(jié)任何一個或所有計算值以符合預(yù)定的運動約束和/或參數(shù)。為此應(yīng)用,運動約束可能包括對下列各項的約束:頻率、頻率相對于時間的一階導(dǎo)數(shù)和/或頻率相對于時間的二階導(dǎo)數(shù).運動約束還可以包括對下列各項的約束:成角度的和/或線性的位置、速度、加速度、最大加速度率(加速度相對于時間的一階導(dǎo)數(shù))和/或加速度相對于時間的二階導(dǎo)數(shù).注意:使用預(yù)定的時間差分值(增量)可以近似那些表示為導(dǎo)數(shù)的約束.例如:最大加速度率可以被近似為最大容許加速度值除以選擇的時間增量.作為另一個例子,可以遵循規(guī)定的最小運動時間.運動約束可以在運動控制輪廓的任何區(qū)域應(yīng)用。例如,當(dāng)最初開始變化步進(jìn)馬達(dá)軸的位置時,為了避免諸如滑動這樣的潛在問題,最大加速度率可能被限于一預(yù)定數(shù)量,比如0.01弧度每秒3或0.01毫米每秒3.在活動1600,可以以所述計算值和/或調(diào)整值填充一個表.該表的每一行可以包含不同的中間頻率,每一中間頻率具有相應(yīng)的脈沖寬度、脈沖寬度的變化、和/或脈沖計數(shù)。兩個鄰近行可以被認(rèn)為包含一鄰近的中間頻率對.在活動1700,可以通過PLC的脈沖發(fā)生器讀取所述表以輸出一脈沖列??梢詫⒈碇堤峁┙o所述脈沖發(fā)生器的運動控制處理器,其可以包含一管道機(jī)制、一算術(shù)邏輯單元("ALU")和/或一控制狀態(tài)機(jī)。對于指示數(shù)目的脈沖,所述ALU可以通過給每一連續(xù)脈沖寬度值添加一個所提供的正或負(fù)的脈沖寬度變化來提供插入的脈沖寬度中間值.所述ALU可以添加表示主時鐘事件的一個整數(shù)和一個非整數(shù)或分?jǐn)?shù)的值,在多脈沖寬度累積分?jǐn)?shù),直到這樣的累積超過整數(shù)并且并入所述脈沖寬度為止.所述狀態(tài)機(jī)以預(yù)定的間隔支配對讀取所述表和輸出所述脈沖列的控制,所述間隔可以被無限期地延遲、中斷、和/或由命令和/或外部事件再啟動而同時保持對脈沖寬度的控制。在活動1800,可以將所述脈沖列提供到一運動裝置。脈沖列可以經(jīng)由到所述脈沖發(fā)生器的直接連接,和/或經(jīng)由諸如因特網(wǎng)連接這樣的網(wǎng)絡(luò)接線加以提供。所述脈沖列可以作為數(shù)字或模擬信號而加以提供。圖2是本發(fā)明系統(tǒng)2000的典型實施例的方框圖.系統(tǒng)2000可以包括一可編程序邏輯控制器("PLC")2100,所述PLC包括一經(jīng)由連接器2130耦合到脈沖發(fā)生器2140的主處理器。在某些實施例中,脈沖發(fā)生器2140可以連接到一諸如系統(tǒng)背板這樣的連接器2300和/或PLC2100的擴(kuò)展輸入/輸出總線。脈沖發(fā)生器2140可以集成到PLC2100。也就是說,一旦安裝,脈沖發(fā)生器2140就是PLC1100的一元件,而不是獨立式的。脈沖發(fā)生器2140可以包括一具有諸如雙端口RAM這樣的存儲器2160的運動處理器2150.運動處理器2150可以是可買到的通用微處理器。在另一個實施例中,運動處理器2150可以是專用集成電路(ASIC),所述ASIC被設(shè)計為以其硬件和/或固件實現(xiàn)根據(jù)本發(fā)明的實施例的方法的至少一部分。另一個實施例中,運動處理器2150可以是現(xiàn)場可編程門陣列(FPGA)。存儲器2160可以包含實現(xiàn)為軟件的指令,其可以采用本領(lǐng)域人所共知的眾多形式中的任何形式。脈沖發(fā)生器2140同樣可以包括諸如總線、連接器、電話線接口、無線網(wǎng)絡(luò)接口、蜂窩網(wǎng)絡(luò)接口、局域網(wǎng)接口、寬帶電纜接口等等之類的通信接口2170.脈沖發(fā)生器2140可以連接到一與PLC2100相分開的運控制器2300。運動控制器2300可以連接到一運動驅(qū)動器和/或一致動器2400.脈沖發(fā)生器2140同樣可以經(jīng)由網(wǎng)絡(luò)2500連接到一與PLC2100分離的運動控制器2600。網(wǎng)絡(luò)2500可以是公共交換電話網(wǎng)(PSTN)、無線網(wǎng)絡(luò)、蜂窩網(wǎng)絡(luò)、局域網(wǎng)、因特網(wǎng)等等。運動控制器2600可以連接到一運動驅(qū)動器和/或一致動器2700.進(jìn)而,脈沖發(fā)生器2140可以連接到一與PLC2100集成到一起的運動控制器2180。運動控制器2180可以連接到一運動驅(qū)動器和/或一致動器2200.信息裝置2900同樣可以連接到網(wǎng)絡(luò)2500,該信息裝置比如是傳統(tǒng)的電話、電話裝置、蜂窩式電話、移動終端、藍(lán)牙裝置、發(fā)報機(jī)、傳呼機(jī)、傳真機(jī)、計算機(jī)終端、個人電腦等等。信息裝置2900可用于編程脈沖發(fā)生器2140、與脈沖發(fā)生器2140相互作用和/或監(jiān)控脈沖發(fā)生器2140。圖3是本發(fā)明信息裝置3000的典型實施例的方框圖.信息裝置3000可以表示圖2中的信息裝置2900。信息裝置3000可以包括眾所周知的元件,比如一個或多個網(wǎng)絡(luò)接口3100、一個或多個處理器3200、一條或多條包含指令3400的存儲器3300和/或一個或多個輸入/輸出(I/O)裝置3500等等。在一個實施例中,網(wǎng)絡(luò)接口3100可以是電話、蜂窩電話、蜂窩式調(diào)制解調(diào)器、電話數(shù)據(jù)調(diào)制解調(diào)器、傳真調(diào)制解調(diào)器、無線收發(fā)機(jī)、以太網(wǎng)卡、電纜調(diào)制解調(diào)器、數(shù)字用戶線路接口、橋接器、網(wǎng)絡(luò)集線器、路由器或其它的類似裝置。每一處理器3200可以是可買到的通用微處理器。在另一個實施例中,該處理器可以是專用集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA),所述ASIC和FPGA被設(shè)計為以其硬件和/或固件至少實現(xiàn)根據(jù)本發(fā)明的實施例的方法的一部分。根據(jù)本發(fā)明的方法的一個或多個步驟,存儲器3300可以耦合到一處理器3200并且可以存儲適合于由處理器3200執(zhí)行的指令3400。存儲器3300可以是能夠存儲模擬或數(shù)字信息的任何裝置,比如硬盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、閃速存儲器、高密度磁盤、數(shù)字多用盤(DVD)、磁帶、軟盤以及它們的任何組合。指令3400可以以軟件實現(xiàn),其可以采用本領(lǐng)域人所共知的眾多形式中的任何形式。任何輸入/輸出(I/O)裝置3500可以是音頻和/或視頻裝置,例如包括監(jiān)視器、顯示器、鍵盤、袖珍鍵盤、觸摸板、定向設(shè)備、麥克風(fēng)、揚聲器、攝像機(jī)、照相機(jī)、掃描儀和/或打印機(jī),其包括一個輸入輸出裝置可以附于或連接到的端口。本發(fā)明的某些典型實施例包括一位置或運動模塊,它將PLC經(jīng)由一步進(jìn)驅(qū)動控制器連接到步進(jìn)馬達(dá).此模塊的某些典型實施例有時在此是指EM253運動模塊。在此所述PLC的某些典型實施例有時指S7-200。在此所述步進(jìn)馬達(dá)的某些典型實施例有時指SimostepP50馬達(dá)。在此所述步進(jìn)驅(qū)動控制器的某些典型實施例有時指Simostep調(diào)頻步進(jìn)驅(qū)動器。EM253運動模塊的特征所述EM253運動模塊可以將它本身確定為一S7-200智能模塊并且可以用于與例如本文中說明的單軸步進(jìn)馬達(dá)連接而提供本機(jī)輸入與輸出.經(jīng)由所述擴(kuò)展I/O總線,可以在所述模塊和S7-200PLC之間執(zhí)行通訊。可以提供適當(dāng)?shù)挠布员阒С钟蒔LC或者所述模塊啟動的通訊。所述EM253運動模塊可以為運動控制提供從每秒12脈沖數(shù)(pps)到每秒200k脈沖數(shù)(pps)的脈沖輸出。如果脈沖頻率的跨度不能作為單個范圍而被提供,那么所述模塊固件可以基于在模塊配置中指定的最高速度而自動地選擇工作范圍。所述模塊可以根據(jù)最大速度(MAX_SPEED)計算該范圍的最小速度(MIN_SPEED).下面的范圍可以得到支持:與EM253運動模塊的編程接口所述S7-200編程軟件可以提供三種功能以幫助模塊配置、輪廓創(chuàng)建、和模塊操作(控制和狀態(tài)監(jiān)視)。所述配置功能可以提示用戶輸入所需參數(shù)。接著所述輪廓創(chuàng)建功能可以提示用戶對于每一移動輪廓的必要信息.隨后用于每一移動輪廓的信息能被轉(zhuǎn)換為具有移動標(biāo)識號的步驟序列.一旦用戶已經(jīng)輸入用于配置和所有移動輪廓的信息,那么用于每一移動的步驟序列可以被組合在本文中說明的單個表中.指向V存儲器表的指針可以被存儲在提供給所述模塊的SDB的一段中.接著用于V存儲器和SDB的數(shù)據(jù)塊兩者都可以被下載到PLC中.使用PCALL指令及其相應(yīng)的子程序的庫指令可以被作為標(biāo)準(zhǔn)函數(shù)而提供以用于控制所述模塊的操作.用戶能夠通過啟用所述庫指令的執(zhí)行狀態(tài)來監(jiān)控所述模塊的操作.擴(kuò)展I/O總線接口所述模塊可以提供十針的帶狀電纜用于連接到在所述PLC上的所述擴(kuò)展I/O總線接口或前述的I/O擴(kuò)展模塊.還可以提供十針帶狀電纜連接器(公型),另一個I/O擴(kuò)展模塊可以連接到所述連接器里。所述模塊可以返回ID碼0x21,其將所述模塊標(biāo)識為:(a)一智能模塊(b)離散I/O(c)沒有輸入(d)具有8個離散輸出所述模塊可以提供一雙端口RAM,通過所述雙端口RAM可以實現(xiàn)與PLC的通訊.可以使用MPI或者更有效的塊數(shù)據(jù)傳輸來訪問用于所述模塊的配置信息.使用S7-200CPU,所述模塊的每一事務(wù)可以利用最多一個MPI請求和/或多個塊數(shù)據(jù)傳輸(BDT)請求。作為加電初始化的一部分,所述模塊可以全部清除所述雙端口RAM存儲體0到7中的數(shù)據(jù)。分配給所述智能模塊的SM數(shù)據(jù)區(qū)的50字節(jié)被定義在表1(所述定義是將此模塊作為I/O系統(tǒng)中的第一智能模塊而給出)。為了CUR_POS和CUR_SPEED的值相互一致,模塊H/W設(shè)計可以提供各種設(shè)施來作為一個原子操作捕獲這兩個值。表1當(dāng)檢測到數(shù)據(jù)狀態(tài)的錯誤狀態(tài)或變化時,所述模塊可以通過更新與所述模塊的位置相對應(yīng)的SM地址而表明此情況。如果是第一模塊,按要求它便會更新SMB200到SMB249以報告所述錯誤狀態(tài)。如果是第二模塊,它便會更新SMB250到SMB299;等等。所述模塊可以為由模塊啟動的與PLC的通訊使用存儲體15到127。并不要求所述模塊使用存儲體128到255。模塊配置和輪廓所述配置和輪廓信息兩者都可以被保存在PLC的V存儲器中的一個表內(nèi)。使用在PLC中SM地址內(nèi)所提供指針值,EM253運動模塊可以訪問它的配置和輪廓信息。所述配置/輪廓表可以被分成三段。第一段是配置塊,其可以包含用于設(shè)置準(zhǔn)備執(zhí)行運動命令的模塊的信息。第二段是交互塊,其可以支持用戶程序?qū)\動參數(shù)的直接設(shè)置。第三段可以包含從0到64的輪廓塊,其中的每一個都可以描述一個可由所述模塊執(zhí)行的預(yù)定的移動操作。在所述模塊執(zhí)行一個定輪廓的運動之前,它可以執(zhí)行所述計算以將提供在輪廓塊中的一般速度和位置數(shù)據(jù)轉(zhuǎn)換為實際執(zhí)行所述移動所需的特定數(shù)據(jù)和動作。每當(dāng)所述模塊首次看到所述輪廓時,就可以執(zhí)行這些計算,但是為了提高隨后的輪廓執(zhí)行的響應(yīng)度,所述模塊可以提供一個超高速緩沖存儲器以為多達(dá)四個輪廓存儲完整的執(zhí)行數(shù)據(jù).當(dāng)用戶命令執(zhí)行一個給定的輪廓時,所述模塊可以核對所述高速緩沖存儲器以判斷所述輪廓是否常駐。如果所述輪廓常駐在所述高速緩沖存儲器中,則可以立即執(zhí)行所述輪廓。如果所述輪廓不是常駐在所述高速緩沖存儲器,則在執(zhí)行所述輪廓前,所述模塊可以將它從PLC的V存儲器傳輸?shù)礁咚倬彌_存儲器.可以將所述輪廓高速緩沖存儲器實現(xiàn)為一個先進(jìn)先出隊列,并根據(jù)最后執(zhí)行輪廓的時間排序。當(dāng)用戶命令執(zhí)行一個輪廓時,不管它以前是否存在于所述高速緩沖存儲器中,所述輪廓可以成為最新項。如果即將要執(zhí)行的輪廓當(dāng)前沒有常駐在所述高速緩沖存儲器中,那么在最后一次執(zhí)行后具有最長時間的常駐輪廓被從所述高速緩沖存儲器處移走以為最新的輪廓騰出空間.圖4示出了高速緩沖存儲器工作情況的例子.所述模塊可以自動地管理所述超高速緩沖存儲器而無需由用戶所要求的任何干預(yù).如果用戶改變已經(jīng)被執(zhí)行的輪廓的輪廓信息,那么所述用戶可以負(fù)責(zé)命令對模塊的重新配置。一個模塊配置命令可以導(dǎo)致所述模塊讀取配置信息并且清空所述高速緩沖存儲器.如果用戶未改變?nèi)魏闻渲眯畔?僅僅改變輪廓信息),那么所述模塊可以清空所述高速緩沖存儲器。所述高速緩沖存儲器不必用于由交互塊控制的運動.當(dāng)發(fā)出執(zhí)行一個運動的命令時,所述模塊可以讀取包含在所述交互塊之內(nèi)的所述數(shù)據(jù)以獲取所述移動的規(guī)范。下面的表定義了可位于S7-200PLC的V存儲器內(nèi)的配置/輪廓表。所述模塊可以訪問該信息,但是所述模塊一般不能改變它.所述表的字節(jié)偏移量的列可以是從配置/輪廓區(qū)的指針?biāo)赶虻牡刂返淖止?jié)偏移量.每一項的類型字段可以規(guī)定所有雙字值的數(shù)字格式。如果MEAS_SYS配置值設(shè)置為脈沖,可以使用一個雙精度整數(shù)值(int)。如果MEAS_SYS配置值設(shè)置為工程單位,可以使用一個浮點值(fp)。表2給出的用于速度和位置值的范圍分別用每秒脈沖和脈沖單位表示。當(dāng)使用工程單位時,可以要求換算為每秒脈沖數(shù)或脈沖以確定所述值在允許的范圍之內(nèi).在絕對模式中,所述位置范圍是-231到231-1。然而,交互移動的每一位置變化或輪廓移動的每一步可以有1到230-1脈沖的范圍,除了在起始步允許0的位置變化.就相對模式而言,交互移動的每一位置變化或輪廓移動的每一步可以有1到230-1脈沖的范圍。表2如表3所示,所述配置/輪廓表的輪廓塊段可以包含從0到64的移動輪廓。如果需要超過64個移動輪廓,用戶可以通過改變保存在配置/輪廓表指針中的值而承擔(dān)調(diào)換配置/輪廓表的任務(wù)。表3命令字節(jié)所述模塊可以提供一個字節(jié)的離散輸出,它可以被用作命令字節(jié)。所述命令字節(jié)可定義如下,其中R:0=閑置,1=執(zhí)行規(guī)定在command_code中的命令,如下面表4所示.表4在每個R比特的上升沿可以生成一個中斷,以表明已經(jīng)接收到一個新的輪廓執(zhí)行的命令。同樣地,在每個R比特的下降沿可以生成一個中斷,以表明轉(zhuǎn)移到閑置狀態(tài)。所述模塊固件有能力禁止該中斷。如果當(dāng)命令有效時所述模塊檢測出轉(zhuǎn)移到閑置(R比特改變?yōu)?狀態(tài)),那么可以放棄正在進(jìn)行中的操作,如果在進(jìn)行一個運動,那么可以執(zhí)行一個減速停止.一旦完成操作,那么所述模塊在接收一個新命令前可以要求轉(zhuǎn)移到閑置.如果放棄操作,那么所述模塊在接收一個新命令前可以完成任何減速.當(dāng)命令有效時,可以忽略command_code值的任何變化。所述運動模塊對PLC模式變化或故障條件的響應(yīng)可以由PLC所施加的影響來控制,這是借助根據(jù)現(xiàn)有PLC功能定義的離散輸出??赡艿哪K反應(yīng)描述如下:(a)所述PLC從STOP變化為RUN:所述模塊的操作由用戶程序控制.(b)所述PLC從RUN變化為STOP:在轉(zhuǎn)移到STOP時所述用戶可以選擇所述離散輸出將達(dá)到的狀態(tài),或是所述輸出所保持的他們的最后狀態(tài).因此,存在下列可能性:1.當(dāng)進(jìn)行到STOP時,所述R位變成OFF-進(jìn)行中的任何運動可以被減速到停止。2.當(dāng)進(jìn)行到STOP時,R位變成ON-如果正在進(jìn)行一個運動,就完成它;如果沒有進(jìn)行運動,那么執(zhí)行由ID位規(guī)定的所述輪廓。3.所述R位處于它的最后狀態(tài)-可以完成進(jìn)行中的任何運動.所述PLC檢測到一個致命錯誤并且把所有的離散輸出變成OFF-進(jìn)行中的任何運動可以被減速到停止;只要所述XA_OD信號保持有效就可以防止進(jìn)一步地移動。(d)如果失去與所述PLC的通信,那么所述運動模塊可以使用一個看門狗定時器,所述看門狗定時器將所述輸出變成OFF。如果所述輸出看門狗定時器到時,那么進(jìn)程中的任何運動可以被減速到停止。(e)如果所述運動模塊在所述模塊的H/W或固件中檢測到一個致命錯誤,那么所述P0、P1、DIS和CLR輸出可以設(shè)置為不活動(inactive)狀態(tài)。命令0-63,執(zhí)行在輪廓塊0-63中規(guī)定的運動此命令的執(zhí)行能導(dǎo)致所述模塊執(zhí)行所述運動操作,該操作規(guī)定在由命令的command_code部分表示的輪廓塊的MODE字段中.用于交互塊運動操作的規(guī)范一般不被高速緩沖存儲,因此它們能在每次所述模塊接收到此命令時被讀取。在模式0(絕對位置)中,所述運動輪廓塊能定義一到四步,其中每一步都包含描述所述移動段(segment)的位置(POS)和速度(SPEED)。所述POS規(guī)范可以表示絕對位置,其是基于指定為參考點的位置。當(dāng)前位置和所述輪廓的第一步的位置之間的關(guān)系可以決定移動方向。在一個多步移動中,可以禁止反向行進(jìn),該反向行進(jìn)可以導(dǎo)致報告一錯誤狀態(tài)。在模式1(相對位置)中,所述運動輪廓塊能定義一到四步,其中每一步都包含描述所述移動段的位置(POS)和速度(SPEED)。所述位置值(POS)的符號可以確定所述移動的方向。在一個多步移動中,可以禁止反向行進(jìn),該反向行進(jìn)可以導(dǎo)致報告一錯誤狀態(tài).在單速、持續(xù)(continuous)速度模式(2和3)中,可以忽視位置(POS)規(guī)范,所述模塊可以加速至規(guī)定在第一步的SPEED字段中的所述速度。模式2能被用于正旋轉(zhuǎn)而模式3能被用于負(fù)旋轉(zhuǎn)。在具有非活性的觸發(fā)停止和RPS的單速、持續(xù)速度模式(6和7)中,所述模塊可以加速至規(guī)定在第一步的SPEED字段中的所述速度。并且如果當(dāng)所述RPS輸入成為激活的時,在完成規(guī)定在第一步的POS字段中的距離后可以停止移動.如果所述POS=0,那么不考慮已行進(jìn)的距離,所述移動就可以減速到停止.模式6能被用于正旋轉(zhuǎn)而模式7能被用于負(fù)旋轉(zhuǎn).在模式8和9中,所述RPS輸入的二進(jìn)制值可以從如在輪廓塊的開頭兩步中所規(guī)定的兩個連續(xù)的速度值中選擇一個。模式8能被用于正旋轉(zhuǎn)而模式9能被用于負(fù)旋轉(zhuǎn)。所述SPEED可以控制移動的速度。在此模式中可以忽略POS值。下面的表定義了所述輸入和輪廓塊內(nèi)步驟之間的關(guān)系。命令118,激化DIS輸出執(zhí)行此命令可以導(dǎo)致激活DIS輸出。命令119,使DIS輸出無效.執(zhí)行此命令可以導(dǎo)致使DIS輸出無效。命令120、產(chǎn)生CLR輸出脈沖執(zhí)行此命令可以導(dǎo)致在CLR輸出上發(fā)出一個50毫秒的脈沖。命令121,重新加載當(dāng)前位置執(zhí)行此命令可以導(dǎo)致所述模塊讀取在所述交互塊的TARGET_POS字段找到的值并且將當(dāng)前位置設(shè)置為該值。命令122,執(zhí)行規(guī)定在所述交互塊中的運動此命令的執(zhí)行能導(dǎo)致所述模塊執(zhí)行規(guī)定在交互塊的MOVE_CMD字段中的所述運動操作。用于交互塊運動操作的規(guī)范一般不被高速緩沖存儲,因此它們能在每次所述模塊接收到此命令時被讀取。在絕對和相對運動模式(0和1)中,基于提供于交互塊的TARGET_SPEED和TARGET_POS字段中的目標(biāo)速度和位置信息可以執(zhí)行一個單步運動。在單速、持續(xù)速度模式(2和3)中,可以忽略位置規(guī)范并且所述模塊可以加速至規(guī)定在交互塊的TARGET_SPEED字段中的速度。在手動速度控制模式(4和5)中,可以忽略位置規(guī)范并且用戶程序可以將速度變化值加載到交互塊的TARGET_SPEED字段里。當(dāng)速度值改變時,所述運動模塊可以持續(xù)地監(jiān)控此地址并恰當(dāng)?shù)仨憫?yīng)。在具有非活性的觸發(fā)停止和RPS的單速、持續(xù)速度模式(6和7)中,所述模塊可以加速至規(guī)定在第一步的SPEED字段中的所述速度.并且如果當(dāng)所述RPS輸入成為激活的時,在完成規(guī)定在第一步的所述POS字段中的距離后可以停止移動.如果所述POS=0,那么不考慮已行進(jìn)的距離,所述移動就可以減速到停止.模式6能被用于正旋轉(zhuǎn)而模式7能被用于負(fù)旋轉(zhuǎn).命令123、俘獲參考點偏移量執(zhí)行此命令可以允許在與參考點位置不同的地址建立零位置。在發(fā)出此命令以前,可以確定所述參考點位置并且用戶可以將機(jī)器緩慢移動到工作起始位置。在接收到此命令時,所述模塊可以計算在工作起始位置(當(dāng)前位置)和參考點位置之間的所述偏移量并且將計算出的偏移量寫入到交互塊的RP_OFFSET字段。接著,可以設(shè)置當(dāng)前位置為0。這樣就可以將所述工作起始位置作為零位置。如果所述步進(jìn)馬達(dá)迷失了它的位置(喪失動力,人工地復(fù)位所述步進(jìn)馬達(dá),等等)可以發(fā)出所述尋找參考點位置(SeektoReferencePointPosition)命令以自動地重建零位置。命令124、慢進(jìn)(jog)正旋轉(zhuǎn)此命令可以允許用戶人工地發(fā)出用于在正方向移動所述步進(jìn)馬達(dá)的脈沖。如果所述命令只保持激活狀態(tài)不到0.5秒,那么在加速到JOG_SPEED的同時所述運動模塊可以發(fā)出規(guī)定在JOG_INCREMENT中的脈沖數(shù)。如果所述命令保持激活的狀態(tài)達(dá)0.5秒或更長時間,那么所述運動模塊可以開始加速到規(guī)定的JOG_SPEED。一旦檢測出轉(zhuǎn)移到閑置時,所述模塊可以減速到停止.命令125、慢進(jìn)負(fù)旋轉(zhuǎn)此命令可以允許用戶人工地發(fā)出用于在負(fù)方向移動所述步進(jìn)馬達(dá)的脈沖。如果所述命令只保持激活狀態(tài)不到0.5秒,那么在加速到JOG_SPEED的同時所述運動模塊可以發(fā)出規(guī)定在JOG_INCREMENT中的脈沖數(shù)。如果所述命令保持激活的狀態(tài)達(dá)0.5秒或更長時間,那么所述運動模塊可以開始加速到規(guī)定的JOG_SPEED。一旦檢測出轉(zhuǎn)移到閑置時,所述模塊可以減速到停止.命令126、尋找參考點位置通過使用規(guī)定的尋找方法,執(zhí)行此命令可以啟動一個參考點尋找操作。當(dāng)已經(jīng)定位所述參考點并且運動已經(jīng)停止時,接著所述模塊可以將從交互塊的RP_OFFSET字段中讀取的值加載到當(dāng)前位置.命令127,重新加載配置執(zhí)行此命令可以導(dǎo)致所述模塊讀取來自SM存儲器中適當(dāng)?shù)牡刂返呐渲?輪廓表指針.接著所述模塊可以讀取由該配置/輪廓表的指針?biāo)?guī)定的地址中的配置塊.所述模塊可以將剛剛獲取的配置數(shù)據(jù)與現(xiàn)有的模塊配置進(jìn)行比較,并執(zhí)行任何所要求的設(shè)置改變或重算.可以丟棄任何高速緩沖存儲的輪廓.參考點的定義通稱為參考點的所述地址可以有幾個模塊輸入狀況的預(yù)定序列中的一個。所述用戶可以選擇最匹配所述應(yīng)用需要的參考點定義。一旦用戶已經(jīng)選擇一個參考點定義并且相應(yīng)地配置了模塊,那么所述用戶可以發(fā)出尋找參考點命令。應(yīng)此命令要求,所述模塊可以自動地尋找所述參考點位置,在所述參考點處停止并且激活一個周期50毫秒的CLR輸出。用戶可選擇的可能的參考點定一列表如下(當(dāng)包括所有的RP_SEEK_DIR和RP_APPR_DIR規(guī)范的組合時,選項的數(shù)目變?yōu)樗谋?:a)模式1:所述參考點可以位于在來自工作區(qū)側(cè)的路徑上的RPS輸入成為激活狀態(tài)的位置處。b)模式2:所述參考點可以在RPS輸入的激活區(qū)域的中心。模式3:所述參考點可以位于RPS輸入的激活區(qū)外。RP_Z_CNT可以確定在RPS輸入成為非活性狀態(tài)之后在ZP輸入處有多少零脈沖計數(shù)以用于移動.模式4:所述參考點很可能位于RPS輸入的激活區(qū)內(nèi).RP_Z_CNT可以確定在RPS輸入成為激活的狀態(tài)之后在ZP輸入處有多少零脈沖計數(shù)以用于移動.圖5-8分別是用于模式1-4的參考點查找圖表.這些參考點查找圖表舉例說明參考點的定義和發(fā)現(xiàn)所述參考點的順序。對于圖5-8,定位所述工作區(qū)域以便要求從參考點到所述工作區(qū)域的移動是和RP接近方向相同的方向。通過以這種方法選擇工作區(qū)域的地址,在參考點查找之后,對于第一個到工作區(qū)域的移動可以去除所述機(jī)械嚙合(gearing)系統(tǒng)的所有反沖.圖9包括兩個參考點查找圖表,上面一個表示對于可以消除反沖的接近方向的所述工作區(qū)域與RPS和LIM+開關(guān)的關(guān)系。下面的表配置工作區(qū)域以便不必要消除反沖。盡管不推薦,但是對于在模式1-4中間每一個可能的查找順序,一個類似的工作區(qū)域配置是可能的.用戶接口表5示出所述模塊的輸入、輸出和燈的狀態(tài).表5圖10是示出了本發(fā)明典型運動模塊的燈的典型布局和標(biāo)記的方框圖。圖11是示出用于本發(fā)明典型運動模塊的各輸入輸出以及相關(guān)用戶電源終端的典型電路。此圖是一個略圖并不表示所述接線板螺旋座的順序.表6示出了用于輸入輸出的所述模塊的的規(guī)范。所述開路漏極操作的輸出高于5VDC可能增加射頻輻射以至超過容許限度。對于某些系統(tǒng)或線路可能需要射頻密封措施。依靠脈沖接收機(jī)和電纜,一個附加的外部上拉電阻可以提高脈沖信號品質(zhì)及噪聲抗干擾度。表6圖12是用于所述運動模塊的典型實施例的脈沖輸出產(chǎn)生方框圖.表7提供圖12的運動模塊方框圖的各部分的功能描述。表7狀態(tài)圖用于所述運動模塊的狀態(tài)圖可以包括下面的變量:run_q:合格的運行命令,命令寄存器內(nèi)容的變化是在選擇的安全時間識別的-通常在低于最高級圖表的子狀態(tài)中。XO=stop01=run11=abortmodes:來自pc(31:30)run_steps,last_step,run_cont(連續(xù)的),mode_stopxfr_pipeline:用于將刷新的管道值加載到工作寄存器的命令,由CPU或RPS邊沿控制。run_cld:對脈沖發(fā)生器狀態(tài)機(jī)的運行指令。XO=stop01=run11=abortpc_capture_time:一個計時選通(timingstrobe),其名字來自于其最初用于確定脈沖計數(shù)器內(nèi)容何時穩(wěn)定以用于讀取/捕獲.現(xiàn)在僅用于狀態(tài)轉(zhuǎn)移計時.狀態(tài):idle:無所作為,在xfr_pipeline命令退出到ini_tload.init_load:將初始的管道值移動到工作寄存器,等待運行命令以便轉(zhuǎn)移。如果是停止命令或mode_stop就回到空閑去到run_a_step以啟動步進(jìn)的輪廓去到run_continuous用于穩(wěn)定的速度操作run_a_step:起動脈沖機(jī)器,設(shè)置run_ack,周期性地檢驗脈沖計數(shù)和運行命令,出口在:如果運行命令=stop、退出到estop如果運行命令=abort,退出到abort當(dāng)脈沖計數(shù)=0時,根據(jù)run_steps或last_step所選退出到pipe_load或finish。pipe_load:將更新的管道值加載到工作寄存器,檢驗新的pc[31:30]以確定下一個狀態(tài):回到run_a_step以繼續(xù)一個步進(jìn)的輪廓去到用于穩(wěn)定的速度操作的run_continuous直接去到finish如果沒有刷新pc,清除所有管道刷新標(biāo)志并返回源狀態(tài)run_continuous:起動脈沖機(jī)器,確認(rèn)運行或放棄命令,周期性地檢驗運行命令和xfr_pipeline。在pipe_line去到pipe_load以用于新信息如果運行命令=stop,就退出到estopabort:指示脈沖機(jī)器固定脈沖寬度,去到run_continuousestop:使脈沖機(jī)器不能啟動新脈沖,清除run_ack,在脈沖完成時退出到idlefinish:使脈沖機(jī)器不能啟動新脈沖,清除run_ack,在脈沖完成時退出到idle并且運行命令=stop。如下,表8示出用于脈沖發(fā)生器模塊的某些可能的操作順序。表8對于某些運動模塊,表9提供了可能的CPUASIC引腳分配和地址映射,如下:表9脈沖計算可以設(shè)想許多運動方案。當(dāng)致動器行進(jìn)距離很短并且不足以實現(xiàn)最高速度時,就出現(xiàn)了尤其困難的一個方案。對于此方案、至少可以識別三種情況。通??梢杂蒄_start、F_end(FO)和t_a(加速時間)確定一個線性斜率,如此斜率a=(F_end-F_start)/t_a。同樣,n_end=從F_tart到F_end的脈沖數(shù)。在S曲線的情況下:t_j=最大加速度率時間(jerktime),a_max=(F_end-F_start)/t_a,k=da/dt_max=a_max/t_j所述用戶可以確定相應(yīng)于所期望的運動距離的n_target(nt)。情況1:線性加速度,加速度=減速度圖13是用于本發(fā)明典型實施例的頻率-時間圖,示出了此情況。由n_target<2*n_end識別所述問題情況.解決辦法:選擇剛剛小于nt/2的路標(biāo)點n1,以及相關(guān)的F1。輪廓由從F_end到F1的加速度和從F1到F_end的減速度組成,并具有n_cs脈沖的中間恒定速度步,n_cs=nt-2*n1。情況2:線性加速度,加速度a1不等于減速度a2。圖14是用于本發(fā)明典型實施例的頻率-時間圖,示出了此情況。對于減速度斜率:F_end仍是高頻,n從低速數(shù)起,恰如它是加速度斜率一樣。由n_target<n_end_1+n_end_2識別問題情況。ni=1/2a1t12+F0t1;n2=1/2a2t22+F0t2;t2=(a1/a2)t1nt=F0(t1+t2)+1/2a1t12+1/2a2t22,或a1/2(1+a1/a2)t12+(1+a1/a2)F0t1-nt=0a1/2t12+F0t1-nt/(1+a1/a2)=0t1=-F0/a1+sqrt{F02/a12+2nt/(a1(1+a1/a2))}對于很短距離移動,F(xiàn)0*t可能是總移動明顯的一部分.對于可實現(xiàn)的運動,在所述根之下總有一個正數(shù)并且通過將正平方根添加到所述初始項總是可以發(fā)現(xiàn)可實現(xiàn)的根.使用上述表達(dá)式以計算t1?,F(xiàn)在,發(fā)現(xiàn)n1=1/2a1t12+F0t1,選擇在加速度斜率上剛剛小于n1的路標(biāo)點,以及相關(guān)聯(lián)的速度F1。按要求在所述減速度斜率上進(jìn)行內(nèi)插以在加速度和減速度斜率之間匹配速度,在所述減速斜率上發(fā)現(xiàn)n2。如前所述,得到連接兩個斜率的恒定速度步的長度,n_cs=nt-n1-n2.總移動是n1步的加速,一個(短的)恒定速度步n_cs,n2步的減速。情況3:短的S曲線-距離n不足以使得S曲線到最大速度圖15是用于本發(fā)明典型實施例的頻率-時間圖S曲線圖,示出了此情況。對于所述短S曲線的情況:tj=最大加速度率時間、amax=(F_end-F_start)/t_a、k=da/dt_max=amax/tj在所述初始曲線區(qū):a=ktF=F0+1/2kt2F隨最大加速率時間tj而變:Fj=1/2ktj2對于所述S形曲線,記住(recall)有與最大加速度率時間,tj有關(guān)的Fj,并且在曲線的提高和減少加速度部分期間,在曲線區(qū)F的變化是對稱的。如前所述,一個過程將解決該簡單的梯形,識別在計數(shù)n1和時間t1達(dá)到的最高速度F1.接著,將最高頻率減少到一個以相同的加速/減速時間t1可以實現(xiàn)的新Fmax。所述n_cs(恒速區(qū))現(xiàn)在從所述簡單的梯形情況下稍微擴(kuò)展,因此:n_cs=nt-2*n(Fmax).如果t1>=2tj:存在一個線性區(qū)+2個完全的最大加速度率時間。獲取Fmax=F0+2*Fj+(t1-2tj)*amax.把標(biāo)準(zhǔn)S曲線計算應(yīng)用到Fmax以得到達(dá)到Fmax的n-v。接著所述恒速距離是n_cs=nt-2*n(fmax)如果t1<2tj:將有一個在t1/2處帶有拐點的純S曲線。ΔF在所述拐點周圍:Finflection=1/2k(t1/2)2,并且Fmax=F0+2*Finflection=F0+k(t1/2)2.把所述標(biāo)準(zhǔn)S曲線應(yīng)用到Fmax并且如前所述的得到n_cs。下述是一典型的偽碼子程序列表,其用于為運動控制輪廓的一部分確定多個目標(biāo)頻率、脈沖寬度、差分脈沖寬度以及脈沖計數(shù),如上所述,所述部分是根據(jù)一個確定的開始頻率、結(jié)束頻率、最大加速度和加速度的最大變化(也就是說,S形曲線情況)的單一的頻率變化。所述目標(biāo)頻率是半對數(shù)分布的,其具有各種約束,以實現(xiàn)可實行的最少時間間隔和最大時間間隔,該最大時間間隔與表示S曲線的較高頻率部分的所期望的精確度水平一致.移除所有的數(shù)據(jù)輸入與輸出以闡明所述算法。Rem:S-curveversionRem:GeneratetableoftargetpulsecountsandpulsewidthswithinterpolationfactorRem:divideuptherampintosteps(waypoints)ofequalpercentagechangesinFRem:foreachstep,findthetargetF,pulsewidth,pulsecount,andchangeinpulsewidthRem:perpulseneededtogettherewhilestayingontheslopeRem:Rem:limitchangeinaccelerationperJerkTimespec--da_dt=a_max/Jerk_timeRem:keepaworkingbufferofsteps,selectivelyplotpointsRem:sothatacompleteslopecanberecordedRem:usef_end/f_startratiotosettargetstepssizeRem:1.15^32~100;1.1^32~20;1.1^48~100Rem:e.g.,fora5%startspeed(1/20),32stepswillgive~10%dF/FRem:initialdF/F/step=exp(log(fmax/fmin)/max_steps)Rem:ifstep<1mssetsteptimeto1msRem:ifstep<1pulsesetsteptimeto1pulseRen:whenFappreciable,setdF/Ftoamoderatemid-rangevalueRem:thengototighterspacingofstepsinupperjerkrangeRem:m=clocks/pulse,n=pulsecountateachstep,dn=deltanperstepDimm(100)AsLongDimn(100),dnAsLongRem:astepisapre-calculatedwaypoint,controllingmultiplepulsesDimstepAsInteger,pulseAsLongRem:m_sumrecordsactualelapsedtimeinclocksbyaddingm’sforeachpulseRem:m_fix:shiftedfixedpointthataccumulatesfractionalchangesinpulsewidthDimm_sum(100),m_fixAsLongRem:fixedpointshiftisdecimalforeaseofde-bug,willbebinaryfactor(e.g.,1024)inuseDimfix_shiftAsLongfix_shift=1000Rem:elapsedtimetobeginningofstep,time/step,jerktimeDimt(100),dt,t_jAsDoubleRem:dmisshiftedfixedpointfractionalchangeinpulsewidth/pulseDimdm(100)AsLongRem:frequencyatstep,jerkfrequencyassociatedwithjerktime,derivativeofaDimf(100),f_j,da_dtAsDoubleDimi,j,k,clear_rowAsIntegerRem:miscindicesDimm_dt,m_barAsDoubleRem:inputparameters:accelerationtime,frequenciesDimt_a,F(xiàn)_start,F(xiàn)_end,F(xiàn)_clockAsDoubleRem:dF/FfactortocomputeequalpercentagestepsDimdF_factorAsDoubleDimmax_stepsAsIntegerDimplot_row,plot_time,plot_f,plot_m,plot_nAsIntegerRem:startingvaluesforsteppingRem:timeisatthebeginningofapulse&stept(0)=0Rem:misthecountforthepulsethatisexecutingRem:dmisappliedattheendofapulse...thatisRem:thewaypointpulseisexecutedinfullm(0)=Int(F_clock/F_start)f(0)=F_startRem:nisthecountofpulsescompleted,startsat0n(0)=0Rem:a_maxismid-pointslope,da_dtislimitsetbyjerktimea_max=(F_end-F_start)/t_ada_dt=a_max/t_jRem;f_jisfrequencychangeassociatedwithjerktimef_j=0.5*a_max*t_jRem:a_fisacceleration,functionoffrequencya_f=0Rem:accumulatorforallclocksinallpulsesm_sum(0)=0Rem:setexpectationforearlydFstepsalongrampf_ratio=F_end/F_startdF_factor=Exp(Log(f_ratio)/max_steps)f_ddF=F_end*0.5Rem:askabout--canprofile(speed,positionsettings)bechangedpermanentlyfromTD200?Rem:RoundOffErrorControlRem:oneachstep,seektore-establishcorrectSLOPEfromcurrentpositionRem:ratherthancloseadherencetostepsvs.timeRem:choosenextFforeachstepasdF/F*F(laststep)Rem:choosea(=dF/dt)forstepasvalueforchosenFasidealresultRem:fromapplyingda_dtRem:deltatforthisstepchosenasdF/aRem:dm(fixedpointinteger)determinedtoreachfromactualmRem:oflaststeptonewidealminidealtimedtRem:newmactualfiguredasn*dmaddedontopreviousactualRem:newtactualfiguredfromaccumulatedmRem:newfactualfiguredfrommactualslope_complete=Falsestep=0Rem:mainsteppingloop-1loopperwaypointDoUntilslope_completestep=step+1Rem:findthetargetfrequency,time,counts,forendofstepRem:clampdF_factorformid-range,thenreduceforupperjerkregionf(step)=f(step-1)*dF_factorIff(step)>=0.99*F_endThenf(step)=F_endslope_complete=TrueEndIfRem:currentvalueofa(f),subfora(t),determinedseparatelyforRem:lowerjerkrangeRem:midrangeRem:upperjerkrangeRem:firstifcoversF_end<2*f_j,handscontrolearlytolastelseifIff(step)<(f(0)+f_j)Andf(step)<(F_end/2)Thena_f=Sqr(2*(f(step)·f(0))*da_dt)ElseIff(step)<(F_end-f_j)Thena_f=a_maxElseIfNotslope_completeThena_f=Sqr(2*(F_end-f(step-1))*da_dt)dF_factor=1.01+a_f/a_max*0.05EndIfRem:findprovisionaltimedtfornextsteptothistargetFRem:ifneeded,adjuststeptime>1msand>1pulsetimeRem:ifsteptimeisincreasedtomeetmins,adjusttargetFanddF_factordt=(f(step)-f(step-1))/a_fIfdt<0.001Or(dt<(1/f(step-1)))Thendt=max(0.001,1/f(step-1))t(step)=t(step-1)+dtRem:sincetchanged,choosenextfforidealadherencetotf(step)=a_f*(t(step)-t(0))+f(0)RemadjuststepratiotoreachfinalFfromcurrentstepf_ratio=F_end/f(step)Ifstepmax_stepsThendF_factor=Exp(Log(f_ratio)/(max_steps-step))Elset(step)=t(step-1)+dtEndIfRem:findnextmforchosenfm_ideal=F_clock/f(step)Rem:findtotalclockstonextstepm_dt=dt*F_clockRem:averagem/pulsetonextstepm_bar=(m_ideal+m(step-1))/2Rem:pulsestonextstep(dn)istotalclocksdividedbyaveragemdn=Int(0.5+m_dt/m_bar)n(step)=n(step-1)+dnRem:withnewmanddn,finddm/pulseRem:changeradixofdmfixedpointtomaintainprecisionDodm(step-1)=Int(fix_shift*(m_ideal-m(step-1))/dn)If(Abs(dm(step-1))<100)Thenfix_shift=fix_shift*10LoopUnti1Abs(dm(step-1))>=100Cells(plot_row,plot_dm).Value=dm(step-1)Rem:computetruem(step)andt(step)byaddingupdm’sashardwarewillm_fix=CLng(m(step-1))*fix_shiftm_sum(step)=m_sum(step-1)plot_ref=m_fixRem:foreachpulse,adddmtom,accumulatetotalclocksForpulse=n(step-1)+1Ton(step)m_sum(step)=m_sum(step)+Int(m_fix/fix_shift)m_fix=m_fix+dm(step-1)NextpulseRem:endfor/nextloopofpulsesbetweensteps(way_points)Rem:replaceidealmandtforthisstepwithactualsm(step)=m_fix/fix_shiftf(step)=F_clock/m(step)t(step)=m_sum(step)/F_clockLoopRem:endloopingonsteps(way_points)untilslope_completeEndSub盡管已經(jīng)參考本發(fā)明的具體的實施例描述了發(fā)明,但是應(yīng)該明白,許多的變化、修改和附加的實施例還是可能的,并且相應(yīng)地,所有這類的變化、修改以及實施例將被認(rèn)為是在本發(fā)明的精神和范圍之內(nèi).例如:運動模塊的編程可以發(fā)生在因特網(wǎng)上。同樣地:脈沖列的傳輸可以發(fā)生因特網(wǎng)上。如在本文中完全闡明的那樣,引用在本文中具體確定和論述的參考部分以作參考。相應(yīng)地,所述附圖和說明書將被認(rèn)為在本質(zhì)上是說明性的,而不是限制的。權(quán)利要求1.一種方法,包括獲取多個目標(biāo)脈沖寬度;從所述多個目標(biāo)脈沖寬度計算在兩個時間上鄰近的目標(biāo)脈沖寬度之間的多個中間脈沖寬度,所述中間脈沖寬度根據(jù)增量和子增量的時鐘計數(shù)確定;以及將所述多個中間脈沖寬度輸出到一個運動裝置。2.一種裝置,包括適合于產(chǎn)生多個脈沖的脈沖發(fā)生器,每一脈沖通過在預(yù)計算出的目標(biāo)之間內(nèi)插而產(chǎn)生,每一脈沖的寬度由增量和子增量的時鐘計數(shù)相加確定。3.一種系統(tǒng),包括用于獲取多個目標(biāo)脈沖寬度的裝置;用于從所述多個目標(biāo)脈沖寬度計算在兩個時間上鄰近的目標(biāo)脈沖寬度之間的多個中間脈沖寬度的裝置,所述中間脈沖寬度根據(jù)增量和子增量的時鐘計數(shù)確定;以及用于將所述多個中間的脈沖寬度輸出到一個運動裝置的裝置.4.一種系統(tǒng),包括用于獲取半對數(shù)分布的多個目標(biāo)脈沖寬度的裝置;用于從所述多個目標(biāo)脈沖寬度計算在兩個時間上鄰近的目標(biāo)脈沖寬度之間的多個中間脈沖寬度的裝置,所述中間脈沖寬度根據(jù)增量和子增量的時鐘計數(shù)確定;以及用于從可編程邏輯控制器的脈沖發(fā)生器輸出與所述多個中間脈沖寬度相對應(yīng)的多個脈沖的裝置。全文摘要本發(fā)明的至少一個典型實施例包括一種方法,該方法包括獲取多個目標(biāo)脈沖寬度;從所述多個目標(biāo)脈沖寬度計算在兩個時間上鄰近的目標(biāo)脈沖寬度之間的多個中間脈沖寬度,所述中間脈沖寬度根據(jù)增量和子增量的時鐘計數(shù)確定;以及將所述多個中間脈沖寬度輸出到一個運動裝置。本發(fā)明還包括相應(yīng)的裝置和系統(tǒng)。文檔編號G05B19/40GK101369131SQ20081014971公開日2009年2月18日申請日期2002年12月17日優(yōu)先權(quán)日2002年1月7日發(fā)明者A·D·麥克努特申請人:西門子能量及自動化公司