みんなさんこんにちわ。このシリーズはTF6420を使用しDB操作について説明したいと考えています。こちらの第1話はまずConfiguratorからData baseとController間で接続方法とコマンド操作を書きます。
よろしくおねがいします。
System Requirement
インストール
まず下記のLinkをアクセスします。
TF6420をダウンロードし、EXE Fileを起動します。
言語を設定します。ここでEnglishします。
Nextします。
ライセンス同意し、Next>します。
User NameやOrganizationを入力し、Next>します。
Completeを選択し、Next>します。
自分のパソコンがVS2013がインストールされたので、TwinCATをIntegrateするように設定し、(下図のようにCheckboxを入れます。)Next>します。
Next>します。
Installをクリックし始めます。
しばらく待ちます…
これでインストール完了です。
Concepts
TF6420はControlerとData baseの間に渡橋をつくるのために作成されます。そのTF6420は各種類のData baseにもSupportしており、設定も簡単です。
そのTF6420は3つのModeがあります。
Configure Mode
このModeはプログラミングせずに設定だけDB Connectionや操作などを完結します。このModeではすべての構成はConfiguratorからセットアップします。そしてAutoLogからCPUに変数をアクセスする。もしAuto StartのOptionを使用すると、Databaseと接続をTwinCAT System 起動するたびに実行します。
Function Block FB_PLCDBAutoLog を使用しAutoLog Viewのデータを一覧できます。
PLC Expert Mode
こちらのModeではPLC EngineerがFunction Blocksを使用しDatabaseをアクセスすることができます。CreateやInsertのコマンドのFunction Blocksが用意されます。
Databaseの接続だけConfigurator上で設定し、データアクセスはPLCのFunction Block経由で実現します。(例えばFB_PLCDBCreate、FB_PLCDBCmd)
SQL Expert Mode
こちらのModeはPLC のFunction BlocksだけではなくC++ Interfaceを使用することができます。一番Flexibilityの使い方です。
NoSQL Expert Mode
PLC EnginnerにNo SQL Databaseコマンドを使用できるFuncation Blocksが用意されます。
Applications Example
では実際でTF6420どんなところで使用できるでしょうか。
Case1
TwinCAT Runtime・TwinCAT Database Server・SQL Serverは同じのパソコンインストールされ、そのDatabase ServerはGatewayのような存在で他のControllerからADS経由でServerをアクセスできます。Performanceが考える必要があります。
Case2
TwinCAT RuntimeとTwinCAT Databaseは同じのパソコンですが、SQL Databaseは別のPCにあります。そのDatabase ServerはGatewayのような存在で他のControllerからADS経由でServerをアクセスできます。Performanceが考える必要があります。
Case3
TwinCAT Databaseは各PCにLocalインストールされています。各TwinCAT Runtimeは必要なときTarget Databaseに操作します。
Case4
このCaseは一番使われてるでしょう。TF6420は各PCにインストールされています。そしてSQL Serverも別のPCにあります。
Case5
そのCaseはCase3+4になります。MainのDatabaseは別のPCにあり、Controllerにも自分のTF6420とSQL Serverがあります。その構成はネットワーク障害発生するときの対策でもなります。
SQLiteインストール
今回試すのはSQLite3なので、この記事からインストール方法が書いています。
Project作成
TwinCAT3ではConnectivity機能を使用います。先のTF6420インストールされたら、新しいプロジェクト作成>TwinCAT Connectivity>Empty TwinCAT Database Server Projectを選び、OKします。
このようなConnectivity Projectが作成されました。
Add New Database
次はDatabaseを追加します。
右クリックし>Add New Databaseします。
これで新しいDB Objectが追加されました。
DB設定
DB Objectをクリックし、右にDatabaseTypeにDrop Listがあります。
ここで接続したいData baseを設定できます。
今回はSQLiteにします。
既存DB読み込む
sqlite3 コマンドで新しいDBを作成します。
このようなFileが作成されましたね。
次はSQLite Database Fileの隣にある”Value”に先に作成されたDBのDirectory Pathを入れてください。
そして下にあるHelp FunctionsあるCHECK Buttonをクリックします。
これでDB Fileと接続できるかどうかをCheckできます。
もし以下のPop up出てばOKです。
新しいDB作成
SQLite Database FileでDBが作成したDirectoryを入力します。
ここで仮にmydbFromTwinCAT.dbにします。
次はHelper FunctionsにCREATE Buttonをクリックします。
TwinCAT TF6420が新しいDBを作成してくれます。
そのとおりですね。
New AutologGroup
このAutoLog GroupはPLC Runtimeの変数と紐付けなどに使われています。その機能については次回説明させていただきます。
とりあえず作成します。
DBを右クリックし>Add New AutologGroupします。
それでAutoLogGroupが作成されました。
DBTableをクリックしますと、該当するDBにあるTableが選択できます。
最後はActivate Configurationで構成をダウンロードします。
いつも下にあるError ListにちゃんとConfiguration DownloadできるかどうかをCheckしてください。
SQL 操作
まずVIEW>Toolbars>TwinCAT Database ServerでSQL操作Toolを表示できるようにします。
Create table
まずTools BarからSql Query Editorを起動します。
これはSql query Editor画面です。
まずRefreshボタンをクリックします。
そうするといま繋がってるDBが表示になります。
DBに右クリック>Create Tableします。
このようなTableの画面が出てきます。
Tablenameで作成したTable名を入力します。
今回はmyFirstTableにします。
Schema追加
そして右クリックし>TableのElementを追加します。
今回は簡単なExampleで説明したいので、Set standard table schemaします。
このようなTemplate Schemaが自動作成されます。
次はFB_PLCDBCreateEvt.TabeをクリックしDBにTableを作成します。
Error Listの出力でTable本当に作成できるかどうかをCheckしてください。
そしてTerminalから.tablesのコマンドでTable名を確認します。
myFirstTableが出てきますね。それでOK。
次は.schemaでmyFirstTableのschemaを確認します。
Sql Query EditorでRefleshボタンをクリックしますと、先追加されたTableも見えましたね。
Insert data
次はDataをInsertしてみmす。
myFIrstTable右クリックし>Insertします。
Create queryのボタンをクリックします。
下にQueryのTemplateが表示されます。
VALUESに値を適当を入れて見舞うs。
そしてもう一度FB_SQLCommandEvt.Executeのボタンをクリックします。
いつもError Listにコマンド実行できるかどうかをCheckしましょう。
Terminalで select * from myFirstTable;で確認します。
先に追加されたデータ見えますね。
ではもう1つのデータを入れてInsertしてみます。
それでOKですね!
最後
はーい、お疲れ様です。
もしなにか質問あれば、メール・コメント・Twitterなどでもどうぞ!
Twitterのご相談:@3threes2
メールのご相談:soup01threes*gmail.com (*を@に)
Youtube Channel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ