プラントのプロセスデータ(温度、圧力、流量など)を読み込むために使用するソフトとして、Aspen Tech社のAspen Infoplus.21を使用していますが、日本語の情報があまりありません。そこで、ITど素人目線ではありますが、メモを残しておこうと思います。
データ分析に使う前段階として、Aspen SQLplusを用いてトレンドデータを取得し、Pythonで読み込むところまでを記載します。
まず初めに…
最初にお伝えしたいのは「Aspen Tech社のソフトの使い方は、Googleで検索するのではなくヘルプを見た方が良い。ヘルプでわからなければサポートサイトのQ&Aを検索すれば大抵のことがわかる。」ということです。サポートサイトに登録していない方はぜひアカウントを作成してみてください。eLearningも充実しています。
Aspen SQLplusの使い方
まず、SQLとは何か、基本的な使い方を下記のページでお勉強しました。
基本は「SELECT 列名 FROM テーブル名 WHERE 条件;」だそうです。
Aspen SQLplus特有の使い方はヘルプに詳しく記載してあるのですが、最初はどこを見ればよいのかわからなかったので、そのヒントをお伝えします。
テーブル名
プロセスエンジニアとしては、使用するテーブルは「Aggregates Table」「History Table」の2種類に限られると感じました。Aggregates Tableはトレンドを等間隔で取得したいような場合に、History Tableは実際の指示値を取得する場合に使用するようです。
各テーブル名でヘルプを検索すると、各テーブルにおけるSQL文の例文や、列名やWHERE句の書き方の凡例を見ることができますので、真似して書いて実行してみましょう。
WHERE句での条件指定方法
WHERE句ではタグ名を指定することになりますが、複数タグを指定したい場合などどのように書いたらよいかヘルプには書いておらず、SQL文の文法を学ぶ必要がありました。下記のページが参考になります。

これを見ると、下記のような書き方ができそうです。
- WHERE name = ‘タグ名’
- WHERE name like ‘タグ名の先頭%’
- WHERE name in (‘タグ名1’, ‘タグ名2’, ‘タグ名3’)
SQLplusのデータをPythonで読み込む
SQLplusで取得したデータを解析することを想定すると、Pythonで読み込みたいので、方法を調べてみました。
(後ほどAspen公式サポートサイトのQ&Aを検索したところ、何件かヒットしましたので、そちらの情報の方が信頼できると思います)
参考にしたのは下記のQ&Aサイトです。


データベースへの接続にはpyodbcというライブラリを使用します。コード例は下記の通りです。
import pyodbc
import pandas as pd
#Aspen SQLplusデータベースに接続
conn = pyodbc.connect("DRIVER={AspenTech SQLplus};HOST=<サーバー名>;PORT=<ポート名>")
#SQL文の記述
sql = "SELECT ts, avg, min, max "\
"FROM aggregates "\
"WHERE name='タグ名' "\
"AND TS BETWEEN '20-NOV-21 00:00' AND '24-NOV-21 00:00'"\
"AND PERIOD = 0:05;"
#pandasで読み込む
data = pd.read_sql(sql,conn)
なお、ポート名はデータソースの設定に用いるAspen ADSAから確認することができます。デフォルトは10014みたいです。
コメント