本文介紹自動(dòng)導(dǎo)引車(AGV)控制系統(tǒng)的實(shí)現(xiàn)過程,分為硬件搭建和軟件設(shè)計(jì)兩部分。
(一)車載控制器
1.1 車載控制器的類型
車載控制器是控制系統(tǒng)乃至整個(gè) AGV 的核心,那么應(yīng)該選擇哪種控制器呢?根據(jù)筆者的經(jīng)驗(yàn),從硬件角度看,AGV采用的車載控制器基本分為以下三種:
1. PLC:代表產(chǎn)品例如西門子公司的 S7-1200和1500系列,使用 AGV 廠家有佳順、嘉騰。PLC 以穩(wěn)定性好、可靠性高著稱,但是它的長項(xiàng)是邏輯控制,一般只能做簡單的運(yùn)動(dòng)控制。西門子 PLC 的價(jià)格大概在2000元~12000元左右。
2. 工控機(jī):代表產(chǎn)品例如倍福公司的 CX5130,使用廠家有昆船、羅伯特木牛流馬。工控機(jī)其實(shí)就是一臺(tái)電腦,只不過經(jīng)過精心的設(shè)計(jì)使其具有很強(qiáng)的抗干擾能力,可以用于振動(dòng)、電磁輻射等惡劣的工業(yè)環(huán)境。工控機(jī)結(jié)構(gòu)緊湊、體積小巧,其可以運(yùn)行通用的操作系統(tǒng),比如 Windows、Linux。以倍福為例,安裝它的 TwinCAT 控制軟件后,會(huì)在 Windows 操作系統(tǒng)中插入實(shí)時(shí)內(nèi)核,將電腦變成適合工業(yè)場合的實(shí)時(shí)控制系統(tǒng)。倍福工控機(jī)的售價(jià)大概在5000到30000元左右。
3. 單片機(jī):代表產(chǎn)品例如 STM32,使用廠家有海通、機(jī)科。相比前兩者,單片機(jī)的價(jià)格低廉,加上外圍器件成本最多也不過千元左右。使用單片機(jī)的一個(gè)缺點(diǎn)是,如果要做成成熟的產(chǎn)品,你需要花費(fèi)很多精力設(shè)計(jì)外部電路以及各種底層算法。軟件開發(fā)環(huán)境可能會(huì)差一些。
上面的分類并不意味著三者是涇渭分明的,例如 PLC 的核心芯片可能就是一個(gè)單片機(jī);而工控機(jī)的編程語言很可能就采用了 PLC 領(lǐng)域使用的梯形圖、ST等語言;單片機(jī)上面也可以裝載操作系統(tǒng),從而形成一個(gè)完整的控制器。所以,雖然它們各有自己適用的領(lǐng)域,但是相互之間也會(huì)取長補(bǔ)短,演變成你中有我我中有你的局面。
當(dāng)然,現(xiàn)在市場上有專門的AGV控制器,例如美國NDC的CVC600,瑞士BlueBotics的ANT、浙江科聰智能的 MRC5000,上海仙知機(jī)器人的SRC。與通用的工業(yè)運(yùn)動(dòng)控制器或PLC相比,這類控制器集成了成熟的導(dǎo)航和運(yùn)動(dòng)控制算法,為用戶省去很多工作,而且其穩(wěn)定性和防護(hù)等級(jí)更高,但其價(jià)格也較高(2萬~6萬元)。
1.2 西門子 S7-1200 PLC
我選擇西門子的 S7-1215C 型 PLC 作為 AGV 的車載控制器(以后簡稱為S1200),如下圖所示。由于西門子的產(chǎn)品型號(hào)非常豐富,各個(gè)型號(hào)在接口種類、性能等方面有細(xì)微的差別,在購買時(shí)為了準(zhǔn)確描述具體是哪個(gè)型號(hào),最好使用訂貨號(hào)。西門子每種產(chǎn)品都有一個(gè)唯一的訂貨號(hào),在采購時(shí)只需要提供這個(gè)編號(hào)即可。在西門子的編程軟件中也可根據(jù)訂貨號(hào)查找對應(yīng)的型號(hào)。當(dāng)然,使用西門子的產(chǎn)品也有一些缺點(diǎn),比如它的PLC是通用產(chǎn)品,并不是針對車輛控制而專門設(shè)計(jì)的。淘寶上一個(gè)100元的ARM開發(fā)板都具有RS485、CAN、以太網(wǎng)接口,而西門子卻要為此付出昂貴的代價(jià),西門子的產(chǎn)品開放性非常差。所以,以后的AGV會(huì)逐步淘汰西門子的產(chǎn)品。
什么是上位機(jī)和下位機(jī)?
有些設(shè)備能夠訪問其它的設(shè)備,比如讀取內(nèi)存中的數(shù)據(jù)、向內(nèi)存寫數(shù)據(jù),這樣的設(shè)備具有較高的權(quán)限和地位,因此被稱為上位機(jī)。有些設(shè)備只能被其它設(shè)備訪問,而沒有訪問其它設(shè)備的權(quán)力,這樣的設(shè)備就稱為下位機(jī)。在本文中,PLC就是下位機(jī),而編程計(jì)算機(jī)就是它的上位機(jī)。
想對PLC進(jìn)行設(shè)置或編程,需要使用網(wǎng)線將 S1200 與上位機(jī)連接,只需要將上位機(jī)的 IP 地址設(shè)置為與 PLC 同一網(wǎng)段即可。S1200 一般出廠默認(rèn)的 IP 地址是 192.168.0.1,所以可以將你的電腦的 IP 設(shè)置為 192.168.0.2。對于 AGV 這種移動(dòng)設(shè)備,通常會(huì)采用無線通訊,例如接收調(diào)度系統(tǒng)的控制指令。
無線通信方式有 WIFI、ZigBee等等。由于 WIFI 在實(shí)際中使用較多,我介紹一下它的配置方法。使用 WIFI 連接西門子 PLC 非常方便,只需要用網(wǎng)線將 PLC 的以太網(wǎng)口連接到無線路由器的 LAN 口,然后用筆記本搜索到對應(yīng)的 WIFI 后連接即可訪問 PLC。所用的無線路由器可以是任意品牌,甚至家用路由器都可以。(筆者在淘寶買過一款國產(chǎn)以太網(wǎng)轉(zhuǎn) WIFI 轉(zhuǎn)換器,但奇怪的是不支持博途軟件(博圖無法訪問到PLC),所以你購買前最好跟商家確認(rèn)是否能用于博途。如果你想追求更穩(wěn)定可靠的通信,可以選擇工業(yè)級(jí)通訊模塊,例如摩莎(MOXA),它的供電電壓兼容12V~48V。)
如果說車載控制器是AGV的大腦,那么AGV還要有心臟和肌肉才能運(yùn)動(dòng)起來,驅(qū)動(dòng)器給車輪的電機(jī)提供電流,相當(dāng)于心臟。
2.1 低壓驅(qū)動(dòng)器品牌
由于AGV普遍采用蓄電池供電,其電壓一般在12V~72V左右。因此AGV使用的驅(qū)動(dòng)器屬于低壓直流型伺服驅(qū)動(dòng)器。國外的低壓驅(qū)動(dòng)器品牌有:AMC、RoboteQ、ZAPI(薩牌)、Curtis(柯蒂斯)、Elmo(埃莫)等,中國國內(nèi)的低壓驅(qū)動(dòng)器品牌有:步科、森創(chuàng)、英博爾、凱利。
2.2 PLC與驅(qū)動(dòng)器通信PLC
要想控制驅(qū)動(dòng)器就要向它發(fā)送指令數(shù)據(jù)。低端驅(qū)動(dòng)器可以用模擬量或者脈沖信號(hào)傳遞數(shù)據(jù),高端驅(qū)動(dòng)器則采用規(guī)范的通信協(xié)議傳遞數(shù)據(jù),這樣的通信可以借助 RS-232、RS-485、CAN、EtherCAT 等協(xié)議實(shí)現(xiàn)。因?yàn)?S1200 的 CPU 模塊沒有這些通訊接口,所以要想連接驅(qū)動(dòng)器,需要購買額外的通信模塊(CM:Communication Module)。
上面提到的幾種協(xié)議西門子都有對應(yīng)的通信模塊支持,比如西門子的 232 、485 和 CANopen 通信模塊如下圖所示(這三種模塊外形完全一樣),注意 232 和 CANopen 模塊的插頭是公頭,而485的則是母頭。
對于移動(dòng)設(shè)備來說,CAN總線是最常用的通訊方式,像汽車、挖掘機(jī)、AGV一般都采用CAN總線通訊。CAN 總線的速度快(最高可達(dá)1Mb/s,比485要快)、穩(wěn)定性高(采用差分信號(hào),抗干擾),更“智能”(有優(yōu)先級(jí)和仲裁機(jī)制),因此應(yīng)該優(yōu)先選擇 CAN 總線。但是考慮到西門子本身沒有 CAN通信模塊(如果想使用CAN,要購買第三方公司HMS提供的CANopen模塊),本文使用的驅(qū)動(dòng)器采用 485 協(xié)議,所以我們選擇485模塊。
隨之而來的一個(gè)問題是:S1200能外擴(kuò)幾個(gè)通信模塊?
答案是:3個(gè)。
不管是哪種通信模塊,數(shù)量最多只能是3個(gè),種類不限可以混用。如果你的驅(qū)動(dòng)器是總線型(485和CAN都屬于總線型)的,那么只要一個(gè)485模塊或者 CANopen 模塊就行了。注意232不是總線型的,所以用兩個(gè)驅(qū)動(dòng)器就要添加兩個(gè)通信模塊。如果你的 AGV 還有其它走通信協(xié)議的傳感器(例如磁導(dǎo)航傳感器、RFID傳感器),那么3個(gè)通信模塊很有可能就顯得捉襟見肘。
西門子485模塊的接頭采用了標(biāo)準(zhǔn)9 針D型插孔式連接器。為了將驅(qū)動(dòng)器和PLC連接起來,我們要購買DB9接頭,并用信號(hào)線將兩個(gè)頭連接起來。這里我們只利用兩個(gè)信號(hào)線即可。值得注意的是,西門子的485接口定義和常規(guī)的485不一樣,常規(guī)485的信號(hào)收發(fā)是1、2頭,而西門子的485則是3、8頭(參考手冊的第1769頁)。所以在連線時(shí),要按照 3-2、8-1的對應(yīng)順序焊接,如下圖所示:
(三)移動(dòng)機(jī)構(gòu)
AGV要想實(shí)現(xiàn)搬運(yùn)、移載就要有移動(dòng)機(jī)構(gòu),通常采用的移動(dòng)機(jī)構(gòu)有舵輪、差速輪和麥克納姆輪。它們各自有什么特點(diǎn)呢?什么場合又該使用哪種輪子呢?
麥克納姆輪的優(yōu)點(diǎn)是運(yùn)動(dòng)精度高,但是結(jié)構(gòu)復(fù)雜,磨損嚴(yán)重,對地面挑剔,雖然麥克納姆輪問世超過30年了,但是實(shí)際應(yīng)用并不多,這也說明它不是一個(gè)實(shí)用的產(chǎn)品。下面我們主要講解舵輪。
舵輪是個(gè)高度集成的移動(dòng)機(jī)構(gòu),由車輪、回轉(zhuǎn)支撐、齒輪箱、驅(qū)動(dòng)電機(jī)、轉(zhuǎn)向電機(jī)、編碼器、限位開關(guān)、制動(dòng)器等部件組成,它既能提供牽引力,也可以主動(dòng)轉(zhuǎn)向,因此一個(gè)舵輪有兩個(gè)自由度。AGV 使用一個(gè)或以上的舵輪就可以實(shí)現(xiàn)全向移動(dòng):原地旋轉(zhuǎn)、斜行、橫移等等。
舵輪一般用于室內(nèi)環(huán)境,所以輪面的材料多為聚氨酯。根據(jù)電機(jī)的安裝位置可以將舵輪分為兩種:臥式和立式,分別如下兩圖所示。臥式舵輪的驅(qū)動(dòng)電機(jī)橫向安裝,因此整體高度很低,有些AGV對高度有要求(例如潛入式的AGV要很矮才能鉆到貨物底下),這時(shí)就適合使用臥式舵輪;立式舵輪的驅(qū)動(dòng)電機(jī)豎著安裝,其整體高度偏高,它的優(yōu)點(diǎn)是方便將電機(jī)隔離起來,在有些場合(例如危險(xiǎn)品工廠),要求舵輪電機(jī)與外部環(huán)境隔離,這時(shí)就適合使用立式舵輪。國外主要的舵輪生產(chǎn)廠家有:意大利的 CFR 和德國的 schabmuller(夏伯穆勒),后來從CFR中又獨(dú)立出來了一個(gè)廠家——馬路達(dá)。這些舵輪生產(chǎn)廠家一般只賣舵輪,不提供驅(qū)動(dòng)器,驅(qū)動(dòng)器則由代理商提供。一臺(tái)AGV上最貴的部件就是舵輪,以一臺(tái)成本10萬元左右的AGV為例,如果配備兩個(gè)舵輪,就需要4~5萬元,占整車成本將近一半。不過好消息是,國內(nèi)的舵輪廠家開始參與競爭,這將降低AGV的成本。
AGV要想實(shí)現(xiàn)搬運(yùn)、移載就要有移動(dòng)機(jī)構(gòu),通常采用的移動(dòng)機(jī)構(gòu)有舵輪、差速輪和麥克納姆輪。它們各自有什么特點(diǎn)呢?什么場合又該使用哪種輪子呢?
麥克納姆輪的優(yōu)點(diǎn)是運(yùn)動(dòng)精度高,但是結(jié)構(gòu)復(fù)雜,磨損嚴(yán)重,對地面挑剔,雖然麥克納姆輪問世超過30年了,但是實(shí)際應(yīng)用并不多,這也說明它不是一個(gè)實(shí)用的產(chǎn)品。下面我們主要講解舵輪。
舵輪是個(gè)高度集成的移動(dòng)機(jī)構(gòu),由車輪、回轉(zhuǎn)支撐、齒輪箱、驅(qū)動(dòng)電機(jī)、轉(zhuǎn)向電機(jī)、編碼器、限位開關(guān)、制動(dòng)器等部件組成,它既能提供牽引力,也可以主動(dòng)轉(zhuǎn)向,因此一個(gè)舵輪有兩個(gè)自由度。
AGV 使用一個(gè)或以上的舵輪就可以實(shí)現(xiàn)全向移動(dòng):原地旋轉(zhuǎn)、斜行、橫移等等。舵輪一般用于室內(nèi)環(huán)境,所以輪面的材料多為聚氨酯。
根據(jù)電機(jī)的安裝位置可以將舵輪分為兩種:臥式和立式,分別如下兩圖所示。
臥式舵輪的驅(qū)動(dòng)電機(jī)橫向安裝,因此整體高度很低,有些AGV對高度有要求(例如潛入式的AGV要很矮才能鉆到貨物底下),這時(shí)就適合使用臥式舵輪;
立式舵輪的驅(qū)動(dòng)電機(jī)豎著安裝,其整體高度偏高,它的優(yōu)點(diǎn)是方便將電機(jī)隔離起來,在有些場合(例如危險(xiǎn)品工廠),要求舵輪電機(jī)與外部環(huán)境隔離,這時(shí)就適合使用立式舵輪。
國外主要的舵輪生產(chǎn)廠家有:意大利的 CFR 和德國的 schabmuller(夏伯穆勒),后來從CFR中又獨(dú)立出來了一個(gè)廠家——馬路達(dá)。這些舵輪生產(chǎn)廠家一般只賣舵輪,不提供驅(qū)動(dòng)器,驅(qū)動(dòng)器則由代理商提供。一臺(tái)AGV上最貴的部件就是舵輪,以一臺(tái)成本10萬元左右的AGV為例,如果配備兩個(gè)舵輪,就需要4~5萬元,占整車成本將近一半。不過好消息是,國內(nèi)的舵輪廠家開始參與競爭,這將降低AGV的成本。
(四)磁導(dǎo)航傳感器和磁條
4.1 磁條
磁條導(dǎo)航是目前 AGV 使用最多的導(dǎo)航方式之一。只需要預(yù)先在地面鋪設(shè)好磁條,AGV 就會(huì)沿著磁條形成的路徑運(yùn)動(dòng)。磁條一般寬3~5cm,它像膠帶一樣,一面光滑、一面帶有粘性,將粘性的一面粘貼在地面即可完成鋪設(shè)。磁條具有極性,在購買時(shí)注意是N極還是S極,磁條的極性對應(yīng)磁導(dǎo)航傳感器的極性,但有些傳感器兩種都兼容。磁條質(zhì)地較軟、不抗壓,所以如果被輪子反復(fù)碾壓可能會(huì)壓扁或擠脫落。多數(shù) AGV 為了避免壓壞磁條會(huì)將驅(qū)動(dòng)輪布置在車體的兩側(cè)(差速形式)或者斜對稱的位置上。
4.2 磁導(dǎo)航
磁導(dǎo)航傳感器也叫磁循跡傳感器,它用來幫助AGV巡線行走。磁導(dǎo)航傳感器一般安裝在AGV車體或者驅(qū)動(dòng)輪組上,在AGV運(yùn)動(dòng)時(shí)始終保持在磁條上方一定高度內(nèi)。磁導(dǎo)航傳感器相對于車體的安裝位置一般在對稱中軸線上,通常對稱安裝,例如前后各一個(gè)或者左右各一個(gè)。
磁導(dǎo)航傳感器的原理很簡單,傳感器上有若干個(gè)探頭,每個(gè)探頭都能檢測磁場,位于磁條上方(一定高度內(nèi))的探頭有信號(hào)輸出,超出磁條的探頭則沒有信號(hào)。探頭通常俗稱為“點(diǎn)”,點(diǎn)越多表示傳感器的分辨率越高,當(dāng)然價(jià)格也越貴。傳感器通常的點(diǎn)數(shù)有:6點(diǎn)、8點(diǎn)、16點(diǎn)幾種。磁導(dǎo)航傳感器并不是什么神秘的東西,筆者曾經(jīng)拆解過一款磁導(dǎo)航傳感器,這里所說的探頭無非有兩種,一種是霍爾元件、還有一種是地磁傳感器?;魻栐奶攸c(diǎn)大家大學(xué)的時(shí)候應(yīng)該都學(xué)過,它能感應(yīng)磁場,價(jià)格低但是精度通常不高;地磁傳感器基本都采用美國 PNI 公司的產(chǎn)品。
它要搭配專用的驅(qū)動(dòng)芯片 PNI-12927,這個(gè)芯片是3.3V供電,所以傳感器內(nèi)部要設(shè)計(jì)3.3V穩(wěn)壓電路,而且這個(gè)驅(qū)動(dòng)芯片采用 SPI 總線,要對其信號(hào)進(jìn)行處理和電壓變換,這通常由單片機(jī)來完成。磁導(dǎo)航傳感器的輸出信號(hào)可以是數(shù)字量也可以是總線型數(shù)據(jù),對于點(diǎn)數(shù)多的傳感器來說一般用總線型,因?yàn)槿绻褂脭?shù)字量需要很多根線。假設(shè)一個(gè) AGV 使用4個(gè)傳感器,每個(gè)傳感器的分辨率是16點(diǎn),那就要有4×16=64 4 imes16=644×16=64個(gè)輸出,相應(yīng)的 PLC 應(yīng)該有 64 個(gè)數(shù)字量輸入口,其接線將非常繁瑣,也容易出故障(例如某根線連接不牢固)。
磁導(dǎo)航方式實(shí)現(xiàn)簡單,價(jià)格便宜,但是缺點(diǎn)也不少,其中一個(gè)嚴(yán)重的問題是干擾。筆者在調(diào)試 AGV時(shí)發(fā)現(xiàn),即使傳感器并不在磁條上方(有時(shí)甚至周圍根本沒有磁條),傳感器依然有輸出。經(jīng)過一番思考,筆者發(fā)現(xiàn)了問題所在。AGV 前方有一條鐵軌,而鐵是容易被磁化的。不僅是鐵制品,通電的導(dǎo)線也可能會(huì)使傳感器誤報(bào)。所以,使用磁條導(dǎo)航要排除這些干擾。
磁導(dǎo)航傳感器的輸出可以是IO,也可以是數(shù)值(代表傳感器偏離磁條中心的距離值)。
磁導(dǎo)航傳感器如何與 PLC 連接?
如上所述,如果傳感器采用總線(例如485)傳遞數(shù)據(jù),直接將總線連接到相應(yīng)的(485)通信模塊即可。如果傳感器采用數(shù)字量接口,那么就要連接到 PLC 的數(shù)字量輸入口。
這里有個(gè)很重要的問題:你要清楚傳感器輸出的信號(hào)是 PNP 型還是 NPN 型,它對應(yīng)了三極管的類型,它們的區(qū)別在于有信號(hào)時(shí) PNP 輸出高電平(例如24V),而 NPN 輸出低電平(例如0V)。在 S1200 上每組輸入輸出口旁邊都有一個(gè) COM 口,它的作用就是選擇輸入是 PNP 型還是 NPN 型。如果是 PNP 型,COM 口就要接 24V ,如果是 NPN 型就要接 0V。你可以找個(gè)磁條用萬用表測試一下,如果放到磁條上輸出顯示是24V那說明是 PNP 型。以后你會(huì)知道,很多傳感器都分 PNP 型和 NPN 型,它們的接法是一樣的。
它要搭配專用的驅(qū)動(dòng)芯片 PNI-12927,這個(gè)芯片是3.3V供電,所以傳感器內(nèi)部要設(shè)計(jì)3.3V穩(wěn)壓電路,而且這個(gè)驅(qū)動(dòng)芯片采用 SPI 總線,要對其信號(hào)進(jìn)行處理和電壓變換,這通常由單片機(jī)來完成。磁導(dǎo)航傳感器的輸出信號(hào)可以是數(shù)字量也可以是總線型數(shù)據(jù),對于點(diǎn)數(shù)多的傳感器來說一般用總線型,因?yàn)槿绻褂脭?shù)字量需要很多根線。假設(shè)一個(gè) AGV 使用4個(gè)傳感器,每個(gè)傳感器的分辨率是16點(diǎn),那就要有4×16=64 4 imes16=644×16=64個(gè)輸出,相應(yīng)的 PLC 應(yīng)該有 64 個(gè)數(shù)字量輸入口,其接線將非常繁瑣,也容易出故障(例如某根線連接不牢固)。
(五)供電系統(tǒng)
5.1 電池AGV
啟動(dòng)時(shí)需要的電流大,因此需要使用動(dòng)力電池,使用最多的動(dòng)力電池有鉛酸電池和鋰電池。鉛酸電池壽命短、能量密度低,而鋰電池密度高、但是成本也高。還有一種電池叫做超級(jí)電容,它的壽命很長,但是能量密度非常低,所以用的不多。
知名的電池廠家有霍克(HAWKER)、荷貝克(HOPPECKE)等。下圖是霍克 AGV 專用電池標(biāo)簽。
鉛酸電池的額定放電電流一般是0.5C,例如80Ah的電池,額定放電電流是0.5×80=40A 0.5 imes80=40A0.5×80=40A。
鉛酸電池的最大放電電流一般是3C,即3×80=240A 3 imes80=240A3×80=240A。電池的電壓會(huì)隨著電量消耗逐漸降低,開始降低得很慢,當(dāng)電量很少時(shí)會(huì)急劇下降。根據(jù)這個(gè)關(guān)系,通過檢測電壓就能知道電池還剩余多少電,是否應(yīng)該充電。
我們?nèi)绾喂烙?jì)一個(gè) AGV 該選用多大容量的電池呢?
AGV 上最耗電的器件就是電機(jī)了。一般來說,電機(jī)的額定功率 P PP會(huì)寫在電機(jī)銘牌上。
根據(jù)初中物理知識(shí),功率等于電壓和電流的乘積,
即:P=UI P=UI
P=UI驅(qū)動(dòng)電機(jī)的額定電壓一般容易得到,所以通過上式可以計(jì)算出電流。當(dāng)然,實(shí)際工作的功率一般會(huì)比額定功率小,所以這里要乘以一個(gè)系數(shù),具體要看 AGV 的負(fù)重、工作路面等。求出電流乘以工作時(shí)間就是電池的容量了。注意,電池的容量和能量是兩個(gè)不同的概念,前者是電流乘以時(shí)間(單位是“安時(shí)”(Ah))、而后者是電流乘以電壓乘以時(shí)間(單位是“千瓦時(shí)”(KWh))。
5.2 電壓變換
如果傳感器、控制器等器件和電池的輸出電壓不同,就需要使用電壓變換模塊,它還可以起到穩(wěn)壓的作用。一般傳感器常用的電壓是12V、控制器常用的電壓是24V,因此需要有相應(yīng)的模塊??梢赃x擇廣州金升陽的電壓變換模塊,可選配散熱片和導(dǎo)軌,便于散熱和固定,如下圖所示的48V轉(zhuǎn)24V的模塊。選擇模塊時(shí)主要關(guān)心的功率,即它能提供的最大電流。
(六)開關(guān)
6.1 電源開關(guān)
選擇電源總開關(guān)時(shí)要注意它是“自鎖的”還是“自動(dòng)復(fù)位的”。
自鎖的意思就是按下后即使手指松開,開關(guān)依然保持閉合使供電暢通;而自動(dòng)復(fù)位的開關(guān)按下按鈕后如果松開手指,電路就會(huì)被切斷,如下圖所示。
一般機(jī)箱上的電源總開關(guān)應(yīng)該選擇自鎖型的,否則你要一直按著按鈕才能使電路暢通,因此不要購買下圖右所示的自復(fù)位型開關(guān)(代號(hào):XB2-BA31C,價(jià)格在22元左右)。假如你買錯(cuò)了也不要緊,你可以再買一個(gè)自鎖模塊ZB2-BZ21 C,將這個(gè)模塊添加到XB2-BA31C開關(guān)上就能將它變成一個(gè)自鎖開關(guān)。
6.2 急停開關(guān)
在所有AGV 車體上都能找到的一個(gè)東西就是急停開關(guān)。根據(jù)國家標(biāo)準(zhǔn)GBT 20721-2006 《自動(dòng)導(dǎo)引車 通用技術(shù)條件》中第4.2.6項(xiàng)的規(guī)定:“AGV 應(yīng)配備緊急停車按鈕,該按鈕的安裝位置在緊急情況下應(yīng)便于操作。應(yīng)采用紅色按鈕,急停按鈕按下應(yīng)關(guān)閉 AGV 驅(qū)動(dòng)電源”。
在AGV失去控制的情況下,按下急停開關(guān)能讓它立即停止運(yùn)動(dòng),從而防止傷害到人。因此急停開關(guān)構(gòu)成了最后的安全屏障。為了保證使用可靠,可以購買施耐德的XB2-BS542C。急停開關(guān)的按鈕一般設(shè)計(jì)得很大,方便按下,因此又被俗稱為蘑菇頭,它一般都是自鎖的,按下后需要旋轉(zhuǎn)才能松開。購買時(shí)唯一要注意的是它的安裝直徑,一般選擇 22mm 即可。
(七)電氣元件
AGV上既有強(qiáng)電也有弱電,例如舵輪的驅(qū)動(dòng)器需要的電流通常很大,而控制器和一些傳感器只需要很小的電流。我們要合理設(shè)計(jì)電路,防止它們相互干擾,更主要的是包含弱電器件。根據(jù)國家標(biāo)準(zhǔn)GBT 30029-2013 《自動(dòng)導(dǎo)引車(AGV)設(shè)計(jì)通則》中第6.7.7.4項(xiàng)的規(guī)定,控制器應(yīng)該具有過壓保護(hù)、欠壓保護(hù)、過流保護(hù)功能。
我們要在電路中加入以下器件:■ lacksquare■接觸器:用小電流控制大電流。上面的電源開關(guān)只允許通過較小的電流,但有時(shí)設(shè)備里有些組件需要大電流才能啟動(dòng),例如舵輪驅(qū)動(dòng)器。我們不能用一個(gè)開關(guān)既控制小電流也控制大電流,這時(shí)就需要借助接觸器。接觸器內(nèi)部有個(gè)電磁鐵,我們用小電流控制電磁鐵的吸合,電磁鐵帶動(dòng)另一組開關(guān)閉合使大電流通過。在AGV上使用的是直流接觸器,注意接觸器的線圈會(huì)發(fā)出一定熱量,安裝應(yīng)當(dāng)注意散熱和對附近器件的影響。
斷路器:起到過流、欠壓保護(hù)的作用。斷路器也相當(dāng)于一個(gè)開關(guān),在短路等電流過大時(shí)斷開,保護(hù)設(shè)備;
繼電器:也相當(dāng)于一個(gè)開關(guān),它是用小電壓控制觸點(diǎn)開閉的,但是注意觸點(diǎn)不能流過太大電流。
AGV 采用電池作為能源,而電池的電壓通常不是很穩(wěn)定,在使用時(shí)電壓會(huì)波動(dòng)。雖然西門子的 PLC 對輸入電壓具有一定的適應(yīng)能力,但是我們最好用一個(gè)24V到 24V 的穩(wěn)壓模塊將電池的電壓穩(wěn)定后再供給 PLC。對于使用24V供電的其它器件,例如磁導(dǎo)航傳感器,也是這樣。
(八)激光避障傳感器
AGV的安全防護(hù)方式有接觸式和非接觸式之分。觸邊屬于接觸式的,而激光傳感器和超聲波傳感器屬于非接觸式。當(dāng)然非接觸式的傳感器更加安全,因?yàn)椴恍枰苯咏佑|即可監(jiān)測障礙物。
常用的國外激光傳感器品牌有SICK和HOKUYO。以SICK的Tim310為例,它的監(jiān)測距離可達(dá)3米,可以設(shè)置不同的監(jiān)測區(qū)域形狀。Tim310的輸出是I/O信號(hào),用以判斷是不是監(jiān)測到了障礙物。?
(九)觸摸屏
現(xiàn)在的 AGV 越來越多地開始配備觸摸屏了。使用觸摸屏可以方便地設(shè)置AGV的參數(shù),例如運(yùn)動(dòng)速度、充電電壓等等,而不需要每次都將程序下載到 PLC。既然我們選擇了西門子的PLC,當(dāng)然觸摸屏選擇西門子是最配對的,但是考慮到西門子的觸摸屏有點(diǎn)貴,我們選擇國產(chǎn)的品牌。國產(chǎn)觸摸屏的質(zhì)量也很可靠,而且價(jià)格合理,代表廠家有:威綸通、昆侖通態(tài)。由于西門子的知名度,大多數(shù)觸摸屏都會(huì)支持。但是如果你用其它品牌的PLC,那最好向觸摸屏廠家詢問是否支持你的PLC,否則是無法通訊的。
我選擇昆侖通態(tài)的觸摸屏,它采用24V直流供電,并配有網(wǎng)口,用普通網(wǎng)線將觸摸屏和 S1200 連接,并將觸摸屏的 IP 地址設(shè)置為與 PLC 所在同一網(wǎng)段(例如192.168.0.3)即可實(shí)現(xiàn)和 PLC 的互聯(lián)。設(shè)置 IP 的方法是上電后在進(jìn)入正式界面之前,在屏幕的任意位置點(diǎn)擊一下即可進(jìn)入設(shè)置界面。
我們?nèi)绾问褂糜|摸屏呢?我們需要對觸摸屏進(jìn)行編程,或者說“組態(tài)”。編程需要使用昆侖通態(tài)自己的組態(tài)軟件:MCGS,可以在它的官方網(wǎng)站免費(fèi)下載。
在你的電腦上安裝該軟件,注意在軟件中需要輸入 PLC 的地址才能讀寫數(shù)據(jù)。觸摸屏上只有一個(gè)網(wǎng)口,所以你可以用網(wǎng)線將觸摸屏連接到你的電腦。我們注意到 S1200 有兩個(gè)網(wǎng)口,所以一種更方便的連接方式是,將觸摸屏連接到 S1200 上,然后將 S1200 連接到你的電腦,這樣同樣能對觸摸屏進(jìn)行編程。
觸摸屏最基本的功能就是讀寫 PLC 的內(nèi)存(因此它也是PLC的上位機(jī))。要實(shí)現(xiàn)這個(gè)功能非常簡單,只需要在 MCGS 中對 PLC 的變量進(jìn)行關(guān)聯(lián)即可。
(十)PLC編程
10.1 編程工具 STEP 7
購買了S1200 并不意味著你能免費(fèi)使用它的開發(fā)軟件。但是沒關(guān)系,網(wǎng)上有很多破解軟件。有意思的是,其中有些資源就是西門子公司的人故意釋放出來的,他們可能想占有更多的市場。要對西門子的 PLC 編程必須使用專用的軟件:STEP 7 ,下圖是 STEP 7 的安裝過程。
實(shí)際上,STEP 7 是過時(shí)的名稱,現(xiàn)在西門子想將它和另外幾個(gè)自動(dòng)化軟件都統(tǒng)一成一個(gè)平臺(tái),適用于西門子旗下所有的設(shè)備,這個(gè)平臺(tái)被稱為:TIA Portal(博途),本文使用的就是 TIA V13。
西門子公司為了保持延續(xù)性,軟件的名稱有時(shí)是 STEP 7,有時(shí)又用 TIA,本文我為了與歷史統(tǒng)一還叫 STEP 7 好了。西門子的軟件跟硬件一樣種類繁多,光 STEP 7 就有幾個(gè)版本,例如專業(yè)版(professional SP1,如下圖左所示),而每個(gè)版本又有不同的更新包。注意 SP1 可能缺少某些功能(下面我會(huì)提到),因此我使用了更新包。具體來說,我使用的是 STEP 7 V13.0 SP1 Upd8,如下圖右所示。
在軟件安裝時(shí)我們注意到有這樣的說明:STEP 7是用于編程的工程組態(tài)工具。要使用 PLC,編程只是一方面,還有一個(gè)重要的工作就是“組態(tài)”。“組態(tài)”說白了就是“配置”,配置 PLC 的輸入輸出接口、參數(shù)、功能等等。首先,在“設(shè)備組態(tài)”頁面選擇我們的 PLC 型號(hào)就可以了。
10.2 西門子PLC的硬件資源要想用好PLC,就要熟悉它的一些特點(diǎn),下面我們就了解一下 S1215C 的特點(diǎn)。
1215C的內(nèi)存有多大呢?
我們用電腦連接上PLC,然后在博途軟件左側(cè)欄雙擊“在線和診斷”,然后在打開窗口中點(diǎn)擊“存儲(chǔ)器”,如下圖所示。
可以看到這里有三個(gè)存儲(chǔ)器,分別是:裝載存儲(chǔ)器、工作存儲(chǔ)器和保持存儲(chǔ)器。并且可以看到三個(gè)存儲(chǔ)器的大小,分別是:
1. 裝載存儲(chǔ)器:4194304 41943044194304 Byte ÷1024÷1024=4 div 1024 div 1024= 4÷1024÷1024=4MB
2.工作存儲(chǔ)器:128000 128000128000 Byte ÷1024=125 div 1024= 125÷1024=125KB
3. 保持存儲(chǔ)器:10240 1024010240 Byte ÷1024=10 div 1024= 10÷1024=10KB這和系統(tǒng)手冊中給出的數(shù)值是一樣的,如下
看完是不是都哭了,10年前的手機(jī)存儲(chǔ)器都比這要大。這三個(gè)存儲(chǔ)器各有什么作用呢?
1. 裝載存儲(chǔ)器:用于存儲(chǔ)用戶項(xiàng)目文件(例如:用戶程序、組態(tài)信息),相當(dāng)于硬盤;
2. 工作存儲(chǔ)器:CPU在執(zhí)行用戶程序時(shí)會(huì)將一些項(xiàng)目內(nèi)容從裝載存儲(chǔ)區(qū)復(fù)制到工作存儲(chǔ)區(qū),相當(dāng)于電腦的內(nèi)存;
3. 保持存儲(chǔ)器:掉電后數(shù)據(jù)仍然保持。如果你希望一些數(shù)據(jù)能在斷電后一直保持就要使用這個(gè)存儲(chǔ)器。但遺憾的是,小氣的西門子公司只給了我們10KB。
PLC 掃描一次程序需要多長時(shí)間呢?
PLC會(huì)自動(dòng)記錄時(shí)間,在同一頁面,打開“循環(huán)時(shí)間”,就能看到PLC完整執(zhí)行一遍程序需要的時(shí)間,如下圖所示。這個(gè)時(shí)間不是固定的,取決于你的程序長短,一般的執(zhí)行時(shí)間在3毫秒以內(nèi)。
10.3 西門子PLC的軟件資源西門子提供哪些函數(shù)運(yùn)算呢?
工業(yè)控制語言唯一的國際標(biāo)準(zhǔn)——IEC61131-3 規(guī)定了46個(gè)基本函數(shù),西門子都支持。除此以外,我們常用的還有定時(shí)器等。AGV 屬于移動(dòng)機(jī)器人,而機(jī)器人的控制本質(zhì)是數(shù)學(xué)計(jì)算,所以我重點(diǎn)說說其中的數(shù)學(xué)函數(shù),共有18個(gè):
數(shù)字運(yùn)算:ABS、SQRT、LOG、LN、EXP、SIN、COS、TAN、ASIN、ACOS、ATAN;
算術(shù)運(yùn)算:ADD、SUB、MUL、DIV、MOD、EXPT、MOVE;
當(dāng)然還有:>、< 比較運(yùn)算符。
翻開另一款控制器品牌——倍福的手冊,你會(huì)發(fā)現(xiàn)它同樣支持這幾個(gè)初級(jí)函數(shù)。在組態(tài)界面,雙擊 CPU 模塊能看到這款 PLC 的其它功能介紹,例如周期定時(shí)器,如下圖所示:
如果你使用了觸摸屏,有一點(diǎn)值得注意:在“保護(hù)”頁面中有一個(gè)選項(xiàng)需要勾選:“允許從遠(yuǎn)程伙伴使用PUT/GET通信訪問”,如下圖所示。如果不勾選這個(gè)選項(xiàng),你看你無法用觸摸屏讀寫 PLC 內(nèi)存中的數(shù)據(jù)。讓筆者奇怪的是,像這樣的細(xì)節(jié)幾乎在所有的手冊、教程中都找不到,但卻又很重要。
10.4 西門子PLC的編程方式
西門子PLC 的編程符合國際工業(yè)編程語言標(biāo)準(zhǔn) IEC-611313,因此跟倍福等廠家的差不多。
10.4.1 定義常量
有些量我們要經(jīng)常使用(例如圓周率 π piπ),如果每次都用數(shù)值來做運(yùn)算一方面輸入很容易出錯(cuò),另一方面如果想對其進(jìn)行更改那要改很多處,非常繁瑣。一個(gè)方便的做法是將其定義為一個(gè)全局的“常數(shù)”。使用 PLC 和 C 語言等高級(jí)語言相同的一點(diǎn)是,你需要為變量分配內(nèi)存地址。分配好地址后如何對其賦值呢?因?yàn)槌A恐恍枰x一次值即可,所以我們選擇在 Startup 塊中對其賦值。Startup 塊在每次 PLC 上電后只執(zhí)行一次。西門子中有些塊的序號(hào)是系統(tǒng)預(yù)留的,比如 Startup 就是 OB100。我們注意到,在博圖軟件中,全局變量用雙引號(hào)表示(例如"PI"),而局部變量前面帶個(gè)井號(hào)(下面會(huì)碰到)。
10.4.2 定義函數(shù)
西門子自帶的函數(shù)只能完成簡單的功能,為了實(shí)現(xiàn)更高級(jí)的控制我們還要自己寫一些函數(shù)。筆者在開發(fā)機(jī)器人控制器的過程中發(fā)現(xiàn),網(wǎng)上公開的PLC函數(shù)庫很少,目前筆者只知道OSCAT庫。大家都在討論基本的邏輯控制,卻鮮有人討論更高級(jí)的數(shù)學(xué)計(jì)算,可能 PLC 并不適合高級(jí)運(yùn)動(dòng)控制算法的實(shí)現(xiàn)。
下面我用一個(gè)很簡單的進(jìn)行角度弧度轉(zhuǎn)換的函數(shù)為例來說明如何在 STEP 7 中自定義函數(shù)。
(1) 首先,我們新建一個(gè)函數(shù)FC(這個(gè)函數(shù)比較簡單,不需要背景數(shù)據(jù),所以不用 FB),實(shí)現(xiàn)的語言選擇 SCL 語言。函數(shù)名為“DegreeToRad”。
(2) 然后,我們要明確這個(gè)函數(shù)的輸入,在上面的變量定義欄中的 Input 項(xiàng)目中輸入 angleInDegree,類型選擇為 Real,如下圖所示。在Return 項(xiàng)目中將 DegreeToRad 變量的類型改為 Real,這里注意不要修改 DegreeToRad 變量的名字。
(3) 在下面的輸入框輸入變換公式。
這里要用 := 對變量進(jìn)行賦值。你會(huì)注意到,變量 PI 是用雙引號(hào)括起來的,而其它的變量(例如 angleInDegree)前面則帶一個(gè)井號(hào)。這是用來區(qū)分局部變量和全局變量的,局部變量用#開頭表示,而全局變量用引號(hào)表示。
10.4.3 定時(shí)器
定時(shí)器是我們會(huì)經(jīng)常使用的一個(gè)功能,想輸出隨時(shí)間變化的量、想延時(shí)觸發(fā)、想輸出周期信號(hào)都要借助定時(shí)器。西門子的每個(gè)定時(shí)器都對應(yīng)一個(gè)背景數(shù)據(jù)塊。筆者早期經(jīng)常犯的一個(gè)錯(cuò)誤是,為了節(jié)省時(shí)間直接復(fù)制粘貼定時(shí)器塊。其錯(cuò)誤是不管你復(fù)制多少次,其實(shí)最終還是同一個(gè)定時(shí)器,而且后面的會(huì)覆蓋前面的值。這個(gè)錯(cuò)誤導(dǎo)致很多匪夷所思的錯(cuò)誤,讓筆者頭疼了相當(dāng)長的時(shí)間。各位一定要注意,每使用一個(gè)定時(shí)器都要重新拖進(jìn)來新建。
10.4.4 磁循跡算法
為了讓 AGV 始終沿著磁條行走,我們要編寫相應(yīng)的控制程序,也就是循跡程序。循跡程序的邏輯可以非常簡單,我們的輸入是磁導(dǎo)航傳感器的讀數(shù),輸出則是舵輪轉(zhuǎn)向的速度(或差速輪的轉(zhuǎn)速差),磁條如果在 AGV 車體中心線的左側(cè),我們就往左偏轉(zhuǎn),反之在右側(cè)就往右偏轉(zhuǎn),而如果恰好在中間則保持不動(dòng)。下面的仿真動(dòng)畫展示了這種控制策略的效果,其中只使用了一個(gè)傳感器和一個(gè)舵輪,但已經(jīng)可以沿著曲線行走了。磁導(dǎo)航傳感器有六個(gè)點(diǎn),安裝在前方,紅色的方格表示感應(yīng)到了磁條,白色表示沒有感應(yīng)到。
編輯:hfy
-
控制器
+關(guān)注
關(guān)注
112文章
16419瀏覽量
178811 -
機(jī)器人
+關(guān)注
關(guān)注
211文章
28573瀏覽量
207740 -
西門子
+關(guān)注
關(guān)注
94文章
3059瀏覽量
116155 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3254瀏覽量
115098 -
AGV
+關(guān)注
關(guān)注
27文章
1322瀏覽量
41166
發(fā)布評論請先 登錄
相關(guān)推薦
評論