Arduino Opta PLC實操案例:貨物傳送
可編程邏輯控制器 (PLC) 是現(xiàn)代工業(yè)自動化的基石,為控制機器和流程提供一個強大而靈活的平臺。簡單來說,PLC是一種工業(yè)數(shù)字計算機,適用于控制裝配線、機器人設(shè)備等制造過程,或任何需要高可靠性、容易編程且能進行故障診斷的活動。PLC發(fā)明于20世紀60年代末,旨在取代當時復(fù)雜的繼電器和定時器系統(tǒng)。Richard Morley通常被認為是1968年發(fā)明第一臺PLC(Modicon)的功臣。從那時起,隨著技術(shù)的不斷發(fā)展,PLC已成為眾多應(yīng)用領(lǐng)域的重要組件,包括機器控制、樓宇自動化、預(yù)測性維護、數(shù)據(jù)記錄、遠程監(jiān)控和安防等。
PLC由以下幾個關(guān)鍵部件組成:
● 處理器 (CPU):它控制PLC的所有活動,處理來自輸入模塊的數(shù)據(jù),并向輸出模塊發(fā)送信號。
● 輸入/輸出模塊 (I/O):PLC可以借助這些模塊與外界互動。輸入模塊接收來自傳感器和人機界面 (HMI) 的數(shù)據(jù),而輸出模塊則向執(zhí)行器和其他設(shè)備發(fā)送信號。
● 存儲器:存儲用戶的程序和流程所需的其他信息。
● 通信端口:用于實現(xiàn)PLC與其他設(shè)備(如計算機、其他PLC和網(wǎng)絡(luò)系統(tǒng))之間的通信。
● 電源:為PLC及其I/O模塊的運行提供必要的電力。
最近,Arduino攜Opta平臺(圖1)進入了PLC市場,這是一款安全、易用的微型PLC,具有工業(yè)物聯(lián)網(wǎng) (IIoT) 功能。該平臺是Arduino與領(lǐng)先的工業(yè)和樓宇自動化設(shè)備制造商Finder合作設(shè)計的。Opta讓專業(yè)人員能夠利用Arduino生態(tài)系統(tǒng)擴展自動化項目。它支持Arduino sketch和標準PLC語言,包括梯形邏輯圖 (LD) 和功能塊圖 (FBD)。
圖1 Arduino已經(jīng)攜Opta系列PLC進入了可編程邏輯控制器市場(圖源:Arduino)
Opta有三種型號:Arduino Opta Lite、Arduino Opta RS485以及功能最豐富的Arduino Opta Wi-Fi?。Opta配備有功能強大的STMicroelectronics STM32H747XI雙核Arm? Cortex?-M7+M4 MCU,可幫助用戶執(zhí)行實時控制、監(jiān)控以及實施預(yù)測性維護應(yīng)用。根據(jù)型號的不同,Opta還提供多種網(wǎng)絡(luò)連接選項,包括USB、以太網(wǎng)和Wi-Fi? /低功耗藍牙,以及RS-485等特定行業(yè)協(xié)議。Opta是一款可安裝在DIN導軌上的設(shè)備,其設(shè)計高度可靠,采用雙核架構(gòu),無需外部冷卻,可在工業(yè)溫度范圍(-20°C至+50°C)內(nèi)運行。Arduino Opta的主要特性包括:
● 安全性:Opta具有安全引導程序,支持使用TLS 1.2進行安全通信。
● 方便開發(fā):Opta可使用Arduino IDE或Finder PLC IDE進行編程。
● 專業(yè)級IIoT功能:Opta具有多種連接選項,可以連接到互聯(lián)網(wǎng)用于遠程監(jiān)控。
在本項目中,我們將設(shè)計一個概念驗證傳送系統(tǒng),按照尺寸對包裝箱進行分類。我們將通過本項目探索有關(guān)Arduino Opta的多個概念,包括使用Arduino 2.0 IDE和Arduino PLC IDE進行開發(fā)。我們還將完成硬件與PLC的連接過程。最后,我們將了解如何通過Arduino云將Opta連接到互聯(lián)網(wǎng)。
物料清單和工具
截至發(fā)布之日,物料清單總成本約為300美元(表1)。
表1 項目物料清單
除了上面的物料,還推薦使用以下工具:
● 小型十字頭和平頭螺絲刀
● 剪線鉗/剝線鉗
● 小型尖嘴鉗
● 數(shù)字萬用表
● 高速互聯(lián)網(wǎng)連接
● 運行Windows 10或更高版本的PC
資源
● 貿(mào)澤項目購物車在這里。
● GitHub存儲庫在這里。
硬件準備
本項目將使用兩個紅外 (IR) 斷光束傳感器來檢測包裝箱及其尺寸。這類傳感器通常用于物體檢測、計數(shù)和安防系統(tǒng)等應(yīng)用中。它們成對使用,發(fā)射器有兩根線,接收器有三根線。
我們將把這對傳感器上下堆疊在一起。如果一個小箱子通過,它只能激活一個傳感器。而較大的箱子會中斷兩束光,同時激活兩個傳感器。最后,由于這兩個是5V傳感器,我們需要使用穩(wěn)壓器將電壓從12V降到5V。圖2顯示了這兩個傳感器與Opta的連接方式。
圖2 顯示硬件連接的接線圖。請注意,上拉電阻是可選的,如果需要,可將紅外接收器OUT引腳連接至降壓轉(zhuǎn)換器的5V電壓(圖源:Green Shoe Garage)
使用以下步驟連接紅外斷光束傳感器:
1.將Opta的12V源極引腳連接到穩(wěn)壓器的正 (+) 輸入端子。
2.將Opta的GND (-) 源極引腳連接到穩(wěn)壓器的負 (-) 輸入端子。
3.將發(fā)射器(紅外LED)的VCC(電源)引腳連接至穩(wěn)壓器的正 (+) 輸出端子。
4.將發(fā)射器的GND(接地)引腳連接至穩(wěn)壓器的負 (-) 輸出端子。
5.將接收器的VCC(電源)引腳連接至穩(wěn)壓器的正 (+) 輸出端子。
6.將接收器的GND(接地)引腳連接至穩(wěn)壓器的負 (-) 輸出端子。
7.對于上方的斷光束傳感器,將OUT(信號)引腳連接至I3數(shù)字/模擬輸入端子。
8.對于下方的斷光束傳感器,將OUT(信號)引腳連接至I4數(shù)字/模擬輸入端子。
9.根據(jù)您的具體模塊,可能需要增加一個上拉或下拉電阻。如果使用下拉電阻,則在信號引腳和接地引腳之間連接一個10kΩ電阻。
接下來,將Opta PLC連接到專為對接直流電機而設(shè)計的電路板上。兩塊電路板將通過RS485總線Modbus RTU命令進行通信(半雙工,無終端電阻)??刂瓢灏刂浦绷麟姍C的繼電器,而直流電機將驅(qū)動傳送帶移動包裝箱。
Opta控制板包含一個專用的RS485硬件端口,以嵌入式螺絲端子的形式安裝在外殼頂部。引腳分別標記為A(-)、GND和B(+)。除了用于供電的VIN引腳外,電機控制板還有其他相應(yīng)的引腳。通過以下步驟將PLC與控制器連接起來:
1.將PLC的A(-) 引腳連接到控制板的A(-) 引腳。
2.將PLC的B(+) 引腳連接到控制板的B(+) 引腳。
3.將PLC的GND引腳連接到控制板的GND引腳。
4.將PLC的12V電壓連接到控制板的VIN引腳。
最后,我們必須將12V直流電機連接到控制繼電器。我們希望兩個電機的旋轉(zhuǎn)方向相反。電機將由Opta 12V端口供電。
1.將Opta的12V引腳連接到控制板的NO1引腳。
2.將繼電器控制板的COM1端口連接到直流電機的其中一條引線。
3.將直流電機的另一條引線連接到Opta的GND引腳。
4.將Opta的12V引腳連接到控制板的NO2引腳。
5.將繼電器控制板的COM2端口連接到第二個直流電機的其中一條引線。確保引線與第一臺電機的引線相反,以保證它們的旋轉(zhuǎn)方向相反。
6.將第二臺直流電機的另一條引線連接到Opta的GND引腳。
軟件開發(fā)
Opta的編程有幾種不同的選擇,包括傳統(tǒng)的Arduino IDE 2.0和Web編輯器。Opta還兼容Arduino PLC IDE,可使用工業(yè)自動化應(yīng)用中的傳統(tǒng)語言進行編程。Opta Wi-Fi?型號還可以連接到Arduino IoT Cloud,通過Web瀏覽器或Arduino IoT Cloud Remote智能手機App接收遙測數(shù)據(jù)和進行遠程控制。
由于我們的要求之一是PLC能與云通信以進行遠程監(jiān)控,因此我們將從Arduino IoT Cloud儀表板開始配置我們的新設(shè)備(圖3)。首先,下載并安裝Arduino Create代理,允許設(shè)備與Arduino Cloud后臺通信。下載代理程序并查看安裝文檔。安裝完成后,用USB Type-C電纜將Opta連接到運行Create代理的開發(fā)人員工作站計算機上。
圖3 在Arduino IoT Cloud上配置新設(shè)備(圖源:Green Shoe Garage)
首先,我們只需導航到Devices選項卡,單擊Add按鈕并完成安裝向?qū)?,即可將Opta配置到Arduino IoT Cloud環(huán)境中。這一步將建立安全密鑰,允許Opta通過IoT Cloud秘密通信。我們還需要為Opta創(chuàng)建一個“數(shù)字雙胞胎”(在Arduino環(huán)境中稱為“thing”)(圖4)。為此,請單擊Things選項卡,然后單擊Create按鈕。
圖4 設(shè)置Opta PLC的數(shù)字雙胞胎(或稱“thing”)(圖源:Green Shoe Garage)
完成后,PLC應(yīng)顯示為已連接到IoT Cloud。如果使用Arduino憑據(jù)登錄,還可以在桌面IDE中訪問基于Web的代碼。
代碼概覽
我們先來看看本項目的關(guān)鍵文件:
● main.ino負責設(shè)置設(shè)備和運行主循環(huán)的大部分工作。大多數(shù)與項目相關(guān)的源代碼都可以在這里找到。
● thingProperties.h包含一些函數(shù)調(diào)用,用于將物理PLC連接到其在云中的虛擬雙胞胎。
● arduino_secrets.h包含允許Opta連接到本地無線網(wǎng)絡(luò)的Wi-Fi? SSID和密碼。
o #define SECRET_OPTIONAL_PASS "NETWORK_PASSWORD"
o #define SECRET_SSID "NETWORK_NAME_HERE"
關(guān)鍵庫、函數(shù)和變量
除了默認包含的庫,我們還需要通過#include語句添加以下庫:
● ArduinoModbus.h包含處理Modbus RTU通信數(shù)據(jù)包所需的代碼。
● ArduinoTCloud.h允許Opta連接到Arduino IoT Cloud服務(wù)。
● Arduino_ConnectionHandler.h提供一個ConnectionManager,用于控制連接和斷開、屬性變化更新和事件回調(diào)。
這些庫主要用于Opta與直流電機控制器板的通信。該控制器板通過Modbus RTU串行通信協(xié)議進行通信,具體設(shè)置如下:
● 波特率:9600 bps
● 數(shù)據(jù)位數(shù):8
● 奇偶校驗位:No
● 停止位:1
以下是main.ino文件中用于Modbus通信的一些關(guān)鍵函數(shù)和變量:
● byte controlBoardAddress = 0x01設(shè)置電機控制板的設(shè)備地址。
● int motor1 = 1是電機寄存器,用于在檢測到高包裝箱時控制傳送帶。
● int motor2 = 2是電機寄存器,用于在檢測到矮包裝箱時控制傳送帶。
● int motorTimeOn = 5000設(shè)置檢測到包裝箱后傳送帶運行的持續(xù)時間。
● ModbusRTUClient.begin(9600) 以給定的波特率啟動Modbus功能。
● void holdingRegisterWrite(int dev_address, uint8_t reg_address, uint8_t holding_write)
o int dev_address:電機控制板的地址可能因制造商而異,請查閱控制板文檔。
o uint8_t reg_address:寫入電機控制板所執(zhí)行命令的寄存器地址。寄存器編號與物理繼電器板編號相對應(yīng)。該值介于0x00和0x0F之間。
o uint8_t holding_write:被寫入寄存器以控制繼電器的命令。這些命令包括:
● 0x0100:繼電器開啟
● 0x0200:繼電器關(guān)閉
● 0x0300:切換狀態(tài)繼電器
● ModbusRTUClient.lastError() 返回一個字符串,其中包含Modbus產(chǎn)生的最后一條錯誤消息。
接下來,我們檢查斷光束傳感器的代碼。我們可以使用幾種不同的方法進行配置,包括將其作為中斷的輸入,以便及時處理新包裝箱。回想一下,我們有兩對發(fā)射器/接收器。發(fā)射器一直處于開啟狀態(tài),因此它們沒有代碼。我們將在代碼中處理接收器信號。請注意,這些傳感器都是ACTIVE LOW(低電平有效)類型,因此當光束因包裝箱的存在而中斷時,PLC將看到0V電壓。表2列出了一些關(guān)鍵函數(shù)和變量:
表2 硬件引腳標示
● void setup()
o pinMode(A2, INPUT):下方斷光束傳感器
o pinMode(A3, INPUT):上方斷光束傳感器
o attachInterrupt(digitalPinToInterrupt(A0), lowerBeamBreak_ISR, LOW):如果下方斷光束傳感器跳閘,我們就知道有包裝箱。然后我們將檢查上方斷光束傳感器,以確定包裝箱是高還是矮。
o void lowerBeamBreak_ISR():中斷服務(wù)例程 (ISR) 將檢測是否有物體干擾下方斷光束傳感器。
最后一大段代碼用于將遙測數(shù)據(jù)通過Wi-Fi?通信傳回Arduino IoT Cloud。用于實現(xiàn)云通信的函數(shù)如下:
● void setup()
o initProperties() 初始化“thing”屬性,以允許Opta與IoT Cloud通信。
o ArduinoCloud.begin(ArduinoIoTPreferredConnection) 啟動Wi-Fi?通信。
o setDebugMessageLevel(2) 設(shè)置調(diào)試信息的粒度。根據(jù)文檔說明,數(shù)字越大,獲得的信息越詳細;默認值為0(僅錯誤),最大值為4。
● void loop()
o 主循環(huán)的每次迭代都需要調(diào)用ArduinoCloud.update(),以便將遙測數(shù)據(jù)發(fā)回云端。
● thingProperties.h
o bool lowerSensorTripped是一個變量,用于存儲下方斷光束傳感器的狀態(tài)。如果設(shè)置為TRUE,表示檢測到包裝箱。如果只有下方斷光束傳感器跳閘,說明包裝箱比較小。
o bool upperSensorTripped是一個變量,用于存儲上方斷光束傳感器的狀態(tài)。如果設(shè)置為TRUE,表示檢測到包裝箱。如果上方和下方傳感器都跳閘,說明檢測到了大包裝箱。
o ArduinoCloud.addProperty(lowerSensorTripped, READ, ON_CHANGE, NULL) 將下方斷光束傳感器的狀態(tài)發(fā)送到云端。
o ArduinoCloud.addProperty(upperSensorTripped, READ, ON_CHANGE, NULL) 將上方斷光束傳感器的狀態(tài)發(fā)送到云端。
Arduino PLC IDE
對Opta進行編碼的另一種方法是使用Arduino PLC IDE,這是一種軟件開發(fā)環(huán)境,允許使用IEC 61131-3標準語言對兼容PLC的Arduino設(shè)備進行編程。這是一款免費的開源軟件,僅適用于Windows系統(tǒng)。截至本文發(fā)布之日,PLC IDE的功能仍不如市場上其他一些PLC編程軟件豐富。不過Arduino PLC IDE包含多種功能,也是一款功能強大的PLC編程工具:
● 支持五種IEC 61131-3編程語言:梯形圖、功能塊圖、結(jié)構(gòu)化文本、順序功能圖和指令表。
● 適用于Arduino和PLC編程的統(tǒng)一編程環(huán)境。
● 多種調(diào)試工具,幫助查找和修復(fù)代碼中的錯誤。
● 易于使用且直觀的用戶界面。
Arduino PLC IDE是一款寶貴的工具,適用于想要對兼容PLC的Arduino設(shè)備進行編程的任何人。它易于使用和配置,并且功能豐富,是一款強大的PLC編程工具。
使用以下步驟安裝和設(shè)置Arduino PLC IDE軟件:
1.從Arduino網(wǎng)站下載Arduino PLC IDE和Arduino PLC IDE Tools。
2.運行Arduino PLC IDE Tools安裝程序,并按照安裝說明進行操作。
3.安裝完成后,打開Arduino PLC IDE。
4.使用USB電纜將兼容PLC的Arduino設(shè)備連接到計算機。
5.在Arduino PLC IDE中,單擊“Tools”菜單,然后單擊“Board”并選擇設(shè)備。
6.在“Port”部分,選擇設(shè)備連接的COM端口。
7.單擊“PLC IDE Bootloader”按鈕,將引導加載程序下載到設(shè)備。
8.下載引導加載程序后,單擊“Connect”按鈕連接到設(shè)備。
9.在“Device License”部分,輸入設(shè)備的硬件ID,然后單擊“Activate”按鈕。
10.現(xiàn)在,您應(yīng)該可以使用Arduino PLC IDE對兼容PLC的Arduino設(shè)備進行編程了。
我們已經(jīng)在GitHub存儲庫中提供了演示如何使用PLC IDE(圖5)對Opta進行編程的代碼。
圖5 Arduino PLC IDE為業(yè)界工程師提供了更常用的PLC開發(fā)工具(圖源:Green Shoe Garage)
最后的組裝和故障排除
硬件已組裝完畢,固件也已經(jīng)燒寫到Opta PLC,我們接下來將為項目測試做最后的準備。在我們的設(shè)置中,斷光束傳感器將放置在傳送帶的兩側(cè)(圖6)。我們將把發(fā)射器放在右側(cè),接收器放在左側(cè)。要特別注意將發(fā)射器和接收器水平和垂直對齊,以便一個大包裝箱能同時觸發(fā)兩個傳感器。請注意確保電線安全、整齊地穿過任何機械部件,如電機和傳送帶。
圖6 一個小包裝箱將僅觸發(fā)下方斷光束傳感器(圖源:Green Shoe Garage)
要查看遙測數(shù)據(jù),可下載并進入Arduino Cloud Remote App,然后選擇相應(yīng)的儀表板(圖7)。
圖7 基于云的儀表板,用于監(jiān)控傳送帶的活動(圖源:Green Shoe Garage)
故障排除
如果您在項目中遇到問題,可以參考我們在開發(fā)過程中發(fā)現(xiàn)的一些解決方法:
● 具體的連接問題可能隨不同的紅外斷光束傳感器型號而異,因此請務(wù)必查閱傳感器附帶的數(shù)據(jù)手冊或任意文檔。
● 確保紅外LED(發(fā)射器)和光電二極管或光電晶體管(接收器)正確對準,以檢測光束中斷情況。
● 避免將傳感器暴露在直射陽光或其他紅外光源下,因為它們可能會干擾傳感器的運行。
● 確保串行通信設(shè)置為9600 bps。
● 如果您的設(shè)備未列在Arduino PLC IDE中,可能需要安裝相應(yīng)的Arduino內(nèi)核。
● 如果您的設(shè)備沒有引導加載程序,則必須使用Arduino IDE進行燒寫。
● 在IDE和PLC IDE之間切換時,Wi-Fi?功能可能會中斷。使用Arduino IDE 2.0,需要通過導航至File > Examples > Portenta H7 board 747_system > example > wififirmwareupdater 來運行Wi-Fi固件更新。在固件刷新后,啟動串行監(jiān)視器并完成安裝流程。然后刷新項目固件,Wi-Fi?連接即可恢復(fù)。
總結(jié)
五十多年來,在日新月異的技術(shù)領(lǐng)域,PLC始終是工業(yè)自動化不可或缺的一部分。Arduino進入這類嵌入式系統(tǒng)領(lǐng)域,為工業(yè)系統(tǒng)設(shè)計人員提供了令人興奮的新選擇,尤其是對于資源較為有限的小型企業(yè)而言。憑借其出色的適應(yīng)性、靈活性和強大的功能,Arduino Opta PLC系列必將成為現(xiàn)代工業(yè)領(lǐng)域的風向標。
用Arduino Opta Wi-Fi?代替?zhèn)鹘y(tǒng)PLC,是將設(shè)備連入IIoT系統(tǒng)的一種便捷方式。使用傳統(tǒng)PLC編程技術(shù)的能力,可以幫助習慣于傳統(tǒng)PLC軟件開發(fā)的系統(tǒng)集成商更快適應(yīng)。
通過本項目,您應(yīng)該對PLC的原理,以及使我們的工業(yè)化社會得以運轉(zhuǎn)的關(guān)鍵系統(tǒng)有了基本的了解。無論您是工程師、技術(shù)人員,還是僅僅對技術(shù)感興趣,Arduino Opta PLC都能為您提供強大的學習平臺,并為許多實際的自動化和遠程控制應(yīng)用提供物美價廉的解決方案。
作者簡介
專業(yè)工程師Michael Parks是Green Shoe Garage的聯(lián)合創(chuàng)始人。Green Shoe Garage是一家提供定制電子設(shè)計的工作室和嵌入式安全研究公司,位于馬里蘭州西部。Michael Parks創(chuàng)辦了《Gears of Resistance》播客來提升公眾對科技的認知。他還擁有馬里蘭州專業(yè)工程師資質(zhì),并獲得了約翰·霍普金斯大學系統(tǒng)工程碩士學位。
評論