發表文章

目前顯示的是 4月, 2020的文章

[MOXA] OPC Server透過OnCell G3150-HSPA存取遠端設備

圖片
Case Brief 客戶現場的設備透過PLC接收數值來進行監控,而設備會隨著案場在不同地區移動,所以客戶希望透過行動網路(GPRS/HSPA/LTE),讓遠端的OPC Server可以存取現場PLC的數值,相關人員便可以不必跑到現場,透過OPC Server與SCADA的來即時監控現場設備的狀態。 Cause Analysis 有類似需求的客戶其實很常見,許多案場的通訊並不方便,例如偏遠的山區、新建的廠房、或著像案例中不固定的場所等;以目前的通訊技術發展,可以選擇的除了一般手機使用的行動通訊之外,還有 LPWAN(LTE-M/NB-IoT) 、MDVPN、以及其他可以遠距離傳輸的無線技術(WiFi、Microwave)等。 然而每種不同的技術都有其優點與缺點,必須依照現場的需求與可用的資源審慎評估;LPWAN是近代專為物聯網設計的通訊技術,但因為還處於發展階段,在相關設備與環境上還沒有達到穩定的階段;MDVPN使用上與一般的行動通訊相同,但是申請的過程與設備、環境的需求每家ISP商可能不完全相同,以及流量資費的計算上需要精打細算一些;WiFi、Microwave這些遠距離的無線傳輸在硬體上的花費很高,而且距離最遠也只能在幾公里以內,後段可能還是需要依靠實體的網際網路來實現遠端存取。 行動網路申請與使用上相對方便, 最大的問題在於設備使用行動網路時,無法取得固定的Public IP位址; 如果設備是向遠端主機主動拋出資料,只要遠端主機有固定的Public IP,這樣影響並不大;但如果設備是被動等遠端主機來存取,就必須思考如何解決浮動Public IP位址的問題。 Solution 對於客戶的需求,規劃的架構如下圖;PLC以乙太網路連接 MOXA OnCell G3150-HSPA ,並連上網際網路,遠端的OPC Server便可透過網際網路向PLC存取數值,而後端的SCADA經由OPC Server監控設備的狀態。 補充說明一點,規劃當時因為LTE尚未普及,沒有相關的OnCell設備可以使用,至今MOXA有推出 OnCell G3150A-LTE ,也可以完成同樣的架構,與OnCell G3150-HSPA在設定上需要注意的部分會在後文中說明。 在這個架構下會衍生兩個問題,測試的步驟會依這兩個問題分為以下兩個階段: OPC Server與

[Raspberry Pi] 啟用Raspberry Pi 3B+ 序列埠功能

圖片
Introduction 對於Raspberry Pi 3B+來說,它的UART有三種功能: 供內部藍牙使用 控制終端使用(serial console) 與其他設備進行序列通訊(serial communication) Raspberry Pi 3B+有兩個UART(Universal Asynchronous Receiver/Transmitter,Universal是指可以自定義傳輸格式與baud rate,Asynchronous是指不依賴CPU時鐘),分別為PL011 UART與mini UART,PL011使用獨立的硬體(ARM PrimeCell PL011)去控制傳輸的baud rate,所以傳輸的性能與穩定度都很好, 但是mini UART的baud rate是使用系統核心時脈計算出來的,只能算半軟體的URAT,就算設定到115200bps實際上只有72000bps左右而已, 相較之下效能與穩定度都不足。 PL011 UART在系統中是/dev/ttyAMA0,mini UART是/dev/ttys0,Raspberry Pi 3B+有兩個序列埠口為serial0與serial1, serial0是GPIO埠口, 使用GPIO 14(pin 8)與GPIO 15(pin 15), serial1是藍芽; 在系統預設中,serial0是關閉的,serial1是指向/dev/ttyAMA0,所以無論是想用序列埠口作為serial console或者與其他設備做serial communication,首先要做的是啟用serial0這個序列埠口。 Enable Serial Port 本篇使用的硬體為Raspberry Pi 3B+,映像檔版本為2018-11-13-raspbian-stretch-lite;要啟用serial0可以使用raspi-config或者修改/boot/config.txt兩種方式。 使用raspi-config 進入Raspberry Pi Software Configuration Tool sudo raspi-config 選擇5 Interfacing Options並按下Enter鍵。 選擇P6 Serial並按下Enter鍵。 預設啟動serial interface會做

[Raspberry Pi] 建立動態MOTD

圖片
Introduction to MOTD 在Unix-like系統中,會使用/etc/motd來發布「今日消息」(message of the day),當使用者在本地或遠端登入系統時,可以顯示系統管理員向使用者發送的訊息;但是原始的motd只能使用純文本(plain text)的方式呈現,所能傳遞的資訊相對有限。 在Debian與Ubuntu的系統中可以利用多個shell script的組合來建立「動態」的motd, 讓管理員可以更方便的發送資訊;動態motd可以依照需求分成header、logo、message、footer等多個shell script,header放系統的標題資訊,logo用ASCII繪製系統、公司、或者其他logo,message放給使用者的動態資訊,footer放其他的頁尾資訊,管理者可以隨時更換這些部分,來組合成一個完整、合適的motd。 下圖是由一個shell script檔建立的motd,左方顯示了一個彩色的Raspberry Pi logo,右方是利用shell script取得的動態資訊,如日期、kernel版本、OS版本、系統啟用時間、記憶體使用率、CPU負載率、執行中的程序數量等資訊。 Build Dynamic MOTD 本篇使用的硬體為Raspberry Pi 3B+,映像檔版本為2018-11-13-raspbian-stretch-lite;以下的步驟也在其他armv7與一般PC的Debian系統中,順利的建立動態MOTD。 建立/usr/sbin/update-motd檔。 #!/bin/sh # # update-motd - update the dynamic MOTD immediately # # Copyright (C) 2008-2014 Dustin Kirkland &ltdustin .kirkland="" gmail.com=""&gt # # Authors: Dustin Kirkland &ltdustin .kirkland="" gmail.com=""&gt # [ comments edited out by ownyour