-
Notifications
You must be signed in to change notification settings - Fork 1
/
PLC_Tkinter_GUI.py
509 lines (459 loc) · 32.8 KB
/
PLC_Tkinter_GUI.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import Tkinter as tk
from pycomm.ab_comm.slc import Driver as SlcDriver
import logging
from PIL import ImageTk, Image
import tkMessageBox
WindowsSize = "780x1050"
PLC_IP_Adress = '172.23.1.70'
Update_Program_Every_ms = 50
class DripControl:
def __init__(self, master, connection, ipAddress):
self.root = master
self.connection = connection
self.active_image = ImageTk.PhotoImage(file="bitmaps/active.gif")
self.inactive_image = ImageTk.PhotoImage(file="bitmaps/inactive.gif")
self.connection_status = ""
self.start_hr_1 = tk.StringVar()
self.start_min_1 = tk.StringVar()
self.end_hr_1 = tk.StringVar()
self.end_min_1 = tk.StringVar()
self.start_hr_2 = tk.StringVar()
self.start_min_2 = tk.StringVar()
self.end_hr_2 = tk.StringVar()
self.end_min_2 = tk.StringVar()
self.start_hr_3 = tk.StringVar()
self.start_min_3 = tk.StringVar()
self.end_hr_3 = tk.StringVar()
self.end_min_3 = tk.StringVar()
self.start_hr_4 = tk.StringVar()
self.start_min_4 = tk.StringVar()
self.end_hr_4 = tk.StringVar()
self.end_min_4 = tk.StringVar()
self.auto_watering_status = self.inactive_image
self.auto_drip_status = self.inactive_image
try:
if connection.open(ipAddress):
self.connection_status = "Successful" # "เชื่อมต่อสำเร็จ"
if(connection.read_tag('B3:3/1') == 1):
self.auto_watering_status = self.active_image
else:
self.auto_watering_status = self.inactive_image
if(connection.read_tag('B3:2/5') == 1):
self.auto_drip_status = self.active_image
else:
self.auto_drip_status = self.inactive_image
except:
tkMessageBox.showinfo(
title='การเชื่อมต่อล้มเหลว', message='Cannot connect to PLC controller. Try disconnect and reconnect network cable of the PLC located in the greenhouse control box')
self.connection_status = "!!Can't connect!!" # "ไม่สามารถเชื่อมต่อได้"
self.header_bg_color = "#252525"
self.active_char_color = "#BDBDBD"
self.control_bg_color = "#363636"
self.total_bg_color = "#2A2A2A"
self.border_color = "#7B7B7B"
self.button_highlight_color = "#5A5A5A"
self.something_change_colur = "#332424"
master.title('โปรแกรมควบคุมน้ำหยด')
master.config(bg=self.total_bg_color)
self.frame_header = tk.Frame(master, bg=self.header_bg_color)
self.frame_header.pack(fill="x", anchor="n", expand=False)
tk.Label(self.frame_header, text="Connection status : " + self.connection_status,
bg=self.header_bg_color, fg=self.active_char_color, height=4, anchor="center").pack()
self.main_control = tk.Frame(master, bg=self.total_bg_color)
self.main_control.pack(fill='both')
self.schedule_control = tk.Frame(
self.main_control, bg=self.total_bg_color)
self.schedule_control.grid(row=0, column=0, padx=(20, 60), pady=20)
self.system_status = tk.Frame(
self.main_control, bg=self.total_bg_color)
self.system_status.grid(row=0, column=2)
self.frame_irreigation_pump_status_indicator = tk.Frame(
self.system_status, bg=self.total_bg_color)
self.frame_irreigation_pump_status_indicator.pack(side='top')
tk.Label(self.frame_irreigation_pump_status_indicator, text="Auto irrigation pump",
bg=self.total_bg_color, fg=self.active_char_color).grid(row=0, column=0)
self.WaterAutoStatusImage = tk.Label(
self.frame_irreigation_pump_status_indicator, image=self.auto_watering_status, bg=self.total_bg_color)
self.WaterAutoStatusImage.image = self.auto_watering_status
self.WaterAutoStatusImage.grid(row=1, column=0)
self.frame_drip_status_indicator = tk.Frame(
self.system_status, bg=self.total_bg_color)
self.frame_drip_status_indicator.pack(pady=50)
tk.Label(self.frame_drip_status_indicator, text="Auto dripping",
bg=self.total_bg_color, fg=self.active_char_color).grid(row=0, column=0)
self.DripAutoStatusImage = tk.Label(
self.frame_drip_status_indicator, image=self.auto_drip_status, bg=self.total_bg_color)
self.DripAutoStatusImage.image = self.auto_drip_status
self.DripAutoStatusImage.grid(row=1, column=0)
self.frame_control_program1 = tk.Frame(
self.schedule_control, bg=self.control_bg_color)
self.frame_control_program1.pack(
fill="both", padx=30, pady=30, ipadx=10, ipady=10, expand=False)
self.subframe_control_program1 = tk.Frame(
self.frame_control_program1, bg=self.control_bg_color)
self.subframe_control_program1.pack(anchor="center")
tk.Label(self.subframe_control_program1, text="โปรแกรม 1", bg=self.control_bg_color,
fg=self.active_char_color).grid(row=0, sticky="w", padx=10, pady=10)
tk.Label(self.subframe_control_program1, text="Start", bg=self.control_bg_color, fg=self.active_char_color).grid(
row=1, column=0, columnspan=4, padx=20, pady=(10, 1), sticky="w")
self.entry_start_hr_1 = tk.Entry(self.subframe_control_program1, width=6, bg=self.total_bg_color, textvariable=self.start_hr_1,
highlightbackground=self.control_bg_color, highlightcolor=self.header_bg_color, fg=self.active_char_color)
self.entry_start_hr_1.grid(row=2, column=0, padx=(10, 0), pady=(0, 10))
self.entry_start_min_1 = tk.Entry(self.subframe_control_program1, width=6, bg=self.total_bg_color, textvariable=self.start_min_1,
highlightbackground=self.control_bg_color, highlightcolor=self.header_bg_color, fg=self.active_char_color)
self.entry_start_min_1.grid(row=2, column=1, padx=0, pady=(0, 10))
tk.Label(self.subframe_control_program1, text="น.", bg=self.control_bg_color,
fg=self.active_char_color).grid(row=2, column=2, padx=2, pady=(0, 10))
tk.Label(self.subframe_control_program1, text=" >>>>> ", bg=self.control_bg_color,
fg=self.active_char_color).grid(row=2, column=3, padx=2, pady=(0, 10))
tk.Label(self.subframe_control_program1, text="End", bg=self.control_bg_color, fg=self.active_char_color).grid(
row=1, column=4, columnspan=4, padx=10, pady=(10, 1), sticky="w")
self.entry_end_hr_1 = tk.Entry(self.subframe_control_program1, width=6, bg=self.total_bg_color, textvariable=self.end_hr_1,
highlightbackground=self.control_bg_color, highlightcolor=self.header_bg_color, fg=self.active_char_color)
self.entry_end_hr_1.grid(row=2, column=5, padx=(10, 0), pady=(0, 10))
self.entry_end_min_1 = tk.Entry(self.subframe_control_program1, width=6, bg=self.total_bg_color, textvariable=self.end_min_1,
highlightbackground=self.control_bg_color, highlightcolor=self.header_bg_color, fg=self.active_char_color)
self.entry_end_min_1.grid(row=2, column=6, padx=(10, 0), pady=(0, 10))
tk.Label(self.subframe_control_program1, text="น.", bg=self.control_bg_color,
fg=self.active_char_color).grid(row=2, column=7, padx=2, pady=(0, 10))
tk.Button(self.subframe_control_program1, text="Update", highlightcolor=self.button_highlight_color, highlightbackground=self.border_color,
bg=self.total_bg_color, fg=self.active_char_color, command=lambda : self.update(1,self.entry_start_hr_1,self.entry_start_min_1,self.entry_end_hr_1,self.entry_end_min_1)).grid(row=3, columnspan=8, padx=(0, 90), pady=(10, 20), sticky="e")
tk.Button(self.subframe_control_program1, text="Cancel", highlightcolor=self.button_highlight_color, highlightbackground=self.border_color,
bg=self.total_bg_color, fg=self.active_char_color, command=lambda : self.cancel(1)).grid(row=3, columnspan=8, padx=(0, 0), pady=(10, 20), sticky="e")
self.frame_control_program2 = tk.Frame(
self.schedule_control, bg=self.control_bg_color)
self.frame_control_program2.pack(
fill="both", padx=30, pady=30, expand=False)
self.subframe_control_program2 = tk.Frame(
self.frame_control_program2, bg=self.control_bg_color)
self.subframe_control_program2.pack(anchor="center")
tk.Label(self.subframe_control_program2, text="โปรแกรม 2", bg=self.control_bg_color,
fg=self.active_char_color).grid(row=0, sticky="w", padx=10, pady=10)
tk.Label(self.subframe_control_program2, text="Start", bg=self.control_bg_color, fg=self.active_char_color).grid(
row=1, column=0, columnspan=4, padx=20, pady=(10, 1), sticky="w")
self.entry_start_hr_2 = tk.Entry(self.subframe_control_program2, width=6, bg=self.total_bg_color, textvariable=self.start_hr_2,
highlightbackground=self.control_bg_color, highlightcolor=self.header_bg_color, fg=self.active_char_color)
self.entry_start_hr_2.grid(row=2, column=0, padx=(10, 0), pady=(0, 10))
self.entry_start_min_2 = tk.Entry(self.subframe_control_program2, width=6, bg=self.total_bg_color, textvariable=self.start_min_2,
highlightbackground=self.control_bg_color, highlightcolor=self.header_bg_color, fg=self.active_char_color)
self.entry_start_min_2.grid(row=2, column=1, padx=0, pady=(0, 10))
tk.Label(self.subframe_control_program2, text="น.", bg=self.control_bg_color,
fg=self.active_char_color).grid(row=2, column=2, padx=2, pady=(0, 10))
tk.Label(self.subframe_control_program2, text=" >>>>> ", bg=self.control_bg_color,
fg=self.active_char_color).grid(row=2, column=3, padx=2, pady=(0, 10))
tk.Label(self.subframe_control_program2, text="End", bg=self.control_bg_color, fg=self.active_char_color).grid(
row=1, column=4, columnspan=4, padx=10, pady=(10, 1), sticky="w")
self.entry_end_hr_2 = tk.Entry(self.subframe_control_program2, width=6, bg=self.total_bg_color, textvariable=self.end_hr_2,
highlightbackground=self.control_bg_color, highlightcolor=self.header_bg_color, fg=self.active_char_color)
self.entry_end_hr_2.grid(row=2, column=5, padx=(10, 0), pady=(0, 10))
self.entry_end_min_2 = tk.Entry(self.subframe_control_program2, width=6, bg=self.total_bg_color, textvariable=self.end_min_2,
highlightbackground=self.control_bg_color, highlightcolor=self.header_bg_color, fg=self.active_char_color)
self.entry_end_min_2.grid(row=2, column=6, padx=(10, 0), pady=(0, 10))
tk.Label(self.subframe_control_program2, text="น.", bg=self.control_bg_color,
fg=self.active_char_color).grid(row=2, column=7, padx=2, pady=(0, 10))
tk.Button(self.subframe_control_program2, text="Update", highlightcolor=self.button_highlight_color, highlightbackground=self.border_color,
bg=self.total_bg_color, fg=self.active_char_color, command=lambda : self.update(2,self.entry_start_hr_2,self.entry_start_min_2,self.entry_end_hr_2,self.entry_end_min_2)).grid(row=3, columnspan=8, padx=(0, 90), pady=(10, 20), sticky="e")
tk.Button(self.subframe_control_program2, text="Cancel", highlightcolor=self.button_highlight_color, highlightbackground=self.border_color,
bg=self.total_bg_color, fg=self.active_char_color, command=lambda : self.cancel(2)).grid(row=3, columnspan=8, padx=(0, 0), pady=(10, 20), sticky="e")
self.frame_control_program3 = tk.Frame(
self.schedule_control, bg=self.control_bg_color)
self.frame_control_program3.pack(
fill="both", padx=30, pady=30, expand=False)
self.subframe_control_program3 = tk.Frame(
self.frame_control_program3, bg=self.control_bg_color)
self.subframe_control_program3.pack(anchor="center")
tk.Label(self.subframe_control_program3, text="โปรแกรม 3", bg=self.control_bg_color,
fg=self.active_char_color).grid(row=0, sticky="w", padx=10, pady=10)
tk.Label(self.subframe_control_program3, text="Start", bg=self.control_bg_color, fg=self.active_char_color).grid(
row=1, column=0, columnspan=4, padx=20, pady=(10, 1), sticky="w")
self.entry_start_hr_3 = tk.Entry(self.subframe_control_program3, width=6, bg=self.total_bg_color, textvariable=self.start_hr_3,
highlightbackground=self.control_bg_color, highlightcolor=self.header_bg_color, fg=self.active_char_color)
self.entry_start_hr_3.grid(row=2, column=0, padx=(10, 0), pady=(0, 10))
self.entry_start_min_3 = tk.Entry(self.subframe_control_program3, width=6, bg=self.total_bg_color, textvariable=self.start_min_3,
highlightbackground=self.control_bg_color, highlightcolor=self.header_bg_color, fg=self.active_char_color)
self.entry_start_min_3.grid(row=2, column=1, padx=0, pady=(0, 10))
tk.Label(self.subframe_control_program3, text="น.", bg=self.control_bg_color,
fg=self.active_char_color).grid(row=2, column=2, padx=2, pady=(0, 10))
tk.Label(self.subframe_control_program3, text=" >>>>> ", bg=self.control_bg_color,
fg=self.active_char_color).grid(row=2, column=3, padx=2, pady=(0, 10))
tk.Label(self.subframe_control_program3, text="End", bg=self.control_bg_color, fg=self.active_char_color).grid(
row=1, column=4, columnspan=4, padx=10, pady=(10, 1), sticky="w")
self.entry_end_hr_3 = tk.Entry(self.subframe_control_program3, width=6, bg=self.total_bg_color, textvariable=self.end_hr_3,
highlightbackground=self.control_bg_color, highlightcolor=self.header_bg_color, fg=self.active_char_color)
self.entry_end_hr_3.grid(row=2, column=5, padx=(10, 0), pady=(0, 10))
self.entry_end_min_3 = tk.Entry(self.subframe_control_program3, width=6, bg=self.total_bg_color, textvariable=self.end_min_3,
highlightbackground=self.control_bg_color, highlightcolor=self.header_bg_color, fg=self.active_char_color)
self.entry_end_min_3.grid(row=2, column=6, padx=(10, 0), pady=(0, 10))
tk.Label(self.subframe_control_program3, text="น.", bg=self.control_bg_color,
fg=self.active_char_color).grid(row=2, column=7, padx=2, pady=(0, 10))
tk.Button(self.subframe_control_program3, text="Update", highlightcolor=self.button_highlight_color, highlightbackground=self.border_color,
bg=self.total_bg_color, fg=self.active_char_color, command=lambda : self.update(3,self.entry_start_hr_3,self.entry_start_min_3,self.entry_end_hr_3,self.entry_end_min_3)).grid(row=3, columnspan=8, padx=(0, 90), pady=(10, 20), sticky="e")
tk.Button(self.subframe_control_program3, text="Cancel", highlightcolor=self.button_highlight_color, highlightbackground=self.border_color,
bg=self.total_bg_color, fg=self.active_char_color, command=lambda : self.cancel(3)).grid(row=3, columnspan=8, padx=(0, 0), pady=(10, 20), sticky="e")
self.frame_control_program4 = tk.Frame(
self.schedule_control, bg=self.control_bg_color)
self.frame_control_program4.pack(
fill="both", padx=30, pady=30, expand=False)
self.subframe_control_program4 = tk.Frame(
self.frame_control_program4, bg=self.control_bg_color)
self.subframe_control_program4.pack(anchor="center")
tk.Label(self.subframe_control_program4, text="โปรแกรม 4", bg=self.control_bg_color,
fg=self.active_char_color).grid(row=0, sticky="w", padx=10, pady=10)
tk.Label(self.subframe_control_program4, text="Start", bg=self.control_bg_color, fg=self.active_char_color).grid(
row=1, column=0, columnspan=4, padx=20, pady=(10, 1), sticky="w")
self.entry_start_hr_4 = tk.Entry(self.subframe_control_program4, width=6, bg=self.total_bg_color, textvariable=self.start_hr_4,
highlightbackground=self.control_bg_color, highlightcolor=self.header_bg_color, fg=self.active_char_color)
self.entry_start_hr_4.grid(row=2, column=0, padx=(10, 0), pady=(0, 10))
self.entry_start_min_4 = tk.Entry(self.subframe_control_program4, width=6, bg=self.total_bg_color, textvariable=self.start_min_4,
highlightbackground=self.control_bg_color, highlightcolor=self.header_bg_color, fg=self.active_char_color)
self.entry_start_min_4.grid(row=2, column=1, padx=0, pady=(0, 10))
tk.Label(self.subframe_control_program4, text="น.", bg=self.control_bg_color,
fg=self.active_char_color).grid(row=2, column=2, padx=2, pady=(0, 10))
tk.Label(self.subframe_control_program4, text=" >>>>> ", bg=self.control_bg_color,
fg=self.active_char_color).grid(row=2, column=3, padx=2, pady=(0, 10))
tk.Label(self.subframe_control_program4, text="End", bg=self.control_bg_color, fg=self.active_char_color).grid(
row=1, column=4, columnspan=4, padx=10, pady=(10, 1), sticky="w")
self.entry_end_hr_4 = tk.Entry(self.subframe_control_program4, width=6, bg=self.total_bg_color, textvariable=self.end_hr_4,
highlightbackground=self.control_bg_color, highlightcolor=self.header_bg_color, fg=self.active_char_color)
self.entry_end_hr_4.grid(row=2, column=5, padx=(10, 0), pady=(0, 10))
self.entry_end_min_4 = tk.Entry(self.subframe_control_program4, width=6, bg=self.total_bg_color, textvariable=self.end_min_4,
highlightbackground=self.control_bg_color, highlightcolor=self.header_bg_color, fg=self.active_char_color)
self.entry_end_min_4.grid(row=2, column=6, padx=(10, 0), pady=(0, 10))
tk.Label(self.subframe_control_program4, text="น.", bg=self.control_bg_color,
fg=self.active_char_color).grid(row=2, column=7, padx=2, pady=(0, 10))
tk.Button(self.subframe_control_program4, text="Update", highlightcolor=self.button_highlight_color, highlightbackground=self.border_color,
bg=self.total_bg_color, fg=self.active_char_color, command=lambda : self.update(4,self.entry_start_hr_4,self.entry_start_min_4,self.entry_end_hr_4,self.entry_end_min_4)).grid(row=3, columnspan=8, padx=(0, 90), pady=(10, 20), sticky="e")
tk.Button(self.subframe_control_program4, text="Cancel", highlightcolor=self.button_highlight_color, highlightbackground=self.border_color,
bg=self.total_bg_color, fg=self.active_char_color, command=lambda : self.cancel(4)).grid(row=3, columnspan=8, padx=(0, 0), pady=(10, 20), sticky="e")
self.set_entry_to_plc_data(0)
self.set_trace()
def set_trace(self):
self.start_hr_1.trace("w", lambda x,y,z : self.compare_CurrentEntryGUIData_with_plcData(1))
self.start_min_1.trace("w", lambda x,y,z : self.compare_CurrentEntryGUIData_with_plcData(2))
self.end_hr_1.trace("w", lambda x,y,z : self.compare_CurrentEntryGUIData_with_plcData(3))
self.end_min_1.trace("w", lambda x,y,z : self.compare_CurrentEntryGUIData_with_plcData(4))
self.start_hr_2.trace("w", lambda x,y,z : self.compare_CurrentEntryGUIData_with_plcData(5))
self.start_min_2.trace("w", lambda x,y,z : self.compare_CurrentEntryGUIData_with_plcData(6))
self.end_hr_2.trace("w", lambda x,y,z : self.compare_CurrentEntryGUIData_with_plcData(7))
self.end_min_2.trace("w", lambda x,y,z : self.compare_CurrentEntryGUIData_with_plcData(8))
self.start_hr_3.trace("w", lambda x,y,z : self.compare_CurrentEntryGUIData_with_plcData(9))
self.start_min_3.trace("w", lambda x,y,z : self.compare_CurrentEntryGUIData_with_plcData(10))
self.end_hr_3.trace("w", lambda x,y,z : self.compare_CurrentEntryGUIData_with_plcData(11))
self.end_min_3.trace("w", lambda x,y,z : self.compare_CurrentEntryGUIData_with_plcData(12))
self.start_hr_4.trace("w", lambda x,y,z : self.compare_CurrentEntryGUIData_with_plcData(13))
self.start_min_4.trace("w", lambda x,y,z : self.compare_CurrentEntryGUIData_with_plcData(14))
self.end_hr_4.trace("w", lambda x,y,z : self.compare_CurrentEntryGUIData_with_plcData(15))
self.end_min_4.trace("w", lambda x,y,z : self.compare_CurrentEntryGUIData_with_plcData(16))
def set_entry_to_plc_data(self, program_number):
if(program_number==1):
self.start_hr_1.set(self.connection.read_tag('N7:2'))
self.start_min_1.set(self.connection.read_tag('N7:3'))
self.end_hr_1.set(self.connection.read_tag('N7:4'))
self.end_min_1.set(self.connection.read_tag('N7:5'))
elif(program_number==2):
self.start_hr_2.set(self.connection.read_tag('N7:6'))
self.start_min_2.set(self.connection.read_tag('N7:7'))
self.end_hr_2.set(self.connection.read_tag('N7:8'))
self.end_min_2.set(self.connection.read_tag('N7:9'))
elif(program_number==3):
self.start_hr_3.set(self.connection.read_tag('N7:10'))
self.start_min_3.set(self.connection.read_tag('N7:11'))
self.end_hr_3.set(self.connection.read_tag('N7:12'))
self.end_min_3.set(self.connection.read_tag('N7:13'))
elif(program_number==4):
self.start_hr_4.set(self.connection.read_tag('N7:14'))
self.start_min_4.set(self.connection.read_tag('N7:15'))
self.end_hr_4.set(self.connection.read_tag('N7:16'))
self.end_min_4.set(self.connection.read_tag('N7:17'))
else:
self.start_hr_1.set(self.connection.read_tag('N7:2'))
self.start_min_1.set(self.connection.read_tag('N7:3'))
self.end_hr_1.set(self.connection.read_tag('N7:4'))
self.end_min_1.set(self.connection.read_tag('N7:5'))
self.start_hr_2.set(self.connection.read_tag('N7:6'))
self.start_min_2.set(self.connection.read_tag('N7:7'))
self.end_hr_2.set(self.connection.read_tag('N7:8'))
self.end_min_2.set(self.connection.read_tag('N7:9'))
self.start_hr_3.set(self.connection.read_tag('N7:10'))
self.start_min_3.set(self.connection.read_tag('N7:11'))
self.end_hr_3.set(self.connection.read_tag('N7:12'))
self.end_min_3.set(self.connection.read_tag('N7:13'))
self.start_hr_4.set(self.connection.read_tag('N7:14'))
self.start_min_4.set(self.connection.read_tag('N7:15'))
self.end_hr_4.set(self.connection.read_tag('N7:16'))
self.end_min_4.set(self.connection.read_tag('N7:17'))
def update(self, program_number, st_hr,st_min,end_hr,end_min):
if(((st_hr.get() != "")and(st_min.get() != "")and(end_hr.get() !="")and(end_min.get() != ""))):
if(program_number==1):
re_st_hr = self.connection.write_tag('N7:2',int(st_hr.get()))
re_st_min = self.connection.write_tag('N7:3',int(st_min.get()))
re_end_hr = self.connection.write_tag('N7:4',int(end_hr.get()))
re_end_min = self.connection.write_tag('N7:5',int(end_min.get()))
if((re_st_hr != None) and (re_st_min!= None) and (re_end_hr!= None) and (re_end_min!= None)):
tkMessageBox.showinfo(title='อัพเดตโปรแกรมที่ 1 สำเร็จ', message='Update successfully')
else:
tkMessageBox.showinfo(title='อัพเดตโปรแกรมที่ 1 ล้มเหลว', message='Failed to update')
self.compare_CurrentEntryGUIData_with_plcData(1)
self.compare_CurrentEntryGUIData_with_plcData(2)
self.compare_CurrentEntryGUIData_with_plcData(3)
self.compare_CurrentEntryGUIData_with_plcData(4)
elif(program_number==2):
re_st_hr = self.connection.write_tag('N7:6',int(st_hr.get()))
re_st_min = self.connection.write_tag('N7:7',int(st_min.get()))
re_end_hr = self.connection.write_tag('N7:8',int(end_hr.get()))
re_end_min = self.connection.write_tag('N7:9',int(end_min.get()))
if((re_st_hr != None) and (re_st_min!= None) and (re_end_hr!= None) and (re_end_min!= None)):
tkMessageBox.showinfo(title='อัพเดตโปรแกรมที่ 2 สำเร็จ', message='Update successfully')
else:
tkMessageBox.showinfo(title='อัพเดตโปรแกรมที่ 2 ล้มเหลว', message='Failed to update')
self.compare_CurrentEntryGUIData_with_plcData(5)
self.compare_CurrentEntryGUIData_with_plcData(6)
self.compare_CurrentEntryGUIData_with_plcData(7)
self.compare_CurrentEntryGUIData_with_plcData(8)
elif(program_number==3):
re_st_hr = self.connection.write_tag('N7:10',int(st_hr.get()))
re_st_min = self.connection.write_tag('N7:11',int(st_min.get()))
re_end_hr = self.connection.write_tag('N7:12',int(end_hr.get()))
re_end_min = self.connection.write_tag('N7:13',int(end_min.get()))
if((re_st_hr != None) and (re_st_min!= None) and (re_end_hr!= None) and (re_end_min!= None)):
tkMessageBox.showinfo(title='อัพเดตโปรแกรมที่ 3 สำเร็จ', message='Update successfully')
else:
tkMessageBox.showinfo(title='อัพเดตโปรแกรมที่ 3 ล้มเหลว', message='Failed to update')
self.compare_CurrentEntryGUIData_with_plcData(9)
self.compare_CurrentEntryGUIData_with_plcData(10)
self.compare_CurrentEntryGUIData_with_plcData(11)
self.compare_CurrentEntryGUIData_with_plcData(12)
elif(program_number==4):
re_st_hr = self.connection.write_tag('N7:14',int(st_hr.get()))
re_st_min = self.connection.write_tag('N7:15',int(st_min.get()))
re_end_hr = self.connection.write_tag('N7:16',int(end_hr.get()))
re_end_min = self.connection.write_tag('N7:17',int(end_min.get()))
if((re_st_hr != None) and (re_st_min!= None) and (re_end_hr!= None) and (re_end_min!= None)):
tkMessageBox.showinfo(title='อัพเดตโปรแกรมที่ 4 สำเร็จ', message='Update successfully')
else:
tkMessageBox.showinfo(title='อัพเดตโปรแกรมที่ 4 ล้มเหลว', message='Failed to update')
self.compare_CurrentEntryGUIData_with_plcData(13)
self.compare_CurrentEntryGUIData_with_plcData(14)
self.compare_CurrentEntryGUIData_with_plcData(15)
self.compare_CurrentEntryGUIData_with_plcData(16)
def compare_CurrentEntryGUIData_with_plcData(self, el):
if(el == 1):
if(str(self.start_hr_1.get()) == str(self.connection.read_tag('N7:2'))):
self.entry_start_hr_1.configure(bg=self.total_bg_color)
else:
self.entry_start_hr_1.configure(
bg=self.something_change_colur)
if(el == 2):
if(str(self.start_min_1.get()) == str(self.connection.read_tag('N7:3'))):
self.entry_start_min_1.configure(bg=self.total_bg_color)
else:
self.entry_start_min_1.configure(
bg=self.something_change_colur)
if(el == 3):
if(str(self.end_hr_1.get()) == str(self.connection.read_tag('N7:4'))):
self.entry_end_hr_1.configure(bg=self.total_bg_color)
else:
self.entry_end_hr_1.configure(
bg=self.something_change_colur)
if(el == 4):
if(str(self.end_min_1.get()) == str(self.connection.read_tag('N7:5'))):
self.entry_end_min_1.configure(bg=self.total_bg_color)
else:
self.entry_end_min_1.configure(
bg=self.something_change_colur)
if(el == 5):
if(str(self.start_hr_2.get()) == str(self.connection.read_tag('N7:6'))):
self.entry_start_hr_2.configure(bg=self.total_bg_color)
else:
self.entry_start_hr_2.configure(
bg=self.something_change_colur)
if(el == 6):
if(str(self.start_min_2.get()) == str(self.connection.read_tag('N7:7'))):
self.entry_start_min_2.configure(bg=self.total_bg_color)
else:
self.entry_start_min_2.configure(
bg=self.something_change_colur)
if(el == 7):
if(str(self.end_hr_2.get()) == str(self.connection.read_tag('N7:8'))):
self.entry_end_hr_2.configure(bg=self.total_bg_color)
else:
self.entry_end_hr_2.configure(
bg=self.something_change_colur)
if(el == 8):
if(str(self.end_min_2.get()) == str(self.connection.read_tag('N7:9'))):
self.entry_end_min_2.configure(bg=self.total_bg_color)
else:
self.entry_end_min_2.configure(
bg=self.something_change_colur)
if(el == 9):
if(str(self.start_hr_3.get()) == str(self.connection.read_tag('N7:10'))):
self.entry_start_hr_3.configure(bg=self.total_bg_color)
else:
self.entry_start_hr_3.configure(
bg=self.something_change_colur)
if(el == 10):
if(str(self.start_min_3.get()) == str(self.connection.read_tag('N7:11'))):
self.entry_start_min_3.configure(bg=self.total_bg_color)
else:
self.entry_start_min_3.configure(
bg=self.something_change_colur)
if(el == 11):
if(str(self.end_hr_3.get()) == str(self.connection.read_tag('N7:12'))):
self.entry_end_hr_3.configure(bg=self.total_bg_color)
else:
self.entry_end_hr_3.configure(
bg=self.something_change_colur)
if(el == 12):
if(str(self.end_min_3.get()) == str(self.connection.read_tag('N7:13'))):
self.entry_end_min_3.configure(bg=self.total_bg_color)
else:
self.entry_end_min_3.configure(
bg=self.something_change_colur)
if(el == 13):
if(str(self.start_hr_4.get()) == str(self.connection.read_tag('N7:14'))):
self.entry_start_hr_4.configure(bg=self.total_bg_color)
else:
self.entry_start_hr_4.configure(
bg=self.something_change_colur)
if(el == 14):
if(str(self.start_min_4.get()) == str(self.connection.read_tag('N7:15'))):
self.entry_start_min_4.configure(bg=self.total_bg_color)
else:
self.entry_start_min_4.configure(
bg=self.something_change_colur)
if(el == 15):
if(str(self.end_hr_4.get()) == str(self.connection.read_tag('N7:16'))):
self.entry_end_hr_4.configure(bg=self.total_bg_color)
else:
self.entry_end_hr_4.configure(
bg=self.something_change_colur)
if(el == 16):
if(str(self.end_min_4.get()) == str(self.connection.read_tag('N7:17'))):
self.entry_end_min_4.configure(bg=self.total_bg_color)
else:
self.entry_end_min_4.configure(
bg=self.something_change_colur)
def cancel(self, program_number):
self.set_entry_to_plc_data(program_number)
c = SlcDriver()
root = tk.Tk()
root.resizable(width=False, height=False)
root.geometry(WindowsSize)
controller = DripControl(root, c, PLC_IP_Adress)
def check_and_update_plc_status():
if(controller.connection.read_tag('B3:3/1') == 1):
controller.auto_watering_status = controller.active_image
else:
controller.auto_watering_status = controller.inactive_image
if(controller.connection.read_tag('B3:2/5') == 1):
controller.auto_drip_status = controller.active_image
else:
controller.auto_drip_status = controller.inactive_image
controller.root.after(Update_Program_Every_ms, check_and_update_plc_status)
def main():
check_and_update_plc_status()
root.mainloop()
if __name__ == "__main__":
main()