發表文章

[MOXA] MRC - Remote Connect Client介紹與設定說明

圖片
MOXA MRC包含MRC Server、MRC Gateway、與MRC Clinet三部分,其餘兩部分說明請參考: [MRC] Moxa Remote Connect Server介紹與設定說明 [MRC] Moxa Remote Connect Gateway介紹與設定說明 MRC Client Software MRC Clinet software可以在MOXA官方網站下載最新版本,安裝完成後開啟MRC Clinet software,在Import activation file輸入從MRC Server下載的用戶金鑰檔,之後按下Apply。 套用檔案之後,下方應該會帶出用戶帳號資訊,之後可用Test Connection測試連線或Sign in登入MRC Server,下方的Signed In變為綠色表示成功登入MRC Server;Windows系統的使用者需用系統管理者的身分開啟MRC Client software,否則會因為權限不足無法驅動虛擬網路介面進行連線。 連線完成之後點選上方的Device Pool,可以看到目前在同Device Group中的MRC Gateway,並且以樹狀結構顯示透過該Gateway連線的網路設備;同時也可以看到這些設備的狀態,Status會顯示這些設備是否上線中,Tunnel用於連線到指定的設備,如果有啟用Auto IP Mapping,會顯示設備的虛擬IP,最後是設備的本地IP或MAC。 當使用者要連線某個設備時,點選該設備的Tunnel按鈕,當按鈕由紅色變為綠色,就表示該設備的通道已經建立,使用者可以依照MRC Gateway的模式透過虛擬IP或本地IP存取到設備。

[MOXA] MRC - Remote Connect Gateway介紹與設定說明

圖片
MOXA MRC包含MRC Server、MRC Gateway、與MRC Clinet三部分,其餘兩部分說明請參考: [MRC] Moxa Remote Connect Server介紹與設定說明 [MRC] Moxa Remote Connect Client使用說明 MRC Gateway 有了從MRC Server下載的認證金鑰後,可以選擇三種方式設定Gateway,第一種是輸入金鑰文字,第二種是將金鑰檔案儲存在USB中,將USB插在MRC Gateway上,第三種方式是手動設定MRC Gateway;推薦使用第一種與第二種方式,但需要注意的是, 若使用USB儲存金鑰,一旦USB拔出MRC Gateway,連線會隨之中斷; 第三種方式因為設定選項基本上與在 MRC Server 上設定MRC Gateway相同,所以建議透過MRC Server設定即可,再透過金鑰將設定檔載入MRC Gateway。 設定完成金鑰後,需要對MRC Gateway設定所在地的時區。 如果透過金鑰設定MRC Gateway,就只需要這兩個步驟,完成之後金鑰會自動將設定載入MRC Gateway中,等設備重新啟動完畢之後,便可將MRC Gateway直接安裝於現場。 MRC Gateway上線之後,可以觀察面板前方LED得知MRC Gateway是否正常運作,一般版本的MRC Gateway由左上開始為USB狀態、電源狀態、網際網路狀態、雲端服務狀態、啟動金鑰狀態,右上為VPN連線狀態;LTE版本的MRC Gateway右邊會多SIM卡狀態、LTE信號強度;正常狀況下,所有燈號(除LTE信號強度)在正常狀態下應該都維持恆亮。

[MOXA] MRC - Remote Connect Server介紹與設定說明

圖片
MOXA MRC包含MRC Server、MRC Gateway、與MRC Clinet三部分,其餘兩部分說明請參考: [MRC] Moxa Remote Connect Client使用說明 [MRC] Moxa Remote Connect Gateway介紹與設定說明 Moxa Remote Connect 過去對於現場的網路設備,設備工程師都必須連上現場網路之後,才可以進行維護、除錯、狀態檢測等工作;對於緊急的設備異常狀況,很難在第一時間了解狀況,進行排除; Moxa Remote Connect(簡稱MRC)提供了一種使用簡單、安全性高、且適用各種狀況的網路解決方案,針對工業應用的特性,使工程師無須抵達現場,就可以連接設備進行維護作業。 MRC結合了MRC Server、MRC Gateway、MRC Client三方面;MRC Gateway提供了高安全性的閘道機制,將乙太網路設備連接到網際網路上的MRC Server;MRC Client是一個輕便的軟體,可以將工程師的電腦連接到MRC Server;MRC Server則會負責安全的管理這之間所有的連線,透過MRC Server,工程師便如同在現場一般連線到網路設備當中進行檢修。 MRC的架構提供了諸多優點,諸如利用VPN的技術,打破過去網際網路與資安的對立,而且隨插即用的便利性使現場人員與工程師不需要VPN的專業知識就可以使用;同時也減少IT人員負擔,MRC不需要更改網路安全策略,且內嵌的防火牆可以設定允許遠端存取的白名單,既有的網路配置也不需要任何的更動,透過虛擬IP的映射技術,使所有被納管的設備都可以安全地被遠端存取。 MRC Server MRC Server提供了三層的管理架構,分別為系統管理者(System Administrator)、領域管理者(Domain Administrators)、群組管理者(Group Administrators);系統管理者可以管理服務領域與領域管理者、網域管理者可以管理群組與群組管理者,群組管理者可以管理MRC Gateway、MRC Client、以及遠端連線。 領域會由系統管理者分配領域管理者、領域期限、與領域節點上限,節點代表每個連線到MRC Server的設備就為一個節點,系統管理者也可以針對領域進行各項管理;領域管理者...

[Program Note] MVC Architectural Pattern簡介

圖片
MVC在軟體工程中是個常見的詞彙,它所代表的是一種 架構模式(architectural pattern) ,例如Repository、Layered、Client-Server、Pipe & Filter都是一些常見的架構模式,架構模式是一種概念,用於解釋與描述軟體架構的一些必要的膠合元素(cohesive elements)。 MVC模式通常用於開發使用者介面的應用程式,由資訊呈現給使用者與從使用者接受的方式,來區分資訊在軟體內部的表達方式;MVC架構的目的是在於實現動態程式設計,降低後續對程式的修改、擴充的難度,簡化程式的架構,並且提升程式的重用性。 在MVC架構中軟體系統分為三個部分,模型(model)、視圖(view)、控制器(controller);然而如同前面所說的, MVC是一個概念,並不是一個模型或者標準,這使得許多框架在實作自己的MVC架構時,對於三者所負責的功能或多或少有些許不同 (其中個議題引起相當大的迴響,模型與視圖之間到底會不會互動,有興趣可以參考— MVC是一個巨大誤會 );撇開三者間太細節的定義,大致上可以區分三者的功能為: 控制器(controller): 介於模型與視圖之間,負責處理整個應用程式的流程控制。 模型(model): 負責資料的處理,例如資料庫的存取、資料的驗證與稽核等。 視圖(view): 提供使用者視覺化的介面,接收使用者的輸入或回覆應用程式的結果。 上圖是我認為比較客觀的MVC架構的流程圖;視圖會接收來自使用者透過介面所給的輸入,視圖會將這些輸入資料給控制器,控制器會將資料轉交給合適的模型,模型將資料處理完後所得的資訊傳給控制器,控制器會把資訊給合適的視圖呈現給使用者。 最後仍然必須再次強調,MVC是一個概念而不是標準,不同的語言、不同的框架在實作MVC模式時都會有不一樣的地方;重點在於如何實現動態程式設計,提升應用程式的擴充性與重用性,並降低其複雜度。

[Program Note] MQTT QoS(Quality of Service)說明

圖片
MQTT的全名為Message Queuing Telemetry Transport,為IBM和Eurotech共同製定的通訊協定,MQTT是為物聯網所設計的M2M通訊協定,網路頻寬與硬體需求非常少,是極為輕便的通訊協定。MQTT通訊協定是基於TCP/IP連線,並提供自有的不同QoS(Quality of Service)層級的訊息傳遞,適用於網路連線不佳的環境、CPU較弱的嵌入式裝置。 MQTT的封包分為三個部分,分別為Fix Header, Variable Header, Payload,在PUBLISH與SUBSCRIBE封包中,QoS會在Fix Header中定義;對於MQTT封包的詳細內容可以參考MQTT官方文件第二章:MQTT Control Packet format。 QoS定義訊息傳送的品質,確保發布的訊息有被確實接收,MQTT定義的QoS分為0、1、2三個等級,在程式撰寫時會在Publisher發送訊息與Subscriber發起訂閱時指定各自的QoS等級: 0:At most once 訊息最多傳送一次,不會確認訊息傳送的結果,不會儲存訊息;如果Subscriber已中斷連線,或如果Broker故障,則該訊息就會會遺失。 在下圖中,Publisher並不能確認Broker是否有收到訊息,同樣的Broker也不能確定Subscriber是否有收到訊息。 1:At least once 一律會傳送訊息至少一次,如果傳送端未接收到確認通知,則會再次傳送訊息並設定DUP(duplicate)旗標,直到接收到確認通知為止。 如下圖,Publisher會在封包Header中加入packet identifier識別碼,訊息發送給Broker之後,Broker會回傳PUBACK(publish acknowledgment) 封包給Publisher,其中也有相同的packet identifier識別碼,讓Publisher確認訊息已經確實送達;同樣的方式也作用在Broker與Subscriber之間。 接收端在處理訊息之後,會從接收端中刪除訊息。如果接收端是Broker,則會將訊息發佈至其Subscriber。如果接收端是Subscriber,則會將訊息遞送至其應用程式。刪除訊息之後,接收端會傳送確認通知至傳送端。 ...

[Program Note] Asynchronous Programing與Callback Function

圖片
Asynchronous Programing 一開始要先清楚何謂同步與非同步,同步比較簡單,就像是我們去銀行辦事情,你填好單子交給行員,之後你必須在行員的櫃台一直等他完成作業,無論是開戶、領款、或者存款,這樣就是同步作業;你的程式送出request之後必須一直等待到response,才可以做其他事情。 而非同步作業時常與多執行緒作業畫上等號,實際上是不同的,多執行緒就像是有六十個人要在銀行開戶,所以銀行開了10個櫃台來處理這60個作業,但是每個櫃台實際上還是執行著上面說的同步作業。 而非同步作業是你今天要開戶,填好單子給行員之後,你可以去隔壁買飲料,點完飲料你可以去隔壁買衣服,店員幫你包裝衣服的時候你可以去7-11繳個電話費,然後飲料店叫到你的號碼了你回去拿飲料,服飾店員說你的衣服包好了你回去拿衣服,最後回到銀行剛好叫到你的號碼再去櫃檯拿你的存摺;對於程式而言, 你的程式送出request之後,到收到response之間,程式可以去做其他事情。 當瞭解同步與非同步作業之後,會延伸一個問題,你要對誰送出的request跟誰會送給你response?對於這個程式角色他必須有一個特性,它必須一直都存在,當你送出一個request之後,它會接收、處理,然後回覆給你一個response,當你再次送出一個request的時候,它也會重複同樣的程序,就像一個等待你的request的迴圈一樣;這樣的設計模式(Design Pattern)有個名字叫反應堆模式(Reactor Pattern),或者叫事件迴圈(Event Loop)、 Select迴圈(Select Loop) 。 下面這張圖就說明了反應堆迴圈的執行方式-等待事件、處理事件的無限迴圈;這個反應堆在程式執行期間會一直存在著,你給他一個request,就是一個event,它會處理完,給你response,然後繼續安靜的等待下一個request。 Callback Function 接著說明一下callback function,在一般的程式中,你寫了一個function,然後你在程式碼中呼叫這個function,我們可以稱為「call」一個function;如果你寫了一個function,然後把這個function的指給了某一個套件、框架、或者其他的程式,這個function在合適的時間,會由這些套...

[Twisted] Part 22: The End

圖片
本文由Dave的 Part 22: The End 翻譯而成,你可以由 Part 1 開始閱讀這個系列的文章,也可以在 這裡 找到整個系列的目錄。 All Done 呼!感謝你支持我。當我開始這個系列時,我沒有想過這會這麼長,或者花費這麼多時間來製作。但我很享受創造這個系列的過程,也希望你享受閱讀它的過程。 現在我已經完成了,我會研究生成PDF格式的可能性。但是不保證。 最後,我想就如何繼續你的Twisted學習提出一些建議。 Further Reading 首先,我建議閱讀Twsited的 線上文件 。雖然它受到很多中傷,但我認為這比經常受到讚賞好。 如果你想使用Twisted進行網路程式設計,那麼Jean-Paul Calderone有一個備受推崇的系列,叫做「 Twisted Web in 60 Seconds 」。不過,我懷疑它會花比60秒更長的時間去閱讀。 還有一本 Twisted的書 ,由於我沒有讀過所以我不能談論太多。 但我認為比上面更重要的是閱讀Twisted的原始碼。由於那些程式碼是由非常了解Twisted的人撰寫的,它是如何以「Twisted方式」做事情的優秀的範例來源。 Suggested Exercises 將你寫過的一個同步程式轉變為使用Twsited。 從頭開始轉寫一個新的Twisted程式。 從Twisted bug資料庫 選擇一個bug然後修復它。向Twisted開發人員提交更新。不要忘記閱讀關於投稿的 程序 。 The End, Really 祝你研究愉快! 圖47.結束