AGV控制系統搭建

目的
  本文介紹自動導引車(AGV)控制系統的實現過程,分爲硬件搭建和軟件設計兩部分。

1. 車載控制器

1.1 車載控制器的類型

  車載控制器是電氣控制系統乃至整個 AGV 的核心,那麼車載控制器是什麼呢?國家標準GBT 30030-2013《 自動導引車(AGV)術語》中定義AGV爲“由計算機控制的運輸工具”,所以車載控制器本質上就是一個計算機。然而計算機也可細分爲好多種。根據筆者的經驗,從硬件角度劃分,AGV目前採用的車載控制器基本分爲以下三種:

  1. PLC:代表產品如西門子公司的 S7-1200和1500系列,使用的 AGV 廠家有佳順、嘉騰。PLC 以穩定性好、可靠性高著稱,但是它的強項是邏輯控制,一般只能做簡單的運動控制和數值計算,開發難度不大,但是PLC開放性差(不容易擴展自己的軟件功能和硬件模塊)。西門子 PLC 的價格大概在2000~14000元左右。

  2. 工控機:代表產品如倍福公司的 CX5130、CX5020,使用的廠家有昆船、新鬆、艾吉威、羅伯特木牛流馬、成都航發。工控機本質上就是一臺個人電腦,只不過經過特殊的設計使其具有很強的抗干擾能力,可以用於振動、電磁輻射等惡劣的工業環境。工控機結構緊湊、體積小巧,其可以運行通用的操作系統,比如 Windows、Linux。以倍福爲例,安裝它的 TwinCAT 控制軟件後,會在 Windows 操作系統中插入實時內核,將電腦變成適合工業控制的實時控制系統。由於採用了通用的硬件和操作系統,工控機的靈活性好(例如新鬆就購買了倍福的軟PLC核,硬件則使用了研華的工控機),開發難度較小。倍福工控機的價格昂貴,一般在5000~30000元左右,而且收費項目繁多,例如你用一個小的軟件功能(例如TCP/IP通信)都要額外付費。
  3. 單片機:一般是各AGV廠家基於ARM、DSP等芯片自己開發,使用的廠家有海通、艾吉威、機科。PLC和工控機的價格昂貴,僅僅一個CAN總線通訊模塊可能就要數千元。相比而言,單片機就低廉得多,採用最好的芯片,加上外圍器件硬件成本最多也不過數百元左右。但是單片機的方案對開發人員的要求較高,需要一定的開發投入。PLC編程一般採用梯形圖,而工控機可以安裝軟PLC採用梯形圖開發也可以採用C++等高級語言開發,單片機當然也可以安裝軟PLC系統或者直接用C語言開發。而且你還要花費很多精力設計調試各種底層通訊程序,開發難度最大。
  上面的分類並不意味着三者是涇渭分明的,例如 PLC 的內部電路就是一個單片機;而工控機的編程語言很可能就採用了 PLC 常用的梯形圖、ST等語言;單片機上面也可以裝載嵌入式實時操作系統,從而形成一個強大的多任務計算機。所以,雖然它們各有自己適用的領域,但是相互之間也會取長補短,演變成你中有我我中有你的局面。
  當然,現在市場上有專門的AGV控制器(或者叫導航控制器),例如美國NDC的CVC600,瑞士BlueBotics的ANT、浙江科聰智能的 MRC5000,上海仙知機器人的SRC。與通用的工業運動控制器或PLC相比,這類控制器集成了成熟的導航和運動控制算法(例如激光定位算法、麥克納姆輪控制算法),爲用戶省去很多工作,而且它們的穩定性和防護等級更高,但其價格也較高(1萬~6萬元)。

 

1.2 西門子 S7-1200 PLC

  筆者選擇西門子的 S7-1215C 型 PLC 作爲 AGV 的車載控制器(以後簡稱爲S1200),如下圖所示。由於西門子的產品型號非常豐富,各個型號在接口種類、性能等方面有細微的差別,在購買時爲了準確描述具體是哪個型號,最好使用訂貨號。西門子每種產品都有一個唯一的訂貨號,在採購時只需要提供這個編號即可。在西門子的編程軟件中也可根據訂貨號查找對應的型號。當然,使用西門子的產品也有一些缺點,比如它的PLC是通用產品,並不是針對車輛控制而專門設計的。低端開發板都具有的RS485、CAN、以太網等通訊接口,西門子PLC卻要付出昂貴的代價。而且西門子的產品開放性非常差,想實現函數複用和調用第三方庫、可視界面定製設計基本沒門。所以,西門子PLC並不適合作爲車載控制器,也可以說西門子PLC並不是爲機器人控制而生的,以後的AGV也會逐步淘汰西門子PLC,本文僅利用其穩定可靠的性能的較低的價格作爲功能驗證。在實際的工程項目中,筆者會選擇Codesys的PLC或者自己從底層開發,這樣可以實現自己想要的諸多功能。

名稱 訂貨號 價格
西門子1200 CPU 6ES7215-1AG40-0XB0 3400元
   

  想了解 S1200 的功能特性和參數設置可以閱讀書籍《S7-1200 PLC 編程及應用》或者官方文檔《S7-1200可編程控制器系統手冊》。讓筆者感到奇怪的是,網上竟然找不到這個手冊的完整版本(全長1862頁),所以我把它上傳了供大家免費下載,點擊這裏下載。
  想對PLC進行設置或編程,需要使用網線將 S1200 與上位機連接,只需要將上位機的 IP 地址設置爲與 PLC 同一網段即可。S1200 一般出廠默認的 IP 地址是 192.168.0.1,所以可以將你的電腦的 IP 設置爲 192.168.0.2。

什麼是上位機和下位機?
  有些設備能夠訪問其它的設備,比如讀取內存中的數據、向內存寫數據,這樣的設備具有較高的權限和地位,因此被稱爲上位機。有些設備只能被其它設備訪問,而沒有訪問其它設備的權力,這樣的設備就稱爲下位機。在本文中,PLC就是下位機,而編程計算機(例如你的筆記本電腦)就是它的上位機。

  對於 AGV 這種移動設備,通常會採用無線通訊接收調度系統等控制中心的指令。常用的無線通信方式有 WIFI、ZigBee等等。由於 WIFI 在實際中使用較多,我介紹一下它的配置方法。使用 WIFI 連接西門子 PLC 非常方便,只需要用網線將 PLC 的以太網口連接到無線路由器的 LAN 口,然後用筆記本搜索到對應的 WIFI 後連接即可訪問 PLC。所用的無線路由器可以是任意品牌,甚至家用路由器都可以。筆者在淘寶買過一款國產以太網轉 WIFI 轉換器,但奇怪的是不支持博途軟件(博途的IDE無法訪問到PLC設備),所以你購買前最好跟商家確認是否能用於博途。如果你想追求更穩定可靠的通信,可以選擇工業級通訊模塊,例如摩莎(MOXA),它的供電電壓兼容12V~48V。摩莎是高端品牌,其價格比PLC本身還要高。但是注意,目前的無線技術僅能實現非實時通信,不可作爲實時通信手段(例如後面提到的與驅動器的通信)。使用無線通信要注意距離,AGV大範圍運動時需要考慮在多個WIFI模塊之間漫遊切換,在這方面菲尼克斯的WiFi比MOXA要好,延遲更低。

名稱 型號 價格
MOXA 無線通訊模塊 AWK-3131A-US 5200元
  

2. 驅動器

  如果說車載控制器是 AGV 的大腦,那麼 AGV 還要有心臟和肌肉才能運動起來,驅動器給車輪的電機提供電流,相當於心臟。

2.1 低壓驅動器品牌

  由於 AGV 普遍採用蓄電池供電,其電壓一般在 12V~72V 左右。因此 AGV 使用的驅動器屬於低壓直流型伺服驅動器。國外的低壓驅動器品牌有:AMCRoboteQ、ZAPI(薩牌)、Curtis(柯蒂斯)、Elmo(埃莫)等,中國國內的低壓驅動器品牌有:步科、森創、英博爾、凱利。

2.2 PLC與驅動器通信

  PLC 要想控制驅動器就要向它發送指令數據。低端驅動器可以用模擬量或者脈衝信號傳遞數據,高端驅動器則採用規範的通信協議傳遞數據,這樣的通信可以藉助 RS232、RS485、CAN、以太網等現場總線或者工業網絡實現。因爲 S1200 的 CPU 模塊沒有這些通訊接口,所以要想連接驅動器,需要購買額外的通信模塊(CM:Communication Module)。上面提到的幾種協議西門子都有對應的通信模塊支持,比如西門子的 232 、485 和 CANopen 通信模塊如下圖所示(這三種模塊外形完全一樣),注意 232 和 CANopen 模塊的插頭是公頭,而485的則是母頭。

232通信模塊          485通信模塊         CANopen通信模塊
  對於移動設備來說,CAN總線是最常用的通訊方式,像汽車、挖掘機、AGV一般都採用CAN總線通訊。CAN 總線的速度快(最高可達1Mb/s)、穩定性高(採用差分信號,抗干擾),更“智能”(有優先級和仲裁機制),因此應該優先選擇 CAN 總線。但是考慮到西門子本身沒有 CAN通信模塊(如果想使用CAN,要購買第三方公司HMS提供的CANopen模塊),本文使用的驅動器採用 485 協議,所以我們選擇485模塊。隨之而來的一個問題是:S1200能外擴幾個通信模塊?答案是:3個。不管是哪種通信模塊,數量最多隻能是3個,種類不限可以混用。如果你的驅動器是總線型(485和CAN都屬於總線型)的,那麼只要一個485模塊或者 CANopen 模塊就行了。注意232不是總線型的,所以用兩個驅動器就要添加兩個通信模塊。如果你的 AGV 還有其它走通信協議的傳感器(例如磁導航傳感器、RFID傳感器),那麼3個通信模塊很有可能就顯得捉襟見肘。
名稱 訂貨號 價格
西門子485通信模塊 6ES7 241-1CH30-0XB0 500元
西門子232通信模塊 6ES7 241-1AH32-0XB0 500元
CANOpen通信模塊 021620-B 3100元

  西門子485模塊的接頭採用了標準9 針D型插孔式連接器。爲了將驅動器和PLC連接起來,我們要購買DB9接頭,並用信號線將兩個頭連接起來。這裏我們只利用兩個信號線即可。值得注意的是,西門子的485接口定義和常規的485不一樣,常規485的信號收發是1、2頭,而西門子的485則是3、8頭(參考手冊的第1769頁)。所以在連線時,要按照 3-2、8-1的對應順序焊接,如下圖所示。

3. 移動機構

  AGV要想實現搬運、移載就要有移動機構,通常採用的移動機構有舵輪、差速輪和麥克納姆輪。它們各自有什麼特點呢?什麼場合又該使用哪種輪子呢?
  麥克納姆輪的優點是運動精度高,但是結構複雜,磨損嚴重,對地面挑剔,雖然麥克納姆輪問世超過30年了,但是實際應用並不多,這也說明它不是一個實用的產品。下面我們主要講解舵輪。
  舵輪是個高度集成的移動機構,由車輪、迴轉支撐、齒輪箱、驅動電機、轉向電機、編碼器、限位開關、制動器等部件組成,它既能提供牽引力,也可以主動轉向,因此一個舵輪有兩個自由度。AGV 使用一個或以上的舵輪就可以實現全向移動:原地旋轉、斜行、橫移等等。舵輪一般用於室內環境,所以輪面的材料多爲聚氨酯。根據電機的安裝位置可以將舵輪分爲兩種:臥式和立式,分別如下兩圖所示。臥式舵輪的驅動電機橫向安裝,因此整體高度很低,有些AGV對高度有要求(例如潛入式的AGV要很矮才能鑽到貨物底下),這時就適合使用臥式舵輪;立式舵輪的驅動電機豎着安裝,其整體高度偏高,它的優點是方便將電機隔離起來,在有些場合(例如危險品工廠),要求舵輪電機與外部環境隔離,這時就適合使用立式舵輪。國外主要的舵輪生產廠家有:意大利的 CFR 和德國的 schabmuller(夏伯穆勒),後來從CFR中又獨立出來了一個廠家——馬路達。這些舵輪生產廠家一般只賣舵輪,不提供驅動器,驅動器則由代理商提供。一臺AGV上最貴的部件就是舵輪,以一臺成本10萬元左右的AGV爲例,如果配備兩個舵輪,就需要4~5萬元,佔整車成本將近一半。不過好消息是,國內的舵輪廠家開始參與競爭,這將降低AGV的成本。

4. 磁導航

4.1 磁條

  AGV被稱爲自動導引車,因此自動沿導引路徑運動是其最基本的功能。目前,磁條導航是 AGV 使用最多的導引方式之一,其採用磁條作爲導引路徑。只需要預先在地面鋪設好磁條,AGV 就會沿着磁條形成的路徑運動。磁條一般寬3~5cm,它像膠帶一樣,一面光滑、一面帶有粘性,將粘性的一面粘貼在地面即可完成鋪設。磁條具有極性,在購買時注意是N極還是S極,磁條的極性對應磁導航傳感器的極性,但有些傳感器兩種都兼容。磁條質地較軟、不抗壓,所以如果被輪子反覆碾壓可能會壓扁或擠脫落。多數 AGV 爲了避免壓壞磁條會將驅動輪佈置在車體的兩側(差速形式)或者斜對稱的位置上。

名稱 型號 價格
磁條 任意 3~5元/米

4.2 磁導航傳感器

  磁導航傳感器也叫磁循跡傳感器,它用來幫助AGV巡線行走。磁導航傳感器一般安裝在AGV車體或者驅動輪組上,在AGV運動時始終保持在磁條上方一定高度內。磁導航傳感器相對於車體的安裝位置一般在對稱中軸線上,通常對稱安裝,例如前後各一個或者左右各一個。磁導航傳感器的原理很簡單,傳感器上有若干個探頭,每個探頭都能檢測磁場,位於磁條上方(一定高度內)的探頭有信號輸出,超出磁條的探頭則沒有信號。探頭通常俗稱爲“點”,點越多表示傳感器的分辨率越高,當然價格也越貴。傳感器通常的點數有:6點、8點、16點幾種。磁導航傳感器並不是什麼神祕的東西,筆者曾經拆解過一款磁導航傳感器,這裏所說的探頭無非有兩種,一種是霍爾元件、還有一種是地磁傳感器。霍爾元件的特點大家大學的時候應該都學過,它能感應磁場,價格低但是精度通常不高;地磁傳感器基本都採用美國 PNI 公司的產品,例如 SEN-XY[1]^{[1]},它要搭配專用的驅動芯片 PNI-12927,這個芯片是3.3V供電,所以傳感器內部要設計3.3V穩壓電路,而且這個驅動芯片採用 SPI 總線,要對其信號進行處理和電壓變換,這通常由單片機來完成。磁導航傳感器的輸出方式有DI純數字量輸出的,也有總線型數據幀輸出的。對於點數多的傳感器來說一般用總線型,因爲如果使用數字量需要很多根信號線。假設一個 AGV 使用4個傳感器,每個傳感器的分辨率是16點,那就要有4×16=644\times16=64個輸出,相應的 PLC 應該有 64 個數字量輸入口,其接線將非常繁瑣,也容易出故障(例如某根線連接不牢固)。
  磁導航方式實現簡單,價格便宜,但是缺點也不少,其中一個嚴重的問題是干擾。筆者在調試 AGV時發現,即使傳感器並不在磁條上方(有時甚至周圍根本沒有磁條),傳感器依然有輸出。經過一番思考,筆者發現了問題所在。AGV 前方有一條鐵軌,而鐵是容易被磁化的。不僅是鐵製品,通電的導線也可能會使傳感器誤報。所以,使用磁條導航要排除這些干擾。
  磁導航傳感器的輸出可以是IO,也可以是數值(代表傳感器偏離磁條中心的距離值)。
  磁導航傳感器如何與 PLC 連接?如上所述,如果傳感器採用總線(例如485)傳遞數據,直接將總線連接到相應的(485)通信模塊即可。如果傳感器採用數字量接口,那麼就要連接到 PLC 的數字量輸入口。這裏有個很重要的問題:你要清楚傳感器輸出的信號是 PNP 型還是 NPN 型,它對應了三極管的類型,它們的區別在於有信號時 PNP 輸出高電平(例如24V),而 NPN 輸出低電平(例如0V)。在 S1200 上每組輸入輸出口旁邊都有一個 COM 口,它的作用就是選擇輸入是 PNP 型還是 NPN 型。如果是 PNP 型,COM 口就要接 24V ,如果是 NPN 型就要接 0V。你可以找個磁條用萬用表測試一下,如果放到磁條上輸出顯示是24V那說明是 PNP 型。以後你會知道,很多傳感器都分 PNP 型和 NPN 型,它們的接法是一樣的。

名稱 型號 價格
曼普拉斯磁導航傳感器 MPMGS200-F01 2000元
瀋陽軍航磁導航傳感器 JH-16 2000元

5. 供電系統

5.1 電池

  AGV啓動時需要的電流大,因此需要使用動力電池,使用最多的動力電池有鉛酸電池和鋰電池。鉛酸電池壽命短、能量密度低,而鋰電池密度高、但是成本也高。還有一種電池叫做超級電容,它的壽命很長,但是能量密度非常低,所以用的不多。
  知名的電池廠家有霍克(HAWKER)荷貝克(HOPPECKE)等。下圖是霍克 AGV 專用電池標籤。鉛酸電池的額定放電電流一般是0.5C,例如80Ah的電池,額定放電電流是0.5×80=40A0.5\times80=40A。鉛酸電池的最大放電電流一般是3C,即3×80=240A3\times80=240A。電池的電壓會隨着電量消耗逐漸降低,開始降低得很慢,當電量很少時會急劇下降。根據這個關係,通過檢測電壓就能知道電池還剩餘多少電,是否應該充電。

名稱 型號 價格
霍克電池 EV24-100 12800元

  我們如何估計一個 AGV 該選用多大容量的電池呢?
  AGV 上最耗電的器件就是電機了。一般來說,電機的額定功率 PP會寫在電機銘牌上。根據初中物理知識,功率等於電壓和電流的乘積,即
P=UI P=UI   驅動電機的額定電壓一般容易得到,所以通過上式可以計算出電流。當然,實際工作的功率一般會比額定功率小,所以這裏要乘以一個係數,具體要看 AGV 的負重、工作路面等。求出電流乘以工作時間就是電池的容量了。注意,電池的容量和能量是兩個不同的概念,前者是電流乘以時間(單位是“安時”(Ah))、而後者是電流乘以電壓乘以時間(單位是“千瓦時”(KWh))。

5.2 電壓變換

  如果傳感器、控制器等器件和電池的輸出電壓不同,就需要使用電壓變換模塊,它還可以起到穩壓的作用。一般傳感器常用的電壓是12V、控制器常用的電壓是24V,因此需要有相應的模塊。可以選擇廣州金昇陽的電壓變換模塊,可選配散熱片和導軌,便於散熱和固定,如下圖所示的48V轉24V的模塊。選擇模塊時主要關心的是功率,即它能提供的最大電流。

6. 開關

6.1 電源開關

  選擇電源總開關時要注意它是“自鎖的”還是“自動復位的”。自鎖的意思就是按下後即使手指鬆開,開關依然保持閉合使供電暢通;而自動復位的開關按下按鈕後如果鬆開手指,電路就會被切斷,如下圖所示。一般機箱上的電源總開關應該選擇自鎖型的,否則你要一直按着按鈕才能使電路暢通,因此不要購買下圖右所示的自復位型開關(代號:XB2-BA31C,價格在22元左右)。假如你買錯了也不要緊,你可以再買一個自鎖模塊ZB2-BZ21 C,將這個模塊添加到XB2-BA31C開關上就能將它變成一個自鎖開關。

 

6.2 急停開關

  在所有AGV 車體上都能找到的一個東西就是急停開關。根據國家標準GBT 20721-2006 《自動導引車 通用技術條件》中第4.2.6項的規定:“AGV 應配備緊急停車按鈕,該按鈕的安裝位置在緊急情況下應便於操作。應採用紅色按鈕,急停按鈕按下應關閉 AGV 驅動電源”。在AGV失去控制的情況下,按下急停開關能讓它立即停止運動,從而防止傷害到人。因此急停開關構成了最後的安全屏障。爲了保證使用可靠,可以購買施耐德的XB2-BS542C。急停開關的按鈕一般設計得很大,方便按下,因此又被俗稱爲蘑菇頭,它一般都是自鎖的,按下後需要旋轉才能鬆開。購買時唯一要注意的是它的安裝直徑,一般選擇 22mm 即可。

7. 電氣元件

  AGV上既有強電也有弱電,例如舵輪的驅動器需要的電流通常很大,而控制器和一些傳感器只需要很小的電流。我們要合理設計電路,防止它們相互干擾,更主要的是包含弱電器件。根據國家標準GBT 30029-2013 《自動導引車(AGV)設計通則》中第6.7.7.4項的規定,控制器應該具有過壓保護、欠壓保護、過流保護功能。
  我們要在電路中加入以下器件:
  \blacksquare 接觸器:用小電流控制大電流。上面的電源開關只允許通過較小的電流,但有時設備裏有些組件需要大電流才能啓動,例如舵輪驅動器。我們不能用一個開關既控制小電流也控制大電流,這時就需要藉助接觸器。接觸器內部有個電磁鐵,我們用小電流控制電磁鐵的吸合,電磁鐵帶動另一組開關閉合使大電流通過。在AGV上使用的是直流接觸器,注意接觸器的線圈會發出一定熱量,安裝應當注意散熱和對附近器件的影響。

 
名稱 型號 價格
Albright直流接觸器 SW180B-108 200元

  \blacksquare 斷路器:起到過流、欠壓保護的作用。斷路器也相當於一個開關,在短路等電流過大時斷開,保護設備;
  \blacksquare 繼電器:也相當於一個開關,它是用小電壓控制觸點開閉的,但是注意觸點不能流過太大電流。
  AGV 採用電池作爲能源,而電池的電壓通常不是很穩定,在使用時電壓會波動。雖然西門子的 PLC 對輸入電壓具有一定的適應能力,但是我們最好用一個24V到 24V 的穩壓模塊將電池的電壓穩定後再供給 PLC。對於使用24V供電的其它器件,例如磁導航傳感器,也是這樣。

8. 激光避障傳感器

  AGV的安全防護方式有接觸式和非接觸式之分。觸邊屬於接觸式的,而激光傳感器和超聲波傳感器屬於非接觸式。當然非接觸式的傳感器更加安全,因爲不需要直接接觸即可監測障礙物。
  常用的國外激光傳感器品牌有SICK和HOKUYO。以SICK的Tim310爲例,它的監測距離可達3米,可以設置不同的監測區域形狀。Tim310的輸出是I/O信號,用以判斷是不是監測到了障礙物。

名稱 型號 訂貨號 價格
SICK激光傳感器 Tim310-0130000S02 1069932 6800元
  

9. 觸摸屏

  現在的 AGV 越來越多地開始配備觸摸屏了。使用觸摸屏可以方便地設置AGV的參數,例如運動速度、充電電壓等等,而不需要每次都將程序下載到 PLC。既然我們選擇了西門子的PLC,當然觸摸屏選擇西門子是最配對的,但是考慮到西門子的觸摸屏有點貴,我們選擇國產的品牌。國產觸摸屏的質量也很可靠,而且價格合理,代表廠家有:威綸通、崑崙通態。由於西門子的知名度,大多數觸摸屏都會支持。但是如果你用其它品牌的PLC,那最好向觸摸屏廠家詢問是否支持你的PLC,否則是無法通訊的。

名稱 型號 價格
崑崙通態 觸摸屏 TPC1561Hi 3500元

  我選擇崑崙通態的觸摸屏,它採用24V直流供電,並配有網口,用普通網線將觸摸屏和 S1200 連接,並將觸摸屏的 IP 地址設置爲與 PLC 所在同一網段(例如192.168.0.3)即可實現和 PLC 的互聯。設置 IP 的方法是上電後在進入正式界面之前,在屏幕的任意位置點擊一下即可進入設置界面。
  我們如何使用觸摸屏呢?我們需要對觸摸屏進行編程,或者說“組態”。編程需要使用崑崙通態自己的組態軟件:MCGS,可以在它的官方網站免費下載。

  在你的電腦上安裝該軟件,注意在軟件中需要輸入 PLC 的地址才能讀寫數據。觸摸屏上只有一個網口,所以你可以用網線將觸摸屏連接到你的電腦。我們注意到 S1200 有兩個網口,所以一種更方便的連接方式是,將觸摸屏連接到 S1200 上,然後將 S1200 連接到你的電腦,這樣同樣能對觸摸屏進行編程。   觸摸屏最基本的功能就是讀寫 PLC 的內存(因此它也是PLC的上位機)。要實現這個功能非常簡單,只需要在 MCGS 中對 PLC 的變量進行關聯即可。

10. PLC編程

10.1 編程工具 STEP 7

  購買了S1200 並不意味着你能免費使用它的開發軟件。但是沒關係,網上有很多破解軟件。有意思的是,其中有些資源就是西門子公司的人故意釋放出來的,他們可能想佔有更多的市場。要對西門子的 PLC 編程必須使用專用的軟件:STEP 7 ,下圖是 STEP 7 的安裝過程。

  實際上,STEP 7 是過時的名稱,現在西門子想將它和另外幾個自動化軟件都統一成一個平臺,適用於西門子旗下所有的設備,這個平臺被稱爲:TIA Portal(博途),本文使用的就是 TIA V13。西門子公司爲了保持延續性,軟件的名稱有時是 STEP 7,有時又用 TIA,本文我爲了與歷史統一還叫 STEP 7 好了。西門子的軟件跟硬件一樣種類繁多,光 STEP 7 就有幾個版本,例如專業版(professional SP1,如下圖左所示),而每個版本又有不同的更新包。注意 SP1 可能缺少某些功能(下面我會提到),因此我使用了更新包。具體來說,我使用的是 STEP 7 V13.0 SP1 Upd8,如下圖右所示。
  在軟件安裝時我們注意到有這樣的說明:STEP 7是用於編程的工程組態工具。要使用 PLC,編程只是一方面,還有一個重要的工作就是“組態”。“組態”說白了就是“配置”,配置 PLC 的輸入輸出接口、參數、功能等等。首先,在“設備組態”頁面選擇我們的 PLC 型號就可以了。

10.2 西門子PLC的硬件資源

  要想用好PLC,就要熟悉它的一些特點,下面我們就瞭解一下 S1215C 的特點。
  1215C的內存有多大呢?
  我們用電腦連接上PLC,然後在STEP 7軟件左側欄雙擊“在線和診斷”,然後在打開窗口中點擊“存儲器”,如下圖所示。

  可以看到這裏有三個存儲器,分別是:裝載存儲器、工作存儲器和保持存儲器。並且可以看到三個存儲器的大小,分別是:

  1. 裝載存儲器: 41943044194304 Byte ÷1024÷1024=4\div 1024 \div 1024= 4MB
  2. 工作存儲器: 128000128000 Byte ÷1024=125\div 1024= 125KB 
  3. 保持存儲器: 1024010240 Byte ÷1024=10\div 1024= 10KB
  這和系統手冊中給出的數值是一樣的,如下:

  你看完是不是都哭了,10年前的手機存儲器都比這要大。這三個存儲器各有什麼作用呢?
  1. 裝載存儲器:用於存儲用戶項目文件(例如:用戶程序、組態信息),相當於硬盤;
  2. 工作存儲器:CPU在執行用戶程序時會將一些項目內容從裝載存儲區複製到工作存儲區,相當於電腦的內存;
  3. 保持存儲器:掉電後數據仍然保持。如果你希望一些數據能在斷電後一直保持就要使用這個存儲器。但遺憾的是,小氣的西門子公司只給了我們10KB。
  PLC 掃描一次程序需要多長時間呢?
  PLC會自動記錄時間,在同一頁面,打開“循環時間”,就能看到PLC完整執行一遍程序需要的時間,如下圖所示。這個時間不是固定的,取決於你的程序長短,一般的執行時間在3毫秒以內。

 

10.3 西門子PLC的軟件資源

  西門子提供哪些函數功能呢?工業控制編程語言唯一的國際標準——IEC61131-3 規定了46個基本函數,西門子都支持。除此以外,我們常用的還有定時器計數器等功能。AGV 屬於移動機器人,而機器人的控制本質是數學計算,所以我重點說說其中的數學函數,共有18個:
  數字運算: ABS、SQRT、LOG、LN、EXP、SIN、COS、TAN、ASIN、ACOS、ATAN;
  算術運算:ADD、SUB、MUL、DIV、MOD、EXPT、MOVE;
  當然還有:>、< 比較運算符。
  翻開另一款控制器品牌——倍福的手冊,你會發現它同樣支持這幾個初級函數。
  在組態界面,雙擊 CPU 模塊能看到這款 PLC 的其它功能介紹,例如週期定時器,如下圖所示。

  如果你使用了觸摸屏,有一點值得注意:在“保護”頁面中有一個選項需要勾選:“允許從遠程夥伴使用PUT/GET通信訪問”,如下圖所示。如果不勾選這個選項,你看你無法用觸摸屏讀寫 PLC 內存中的數據。讓筆者奇怪的是,像這樣的細節幾乎在所有的手冊、教程中都找不到,但卻又很重要。

10.4 西門子PLC的編程方式

  西門子PLC 的編程符合國際工業編程語言標準 IEC-611313,因此跟倍福等廠家的差不多。
  
10.4.1 定義常量

  有些量我們要經常使用(例如圓周率 π\pi),如果每次都用數值來做運算一方面輸入很容易出錯,另一方面如果想對其進行更改那要改很多處,非常繁瑣。一個方便的做法是將其定義爲一個全局的“常數”。使用 PLC 和 C 語言等高級語言相同的一點是,你需要爲變量分配內存地址。分配好地址後如何對其賦值呢?因爲常量只需要賦一次值即可,所以我們選擇在 Startup 塊中對其賦值。Startup 塊在每次 PLC 上電後只執行一次。西門子中有些塊的序號是系統預留的,比如 Startup 就是 OB100。我們注意到,在博圖軟件中,全局變量用雙引號表示(例如"PI"),而局部變量前面帶個井號(下面會碰到)。

10.4.2 定義函數

  西門子自帶的函數只能完成簡單的功能,爲了實現更高級的控制我們還要自己寫一些函數。筆者在開發機器人控制器的過程中發現,網上公開的PLC函數庫很少,目前筆者只知道OSCAT庫。大家都在討論基本的邏輯控制,卻鮮有人討論更高級的數學計算,可能 PLC 並不適合高級運動控制算法的實現。
  下面我用一個很簡單的進行角度弧度轉換的函數爲例來說明如何在 STEP 7 中自定義函數。
  (1) 首先,我們新建一個函數FC(這個函數比較簡單,不需要背景數據,所以不用 FB),實現的語言選擇 SCL 語言。函數名爲“DegreeToRad”。
  (2) 然後,我們要明確這個函數的輸入,在上面的變量定義欄中的 Input 項目中輸入 angleInDegree,類型選擇爲 Real,如下圖所示。在Return 項目中將 DegreeToRad 變量的類型改爲 Real,這裏注意不要修改 DegreeToRad 變量的名字。

  (3) 在下面的輸入框輸入變換公式。   這裏要用 := 對變量進行賦值。你會注意到,變量 PI 是用雙引號括起來的,而其它的變量(例如 angleInDegree)前面則帶一個井號。這是用來區分局部變量和全局變量的,局部變量用#開頭表示,而全局變量用引號表示。

10.4.3 定時器

  定時器是我們會經常使用的一個功能,想輸出隨時間變化的量、想延時觸發、想輸出週期信號都要藉助定時器。西門子的每個定時器都對應一個背景數據塊。筆者早期經常犯的一個錯誤是,爲了節省時間直接複製粘貼定時器塊。其錯誤是不管你複製多少次,其實最終還是同一個定時器,而且後面的會覆蓋前面的值。這個錯誤導致很多匪夷所思的錯誤,讓筆者頭疼了相當長的時間。各位一定要注意,每使用一個定時器都要重新拖進來新建。

10.4.4 磁循跡算法

  爲了讓 AGV 始終沿着磁條行走,我們要編寫相應的控制程序,也就是循跡程序。
  循跡程序的邏輯可以非常簡單,我們的輸入是磁導航傳感器的讀數,輸出則是舵輪轉向的速度(或差速輪的轉速差),磁條如果在 AGV 車體中心線的左側,我們就往左偏轉,反之在右側就往右偏轉,而如果恰好在中間則保持不動。下面的仿真動畫展示了這種控制策略的效果,其中只使用了一個傳感器和一個舵輪,但已經可以沿着曲線行走了。磁導航傳感器有六個點,安裝在前方,紅色的方格表示感應到了磁條,白色表示沒有感應到。

引用文獻

[1] 一種AGV用磁導航傳感器,專利號:CN201710010589.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章