本發(fā)明涉及自動(dòng)化控制技術(shù)領(lǐng)域,特別涉及一種基于api(applicationprogramminginterface,應(yīng)用程序接口)的工業(yè)運(yùn)動(dòng)控制系統(tǒng)及方法。
背景技術(shù):
目前,在工業(yè)運(yùn)動(dòng)控制領(lǐng)域中,主要有兩種控制方式:一種通過運(yùn)動(dòng)控制卡來實(shí)現(xiàn);一種是通過plc(programmablelogiccontroller,可編程邏輯控制器)來實(shí)現(xiàn)。
在通過運(yùn)動(dòng)控制卡實(shí)現(xiàn)的方式中,通過pci(peripheralcomponentinterconnect,外設(shè)組件互連標(biāo)準(zhǔn))插槽將控制卡插在pc(personalcomputer,個(gè)人電腦)的主機(jī)上;利用高級(jí)編程語言c++、c#、vb、vb.net、labview等編程語言進(jìn)行開發(fā);編程中使用運(yùn)動(dòng)控制卡廠商提供的控制卡api接口函數(shù),來實(shí)現(xiàn)對(duì)控制卡資源的使用;運(yùn)動(dòng)控制卡通過發(fā)送脈沖的方式控制伺服或步進(jìn)驅(qū)動(dòng)器來控制伺服電機(jī)或步進(jìn)電機(jī)、通過讀取輸入信號(hào)、控制輸出信號(hào)來實(shí)現(xiàn)對(duì)繼電器、傳感器、氣缸等輸入輸出設(shè)備的控制。運(yùn)動(dòng)控制卡主要的優(yōu)勢在于集成pc強(qiáng)大的功能,比如cad(computeraideddesign,計(jì)算機(jī)輔助設(shè)計(jì))功能、機(jī)器視覺功能、軟件高級(jí)編程等。由于pc機(jī)的強(qiáng)大功能,因此與其一起組成的運(yùn)動(dòng)控制器的功能最強(qiáng),但其工作穩(wěn)定性、可靠性較差。
在通過plc實(shí)現(xiàn)的方式中,通過plc對(duì)開關(guān)量進(jìn)行邏輯控制,還可實(shí)現(xiàn)運(yùn)動(dòng)控制(直線軌跡控制)、運(yùn)算、數(shù)據(jù)處理等功能。因此,具有工作可靠、編程簡單等優(yōu)點(diǎn)。但是,由于其通常采用觸摸屏做人機(jī)界面,這就導(dǎo)致可視化界面受到極大地限制。在實(shí)際應(yīng)用過程中,其最大的問題就是不能實(shí)現(xiàn)導(dǎo)圖功能;難于與機(jī)器視覺等其他應(yīng)用相結(jié)合。
因此,如果能將兩種方式進(jìn)行結(jié)合,就可以同時(shí)兼顧穩(wěn)定性和可視化。但是,工業(yè)pc和plc是兩個(gè)不同實(shí)體的設(shè)備,兩者之間通過modbustcp協(xié)議進(jìn)行通信。由于modbustcp協(xié)議是以一問一答式的方式進(jìn)行通信,通信需要一定的時(shí)間,當(dāng)有很多命令時(shí),通信時(shí)間疊加在一起會(huì)出現(xiàn)相當(dāng)明顯的延時(shí)。而這種延時(shí)反映在運(yùn)動(dòng)控制上是動(dòng)作卡頓,這明顯不能滿足要求。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種基于api的工業(yè)運(yùn)動(dòng)控制系統(tǒng)及方法以減少通信數(shù)據(jù)冗余,達(dá)到了提高通信速度。
本發(fā)明為了達(dá)到上述目的,采用的技術(shù)方案是:一種基于api的工業(yè)運(yùn)動(dòng)控制系統(tǒng),包括工業(yè)個(gè)人pc控制子系統(tǒng)和plc控制子系統(tǒng),所述工業(yè)pc控制子系統(tǒng)包括控制模塊和api庫,所述plc控制子系統(tǒng)包括plc運(yùn)動(dòng)控制器和多個(gè)伺服驅(qū)動(dòng)器,其中:
所述控制模塊,用于生成運(yùn)動(dòng)控制指令以及處理來自plc控制子系統(tǒng)的反饋數(shù)據(jù);
所述api庫,用于緩存來自所述控制模塊的運(yùn)動(dòng)控制指令并將多個(gè)運(yùn)動(dòng)控制指令一次性發(fā)送到所述plc控制子系統(tǒng),以及將所述plc控制子系統(tǒng)的反饋數(shù)據(jù)一次性讀取到所述工業(yè)pc控制子系統(tǒng);
所述plc運(yùn)動(dòng)控制器,用于根據(jù)所述多個(gè)運(yùn)動(dòng)控制指令控制所述多個(gè)伺服驅(qū)動(dòng)器并生成反饋數(shù)據(jù);
所述多個(gè)伺服驅(qū)動(dòng)器,用于在所述plc運(yùn)動(dòng)控制器的控制下,控制相應(yīng)的電機(jī)運(yùn)動(dòng)。
優(yōu)選地,所述工業(yè)pc控制子系統(tǒng)和所述plc控制子系統(tǒng)之間通過擴(kuò)展的modbustcp協(xié)議通信,所述擴(kuò)展的modbustcp協(xié)議包括批量讀功能碼和批量寫功能碼。
優(yōu)選地,所述plc運(yùn)動(dòng)控制器包括多個(gè)數(shù)據(jù)存儲(chǔ)單元,用于存儲(chǔ)所述plc控制子系統(tǒng)的反饋數(shù)據(jù);所述plc控制子系統(tǒng)的反饋數(shù)據(jù)包括所述多個(gè)伺服驅(qū)動(dòng)器控制電機(jī)運(yùn)動(dòng)的執(zhí)行結(jié)果數(shù)據(jù)和電機(jī)狀態(tài)數(shù)據(jù);
所述多個(gè)伺服驅(qū)動(dòng)器還用于將所述執(zhí)行結(jié)果數(shù)據(jù)和所述電機(jī)狀態(tài)數(shù)據(jù)返回至所述多個(gè)數(shù)據(jù)存儲(chǔ)單元。
優(yōu)選地,所述api庫包括動(dòng)態(tài)鏈接庫、處理單元、指令存儲(chǔ)單元,其中:
所述動(dòng)態(tài)鏈接庫,用于為所述控制模塊提供api接口函數(shù),以使所述控制模塊通過調(diào)用所述api接口函數(shù)來將多個(gè)所述運(yùn)動(dòng)控制指令依次存儲(chǔ)到所述指令存儲(chǔ)單元;
所述處理單元,用于將所述指令存儲(chǔ)單元存儲(chǔ)的所述多個(gè)運(yùn)動(dòng)控制指令同一次性發(fā)送至所述plc控制子系統(tǒng),以及一次性讀取所述執(zhí)行結(jié)果數(shù)據(jù)和所述電機(jī)狀態(tài)數(shù)據(jù);
所述指令存儲(chǔ)單元,用于暫存所述多個(gè)運(yùn)動(dòng)控制指令。
優(yōu)選地,所述處理單元還用于:
在所述指令存儲(chǔ)單元為空時(shí),將所述電機(jī)狀態(tài)數(shù)據(jù)一次性讀取到所述工業(yè)pc控制子系統(tǒng)。
相應(yīng)地,本發(fā)明還提供一種基于api的工業(yè)運(yùn)動(dòng)控制方法,包括以下步驟:
步驟s1:生成運(yùn)動(dòng)控制指令并向plc控制子系統(tǒng)一次性發(fā)送多個(gè)運(yùn)動(dòng)控制指令;
步驟s2:plc運(yùn)動(dòng)控制器根據(jù)所述多個(gè)運(yùn)動(dòng)控制指令控制多個(gè)伺服驅(qū)動(dòng)器;
步驟s3:所述多個(gè)伺服驅(qū)動(dòng)器控制相應(yīng)的電機(jī)運(yùn)動(dòng);
步驟s4:將所述plc控制子系統(tǒng)的反饋數(shù)據(jù)一次性讀取到所述工業(yè)pc控制子系統(tǒng)。
優(yōu)選地,所述工業(yè)pc控制子系統(tǒng)和所述plc控制子系統(tǒng)之間通過擴(kuò)展的modbustcp協(xié)議通信,所述擴(kuò)展的modbustcp協(xié)議包括批量讀功能碼和批量寫功能碼。
優(yōu)選地,所述plc控制子系統(tǒng)的反饋數(shù)據(jù)包括所述多個(gè)伺服驅(qū)動(dòng)器控制電機(jī)運(yùn)動(dòng)的執(zhí)行結(jié)果數(shù)據(jù)和電機(jī)狀態(tài)數(shù)據(jù);
在所述步驟s4中,所述plc控制子系統(tǒng)將所述執(zhí)行結(jié)果數(shù)據(jù)和所述電機(jī)狀態(tài)數(shù)據(jù)同時(shí)發(fā)送至所述工業(yè)pc控制子系統(tǒng)。
優(yōu)選地,所述步驟s1包括:
步驟s11:工業(yè)pc控制子系統(tǒng)的控制模塊生成運(yùn)動(dòng)控制指令;
步驟s12:調(diào)用api庫的api接口函數(shù)將多個(gè)所述運(yùn)動(dòng)控制指令依次存儲(chǔ)到指令存儲(chǔ)單元;
步驟s13:將所述指令存儲(chǔ)單元存儲(chǔ)的所述多個(gè)運(yùn)動(dòng)控制指令一次性發(fā)送至所述plc控制子系統(tǒng)。
優(yōu)選地,所述基于api的工業(yè)運(yùn)動(dòng)控制方法還包括:
在所述指令存儲(chǔ)單元為空時(shí),將所述電機(jī)狀態(tài)數(shù)據(jù)一次性讀取到所述工業(yè)pc控制子系統(tǒng)。
本發(fā)明有如下優(yōu)點(diǎn):本發(fā)明提供的基于api的工業(yè)運(yùn)動(dòng)控制系統(tǒng)和方法,工業(yè)pc控制子系統(tǒng)通過api庫向plc控制子系統(tǒng)一次性發(fā)送多個(gè)運(yùn)動(dòng)控制指令;plc控制子系統(tǒng)根據(jù)該多個(gè)運(yùn)動(dòng)控制指令控制電機(jī)軸完成相應(yīng)的運(yùn)動(dòng)后,工業(yè)pc控制子系統(tǒng)再一次性讀取plc控制子系統(tǒng)的反饋數(shù)據(jù)。由此,既可以通過工業(yè)pc控制子系統(tǒng)提供可視化功能,又可以利用plc的穩(wěn)定性能來實(shí)現(xiàn)對(duì)電機(jī)軸的控制;同時(shí),工業(yè)pc控制子系統(tǒng)可以向plc控制子系統(tǒng)一次性發(fā)送多個(gè)運(yùn)動(dòng)控制指令,且一次性同時(shí)讀取plc控制子系統(tǒng)的反饋數(shù)據(jù),由此,大大減少了通信數(shù)據(jù)冗余,達(dá)到了提高通信速度,滿足系統(tǒng)需求的目的。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1所示是本發(fā)明一實(shí)施例提供的基于api的工業(yè)運(yùn)動(dòng)控制系統(tǒng)的原理圖;
圖2所示是本發(fā)明一實(shí)施例提供的api庫的原理圖;
圖3所示是本發(fā)明一實(shí)施例提供的基于api的工業(yè)運(yùn)動(dòng)控制方法的流程圖;
圖4所示是本發(fā)明一實(shí)施例提供的步驟s1的流程圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
圖1所示是本發(fā)明一實(shí)施例提供的基于api的工業(yè)運(yùn)動(dòng)控制系統(tǒng)的原理圖。如圖1所示,本發(fā)明的基于api的工業(yè)運(yùn)動(dòng)控制系統(tǒng)包括工業(yè)pc控制子系統(tǒng)10和plc控制子系統(tǒng)20。所述工業(yè)pc控制子系統(tǒng)10包括控制模塊110和api庫120,所述plc控制子系統(tǒng)20包括plc運(yùn)動(dòng)控制器210和多個(gè)伺服驅(qū)動(dòng)器220。
在本發(fā)明一實(shí)施例中,所述工業(yè)pc控制子系統(tǒng)10和所述plc控制子系統(tǒng)20之間通過擴(kuò)展的modbustcp協(xié)議通信,所述擴(kuò)展的modbustcp協(xié)議包括批量讀功能碼和批量寫功能碼。通過該批量讀功能碼0x61,上位機(jī)可以一次性讀取離散寄存器數(shù)據(jù);通過該批量寫功能碼0x62,上位機(jī)可以將數(shù)據(jù)一次性寫多個(gè)離散的寄存器。
所述控制模塊110,用于生成運(yùn)動(dòng)控制指令以及處理來自plc控制子系統(tǒng)的反饋數(shù)據(jù)。具體地,在本發(fā)明一實(shí)施例中,運(yùn)動(dòng)控制指令是指控制電機(jī)軸轉(zhuǎn)動(dòng)的指令,例如,啟動(dòng)電機(jī)軸指令、停止指令、加速指令及減速指令等。在系統(tǒng)需要控制某一個(gè)電機(jī)軸以一定的方式運(yùn)動(dòng)時(shí),就會(huì)通過控制模塊110來將相應(yīng)的多個(gè)運(yùn)動(dòng)控制指令一次性同時(shí)發(fā)送至plc控制子系統(tǒng),而不是將控制指令一個(gè)一個(gè)發(fā)送過去。
所述api庫120,用于緩存來自所述控制模塊110的運(yùn)動(dòng)控制指令并將多個(gè)運(yùn)動(dòng)控制指令一次性發(fā)送到所述plc控制子系統(tǒng)20,以及將所述plc控制子系統(tǒng)20的反饋數(shù)據(jù)一次性讀取到所述工業(yè)pc控制子系統(tǒng)10。具體地,api庫120為控制模塊110提供數(shù)據(jù)緩沖,負(fù)責(zé)把控制模塊110指令傳送至plc控制子系統(tǒng),再把執(zhí)行結(jié)果反饋到業(yè)務(wù)層??刂颇K110只需調(diào)用api庫120提供的接口函數(shù),就能實(shí)現(xiàn)軸的啟動(dòng)、停止、加速減速,獲取軸的各種狀態(tài)等。
所述plc運(yùn)動(dòng)控制器210,用于根據(jù)所述多個(gè)運(yùn)動(dòng)控制指令控制所述多個(gè)伺服驅(qū)動(dòng)器220并生成反饋數(shù)據(jù)。所述多個(gè)伺服驅(qū)動(dòng)器220,用于在所述plc運(yùn)動(dòng)控制器210的控制下,控制相應(yīng)的電機(jī)運(yùn)動(dòng)。具體地,plc運(yùn)動(dòng)控制器210通過ethercat(ethercontrolautomationtechnology,以太網(wǎng)控制自動(dòng)化技術(shù))總線與多個(gè)伺服驅(qū)動(dòng)器220相連接,組成plc控制子系統(tǒng)20。plc運(yùn)動(dòng)控制器210根據(jù)控制需要,預(yù)先通過梯形圖、st(structuredtext,結(jié)構(gòu)文本)等plc編程語言編好對(duì)應(yīng)于不同運(yùn)動(dòng)控制指令的功能模塊。根據(jù)工業(yè)pc控制子系統(tǒng)10發(fā)來的運(yùn)動(dòng)控制指令,plc運(yùn)動(dòng)控制器210調(diào)取相應(yīng)的功能模塊,通過ethercat總線控制對(duì)應(yīng)的伺服驅(qū)動(dòng)器220,從而實(shí)現(xiàn)對(duì)相應(yīng)電機(jī)軸的運(yùn)動(dòng)控制。
進(jìn)一步地,在本發(fā)明一實(shí)施例中,所述plc運(yùn)動(dòng)控制器210包括多個(gè)數(shù)據(jù)存儲(chǔ)單元,用于存儲(chǔ)所述plc控制子系統(tǒng)20的反饋數(shù)據(jù);所述plc控制子系統(tǒng)20的反饋數(shù)據(jù)包括所述多個(gè)伺服驅(qū)動(dòng)器220控制電機(jī)運(yùn)動(dòng)的執(zhí)行結(jié)果數(shù)據(jù)和電機(jī)狀態(tài)數(shù)據(jù);所述多個(gè)伺服驅(qū)動(dòng)器220還用于將所述執(zhí)行結(jié)果數(shù)據(jù)和所述電機(jī)狀態(tài)數(shù)據(jù)返回至所述多個(gè)數(shù)據(jù)存儲(chǔ)單元。具體地,伺服驅(qū)動(dòng)器在控制電機(jī)軸運(yùn)動(dòng)后,需要返回根據(jù)一個(gè)執(zhí)行結(jié)果,這個(gè)執(zhí)行結(jié)果就存儲(chǔ)在plc運(yùn)動(dòng)控制器的數(shù)據(jù)存儲(chǔ)單元中;同時(shí),電機(jī)也將自身的狀態(tài)數(shù)據(jù)(例如,電機(jī)此時(shí)的轉(zhuǎn)速、位置等數(shù)據(jù))實(shí)時(shí)通過伺服驅(qū)動(dòng)器更新到數(shù)據(jù)存儲(chǔ)單元中。由此,可以方便工業(yè)pc控制子系統(tǒng)讀取。其中,多個(gè)數(shù)據(jù)存儲(chǔ)單元為多個(gè)離散寄存器,分別存儲(chǔ)有不同的伺服驅(qū)動(dòng)器反饋的執(zhí)行結(jié)果數(shù)據(jù)以及各個(gè)電機(jī)的電機(jī)狀態(tài)數(shù)據(jù)。
進(jìn)一步地,如圖2所示,在本發(fā)明一實(shí)施例中,所述api庫120包括動(dòng)態(tài)鏈接庫122、指令存儲(chǔ)單元124、處理單元126。所述動(dòng)態(tài)鏈接庫122用于為所述控制模塊110提供api接口函數(shù),以使所述控制模塊110通過調(diào)用所述api接口函數(shù)來將多個(gè)運(yùn)動(dòng)控制指令依次存儲(chǔ)到所述指令存儲(chǔ)單元124;所述處理單元126,用于將所述指令存儲(chǔ)單元124存儲(chǔ)的所述多個(gè)運(yùn)動(dòng)控制指令一次性發(fā)送至所述plc控制子系統(tǒng)20,以及一次性讀取所述執(zhí)行結(jié)果數(shù)據(jù)和所述電機(jī)狀態(tài)數(shù)據(jù);所述指令存儲(chǔ)單元124,用于暫存所述多個(gè)運(yùn)動(dòng)控制指令。
具體地,如上所述,所述工業(yè)pc控制子系統(tǒng)10和所述plc控制子系統(tǒng)20之間通過擴(kuò)展的modbustcp協(xié)議通信。因此,控制模塊110需要向plc控制子系統(tǒng)20發(fā)送多個(gè)運(yùn)動(dòng)控制指令時(shí),可以通過調(diào)用所述api接口函數(shù)來將所述多個(gè)運(yùn)動(dòng)控制指令按先后順序依次讀取到所述指令存儲(chǔ)單元124;處理單元126對(duì)上述指令存儲(chǔ)單元124進(jìn)行輪詢,當(dāng)指令存儲(chǔ)單元124不為空時(shí)(即有運(yùn)動(dòng)控制指令時(shí)),處理單元126讀取指令存儲(chǔ)單元124,通過批量寫功能碼把多個(gè)命令同時(shí)下發(fā)到plc控制子系統(tǒng);plc控制子系統(tǒng)響應(yīng)時(shí),處理單元不但要讀取執(zhí)行結(jié)果數(shù)據(jù),而且要將電機(jī)狀態(tài)數(shù)據(jù)也一起讀上來,即通過批量讀功能碼將plc控制子系統(tǒng)的多個(gè)離散寄存器中存儲(chǔ)的數(shù)據(jù)一次更新到工業(yè)pc控制子系統(tǒng)的內(nèi)存。由此,大大減少了通信數(shù)據(jù)冗余,達(dá)到了提高通信速度,滿足系統(tǒng)需求的目的。
進(jìn)一步地,在本發(fā)明一實(shí)施例中,所述處理單元126還用于在所述指令存儲(chǔ)單元124為空時(shí),將所述電機(jī)狀態(tài)數(shù)據(jù)一次性讀取到所述工業(yè)pc控制子系統(tǒng)10。具體地,當(dāng)指令存儲(chǔ)單元124為空時(shí)(即沒有運(yùn)動(dòng)控制指令時(shí)),處理單元126通過0x61功能碼,把plc控制子系統(tǒng)的反饋數(shù)據(jù)一次性讀取到工業(yè)pc控制子系統(tǒng)存入內(nèi)存。這樣,當(dāng)工業(yè)pc控制子系統(tǒng)需要時(shí),可以直接從內(nèi)存中讀取,大大提高了效率。
有利地,本實(shí)施例提供的基于api的工業(yè)運(yùn)動(dòng)控制系統(tǒng),工業(yè)pc控制子系統(tǒng)通過所述api庫向所述plc控制子系統(tǒng)一次性發(fā)送多個(gè)運(yùn)動(dòng)控制指令;plc控制子系統(tǒng)根據(jù)該多個(gè)運(yùn)動(dòng)控制指令控制電機(jī)軸完成相應(yīng)的運(yùn)動(dòng)后,工業(yè)pc控制子系統(tǒng)一次性讀取plc控制子系統(tǒng)的反饋數(shù)據(jù)。由此,既可以通過工業(yè)pc控制子系統(tǒng)提供可視化功能,又可以利用plc的穩(wěn)定性能來實(shí)現(xiàn)對(duì)電機(jī)軸的控制;同時(shí),工業(yè)pc控制子系統(tǒng)和plc控制子系統(tǒng)之間通過擴(kuò)展的modbustcp協(xié)議通信,工業(yè)pc控制子系統(tǒng)可以通過批量寫功能碼同時(shí)將多個(gè)運(yùn)動(dòng)控制指令一次性發(fā)送到plc控制子系統(tǒng),通過批量寫功能碼一次性讀取plc控制子系統(tǒng)的反饋數(shù)據(jù),由此可以大大減少了通信數(shù)據(jù)冗余,達(dá)到了提高通信速度,滿足系統(tǒng)需求的目的。
需要說明的是,本發(fā)明實(shí)施例中多個(gè)運(yùn)動(dòng)控制指令和反饋數(shù)據(jù)可以一次性地發(fā)送和讀取,也可以根據(jù)應(yīng)用場景分為多次進(jìn)行發(fā)送和讀取,再此不做限制。
圖3所示是本發(fā)明一實(shí)施例提供的基于api的工業(yè)運(yùn)動(dòng)控制方法的流程圖。如圖3所示,該基于api的工業(yè)運(yùn)動(dòng)控制方法包括以下步驟:
步驟s1:生成運(yùn)動(dòng)控制指令并向plc控制子系統(tǒng)一次性發(fā)送多個(gè)運(yùn)動(dòng)控制指令;
具體地,在本發(fā)明一實(shí)施例中,運(yùn)動(dòng)控制指令是指控制電機(jī)軸轉(zhuǎn)動(dòng)的指令,例如,啟動(dòng)電機(jī)軸指令、停止指令、加速指令及減速指令等。在系統(tǒng)需要控制某一個(gè)電機(jī)軸以一定的方式運(yùn)動(dòng)時(shí),就會(huì)通過控制模塊來將相應(yīng)的多個(gè)運(yùn)動(dòng)控制指令一次性同時(shí)發(fā)送至plc控制子系統(tǒng),而不是將控制指令一個(gè)一個(gè)發(fā)送過去。
步驟s2:plc運(yùn)動(dòng)控制器根據(jù)所述多個(gè)運(yùn)動(dòng)控制指令控制多個(gè)伺服驅(qū)動(dòng)器;
步驟s3:所述多個(gè)伺服驅(qū)動(dòng)器控制相應(yīng)的電機(jī)運(yùn)動(dòng);
具體地,plc運(yùn)動(dòng)控制器通過ethercat總線與多個(gè)伺服驅(qū)動(dòng)器相連接。plc運(yùn)動(dòng)控制器根據(jù)控制需要,預(yù)先通過梯形圖、st(structuredtext,結(jié)構(gòu)文本)等plc編程語言編好對(duì)應(yīng)于不同運(yùn)動(dòng)控制指令的功能模塊。根據(jù)工業(yè)pc控制子系統(tǒng)發(fā)來的運(yùn)動(dòng)控制指令,plc運(yùn)動(dòng)控制器調(diào)取相應(yīng)的功能模塊,通過ethercat總線控制對(duì)應(yīng)的伺服驅(qū)動(dòng)器,從而實(shí)現(xiàn)對(duì)相應(yīng)電機(jī)軸的運(yùn)動(dòng)控制
步驟s4:將所述plc控制子系統(tǒng)的反饋數(shù)據(jù)一次性讀取到所述工業(yè)pc控制子系統(tǒng)。
進(jìn)一步地,在本發(fā)明一實(shí)施例中,plc控制子系統(tǒng)的反饋數(shù)據(jù)包括所述多個(gè)伺服驅(qū)動(dòng)器控制電機(jī)運(yùn)動(dòng)的執(zhí)行結(jié)果數(shù)據(jù)和電機(jī)狀態(tài)數(shù)據(jù);在所述步驟s4中,所述plc控制子系統(tǒng)將所述執(zhí)行結(jié)果數(shù)據(jù)和所述電機(jī)狀態(tài)數(shù)據(jù)同時(shí)發(fā)送至所述工業(yè)pc控制子系統(tǒng)。所述多個(gè)伺服驅(qū)動(dòng)器將所述執(zhí)行結(jié)果數(shù)據(jù)和所述電機(jī)狀態(tài)數(shù)據(jù)返回至plc運(yùn)動(dòng)控制器的多個(gè)數(shù)據(jù)存儲(chǔ)單元。具體地,伺服驅(qū)動(dòng)器在控制電機(jī)軸運(yùn)動(dòng)后,需要返回根據(jù)一個(gè)執(zhí)行結(jié)果,這個(gè)執(zhí)行結(jié)果就存儲(chǔ)在plc運(yùn)動(dòng)控制器的數(shù)據(jù)存儲(chǔ)單元中;同時(shí),電機(jī)也將自身的狀態(tài)數(shù)據(jù)(例如,電機(jī)此時(shí)的轉(zhuǎn)速、位置等數(shù)據(jù))實(shí)時(shí)通過伺服驅(qū)動(dòng)器更新到數(shù)據(jù)存儲(chǔ)單元中。由此,可以方便工業(yè)pc控制子系統(tǒng)讀取。其中,多個(gè)數(shù)據(jù)存儲(chǔ)單元為多個(gè)離散寄存器,分別存儲(chǔ)有不同的伺服驅(qū)動(dòng)器反饋的執(zhí)行結(jié)果數(shù)據(jù)以及各個(gè)電機(jī)的電機(jī)狀態(tài)數(shù)據(jù)。
在本發(fā)明一實(shí)施例中,所述工業(yè)pc控制子系統(tǒng)10和所述plc控制子系統(tǒng)20之間通過擴(kuò)展的modbustcp協(xié)議通信,所述擴(kuò)展的modbustcp協(xié)議包括批量讀功能碼和批量寫功能碼。通過批量讀功能碼0x61,上位機(jī)可以通過新的功能碼一次性讀取離散寄存器數(shù)據(jù);另外一個(gè)功能是批量寫0x62,即上位機(jī)可以通過該功能碼一次性寫多個(gè)離散的寄存器。
進(jìn)一步地,如圖4所示,上述步驟s1包括以下步驟:
步驟s11:工業(yè)pc控制子系統(tǒng)的控制模塊生成運(yùn)動(dòng)控制指令;
步驟s12:
調(diào)用api庫的api接口函數(shù)將多個(gè)所述運(yùn)動(dòng)控制指令依次存儲(chǔ)到指令存儲(chǔ)單元;
步驟s13:將所述指令存儲(chǔ)單元存儲(chǔ)的所述多個(gè)運(yùn)動(dòng)控制指令一次性發(fā)送至所述plc控制子系統(tǒng)。
具體地,如上所述,所述工業(yè)pc控制子系統(tǒng)和所述plc控制子系統(tǒng)之間通過擴(kuò)展的modbustcp協(xié)議通信。因此,控制模塊需要向plc控制子系統(tǒng)發(fā)送多個(gè)運(yùn)動(dòng)控制指令時(shí),可以通過調(diào)用所述api接口函數(shù)來將所述多個(gè)運(yùn)動(dòng)控制指令按先后順序依次存儲(chǔ)到所述指令存儲(chǔ)單元;處理單元對(duì)指令存儲(chǔ)單元進(jìn)行輪詢,當(dāng)指令存儲(chǔ)單元不為空時(shí)(即有運(yùn)動(dòng)控制指令時(shí)),處理單元讀取指令存儲(chǔ)單元,通過批量寫功能碼把多個(gè)命令同時(shí)下發(fā)到plc控制子系統(tǒng);plc控制子系統(tǒng)響應(yīng)時(shí),處理單元不但要讀取執(zhí)行結(jié)果數(shù)據(jù),而且要將電機(jī)狀態(tài)數(shù)據(jù)也一起讀上來,即通過批量讀功能碼將plc控制子系統(tǒng)的多個(gè)離散寄存器中存儲(chǔ)的數(shù)據(jù)一次更新到工業(yè)pc控制子系統(tǒng)的內(nèi)存。由此,大大減少了通信數(shù)據(jù)冗余,達(dá)到了提高通信速度,滿足系統(tǒng)需求的目的。
進(jìn)一步地,在本實(shí)施例中,所述基于api的工業(yè)運(yùn)動(dòng)控制方法還包括:
在所述指令存儲(chǔ)單元為空時(shí),將所述電機(jī)狀態(tài)數(shù)據(jù)一次性讀取到所述工業(yè)pc控制子系統(tǒng)。
具體地,當(dāng)指令存儲(chǔ)單元為空時(shí)(即沒有運(yùn)動(dòng)控制指令時(shí)),處理單元通過0x61功能碼,把plc控制子系統(tǒng)的反饋數(shù)據(jù)一次性讀取到工業(yè)pc控制子系統(tǒng)存入內(nèi)存。這樣,當(dāng)工業(yè)pc控制子系統(tǒng)需要時(shí),可以直接從內(nèi)存中讀取,大大提高了效率。
有利地,本實(shí)施例提供的基于api的工業(yè)運(yùn)動(dòng)控制方法,工業(yè)pc控制子系統(tǒng)通過所述api庫向所述plc控制子系統(tǒng)一次性發(fā)送多個(gè)運(yùn)動(dòng)控制指令;plc控制子系統(tǒng)根據(jù)該多個(gè)運(yùn)動(dòng)控制指令控制電機(jī)軸完成相應(yīng)的運(yùn)動(dòng)后,工業(yè)pc控制子系統(tǒng)一次性讀取plc控制子系統(tǒng)的反饋數(shù)據(jù)。由此,既可以通過工業(yè)pc控制子系統(tǒng)提供可視化功能,又可以利用plc的穩(wěn)定性能來實(shí)現(xiàn)對(duì)電機(jī)軸的控制;同時(shí),工業(yè)pc控制子系統(tǒng)和plc控制子系統(tǒng)之間通過擴(kuò)展的modbustcp協(xié)議通信,工業(yè)pc控制子系統(tǒng)可以通過批量寫功能碼同時(shí)將多個(gè)運(yùn)動(dòng)控制指令一次性發(fā)送到plc控制子系統(tǒng),通過批量寫功能碼一次性讀取plc控制子系統(tǒng)的反饋數(shù)據(jù),由此可以大大減少了通信數(shù)據(jù)冗余,達(dá)到了提高通信速度,滿足系統(tǒng)需求的目的。
以上所揭露的僅為本發(fā)明一種較佳實(shí)施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分流程,并依本發(fā)明權(quán)利要求所作的等同變化,仍屬于發(fā)明所涵蓋的范圍。