製造中の製品の製造番号をセンサデータに追加し記録するシステム

最終更新日時を読み込み中です…

昨年度、産業用ロボットのセンシングを行いデータを収集するプログラムを作成した。

今回は新たに、産業用ロボットが製造中の製品を記録することで、異常発見の手助けや、異常発見時の対応を効率化することを目的に本システムを開発した。

本システムは、工場内でロボットなどが生産する製造物を変更する際に、現場の作業員が使用することを想定している。

現場の作業員が、製造物情報を格納したQRコードを本システムで読み取ることで記録に反映される。

システムの作成には、Pythonを用いたCGI、HTML、CSS、JavaScriptなどを使用している。


作成したプログラムの紹介


  1. QRコードを読み取るWEBサイト
  2. センサデータに製造物情報を付与する処理

QRコードを読み取るWEBサイト


次の図は、実際に作成したサイトの初期画面である。

使用手順としては、「カメラを起動する」と書かれたボタンを押す。

すると、スマホなどの場合は外向きのカメラが起動し、QRコードを読み取れる状態となる。

QRコードが読み取られると、製造物を変更するロボットの番号を入力するための入力欄が表示される。

そこへとロボットを識別する番号を入れることで、センサデータへと製造物情報を与えることができる。

QRコードを読み取る処理は、「jsQRであっさりQRコードリーダ/メーカ」を参考に、本システムのため最適化し使用している。

製造物情報の受け取りはCGIを用いて処理している。


センサデータに製造物情報を付与する処理


ユーザから製造物情報の入力があった際に、対応するロボットのセンサデータへと製造物情報を付与するプログラムが必要となる。

次のプログラムでは、製造物の変更時に製造物情報が記録されているファイルへと新たに記録を残すといった処理をしている。

この記録を利用して、センサデータに製造物情報を付与している。

以下に実際に作成したPythonプログラムの全容を示す(一部伏せ字としてある)。


#!/usr/bin/python3
# -*- coding: UTF-8 -*-
import os
import csv
import cgi
import cgitb
import datetime
cgitb.enable()
forms = cgi.FieldStorage()

#definition
TimeInformation="00000000000000000"
robotNum=[]
partNum=[]
stockNo=[]
statusPath="---"
statusDefault=["none","none",TimeInformation]
statusData=[]
errorFlag=True
displayCgi="情報を入力してください。"
#form
robotNum+=forms.getlist("robotNum")
stockNo+=forms.getlist("stockNo")
partNum+=forms.getlist("partNum")
#date
now = datetime.datetime.now().strftime('%Y%m%d%H%M%S%f')[:-3]
#test
# robotNum=["0"]
# partNum=0
# stockNo=0

#definition function
def fileopen4csv(statusData,mode="a"):
    if mode:
        with open(statusFilePath,mode,newline="")as f:
            writer = csv.writer(f)
            writer.writerow(statusData)

#error check
if robotNum and partNum and stockNo:
    errorFlag=False
    #unpack
    robotNum=robotNum[0]
    partNum=partNum[0]
    stockNo=stockNo[0]
#status
statusData=[stockNo,partNum,now]

#HTMLheader
print("Content-Type: text/html")
print()



if not errorFlag:

    #display cgi
    displayCgi=f"""
    ロボット番号{robotNum}の
    製造物を入荷No.{stockNo}
    部品番号{partNum}のものに変更しました。
    """


    #status file check 
    statusFilePath=statusPath+f"robot{robotNum}.csv"
    if os.path.isfile(statusFilePath):
        pass
    else:
        fileopen4csv(statusDefault,mode="w+")

    fileopen4csv(statusData)


print(f"""
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <!-- CSS -->
    <link rel="stylesheet" href="---" />
    <!-- JavaScript -->
    <script src="./jsQR.js" defer></script>
    <script src="./main.js" defer></script>
    <meta charset='utf-8'>
</head>

<body>
    <div class="wrap">

        <header>
            <div class="headerLeft">
                <h1>センシング産業用ロボット</h1>
            </div>
            <div class="headerRight">
                <ul>
                    <li><a href="---">データ閲覧</a>
                    <li><a href="---">部品番号切替え</a>
                </ul>
            </div>

        </header>


        <main>
{displayCgi}
        </main>
    </div>
</body>


</html>
""")
                        

参考


このサイトを作った人


水野翔太

福知山公立大学情報学部情報学科
2024年卒業予定

やまもとよしのふゼミ所属 3回生

連絡先:
32045088[at]fukuchiyama.ac.jp
(@マークに置き換えてご利用ください)