質問するログイン新規登録

質問編集履歴

7

誤字

2021/08/22 14:05

投稿

F91_
F91_

スコア16

title CHANGED
File without changes
body CHANGED
@@ -160,44 +160,57 @@
160
160
  ```python
161
161
  コード
162
162
  try:
163
- while True:
163
+ while True:
164
+ inputVal0=readadc(0,SPICLK,SPIMOSI,SPIMISO,SPICS)
165
+ inputVal1=readadc(1,SPICLK,SPIMOSI,SPIMISO,SPICS)
166
+ now=datetime.datetime.now()
167
+ now6=now-datetime.timedelta(hours=6)
168
+ nowday='{0:%Y%m%d}'.format(now6)
164
- if inputVal0>2000: #on/offを判断する光量を変更(緑)
169
+ if inputVal0>2000:
170
+ time1=time1+1
171
+ time2=time2+1
165
- time10=time10+1#csvファイル保存用
172
+ time10=time10+1
166
173
  if time10 == 60:
167
- a=pd.read_csv('mydata'+nowday+'.csv')
174
+ data=pd.read_csv('mydata'+nowday+'.csv')
168
- data = pd.merge(pd.DataFrame({0:[f'{h:02}:{m:02}' for h in range(7,24) for m in range(0, 60)]+['24:00']}),
169
- pd.read_csv('mydata'+nowday+'.csv'), how='left',left_on=None)
170
175
  x=data.iloc[:,0]
171
176
  x1=x.count()
172
177
  y=data.iloc[:,1]
173
178
  y1=y.sum()#2行目の合計
174
179
  z=round(y1/x1*100,1)
175
180
  w=round(y1/60,1)
181
+ print('稼働時間'+str(w)+'時間')
182
+ print('機械稼働率'+str(z)+'%')
176
- s='稼働時間'+str(w)+'時間'+'機械稼働率'+str(z)+'%'
183
+ s='稼働時間'+str(w)+'時間'+'機械稼働率'+str(z)+'%'
177
184
  plt.xlabel("時刻")
178
185
  plt.ylabel("1=稼働,0=停止")
179
- plt.text(1000,0.4,s)
186
+ plt.text(1000,0.4,s)#グラフにコメントを入れる
180
187
  plt.bar(x,y,width=1.0)
181
188
  plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(60))
182
- plt.subplots_adjust(left=0, right=1, bottom=0.15, top=1)#余白設定
189
+ plt.subplots_adjust(left=0.05, right=1, bottom=0.15, top=1)
183
- plt.draw()#グラフ描画
190
+ plt.draw()
184
191
  plt.pause(1)
185
- plt.clf()#グラフ初期化
192
+ plt.clf()
186
- time10=0
193
+ time10=0
194
+
187
195
  else:
188
- if inputVal1>2000:#on/offを判断する光量を変更(赤)
196
+ if inputVal1>2000:
197
+ time1=time1+1
198
+ time3=time3+1
199
+ time7=time7+1
189
- time11=time11+1
200
+ time11=time11+1
201
+ print(now.strftime('%H:%M'))
202
+
190
203
  if time11 == 60:
191
- data = pd.merge(pd.DataFrame({0:[f'{h:02}:{m:02}' for h in range(7,24) for m in range(0, 60)]+['24:00']}),
192
- pd.read_csv('mydata'+nowday+'.csv'), how='left')
204
+ data=pd.read_csv('mydata'+nowday+'.csv')
193
205
  x=data.iloc[:,0]
194
206
  x1=x.count()
195
207
  y=data.iloc[:,1]
196
208
  y1=y.sum()#2行目の合計
197
- z=round(y1/x1*100,1)
209
+ z=round(y1/x1*100,1)
198
210
  w=round(y1/60,1)
211
+ print('稼働時間'+str(w)+'時間')
212
+ print('機械稼働率'+str(z)+'%')
199
213
  s='稼働時間'+str(w)+'時間'+'機械稼働率'+str(z)+'%'
200
-
201
214
  plt.xlabel("時刻")
202
215
  plt.ylabel("1=稼働,0=停止")
203
216
  plt.text(1000,0.4,s)
@@ -207,16 +220,19 @@
207
220
  plt.draw()
208
221
  plt.pause(1)
209
222
  plt.clf()
210
- time11=0
223
+ time11=0
211
224
  else:
212
225
  time1=time1+1
213
- time3=time3+1
226
+ time3=time3+1
227
+
228
+
214
229
  elapsed_time=time.time()-start #(処理時間)=(処理が終わった時間)ー(処理を始めた時間)
215
230
  a=dissolution - elapsed_time
216
231
  sleep(1)
217
232
  start=time.time()
233
+
218
234
  except FileNotFoundError:
219
- pass
235
+ pass
220
236
  ```
221
237
 
222
238
  ###plt.xlim(07:00,24:00)を入れた場合

6

誤字

2021/08/22 14:05

投稿

F91_
F91_

スコア16

title CHANGED
File without changes
body CHANGED
@@ -152,6 +152,7 @@
152
152
  except KeyboardInterrupt: #cntl+Cで停止
153
153
  pass
154
154
  GPIO.cleanup()
155
+ ```
155
156
  ### 光センサーにて記録しているエクセルデータ
156
157
  ラズベリーパイ光センサーにて、60秒稼働稼働ランプを読み取った場合にエクセルデータ1列目に現在時刻、2列目に1、3列目に0と記録、停止ランプを60秒読み取った場合に1列目に現在時刻、2列目に0と記録、3列目に0、電源が入っていない場合は何も記録なし、無人稼働の場合(稼働ランプ、停止ランプが両方点灯)は2列目が0で3列目が1なります。
157
158
  ![イメージ説明](f2f944721ec89f9d557f645562d6cccc.png)

5

プログラム修正

2021/08/21 12:45

投稿

F91_
F91_

スコア16

title CHANGED
File without changes
body CHANGED
@@ -1,299 +1,229 @@
1
1
  ### 前提・実現したいこと
2
2
  機械稼働状況グラフの横軸表示を7:00スタートで24:00時終了としたい。
3
-
4
3
  ![イメージ説明](632e36dc30e672349f7a9041a7ccc973.png)
5
4
  グラフで機械が稼働している時間と停止している時間を可視化する事が目的です。
6
5
  ※青塗りつぶしが稼働中、無色は停止(y軸は1が最大、0が最小)
7
-
8
-
9
6
  ###ラズパイ光センサーのデータ記録方法
10
- ラズパイ光センサーにて光を読み取った場合にラズパイ内のエクセルに書き込みし、matplotlibでエクセルデータ読み取り、リアルタイムにグラフ更新をかけています。このグラフにより、機械稼働状況の見える化を行っています。
11
-
12
- データ記録方法は稼働していた場合にシグナルタワーの稼働ランプを読み取り、現在時刻と1を記録、停止していた場合は停止ランプが作動するので現在時刻と0を記録、無人稼働の場合は稼働ランプと停止ランプの両方が点灯し、現在時刻と2列目に1と記録します。機械の電源が入っていない場合は記録がされないようにしています。
13
- 光を読み取った時間を記録し、それをグラフにしているだけなのでその日の最初に読み取った時間がグラフにて表示される時間(画像では22:29スタート、終了23:38)となってしまってますが、グラフ表示はスタートを7:00、終了を24:00としたいです。
14
- ※機械の電源が入っていない時間(シグナルタワーの点灯が全て消灯)も常に読み取るようにすることも考えましたが、休日など常に記録が続いてしまい、エクセルファイルが大量になってしまうので断念しました。
15
-
16
- ##光を記録しているコード
17
- 稼働ランプを60秒読み取る場合は以下となります。
7
+ ラズパイ光センサーにて光を読み取った場合にラズパイ内のエクセルに書き込みし、matplotlibでエクセルデータ読み取り、リアルタイムにグラフ更新をかけています。このグラフにより、機械稼働状況の見える化を行っています。データ記録方法は稼働していた場合にシグナルタワーの稼働ランプを読み取り、現在時刻と1を記録、停止していた場合は停止ランプが作動するので現在時刻と0を記録、無人稼働の場合は稼働ランプと停止ランプの両方が点灯し、現在時刻と2列目に1と記録します。機械の電源が入っていない場合は記録がされないようにしています。光を読み取った時間を記録し、それをグラフにしているだけなのでその日の最初に読み取った時間がグラフにて表示される時間(画像では22:29スタート、終了23:38)となってしまってますが、グラフ表示はスタートを7:00、終了を24:00としたいです。※機械の電源が入っていない時間(シグナルタワーの点灯が全て消灯)も常に読み取るようにすることも考えましたが、休日など常に記録が続いてしまい、エクセルファイルが大量になってしまうので断念しました。
8
+ ##機械稼働状況をシグナルタワーの点灯パターンにより記録しているコード
18
9
  ```python
19
- if time10 == 60:#60秒経過した場合
20
- rcd=[]
21
- rcd.append(now.strftime('%H:%M'))#時間追加
22
- rcd.append(1)
23
- rcd.append(0)
24
- f=open('mydata'+nowday+'.csv','a',newline='')
25
- wrtr=csv.writer(f,delimiter=',')
26
- wrtr.writerow(rcd)
27
- f.close()
28
- ```
29
- 停止ランプを読み取る場合
30
- ```python
31
- if time11 == 60:
32
- rcd=[]
33
- rcd.append(now.strftime('%H:%M'))
34
- rcd.append(0)
35
- rcd.append(0)
36
- f=open('mydata'+nowday+'.csv','a',newline='')
37
- wrtr=csv.writer(f,delimiter=',')
38
- wrtr.writerow(rcd)
39
- f.close()
40
- time11=0
41
- ```
42
-
43
- ※電源オフの場合は何も処理しないとしています。
44
-
45
-
46
-
10
+ dissolution=1 #計測分解能[s]
11
+ rate=0
12
+ def readadc(adcnum,clockpin,mosipin,misopin,cspin):
13
+ if adcnum> 7 or adcnum<0:
14
+ return -1
15
+ GPIO.output(cspin,GPIO.HIGH)
16
+ GPIO.output(clockpin,GPIO.LOW)
17
+ GPIO.output(cspin,GPIO.LOW)
18
+ commandout=adcnum
19
+ commandout |=0x18
20
+ commandout<<=3
21
+ for i in range(5):
22
+ if commandout & 0x80:
23
+ GPIO.output(mosipin,GPIO.HIGH)
24
+ else:
25
+ GPIO.output(mosipin,GPIO.LOW)
26
+ commandout<<=1
27
+ GPIO.output(clockpin,GPIO.HIGH)
28
+ GPIO.output(clockpin,GPIO.LOW)
29
+
30
+ adcout=0
31
+ for i in range(13)
32
+ GPIO.output(clockpin,GPIO.HIGH)
33
+ GPIO.output(clockpin,GPIO.LOW)
34
+ adcout<<=1
35
+ if i>0 and GPIO.input(misopin)==GPIO.HIGH:
36
+ adcout |=0x1
37
+ GPIO.output(cspin,GPIO.HIGH)
38
+ return adcout
39
+ GPIO.setmode(GPIO.BCM)
40
+ SPICS=8
41
+ SPIMISO=9
42
+ SPIMOSI=10
43
+ SPICLK=11
44
+ GPIO.setup(SPICLK,GPIO.OUT)
45
+ GPIO.setup(SPIMOSI,GPIO.OUT)
46
+ GPIO.setup(SPIMISO,GPIO.IN)
47
+ GPIO.setup(SPICS,GPIO.OUT)
48
+ today1=datetime.datetime.now()
49
+ start=time.time()
50
+ kikai='D-'+'32'
51
+ try:
52
+ while True:
53
+ inputVal0=readadc(0,SPICLK,SPIMOSI,SPIMISO,SPICS)
54
+ inputVal1=readadc(1,SPICLK,SPIMOSI,SPIMISO,SPICS)
55
+ now=datetime.datetime.now()
56
+ now6=now-datetime.timedelta(hours=6)
57
+ nowday='{0:%Y%m%d}'.format(now6)
58
+ nt1=now.strftime('%H:%M')
59
+ nt='{0:%H%M}'.format(now)
60
+
61
+ if inputVal0>2000 and inputVal1<2000:
62
+ time1=time1+1
63
+ time2=time2+1
64
+ time10=time10+1
65
+ if time10 == 60:
66
+ rcd=[]
67
+ rcd.append(now.strftime('%H:%M'))
68
+ rcd.append(1)
69
+ rcd.append(0)
70
+ f=open('mydata'+nowday+'.csv','a',newline='')
71
+ wrtr=csv.writer(f,delimiter=',')
72
+ wrtr.writerow(rcd)
73
+ f.close()
74
+ time10=0
75
+ data=pd.read_csv('mydata'+nowday+'.csv')
76
+ x=data.iloc[:,0]
77
+ x1=x.count()
78
+ y=data.iloc[:,1]
79
+ y1=y.sum()
80
+ z=round(y1/x1*100,1)
81
+ canvas1.create_text(85,20,text=('機械'),font=("",30,"roman"),tag='Y')
82
+ canvas2.create_text(200,20,text=('稼働状況'),font=("",30,"roman"),tag='Y')
83
+ canvas3.create_text(200,20,text=('本日の稼働率'),font=("",30,"roman"),tag='Y')
84
+ canvas4.create_text(85,20,text=(kikai),font=("",30,"roman"),tag='Y')
85
+ canvas5.create_text(100,20,text=('稼働中'),font=("",30,"roman"),tag='Y')
86
+ canvas6.create_text(100,20,text=(''),font=("",30,"roman"),tag='Y')
87
+ canvas7.create_text(200,20,text=(str(z)+'%'),font=("",40,"roman"),tag='Y')
88
+ canvas1.update()
89
+ canvas2.update()
90
+ canvas3.update()
91
+ canvas4.update()
92
+ canvas5.update()
93
+ canvas6.update()
94
+ canvas7.update()
95
+ canvas1.delete('Y')
96
+ canvas2.delete('Y')
97
+ canvas3.delete('Y')
98
+ canvas4.delete('Y')
99
+ canvas5.delete('Y')
100
+ canvas6.delete('Y')
101
+ canvas7.delete('Y')
102
+ if inputVal1>2000 and inputVal0<2000
103
+ time1=time1+1
104
+ time3=time3+1
105
+ time7=time7+1
106
+ time11=time11+1
107
+ if time11 == 60:
108
+ rcd=[]
109
+ rcd.append(now.strftime('%H:%M'))
110
+ rcd.append(0)
111
+ rcd.append(0)
112
+ f=open('mydata'+nowday+'.csv','a',newline='')
113
+ wrtr=csv.writer(f,delimiter=',')
114
+ wrtr.writerow(rcd)
115
+ f.close()
116
+ time11=0
117
+ data=pd.read_csv('mydata'+nowday+'.csv')
118
+ x=data.iloc[:,0]
119
+ x1=x.count()
120
+ y=data.iloc[:,1]
121
+ y1=y.sum()
122
+ z=round(y1/x1*100,1)
123
+ canvas1.create_text(85,20,text=('機械'),font=("",30,"roman"),tag='Y')
124
+ canvas2.create_text(200,20,text=('稼働状況'),font=("",30,"roman"),tag='Y')
125
+ canvas3.create_text(200,20,text=('本日の稼働率'),font=("",30,"roman"),tag='Y') .
126
+ canvas4.create_text(85,20,text=(kikai),font=("",30,"roman"),tag='Y')
127
+ canvas5.create_text(100,20,text=(''),font=("",30,"roman"),tag='Y')
128
+ canvas6.create_text(100,20,text=('停止中'),font=("",30,"roman"),tag='Y')
129
+ canvas7.create_text(200,20,text=(str(z)+'%'),font=("",40,"roman"),tag='Y')
130
+ canvas1.update()
131
+ canvas2.update()
132
+ canvas3.update()
133
+ canvas4.update()
134
+ canvas5.update()
135
+ canvas6.update()
136
+ canvas7.update()
137
+ canvas1.delete('Y')
138
+ canvas2.delete('Y')
139
+ canvas3.delete('Y')
140
+ canvas4.delete('Y')
141
+ canvas5.delete('Y')
142
+ canvas6.delete('Y')
143
+ canvas7.delete('Y')
144
+ if inputVal1<2000 and inputVal0<2000:
145
+ time1=time1+1
146
+ time3=time3+1
147
+ time5=time5+1
148
+ elapsed_time=time.time()-start #(処理時間)=(処理が終わった時間)ー(処理を始めた時間)
149
+ a=dissolution - elapsed_time
150
+ sleep(a)
151
+ start=time.time()
152
+ except KeyboardInterrupt: #cntl+Cで停止
153
+ pass
154
+ GPIO.cleanup()
47
155
  ### 光センサーにて記録しているエクセルデータ
48
156
  ラズベリーパイ光センサーにて、60秒稼働稼働ランプを読み取った場合にエクセルデータ1列目に現在時刻、2列目に1、3列目に0と記録、停止ランプを60秒読み取った場合に1列目に現在時刻、2列目に0と記録、3列目に0、電源が入っていない場合は何も記録なし、無人稼働の場合(稼働ランプ、停止ランプが両方点灯)は2列目が0で3列目が1なります。
49
157
  ![イメージ説明](f2f944721ec89f9d557f645562d6cccc.png)
50
-
51
- ### グラフ表示させている該当のソースコード
158
+ ### エクセルデータplotしている該当のソースコード
52
159
  ```python
53
- コード
160
+ コード
161
+ try:
162
+ while True:
54
163
  if inputVal0>2000: #on/offを判断する光量を変更(緑)
55
-
56
- time1=time1+1
57
- time2=time2+1
58
- time10=time10+1#csvファイル保存用
164
+ time10=time10+1#csvファイル保存用
59
- print(inputVal0)
60
- print('稼働中')
61
- print(now.strftime('%H:%M'))
62
-
63
- if time10 == 60:#60秒経過した場合
165
+ if time10 == 60:
64
- data=pd.read_csv('mydata'+nowday+'.csv')
166
+ a=pd.read_csv('mydata'+nowday+'.csv')
167
+ data = pd.merge(pd.DataFrame({0:[f'{h:02}:{m:02}' for h in range(7,24) for m in range(0, 60)]+['24:00']}),
168
+ pd.read_csv('mydata'+nowday+'.csv'), how='left',left_on=None)
65
169
  x=data.iloc[:,0]
66
- x1=x.count()#1行目のデータ個数
170
+ x1=x.count()
67
171
  y=data.iloc[:,1]
68
172
  y1=y.sum()#2行目の合計
69
- z=round(y1/x1*100,1)#機械稼働率 小数点第一位まで
173
+ z=round(y1/x1*100,1)
70
- w=round(y1/60,1)#機械稼働時間
174
+ w=round(y1/60,1)
71
-
72
- print('稼働時間'+str(w)+'時間')
73
- print('機械稼働率'+str(z)+'%')
74
175
  s='稼働時間'+str(w)+'時間'+'機械稼働率'+str(z)+'%'
75
-
76
176
  plt.xlabel("時刻")
77
177
  plt.ylabel("1=稼働,0=停止")
78
- plt.text(1000,0.4,s)#グラフにコメントを入れる
178
+ plt.text(1000,0.4,s)
79
179
  plt.bar(x,y,width=1.0)
80
180
  plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(60))
81
181
  plt.subplots_adjust(left=0, right=1, bottom=0.15, top=1)#余白設定
82
182
  plt.draw()#グラフ描画
83
183
  plt.pause(1)
84
184
  plt.clf()#グラフ初期化
85
-
86
- time10=0
185
+ time10=0
87
-
88
-
89
-
90
186
  else:
91
187
  if inputVal1>2000:#on/offを判断する光量を変更(赤)
92
- time1=time1+1
93
- time3=time3+1
94
- time7=time7+1
95
- time11=time11+1
188
+ time11=time11+1
96
- print('準備中')
97
- print(now.strftime('%H:%M'))
98
-
99
189
  if time11 == 60:
190
+ data = pd.merge(pd.DataFrame({0:[f'{h:02}:{m:02}' for h in range(7,24) for m in range(0, 60)]+['24:00']}),
100
- data=pd.read_csv('mydata'+nowday+'.csv')
191
+ pd.read_csv('mydata'+nowday+'.csv'), how='left')
101
192
  x=data.iloc[:,0]
102
- x1=x.count()#1行目のデータ個数
193
+ x1=x.count()
103
194
  y=data.iloc[:,1]
104
195
  y1=y.sum()#2行目の合計
105
- z=round(y1/x1*100,1)#機械稼働率 小数点第一位まで
196
+ z=round(y1/x1*100,1)
106
- w=round(y1/60,1)#機械稼働時間
197
+ w=round(y1/60,1)
107
-
108
- print('稼働時間'+str(w)+'時間')
109
- print('機械稼働率'+str(z)+'%')
110
198
  s='稼働時間'+str(w)+'時間'+'機械稼働率'+str(z)+'%'
111
199
 
112
200
  plt.xlabel("時刻")
113
201
  plt.ylabel("1=稼働,0=停止")
114
- plt.text(1000,0.4,s)#グラフにコメントを入れる
202
+ plt.text(1000,0.4,s)
115
203
  plt.bar(x,y,width=1.0)
116
204
  plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(60))
117
- plt.subplots_adjust(left=0, right=1, bottom=0.15, top=1)#余白設定
205
+ plt.subplots_adjust(left=0, right=1, bottom=0.15, top=1)
118
206
  plt.draw()
119
207
  plt.pause(1)
120
208
  plt.clf()
121
-
122
- time11=0
209
+ time11=0
123
-
124
-
125
-
126
210
  else:
127
211
  time1=time1+1
128
- time3=time3+1
212
+ time3=time3+1
129
- print(now.strftime('%H:%M'))
130
- print('停止')
131
-
132
-
133
213
  elapsed_time=time.time()-start #(処理時間)=(処理が終わった時間)ー(処理を始めた時間)
134
214
  a=dissolution - elapsed_time
135
215
  sleep(1)
136
216
  start=time.time()
137
-
138
217
  except FileNotFoundError:
139
- pass
218
+ pass
140
219
  ```
141
220
 
142
221
  ###plt.xlim(07:00,24:00)を入れた場合
143
- 7:00と24:00のデータがない場合もあるので8:06~8:23のデータを読み取りましたが、時刻の表示がありませんでした。
144
- 作業者の機械稼働スタートが何らかの理由で7:30などになってしまう事もあり、逆に24時以前に機械電源オフとなり記録がなくなることもあります。
222
+ 7:00と24:00のデータがない場合もあるので8:06~8:23のデータを読み取りましたが、時刻の表示がありませんでした。作業者の機械稼働スタートが何らかの理由で7:30などになってしまう事もあり、逆に24時以前に機械電源オフとなり記録がなくなることもあります。常に7:00~24:00のデータがあるのであればxlimで対応出来ると思いました。
145
-
146
- 常に7:00~24:00のデータがあるのであればxlimで対応出来ると思いました。
147
223
  ![イメージ説明](989087a74bd8c27501d45f226a4d8d34.png)
148
224
  ![イメージ説明](595e7567bd366216312305b538f22487.png)
149
225
 
150
226
 
151
- ###matplotlibにて読み取っているエクセルデータ
152
- 7:58 1 0
153
- 7:59 1 0
154
- 8:00 1 0
155
- 8:01 1 0
156
- 8:02 1 0
157
- 8:03 1 0
158
- 8:04 1 0
159
- 8:05 1 0
160
- 8:06 1 0
161
- 8:07 1 0
162
- 8:08 1 0
163
- 8:09 1 0
164
- 8:10 1 0
165
- 8:11 1 0
166
- 8:12 1 0
167
- 8:13 1 0
168
- 8:14 1 0
169
- 8:15 1 0
170
- 8:16 1 0
171
- 8:17 1 0
172
- 8:18 1 0
173
- 8:19 1 0
174
- 8:20 1 0
175
- 8:21 1 0
176
- 8:22 1 0
177
- 8:23 1 0
178
- 8:24 1 0
179
- 8:25 1 0
180
- 8:26 1 0
181
- 8:27 1 0
182
- 8:28 1 0
183
- 8:29 1 0
184
- 8:30 1 0
185
- 8:31 1 0
186
- 8:32 1 0
187
- 8:33 1 0
188
- 8:34 1 0
189
- 8:35 1 0
190
- 8:36 1 0
191
- 8:37 1 0
192
- 8:38 1 0
193
- 8:39 1 0
194
- 8:40 1 0
195
- 8:41 1 0
196
- 8:42 1 0
197
- 8:43 1 0
198
- 8:44 1 0
199
- 8:45 1 0
200
- 8:46 1 0
201
- 8:47 1 0
202
- 8:48 1 0
203
- 8:49 1 0
204
- 8:50 1 0
205
- 8:51 1 0
206
- 8:52 1 0
207
- 8:53 1 0
208
- 8:54 1 0
209
- 8:55 1 0
210
- 8:56 1 0
211
- 8:57 1 0
212
- 8:58 1 0
213
- 8:59 1 0
214
- 9:00 1 0
215
- 9:01 1 0
216
- 9:02 1 0
217
- 9:03 1 0
218
- 9:04 1 0
219
- 9:05 1 0
220
- 9:06 1 0
221
- 9:07 1 0
222
- 9:08 1 0
223
- 9:09 1 0
224
- 9:10 1 0
225
- 9:11 1 0
226
- 9:12 1 0
227
- 9:13 1 0
228
- 9:14 1 0
229
- 9:15 1 0
230
- 9:16 1 0
231
- 9:17 1 0
232
- 9:18 1 0
233
- 9:19 1 0
234
- 9:20 1 0
235
- 9:21 1 0
236
- 9:22 1 0
237
- 9:23 1 0
238
- 9:24 1 0
239
- 9:25 1 0
240
- 9:26 1 0
241
- 9:27 1 0
242
- 9:28 1 0
243
- 9:29 1 0
244
- 9:30 1 0
245
- 9:31 1 0
246
- 9:32 1 0
247
- 9:33 1 0
248
- 9:34 1 0
249
- 9:35 1 0
250
- 9:36 1 0
251
- 9:37 1 0
252
- 9:38 1 0
253
- 9:39 1 0
254
- 9:40 1 0
255
- 9:41 1 0
256
- 9:42 1 0
257
- 9:43 1 0
258
- 9:44 1 0
259
- 9:45 1 0
260
- 9:46 1 0
261
- 9:47 1 0
262
- 9:48 1 0
263
- 9:49 1 0
264
- 9:50 1 0
265
- 9:51 1 0
266
- 9:52 1 0
267
- 9:53 1 0
268
- 9:54 1 0
269
- 9:55 1 0
270
- 9:56 1 0
271
- 9:57 1 0
272
- 9:58 1 0
273
- 9:59 1 0
274
- 10:00 1 0
275
- 10:01 1 0
276
- 10:02 1 0
277
- 10:03 1 0
278
- 10:04 1 0
279
- 10:05 1 0
280
- 10:06 1 0
281
- 10:07 1 0
282
- 10:08 1 0
283
- 10:09 1 0
284
- 10:10 1 0
285
- 10:11 1 0
286
- 10:12 1 0
287
- 10:13 1 0
288
- 10:14 1 0
289
- 10:15 1 0
290
- 10:16 1 0
291
- 10:17 1 0
292
- 10:18 1 0
293
- 10:19 1 0
294
- 10:20 1 0
295
- 10:21 1 0
296
- 10:22 1 0
297
227
 
298
228
  ##ラズパイに保管しているエクセルデータ
299
229
  ![イメージ説明](da3856f039be731f1bdb936dd5b40ed3.png)

4

追記

2021/08/21 12:41

投稿

F91_
F91_

スコア16

title CHANGED
File without changes
body CHANGED
@@ -293,4 +293,7 @@
293
293
  10:19 1 0
294
294
  10:20 1 0
295
295
  10:21 1 0
296
- 10:22 1 0
296
+ 10:22 1 0
297
+
298
+ ##ラズパイに保管しているエクセルデータ
299
+ ![イメージ説明](da3856f039be731f1bdb936dd5b40ed3.png)

3

誤字

2021/08/16 12:11

投稿

F91_
F91_

スコア16

title CHANGED
File without changes
body CHANGED
@@ -5,12 +5,16 @@
5
5
  グラフで機械が稼働している時間と停止している時間を可視化する事が目的です。
6
6
  ※青塗りつぶしが稼働中、無色は停止(y軸は1が最大、0が最小)
7
7
 
8
- ラズパイ光センサーにて光を読み取った場合にラズパイ内のエクセルに記録し、matplotlibでエクセルデータ読み取り、リアルタイムにグラフ更新をかけています。このグラフにより、機械稼働状況の見える化を行っています。
9
- データ記録方法は稼働していた場合にシグナルタワーの稼働ランプを読み取り、1と記録、停止していた場合は停止ランプが作動するので0と記録、機械の電源が入っていない場合は記録がされないようにしています。
10
- 光を読み取った時間を記録し、それをグラフにしているだけなので最初に読み取った時間がグラフで表示される時間(画像では22:29スタート、終了23:38)となってしまってますが、表示はスタートを7:00、終了を24:00としたいです。
11
- ※機械の電源が入っていない時間も常に読み取るようにすることも考えましたが、休日など常に記録が続いてしまい、エクセルファイルが大量になってしまうので断念しました。
12
8
 
9
+ ###ラズパイ光センサーのデータ記録方法
10
+ ラズパイ光センサーにて光を読み取った場合にラズパイ内のエクセルに書き込みし、matplotlibでエクセルデータ読み取り、リアルタイムにグラフ更新をかけています。このグラフにより、機械稼働状況の見える化を行っています。
11
+
12
+ データ記録方法は稼働していた場合にシグナルタワーの稼働ランプを読み取り、現在時刻と1を記録、停止していた場合は停止ランプが作動するので現在時刻と0を記録、無人稼働の場合は稼働ランプと停止ランプの両方が点灯し、現在時刻と2列目に1と記録します。機械の電源が入っていない場合は記録がされないようにしています。
13
+ 光を読み取った時間を記録し、それをグラフにしているだけなのでその日の最初に読み取った時間がグラフにて表示される時間(画像では22:29スタート、終了23:38)となってしまってますが、グラフ表示はスタートを7:00、終了を24:00としたいです。
14
+ ※機械の電源が入っていない時間(シグナルタワーの点灯が全て消灯)も常に読み取るようにすることも考えましたが、休日など常に記録が続いてしまい、エクセルファイルが大量になってしまうので断念しました。
15
+
13
16
  ##光を記録しているコード
17
+ 稼働ランプを60秒読み取る場合は以下となります。
14
18
  ```python
15
19
  if time10 == 60:#60秒経過した場合
16
20
  rcd=[]
@@ -22,10 +26,26 @@
22
26
  wrtr.writerow(rcd)
23
27
  f.close()
24
28
  ```
29
+ 停止ランプを読み取る場合
30
+ ```python
31
+ if time11 == 60:
32
+ rcd=[]
33
+ rcd.append(now.strftime('%H:%M'))
34
+ rcd.append(0)
35
+ rcd.append(0)
36
+ f=open('mydata'+nowday+'.csv','a',newline='')
37
+ wrtr=csv.writer(f,delimiter=',')
38
+ wrtr.writerow(rcd)
39
+ f.close()
40
+ time11=0
41
+ ```
25
42
 
43
+ ※電源オフの場合は何も処理しないとしています。
26
44
 
45
+
46
+
27
47
  ### 光センサーにて記録しているエクセルデータ
28
- ラズベリーパイ光センサーにて、60秒稼働稼働ランプを読み取った場合にエクセルデータに2列目に1と記録、停止ランプを60秒読み取った場合に2列目に0と記録、電源が入っていない場合は記録なし、無人稼働の場合(稼働ランプ、停止ランプが両方点灯)は2列目が0で3列目が1なります。
48
+ ラズベリーパイ光センサーにて、60秒稼働稼働ランプを読み取った場合にエクセルデータ1列目現在時刻、2列目に1、3列目に0と記録、停止ランプを60秒読み取った場合に1列目に現在時刻、2列目に0と記録、3列目に0、電源が入っていない場合は何も記録なし、無人稼働の場合(稼働ランプ、停止ランプが両方点灯)は2列目が0で3列目が1なります。
29
49
  ![イメージ説明](f2f944721ec89f9d557f645562d6cccc.png)
30
50
 
31
51
  ### グラフを表示させている該当のソースコード
@@ -120,7 +140,10 @@
120
140
  ```
121
141
 
122
142
  ###plt.xlim(07:00,24:00)を入れた場合
123
- 7:00と24:00のデータがない場合もあるので8:06~8:23のデータを読み取りましたが時刻の表示がありませんでした。常に7:00~24:00のデータがあるのであればxlimで対応出来ると思いました。
143
+ 7:00と24:00のデータがない場合もあるので8:06~8:23のデータを読み取りましたが時刻の表示がありませんでした。
144
+ 作業者の機械稼働スタートが何らかの理由で7:30などになってしまう事もあり、逆に24時以前に機械電源オフとなり記録がなくなることもあります。
145
+
146
+ 常に7:00~24:00のデータがあるのであればxlimで対応出来ると思いました。
124
147
  ![イメージ説明](989087a74bd8c27501d45f226a4d8d34.png)
125
148
  ![イメージ説明](595e7567bd366216312305b538f22487.png)
126
149
 

2

データ追記

2021/08/16 05:04

投稿

F91_
F91_

スコア16

title CHANGED
File without changes
body CHANGED
@@ -122,4 +122,152 @@
122
122
  ###plt.xlim(07:00,24:00)を入れた場合
123
123
  7:00と24:00のデータがない場合もあるので8:06~8:23のデータを読み取りましたが時刻の表示がありませんでした。常に7:00~24:00のデータがあるのであればxlimで対応出来ると思いました。
124
124
  ![イメージ説明](989087a74bd8c27501d45f226a4d8d34.png)
125
- ![イメージ説明](595e7567bd366216312305b538f22487.png)
125
+ ![イメージ説明](595e7567bd366216312305b538f22487.png)
126
+
127
+
128
+ ###matplotlibにて読み取っているエクセルデータ
129
+ 7:58 1 0
130
+ 7:59 1 0
131
+ 8:00 1 0
132
+ 8:01 1 0
133
+ 8:02 1 0
134
+ 8:03 1 0
135
+ 8:04 1 0
136
+ 8:05 1 0
137
+ 8:06 1 0
138
+ 8:07 1 0
139
+ 8:08 1 0
140
+ 8:09 1 0
141
+ 8:10 1 0
142
+ 8:11 1 0
143
+ 8:12 1 0
144
+ 8:13 1 0
145
+ 8:14 1 0
146
+ 8:15 1 0
147
+ 8:16 1 0
148
+ 8:17 1 0
149
+ 8:18 1 0
150
+ 8:19 1 0
151
+ 8:20 1 0
152
+ 8:21 1 0
153
+ 8:22 1 0
154
+ 8:23 1 0
155
+ 8:24 1 0
156
+ 8:25 1 0
157
+ 8:26 1 0
158
+ 8:27 1 0
159
+ 8:28 1 0
160
+ 8:29 1 0
161
+ 8:30 1 0
162
+ 8:31 1 0
163
+ 8:32 1 0
164
+ 8:33 1 0
165
+ 8:34 1 0
166
+ 8:35 1 0
167
+ 8:36 1 0
168
+ 8:37 1 0
169
+ 8:38 1 0
170
+ 8:39 1 0
171
+ 8:40 1 0
172
+ 8:41 1 0
173
+ 8:42 1 0
174
+ 8:43 1 0
175
+ 8:44 1 0
176
+ 8:45 1 0
177
+ 8:46 1 0
178
+ 8:47 1 0
179
+ 8:48 1 0
180
+ 8:49 1 0
181
+ 8:50 1 0
182
+ 8:51 1 0
183
+ 8:52 1 0
184
+ 8:53 1 0
185
+ 8:54 1 0
186
+ 8:55 1 0
187
+ 8:56 1 0
188
+ 8:57 1 0
189
+ 8:58 1 0
190
+ 8:59 1 0
191
+ 9:00 1 0
192
+ 9:01 1 0
193
+ 9:02 1 0
194
+ 9:03 1 0
195
+ 9:04 1 0
196
+ 9:05 1 0
197
+ 9:06 1 0
198
+ 9:07 1 0
199
+ 9:08 1 0
200
+ 9:09 1 0
201
+ 9:10 1 0
202
+ 9:11 1 0
203
+ 9:12 1 0
204
+ 9:13 1 0
205
+ 9:14 1 0
206
+ 9:15 1 0
207
+ 9:16 1 0
208
+ 9:17 1 0
209
+ 9:18 1 0
210
+ 9:19 1 0
211
+ 9:20 1 0
212
+ 9:21 1 0
213
+ 9:22 1 0
214
+ 9:23 1 0
215
+ 9:24 1 0
216
+ 9:25 1 0
217
+ 9:26 1 0
218
+ 9:27 1 0
219
+ 9:28 1 0
220
+ 9:29 1 0
221
+ 9:30 1 0
222
+ 9:31 1 0
223
+ 9:32 1 0
224
+ 9:33 1 0
225
+ 9:34 1 0
226
+ 9:35 1 0
227
+ 9:36 1 0
228
+ 9:37 1 0
229
+ 9:38 1 0
230
+ 9:39 1 0
231
+ 9:40 1 0
232
+ 9:41 1 0
233
+ 9:42 1 0
234
+ 9:43 1 0
235
+ 9:44 1 0
236
+ 9:45 1 0
237
+ 9:46 1 0
238
+ 9:47 1 0
239
+ 9:48 1 0
240
+ 9:49 1 0
241
+ 9:50 1 0
242
+ 9:51 1 0
243
+ 9:52 1 0
244
+ 9:53 1 0
245
+ 9:54 1 0
246
+ 9:55 1 0
247
+ 9:56 1 0
248
+ 9:57 1 0
249
+ 9:58 1 0
250
+ 9:59 1 0
251
+ 10:00 1 0
252
+ 10:01 1 0
253
+ 10:02 1 0
254
+ 10:03 1 0
255
+ 10:04 1 0
256
+ 10:05 1 0
257
+ 10:06 1 0
258
+ 10:07 1 0
259
+ 10:08 1 0
260
+ 10:09 1 0
261
+ 10:10 1 0
262
+ 10:11 1 0
263
+ 10:12 1 0
264
+ 10:13 1 0
265
+ 10:14 1 0
266
+ 10:15 1 0
267
+ 10:16 1 0
268
+ 10:17 1 0
269
+ 10:18 1 0
270
+ 10:19 1 0
271
+ 10:20 1 0
272
+ 10:21 1 0
273
+ 10:22 1 0

1

誤字

2021/08/16 04:39

投稿

F91_
F91_

スコア16

title CHANGED
File without changes
body CHANGED
@@ -1,19 +1,34 @@
1
1
  ### 前提・実現したいこと
2
- 機械稼働状況グラフの横軸表示を7スタートで24時終了としたい。
2
+ 機械稼働状況グラフの横軸表示を7:00スタートで24:00時終了としたい。
3
3
 
4
4
  ![イメージ説明](632e36dc30e672349f7a9041a7ccc973.png)
5
5
  グラフで機械が稼働している時間と停止している時間を可視化する事が目的です。
6
- ※青が稼働中、無色は停止で縦軸は1が最大、最小は0
6
+ ※青塗りつぶしが稼働中、無色は停止(y軸は1が最大、0が最小)
7
7
 
8
- ラズパイ光センサーにて光を読み取った場合にエクセルに記録し、matplotlibでエクセルデータ読み取り、リアルタイムに更新をかけています。
8
+ ラズパイ光センサーにて光を読み取った場合にラズパイ内のエクセルに記録し、matplotlibでエクセルデータ読み取り、リアルタイムにグラフ更新をかけています。このグラフにより、機械稼働状況の見える化を行っています。
9
- データ記録方法は稼働していた場合に稼働ランプが作動するので1と記録、停止していた場合は停止ランプが作動するので0と記録、機械の電源が入っていない場合は記録がされないようにしています。
9
+ データ記録方法は稼働していた場合にシグナルタワーの稼働ランプを読み取り、1と記録、停止していた場合は停止ランプが作動するので0と記録、機械の電源が入っていない場合は記録がされないようにしています。
10
10
  光を読み取った時間を記録し、それをグラフにしているだけなので最初に読み取った時間がグラフで表示される時間(画像では22:29スタート、終了23:38)となってしまってますが、表示はスタートを7:00、終了を24:00としたいです。
11
+ ※機械の電源が入っていない時間も常に読み取るようにすることも考えましたが、休日など常に記録が続いてしまい、エクセルファイルが大量になってしまうので断念しました。
11
12
 
13
+ ##光を記録しているコード
14
+ ```python
15
+ if time10 == 60:#60秒経過した場合
16
+ rcd=[]
17
+ rcd.append(now.strftime('%H:%M'))#時間追加
18
+ rcd.append(1)
19
+ rcd.append(0)
20
+ f=open('mydata'+nowday+'.csv','a',newline='')
21
+ wrtr=csv.writer(f,delimiter=',')
22
+ wrtr.writerow(rcd)
23
+ f.close()
24
+ ```
25
+
26
+
12
27
  ### 光センサーにて記録しているエクセルデータ
13
- ラズベリーパイ光センサーにて、1分毎に稼働していた場合にエクセルデータに1と記録、停止していた場合に0と記録、電源が入っていない場合は記録なし、無人稼働の場合は3列目が1なります(画像は稼働していないので全て0でグラフに反映はなしで考えています)
28
+ ラズベリーパイ光センサーにて、60秒稼働稼働ランプを読み取った場合にエクセルデータに2列目のに1と記録、停止ランプを60秒読み取った場合に2列目に0と記録、電源が入っていない場合は記録なし、無人稼働の場合(稼働ランプ、停止ランプが両方点灯)2列目が0で3列目が1なります。
14
29
  ![イメージ説明](f2f944721ec89f9d557f645562d6cccc.png)
15
30
 
16
- ### 該当のソースコード
31
+ ### グラフを表示させている該当のソースコード
17
32
  ```python
18
33
  コード
19
34
  if inputVal0>2000: #on/offを判断する光量を変更(緑)
@@ -102,4 +117,9 @@
102
117
 
103
118
  except FileNotFoundError:
104
119
  pass
105
- ```
120
+ ```
121
+
122
+ ###plt.xlim(07:00,24:00)を入れた場合
123
+ 7:00と24:00のデータがない場合もあるので8:06~8:23のデータを読み取りましたが時刻の表示がありませんでした。常に7:00~24:00のデータがあるのであればxlimで対応出来ると思いました。
124
+ ![イメージ説明](989087a74bd8c27501d45f226a4d8d34.png)
125
+ ![イメージ説明](595e7567bd366216312305b538f22487.png)