摘要:本文旨在說明面向CodeSYS的資料庫連線方案SQL4Automation的使用方法。
SQL4Automation是一套工業用途的軟體解決方案,它主要的功能就是為PLC和機器人控制提供資料庫連線,它支援很多型別的PLC,其中也包括CodeSYS軟PLC。SQL4Automation for CodeSYS包含一個CodeSYS庫以及一套第三方的軟體,SQL4Automation的軟體部分包含一個服務和一系列的對該服務進行設定的前端軟體,我們也可以越過前端軟體直接通過組態檔使用它提供的服務。
目前在PLC開發中越來越多的使用到了資訊即時入庫操作,但是PLC程式設計體系的資料庫使用場景並不如其他程式語言中的廣泛,並且PLC程式設計有著面向廠家的侷限性,因此並沒像JDBC,MyBatis那樣豐富的資料庫連線方案即便捷框架,為了做到和資料庫的通訊很多情況下需要開發人員自己封裝協定然後使用ODBC,SQL4Automation對工業程式設計連線資料庫的一系列操作客製化了規範,並提供了相應的功能塊和函數,簡化了連線資料庫的過程,便於程式的開發維護,同時也達到了程式和資料庫具體品牌的解耦,只要面向SQL4Automation程式設計,在之後更換資料庫就只是更換其服務組態檔中的ODBC即可,無需修改程式碼。
另外一方面是SQL4Automation是一個免費的平臺,CodeSYS提供一個直接連線MySQL的庫,使用這個庫能直接讓PLC不借助任何第三方服務的狀態下自己連線MySQL資料庫,但是它收費,價格是七百多,而且它只能連線MySQL資料庫,對於一些國企或者重點工廠來說並不能滿足專案的需求。
我們首先看一下想要使用SQL4Automation都需要安裝些什麼東西:
1.CodeSYS中安裝的SQL4Automation庫
2.桌面控制軟體
3.SQL4Automation服務
其中該連線服務是軟體中自帶的,在安裝軟體的過程中服務就會被註冊,軟體安裝好後直接啟動服務即可。
SQL4Automation的執行模式為:在PLC端通過SQL4Automation提供的庫和SQL4Automation的服務通訊,和SQL4Automation服務建立一個連線,PLC通過此連線將sql語句傳送給服務,服務通過事先設定好的ODBC和資料庫建立連線,並將獲取到的PLC端服務傳送給資料庫,獲得到資料庫的反饋後再將該反饋傳送給PLC端。可見SQL4Automation的服務想當於一箇中間人,是一個跳板平臺性質的東西,它是PLC和資料庫之間的一箇中轉站,PLC是先將sql語句傳送給它,然後SQL4Automation服務再將sql語句傳送給資料庫,反之亦然。
1.進入SQL4Automation官網:https://www.sql4automation.com/en/home/
2.下拉到頁面最下面點選下載
3.選擇安裝版本資訊及個人資訊
在這些內容填寫完成之後就可以啟動下載了。
4.安裝
解壓下載到的壓縮包之後我們繼續解壓這個Windows的安裝檔案:
進入解壓後的目錄,我們根據自己的系統選擇安裝程式:
執行安裝完畢之後,系統中就會自動出現該軟體的連線服務以及上文中提到的三個軟體。
5.為S4Connector服務設定目標資料庫連線
開啟桌面中的軟體:S4A Config,進入到如下介面
如果系統中的服務處於執行狀態的話,該前端控制檯右上角標紅的地方的Connect是可點選的,如果發現該按鈕是灰色不可點選,請檢查工作管理員中的服務,尋找S4Connector,將該服務開啟即可。
之後我們點選Connect,介面左邊的連線管理欄便可以使用了,我們點選New新建一個連線:
新建連線的介面如圖所示:
需要我們手動設定的地方是圖中用紅框和藍框標記的地方,其中紅框標記的是該服務自身的IP埠資訊,包括Ip資訊和埠資訊以及連線超時時間,在CodeSYS中設定這個IP和埠便可以連線到這個服務,而藍色框標記的地方是設定資料庫資訊的地方,其中需要填寫資料來源,使用者名稱和密碼三項,資料來源就是ODBC,如果當前系統中沒有我們需要的資料來源,我們可以直接點選右下角的ODBC admin進行設定。
6.設定資料來源
點選ODBC admin之後我們會進入到系統的ODBC安裝設定介面,需要注意的是ODBC我們需要提前準備好,ODBC是開放資料庫連線,我們通過設定ODBC可以建立一個和資料庫的連線,ODBC就是存取資料庫的工具,我們可以理解為它是一種存取資料庫的驅動。
進入到OBDC管理頁面之後我們點選系統DSN,然後在該欄目下新增一個自己的ODBC。
點選新增後,就會立刻進入到ODBC選擇的介面中,我們根據自己想要連線的資料庫進行ODBC的選擇,需要注意的是這裡需要我們提前下載和安裝ODBC,為了節約篇幅暫不介紹在系統中安裝ODBC的方法:
選擇好ODBC之後我們就會進入到一個設定ODBC連線的介面,填寫好資料庫的使用者資訊之後就製作好一個資料來源了:
製作好的資料來源會自動顯示在Data source中,我們選擇即可:
填寫好下邊的使用者名稱和密碼之後,即使不連線PLC,使用當前服務也可以直接從伺服器端連線資料庫了,該軟體提供一個測試工具用來測試服務和資料庫的連通,就是這個之前下載好的這個軟體:
需要注意的是在S4A Config中也能進入到這個軟體中去,接下來我們測試資料庫的連通性:
7.測試服務和資料庫的連通性
首先點選License,為當前的連線獲取證書:
在成功獲取證書之後就可以連線資料庫了:
在正式使用資料庫做通訊之前我們可以先檢測一下資料庫的連通性,在點選左下角的Test之後如果彈出瞭如圖所示的彈窗,說明資料庫連線確實可以用了,接下來我們可以放心測試:
點選Tools按鈕下的S4AQuertTool或者直接從桌面圖示進入測試工具:
測試工具如圖所示,主要分為兩個區域,一是書寫SQL語句的區域,一是獲取返回結果的區域:
我書寫了一個測試用的SQL語句,點選Send之後成功獲取到了返回,測試成功:
8.使用CodeSYS連線服務
我們首先需要為專案匯入SQL4Automation為CodeSYS提供的服務連線庫,在之前我們下載的安裝包裡已經提供了,如圖所示:
解壓之後我們就能夠找到,將這個庫安裝到CodeSYS,然後新增到專案下即可:
想要使用CodeSYS連線服務我們首先需要範例化一個服務連執行緒式碼塊,該物件在SQL4Automation提供的官方庫中已經給出,名為fbSQL4Codesys
,範例化這個程式碼塊時候我們便可以通過它連線資料庫了,如圖所示:
我們將其範例化並將其分配給一個任務:
之後我們書寫它的呼叫邏輯,在如下程式碼中,會向資料庫插入一條語句,我們執行起來測試一下:
我們向如圖所示的庫中插入資料,目前可見該庫中沒有任何資料:
向結構體中填充測試資料並觸發程式執行:
在觸發提交後我們點開服務的前端控制軟體,會發現它已經接收到了我們的SQL請求:
在資料庫中我們也發現了資料確實落庫了:
在Linux中我們只能安裝伺服器端,我們在解壓完壓縮包之後,會發現在目錄中存在這樣的一個檔案:
我們也能從官網中下載Linux版本的其他安裝檔案,但是總體上的安裝方式都是相同的,在解壓Linux的壓縮包之後,我們會找到這樣的一個目錄,執行其中的指令碼S4AConnector-inst
就可以直接進行全部的安裝。
在Linux中我們同樣需要啟動這個服務,我們使用指令:systemctl start S4AConnector
啟動服務,啟動服務之後我們使用指令:systemctl status S4AConnector
檢視服務狀態,如果如下圖所示,則說明啟動成功:
需要注意的是在Linux版本中,該解決方案的操控仍然需要前端控制檯操作,在Ubuntu或者其他的Linux作業系統中,安裝SQL4Automation之後,桌面上都會出現和Windows中一樣的三個工具的快捷方式,我們通過快捷方式能夠開啟一個和Windows中一樣的介面,在有圖形介面的系統中我們那樣使用軟體即可,但是在伺服器中,我們沒有圖形化使用者介面,因此只能在組態檔中新增連線的資訊,這個組態檔的預設路徑為:/var/log/SQL4automation/config
:
我們檢視其中的內容為:
理論上我們修改這裡的設定資訊就可以構建連線了,但是這裡的密碼等資訊都是通過某種方式加密的密文,不能通過明文進行設定,並且當前也缺少伺服器端設定的資料,因此在伺服器端啟動SQL4Automation還需要深入研究。