6SL3220-3YE44-0AF0現貨西門子代理
| 更新時間 2024-11-23 14:45:27 價格 請來電詢價 西門子 G120X 變頻器 90KW內置濾波版 德國 3AC 380-480V帶濾波 聯系電話 17838383235 聯系手機 17838383235 聯系人 徐嘉泉 立即詢價 |
詳細介紹
如何用西門子S7-1200搭建一個完整AGV控制系統!
本文介紹自動導引車(AGV)控制系統的實現過程,分為硬件搭建和軟件設計兩部分。
(一)車載控制器
1.1 車載控制器的類型車載控制器是控制系統乃至整個 AGV 的核心,那么應該選擇哪種控制器呢?根據筆者的經驗,從硬件角度看,AGV采用的車載控制器基本分為以下三種:1. PLC:代表產品例如西門子公司的 S7-1200和1500系列,使用 AGV 廠家有佳順、嘉騰。PLC 以穩定性好、可靠性高著稱,但是它的長項是邏輯控制,一般只能做簡單的運動控制。西門子 PLC 的價格大概在2000元~12000元左右。
2. 工控機:代表產品例如倍福公司的 CX5130,使用廠家有昆船、羅伯特木牛流馬。工控機其實就是一臺電腦,只不過經過精心的設計使其具有很強的抗干擾能力,可以用于振動、電磁輻射等惡劣的工業環境。工控機結構緊湊、體積小巧,其可以運行通用的操作系統,比如 Windows、Linux。以倍福為例,安裝它的 TwinCAT 控制軟件后,會在 Windows 操作系統中插入實時內核,將電腦變成適合工業場合的實時控制系統。倍福工控機的售價大概在5000到30000元左右。
3. 單片機:代表產品例如 STM32,使用廠家有海通、機科。相比前兩者,單片機的價格低廉,加上外圍器件成本多也不過千元左右。使用單片機的一個缺點是,如果要做成成熟的產品,你需要花費很多精力設計外部電路以及各種底層算法。軟件開發環境可能會差一些。
上面的分類并不意味著三者是涇渭分明的,例如 PLC 的核心芯片可能就是一個單片機;而工控機的編程語言很可能就采用了 PLC 領域使用的梯形圖、ST等語言;單片機上面也可以裝載操作系統,從而形成一個完整的控制器。所以,雖然它們各有自己適用的領域,但是相互之間也會取長補短,演變成你中有我我中有你的局面。
當然,現在市場上有專門的AGV控制器,例如美國NDC的CVC600,瑞士BlueBotics的ANT、浙江科聰智能的 MRC5000,上海仙知機器人的SRC。與通用的工業運動控制器或PLC相比,這類控制器集成了成熟的導航和運動控制算法,為用戶省去很多工作,而且其穩定性和防護等級更高,但其價格也較高(2萬~6萬元)。 1.1 西門子 S7-1200 PLC我選擇西門子的 S7-1215C 型 PLC 作為 AGV 的車載控制器(以后簡稱為S1200),如下圖所示。由于西門子的產品型號非常豐富,各個型號在接口種類、性能等方面有細微的差別,在購買時為了準確描述具體是哪個型號,好使用訂貨號。西門子每種產品都有一個唯一的訂貨號,在采購時只需要提供這個編號即可。在西門子的編程軟件中也可根據訂貨號查找對應的型號。當然,使用西門子的產品也有一些缺點,比如它的PLC是通用產品,并不是針對車輛控制而專門設計的。淘寶上一個100元的ARM開發板都具有RS485、CAN、以太網接口,而西門子卻要為此付出昂貴的代價,西門子的產品開放性非常差。所以,以后的AGV會逐步淘汰西門子的產品。 ??什么是上位機和下位機?
有些設備能夠訪問其它的設備,比如讀取內存中的數據、向內存寫數據,這樣的設備具有較高的權限和地位,因此被稱為上位機。有些設備只能被其它設備訪問,而沒有訪問其它設備的權力,這樣的設備就稱為下位機。在本文中,PLC就是下位機,而編程計算機就是它的上位機。
想對PLC進行設置或編程,需要使用網線將 S1200 與上位機連接,只需要將上位機的 IP 地址設置為與 PLC 同一網段即可。S1200 一般出廠默認的 IP 地址是 192.168.0.1,所以可以將你的電腦的 IP 設置為 192.168.0.2。對于 AGV 這種移動設備,通常會采用無線通訊,例如接收調度系統的控制指令。無線通信方式有 WIFI、ZigBee等等。由于 WIFI 在實際中使用較多,我介紹一下它的配置方法。使用 WIFI 連接西門子 PLC 非常方便,只需要用網線將 PLC 的以太網口連接到無線路由器的 LAN 口,然后用筆記本搜索到對應的 WIFI 后連接即可訪問 PLC。所用的無線路由器可以是任意品牌,甚至家用路由器都可以。(筆者在淘寶買過一款國產以太網轉 WIFI 轉換器,但奇怪的是不支持博途軟件(博圖無法訪問到PLC),所以你購買前好跟商家確認是否能用于博途。如果你想追求更穩定可靠的通信,可以選擇工業級通訊模塊,例如摩莎(MOXA),它的供電電壓兼容12V~48V。)
?。ǘ寗悠?br/>如果說車載控制器是AGV的大腦,那么AGV還要有心臟和肌肉才能運動起來,驅動器給車輪的電機提供電流,相當于心臟。
2.1 低壓驅動器品牌由于AGV普遍采用蓄電池供電,其電壓一般在12V~72V左右。因此AGV使用的驅動器屬于低壓直流型伺服驅動器。國外的低壓驅動器品牌有:AMC、RoboteQ、ZAPI(薩牌)、Curtis(柯蒂斯)、Elmo(埃莫)等,中國國內的低壓驅動器品牌有:步科、森創、英博爾、凱利。
2.2 PLC與驅動器通信PLC要想控制驅動器就要向它發送指令數據。低端驅動器可以用模擬量或者脈沖信號傳遞數據,高端驅動器則采用規范的通信協議傳遞數據,這樣的通信可以借助 RS-232、RS-485、CAN、EtherCAT 等協議實現。因為 S1200 的 CPU 模塊沒有這些通訊接口,所以要想連接驅動器,需要購買額外的通信模塊(CM:Communication Module)。上面提到的幾種協議西門子都有對應的通信模塊支持,比如西門子的 232 、485 和 CANopen 通信模塊如下圖所示(這三種模塊外形完全一樣),注意 232 和 CANopen 模塊的插頭是公頭,而485的則是母頭。對于移動設備來說,CAN總線是常用的通訊方式,像汽車、挖掘機、AGV一般都采用CAN總線通訊。CAN 總線的速度快(高可達1Mb/s,比485要快)、穩定性高(采用差分信號,抗干擾),更“智能”(有優先級和仲裁機制),因此應該優先選擇 CAN 總線。但是考慮到西門子本身沒有 CAN通信模塊(如果想使用CAN,要購買第三方公司HMS提供的CANopen模塊),本文使用的驅動器采用 485 協議,所以我們選擇485模塊。
隨之而來的一個問題是:S1200能外擴幾個通信模塊?答案是:3個。不管是哪種通信模塊,數量多只能是3個,種類不限可以混用。如果你的驅動器是總線型(485和CAN都屬于總線型)的,那么只要一個485模塊或者 CANopen 模塊就行了。注意232不是總線型的,所以用兩個驅動器就要添加兩個通信模塊。如果你的 AGV 還有其它走通信協議的傳感器(例如磁導航傳感器、RFID傳感器),那么3個通信模塊很有可能就顯得捉襟見肘。
西門子485模塊的接頭采用了標準9 針D型插孔式連接器。為了將驅動器和PLC連接起來,我們要購買DB9接頭,并用信號線將兩個頭連接起來。這里我們只利用兩個信號線即可。值得注意的是,西門子的485接口定義和常規的485不一樣,常規485的信號收發是1、2頭,而西門子的485則是3、8頭(參考手冊的第1769頁)。所以在連線時,要按照 3-2、8-1的對應順序焊接,如下圖所示。(三)移動機構
AGV要想實現搬運、移載就要有移動機構,通常采用的移動機構有舵輪、差速輪和麥克納姆輪。它們各自有什么特點呢?什么場合又該使用哪種輪子呢?
麥克納姆輪的優點是運動精度高,但是結構復雜,磨損嚴重,對地面挑剔,雖然麥克納姆輪問世超過30年了,但是實際應用并不多,這也說明它不是一個實用的產品。下面我們主要講解舵輪。
舵輪是個高度集成的移動機構,由車輪、回轉支撐、齒輪箱、驅動電機、轉向電機、編碼器、限位開關、制動器等部件組成,它既能提供牽引力,也可以主動轉向,因此一個舵輪有兩個自由度。AGV 使用一個或以上的舵輪就可以實現全向移動:原地旋轉、斜行、橫移等等。舵輪一般用于室內環境,所以輪面的材料多為聚氨酯。根據電機的安裝位置可以將舵輪分為兩種:臥式和立式,分別如下兩圖所示。臥式舵輪的驅動電機橫向安裝,因此整體高度很低,有些AGV對高度有要求(例如潛入式的AGV要很矮才能鉆到貨物底下),這時就適合使用臥式舵輪;立式舵輪的驅動電機豎著安裝,其整體高度偏高,它的優點是方便將電機隔離起來,在有些場合(例如危險品工廠),要求舵輪電機與外部環境隔離,這時就適合使用立式舵輪。國外主要的舵輪生產廠家有:意大利的 CFR 和德國的 schabmuller(夏伯穆勒),后來從CFR中又獨立出來了一個廠家——馬路達。這些舵輪生產廠家一般只賣舵輪,不提供驅動器,驅動器則由代理商提供。一臺AGV上貴的部件就是舵輪,以一臺成本10萬元左右的AGV為例,如果配備兩個舵輪,就需要4~5萬元,占整車成本將近一半。不過好消息是,國內的舵輪廠家開始參與競爭,這將降低AGV的成本。(四)磁導航傳感器和磁條
4.1 磁條磁條導航是目前 AGV 使用多的導航方式之一。只需要預先在地面鋪設好磁條,AGV 就會沿著磁條形成的路徑運動。磁條一般寬3~5cm,它像膠帶一樣,一面光滑、一面帶有粘性,將粘性的一面粘貼在地面即可完成鋪設。磁條具有極性,在購買時注意是N極還是S極,磁條的極性對應磁導航傳感器的極性,但有些傳感器兩種都兼容。磁條質地較軟、不抗壓,所以如果被輪子反復碾壓可能會壓扁或擠脫落。多數 AGV 為了避免壓壞磁條會將驅動輪布置在車體的兩側(差速形式)或者斜對稱的位置上。
4.2 磁導航磁導航傳感器也叫磁循跡傳感器,它用來幫助AGV巡線行走。磁導航傳感器一般安裝在AGV車體或者驅動輪組上,在AGV運動時始終保持在磁條上方一定高度內。磁導航傳感器相對于車體的安裝位置一般在對稱中軸線上,通常對稱安裝,例如前后各一個或者左右各一個。磁導航傳感器的原理很簡單,傳感器上有若干個探頭,每個探頭都能檢測磁場,位于磁條上方(一定高度內)的探頭有信號輸出,超出磁條的探頭則沒有信號。探頭通常俗稱為“點”,點越多表示傳感器的分辨率越高,當然價格也越貴。傳感器通常的點數有:6點、8點、16點幾種。磁導航傳感器并不是什么神秘的東西,筆者曾經拆解過一款磁導航傳感器,這里所說的探頭無非有兩種,一種是霍爾元件、還有一種是地磁傳感器?;魻栐奶攸c大家大學的時候應該都學過,它能感應磁場,價格低但是精度通常不高;地磁傳感器基本都采用美國 PNI 公司的產品。
它要搭配專用的驅動芯片 PNI-12927,這個芯片是3.3V供電,所以傳感器內部要設計3.3V穩壓電路,而且這個驅動芯片采用 SPI 總線,要對其信號進行處理和電壓變換,這通常由單片機來完成。磁導航傳感器的輸出信號可以是數字量也可以是總線型數據,對于點數多的傳感器來說一般用總線型,因為如果使用數字量需要很多根線。假設一個 AGV 使用4個傳感器,每個傳感器的分辨率是16點,那就要有4×16=64 4\times16=644×16=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 型,它們的接法是一樣的。
(五)供電系統
5.1 電池AGV啟動時需要的電流大,因此需要使用動力電池,使用多的動力電池有鉛酸電池和鋰電池。鉛酸電池壽命短、能量密度低,而鋰電池密度高、但是成本也高。還有一種電池叫做超級電容,它的壽命很長,但是能量密度非常低,所以用的不多。
的電池廠家有霍克(HAWKER)、荷貝克(HOPPECKE)等。下圖是霍克 AGV 專用電池標簽。鉛酸電池的額定放電電流一般是0.5C,例如80Ah的電池,額定放電電流是0.5×80=40A 0.5\times80=40A0.5×80=40A。鉛酸電池的大放電電流一般是3C,即3×80=240A 3\times80=240A3×80=240A。電池的電壓會隨著電量消耗逐漸降低,開始降低得很慢,當電量很少時會急劇下降。根據這個關系,通過檢測電壓就能知道電池還剩余多少電,是否應該充電。
我們如何估計一個 AGV 該選用多大容量的電池呢?
AGV 上耗電的器件就是電機了。一般來說,電機的額定功率 P PP會寫在電機銘牌上。根據初中物理知識,功率等于電壓和電流的乘積,即 P=UI P=UI P=UI驅動電機的額定電壓一般容易得到,所以通過上式可以計算出電流。當然,實際工作的功率一般會比額定功率小,所以這里要乘以一個系數,具體要看 AGV 的負重、工作路面等。求出電流乘以工作時間就是電池的容量了。注意,電池的容量和能量是兩個不同的概念,前者是電流乘以時間(單位是“安時”(Ah))、而后者是電流乘以電壓乘以時間(單位是“千瓦時”(KWh))。
5.2 電壓變換如果傳感器、控制器等器件和電池的輸出電壓不同,就需要使用電壓變換模塊,它還可以起到穩壓的作用。一般傳感器常用的電壓是12V、控制器常用的電壓是24V,因此需要有相應的模塊??梢赃x擇廣州金升陽的電壓變換模塊,可選配散熱片和導軌,便于散熱和固定,如下圖所示的48V轉24V的模塊。選擇模塊時主要關心的功率,即它能提供的大電流。
(六)開關
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 即可。
(七)電氣元件
AGV上既有強電也有弱電,例如舵輪的驅動器需要的電流通常很大,而控制器和一些傳感器只需要很小的電流。我們要合理設計電路,防止它們相互干擾,更主要的是包含弱電器件。根據國家標準GBT 30029-2013 《自動導引車(AGV)設計通則》中第6.7.7.4項的規定,控制器應該具有過壓保護、欠壓保護、過流保護功能。
我們要在電路中加入以下器件:■ \blacksquare■接觸器:用小電流控制大電流。上面的電源開關只允許通過較小的電流,但有時設備里有些組件需要大電流才能啟動,例如舵輪驅動器。我們不能用一個開關既控制小電流也控制大電流,這時就需要借助接觸器。接觸器內部有個電磁鐵,我們用小電流控制電磁鐵的吸合,電磁鐵帶動另一組開關閉合使大電流通過。在AGV上使用的是直流接觸器,注意接觸器的線圈會發出一定熱量,安裝應當注意散熱和對附近器件的影響。斷路器:起到過流、欠壓保護的作用。斷路器也相當于一個開關,在短路等電流過大時斷開,保護設備;
繼電器:也相當于一個開關,它是用小電壓控制觸點開閉的,但是注意觸點不能流過太大電流。
AGV 采用電池作為能源,而電池的電壓通常不是很穩定,在使用時電壓會波動。雖然西門子的 PLC 對輸入電壓具有一定的適應能力,但是我們好用一個24V到 24V 的穩壓模塊將電池的電壓穩定后再供給 PLC。對于使用24V供電的其它器件,例如磁導航傳感器,也是這樣。
(八)激光避障傳感器
AGV的安全防護方式有接觸式和非接觸式之分。觸邊屬于接觸式的,而激光傳感器和超聲波傳感器屬于非接觸式。當然非接觸式的傳感器更加安全,因為不需要直接接觸即可監測障礙物。常用的國外激光傳感器品牌有SICK和HOKUYO。以SICK的Tim310為例,它的監測距離可達3米,可以設置不同的監測區域形狀。Tim310的輸出是I/O信號,用以判斷是不是監測到了障礙物。?
(九)觸摸屏
現在的 AGV 越來越多地開始配備觸摸屏了。使用觸摸屏可以方便地設置AGV的參數,例如運動速度、充電電壓等等,而不需要每次都將程序下載到 PLC。既然我們選擇了西門子的PLC,當然觸摸屏選擇西門子是配對的,但是考慮到西門子的觸摸屏有點貴,我們選擇國產的品牌。國產觸摸屏的質量也很可靠,而且價格合理,代表廠家有:威綸通、昆侖通態。由于西門子的度,大多數觸摸屏都會支持。但是如果你用其它品牌的PLC,那好向觸摸屏廠家詢問是否支持你的PLC,否則是無法通訊的。
我選擇昆侖通態的觸摸屏,它采用24V直流供電,并配有網口,用普通網線將觸摸屏和 S1200 連接,并將觸摸屏的 IP 地址設置為與 PLC 所在同一網段(例如192.168.0.3)即可實現和 PLC 的互聯。設置 IP 的方法是上電后在進入正式界面之前,在屏幕的任意位置點擊一下即可進入設置界面。
我們如何使用觸摸屏呢?我們需要對觸摸屏進行編程,或者說“組態”。編程需要使用昆侖通態自己的組態軟件:MCGS,可以在它的guanfangwangzhan免費下載。
在你的電腦上安裝該軟件,注意在軟件中需要輸入 PLC 的地址才能讀寫數據。觸摸屏上只有一個網口,所以你可以用網線將觸摸屏連接到你的電腦。我們注意到 S1200 有兩個網口,所以一種更方便的連接方式是,將觸摸屏連接到 S1200 上,然后將 S1200 連接到你的電腦,這樣同樣能對觸摸屏進行編程。 觸摸屏基本的功能就是讀寫 PLC 的內存(因此它也是PLC的上位機)。要實現這個功能非常簡單,只需要在 MCGS 中對 PLC 的變量進行關聯即可。
(十)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,編程只是一方面,還有一個重要的工作就是“組態”?!敖M態”說白了就是“配置”,配置 PLC 的輸入輸出接口、參數、功能等等。首先,在“設備組態”頁面選擇我們的 PLC 型號就可以了。
10.2 西門子PLC的硬件資源要想用好PLC,就要熟悉它的一些特點,下面我們就了解一下 S1215C 的特點。1215C的內存有多大呢?
我們用電腦連接上PLC,然后在博途軟件左側欄雙擊“在線和診斷”,然后在打開窗口中點擊“存儲器”,如下圖所示。可以看到這里有三個存儲器,分別是:裝載存儲器、工作存儲器和保持存儲器。并且可以看到三個存儲器的大小,分別是:1. 裝載存儲器:4194304 404 Byte ÷1024÷1024=4 \div 1024 \div 1024= 4÷1024÷1024=4MB2.工作存儲器:128000 128000128000 Byte ÷1024=125 \div 1024= 125÷1024=125KB 3. 保持存儲器:10240 1024010240 Byte ÷1024=10 \div 1024= 10÷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 車體中心線的左側,我們就往左偏轉,反之在右側就往右偏轉,而如果恰好在中間則保持不動。下面的仿真動畫展示了這種控制策略的效果,其中只使用了一個傳感器和一個舵輪,但已經可以沿著曲線行走了。磁導航傳感器有六個點,安裝在前方,紅色的方格表示感應到了磁條,白色表示沒有感應到。
相關產品
產品分類
聯系方式
- 電 話:17838383235
- 經理:徐嘉泉
- 手 機:17838383235
- 微 信:17838383235