Pressac EnOcean電流センサー CVT3.928.1CHの検証

弊社では設備の稼働状況の見える化を行っています。

単純にその設備が稼働しているか停止しているかは、その設備の電源の電流値を測定することで把握することができます。

そういった状態を取得するためのセンサーとして、電気工事を必要としないクランプ式のPressac社EnOcean電流センサーの使い勝手がおすすめです。

Pressac CVT3.928.1CH 外観

こちらがセンサーの箱と外観です。

クランプ式なので電気工事不要で取り付けることができますが、注意点としては、電源線の1本にクランプを挟む必要があるというところです。

通常の電源線は2本なので、そのうちの1本にクランプを取り付けられるかを確認しておきましょう。

Node-REDフロー

Pressac電流センサーのデータを受信するためのNode-REDのフローを紹介します。

Serial inノードで受信したデータをfunctionノードでdecodeします。

// データそのもの
var buf = msg.payload;
// データのコピー(検証用)
var rawData = buf.slice( 0 , buf.length  );
// 取り出しやすいようにhex変換したもの
var rawByte = buf.toString( "hex" );
// ESP3仕様のdataLengthを拾う
var dataLength = 255 * buf[ 1 ] + buf[ 2 ];
// ESP3仕様のoptionalLengthを拾う
var optionalLength = buf[ 3 ];
// packetType
var packetType = buf[ 4 ];
// headerCRC
var headerCRC = buf[ 5 ];
// dataLengthに基づいたデータ部分の切り出し
var rawDataByte = buf.slice( 7 , 7 + dataLength+2);

var id = rawDataByte.slice( 0 , 4 ).toString( "hex" );

// payloadに格納
msg.payload = {
    rawData:rawData,
    rawByte:rawByte,
    dataLength:dataLength,
    optionalLength:optionalLength,
    packetType:packetType,
    headerCRC:headerCRC,
    rawDataByte:rawDataByte,
    ID:id
} 
return msg;

こちらがfunctionノードの中身です。

Switchノードではpayload.IDにセンサーのIDが来るのでフィルターをかけています。

フローはこちら

[{"id":"c3d717f1bb4d063b","type":"serial in","z":"0d06caa5e2675ae3","name":"","serial":"26a29bdec24749cd","x":230,"y":200,"wires":[["f4575ef8.576c9"]]},{"id":"f4575ef8.576c9","type":"function","z":"0d06caa5e2675ae3","name":"EnOcean data_chg","func":"// データそのもの\nvar buf = msg.payload;\n// データのコピー(検証用)\nvar rawData = buf.slice( 0 , buf.length  );\n// 取り出しやすいようにhex変換したもの\nvar rawByte = buf.toString( \"hex\" );\n// ESP3仕様のdataLengthを拾う\nvar dataLength = 255 * buf[ 1 ] + buf[ 2 ];\n// ESP3仕様のoptionalLengthを拾う\nvar optionalLength = buf[ 3 ];\n// packetType\nvar packetType = buf[ 4 ];\n// headerCRC\nvar headerCRC = buf[ 5 ];\n// dataLengthに基づいたデータ部分の切り出し\nvar rawDataByte = buf.slice( 7 , 7 + dataLength+2);\n\nvar id = rawDataByte.slice( 0 , 4 ).toString( \"hex\" );\n\n// payloadに格納\nmsg.payload = {\n    rawData:rawData,\n    rawByte:rawByte,\n    dataLength:dataLength,\n    optionalLength:optionalLength,\n    packetType:packetType,\n    headerCRC:headerCRC,\n    rawDataByte:rawDataByte,\n    ID:id\n} \n\n\n\nreturn msg;\n\n\n\n   ","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":390,"y":280,"wires":[["db81e6db45c99e7e"]]},{"id":"535841a929f394b6","type":"debug","z":"0d06caa5e2675ae3","name":"Filter","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":570,"y":460,"wires":[]},{"id":"db81e6db45c99e7e","type":"switch","z":"0d06caa5e2675ae3","name":"Filter","property":"payload.ID","propertyType":"msg","rules":[{"t":"eq","v":"040182bc","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":490,"y":360,"wires":[["535841a929f394b6"]]},{"id":"26a29bdec24749cd","type":"serial-port","serialport":"COM3","serialbaud":"57600","databits":"8","parity":"none","stopbits":"1","waitfor":"","dtr":"none","rts":"none","cts":"none","dsr":"none","newline":"100","bin":"bin","out":"time","addchar":"","responsetimeout":"10000"}]

受信データの解析

Node-REDで受信するデータは、最初の4byteがセンサーのID(この場合は040182bc)で、その後の3byteが受信データとなります。

データはこのようになり、最初の1byteはbitに直します。

bit7 : Power Fail を表す。0なのでPowerFailなし

bit6 : Divisor: 1 > x/10を表す。 1なので1/10。

残り2byteで電流値になりますが、上の図のように0x07が電流値となります。

0x07を10進数にして7。Divisorが1なので、×1/10。

よって、電流値は0.7Aとなります。

測定器で測った値

HIOKIのクランプメーターの数字も0.71Aで確認できました。

設備稼働状況見える化

設備稼働状況の見える化については、待機電流がある程度ある場合は電流の閾値を決めて、それを超えた時は稼働中、それ以下は停止中と定義づけ、かつ、このセンサーは電流がない時はデータを送らないので、センサーからのデータをinfluxDBのような時系列DBにいれておき、積算稼働時間を計算することができます。

まとめ

以上、Pressac社のEnOcean電流センサーの検証をしてみました。

製造業でも飲食業でも、単純に設備がどれぐらい稼働しているかの積算時間データを気軽に見たいという要望があるとおもいます。

このクランプ式の電流センサーを使うことで、電気工事不要で設備稼働ステータスを取得することができるので、ご興味いただけましたら、ぜひ、気軽に声をかけてください。

(デモも可能です)