pro.py 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633
  1. from socket import *
  2. import threading
  3. import time
  4. import app
  5. import main
  6. import datetime
  7. import user_socket
  8. import sql
  9. import log
  10. import pythoncom
  11. class work_server(threading.Thread):
  12. def __init__(self, threadID, name, counter):
  13. threading.Thread.__init__(self)
  14. self.threadID = threadID
  15. self.name = name
  16. self.counter = counter
  17. self.user_var = app.user_var
  18. self.opc_value = app.opc_value
  19. self.sqlclient = sql.sqlclient
  20. self.exit_stat = False
  21. self.tcpserverParam = user_socket.tcpserverParam
  22. self.plc_conn_timeout = 0
  23. self.order_change_timeout = 0
  24. self.log_file = log.log_file
  25. self.log_print = log.log_file
  26. self.opc_wr_error = False
  27. self.opc_rd_error = False
  28. def air_data_split(self, value):
  29. air_value = value.split('\t')
  30. idx = 0
  31. for air in air_value:
  32. if air == '(OK)' or air == '(TD)':
  33. break
  34. else:
  35. idx = idx + 1
  36. if idx >= 1 and len(air_value) - idx >= 5:
  37. return '<{0}>:{4} {5}:{1}:{2} {3}'.format(air_value[idx-1], air_value[idx], air_value[idx + 1],
  38. air_value[idx + 2], air_value[idx + 3], air_value[idx + 4])
  39. else:
  40. return ''
  41. def get_ateq_product_name(self, value):
  42. air_value = value.split('\t')
  43. return air_value[0]
  44. def opc_data_pro(self):
  45. try:
  46. value = self.opc_value.get_Bee()
  47. self.user_var.bee_stat = value
  48. value = self.opc_value.get_Number_type()
  49. self.user_var.number_type = '{0}{1}{2}'.format(chr(value[0]), chr(value[1]), chr(value[2]))
  50. value = self.opc_value.get_Batch_y()
  51. value = self.opc_value.get_Batch_m()
  52. value = self.opc_value.get_Batch_d()
  53. value = self.opc_value.get_Air_data_17700()
  54. self.user_var.product_17700_name = self.get_ateq_product_name(value)
  55. air_value = self.air_data_split(value)
  56. if air_value != '':
  57. self.user_var.airtightness_17700 = air_value
  58. self.user_var.airtightness_17700_str.set(self.user_var.airtightness_17700)
  59. value = self.opc_value.get_Air_data_17720()
  60. self.user_var.product_17720_name = self.get_ateq_product_name(value)
  61. air_value = self.air_data_split(value)
  62. if air_value != '':
  63. self.user_var.airtightness_17720 = air_value
  64. self.user_var.airtightness_17720_str.set(self.user_var.airtightness_17720)
  65. value = self.opc_value.get_Ok_count()
  66. self.user_var.order_ok_str.set(value)
  67. value = self.opc_value.get_Ng_count()
  68. self.user_var.order_ng_str.set(value)
  69. value = self.opc_value.get_Targe_count()
  70. self.user_var.order_targe_str.set(value)
  71. value = self.opc_value.get_SNP_count()
  72. self.user_var.order_snp_str.set(value)
  73. value = self.opc_value.get_Origin_ok()
  74. self.user_var.originchkok_stat = value
  75. value = self.opc_value.get_Origin_dir()
  76. self.user_var.origindir_stat = value
  77. value = self.opc_value.get_Upairtight_ok()
  78. self.user_var.upairtightok_stat = value
  79. value = self.opc_value.get_Upairtight_ng()
  80. self.user_var.upairtightng_stat = value
  81. value = self.opc_value.get_Downairtight_ok()
  82. self.user_var.downairtightok_stat = value
  83. value = self.opc_value.get_Downairtight_ng()
  84. self.user_var.downairtightng_stat = value
  85. value = self.opc_value.get_Upprint_ok()
  86. self.user_var.upprintok_stat = value
  87. value = self.opc_value.get_Downprint_ok()
  88. self.user_var.downprintok_stat = value
  89. value = self.opc_value.get_Upgage_s()
  90. self.user_var.upgages_stat = value
  91. value = self.opc_value.get_Downgage_s()
  92. self.user_var.downgages_stat = value
  93. value = self.opc_value.get_Upwork_s()
  94. self.user_var.upworks_stat = value
  95. value = self.opc_value.get_Downwork_s()
  96. self.user_var.downworks_stat = value
  97. value = self.opc_value.get_Upm_pen()
  98. self.user_var.upmpen_stat = value
  99. value = self.opc_value.get_Downm_pen()
  100. self.user_var.downmpen_stat = value
  101. value = self.opc_value.get_Upconnect()
  102. self.user_var.upconnect_stat = value
  103. value = self.opc_value.get_Downconnect()
  104. self.user_var.downconnect_stat = value
  105. value = self.opc_value.get_Motororgin_ok()
  106. self.user_var.motororiginok_stat = value
  107. value = self.opc_value.get_Motor_onup()
  108. self.user_var.motoronup_stat = value
  109. value = self.opc_value.get_Motor_ondown()
  110. self.user_var.motorondown_stat = value
  111. value = self.opc_value.get_Manual_print()
  112. value = self.opc_value.get_Manual_printup()
  113. value = self.opc_value.get_Manual_printdown()
  114. value = self.opc_value.get_Manual_printok()
  115. # stat = self.opc_value.get_PLC_ok()
  116. self.opc_rd_error = False
  117. except Exception as e:
  118. if self.opc_rd_error == False:
  119. self.log_file.logger.error('opc数据读取异常: {0}'.format(e), exc_info=True, stack_info=True)
  120. self.opc_rd_error = True
  121. def check_opc_stat(self):
  122. try:
  123. self.opc_value.check_Bee()
  124. self.opc_value.check_Product_idx()
  125. self.opc_value.check_Product_name()
  126. self.opc_value.check_Batch_y()
  127. self.opc_value.check_Batch_m()
  128. self.opc_value.check_Batch_d()
  129. self.opc_value.check_Air_data_17700()
  130. self.opc_value.check_Air_data_17720()
  131. self.opc_value.check_Ok_count()
  132. self.opc_value.check_Ng_count()
  133. self.opc_value.check_Targe_count()
  134. self.opc_value.check_SNP_count()
  135. self.opc_value.check_Origin_ok()
  136. self.opc_value.check_Origin_dir()
  137. self.opc_value.check_Upairtight_ok()
  138. self.opc_value.check_Upairtight_ng()
  139. self.opc_value.check_Downairtight_ok()
  140. self.opc_value.check_Downairtight_ng()
  141. self.opc_value.check_Upprint_ok()
  142. self.opc_value.check_Downprint_ok()
  143. self.opc_value.check_Upgage_s()
  144. self.opc_value.check_Downgage_s()
  145. self.opc_value.check_Upwork_s()
  146. self.opc_value.check_Downwork_s()
  147. self.opc_value.check_Upm_pen()
  148. self.opc_value.check_Downm_pen()
  149. self.opc_value.check_Upconnect()
  150. self.opc_value.check_Downconnect()
  151. self.opc_value.check_Motororgin_ok()
  152. self.opc_value.check_Motor_onup()
  153. self.opc_value.check_Motor_ondown()
  154. self.opc_value.check_Manual_print()
  155. self.opc_value.check_Manual_printup()
  156. self.opc_value.check_Manual_printdown()
  157. self.opc_value.check_Manual_printok()
  158. self.opc_value.check_PLC_ok()
  159. self.opc_value.check_Airdata_stat()
  160. self.opc_value.check_Auto_printok()
  161. self.opc_value.check_Airtest_ok_r()
  162. self.opc_value.check_Airtest_ok_w()
  163. self.opc_value.check_Airtest_ng_r()
  164. self.opc_value.check_Airtest_ng_w()
  165. self.opc_value.check_Start_work()
  166. self.opc_value.check_Print_start()
  167. self.opc_wr_error = False
  168. except Exception as e:
  169. if self.opc_wr_error == False:
  170. self.log_file.logger.error('opc数据写入异常: {0}'.format(e), exc_info=True, stack_info=True)
  171. self.opc_wr_error = True
  172. def batch_pro(self):
  173. value = datetime.datetime.now().month
  174. if value >= 1 and value <= 9:
  175. m_asc = value + 0x30
  176. elif value >= 10 and value <= 12:
  177. m_asc = value + 78
  178. m = self.opc_value.get_Batch_m()
  179. if m != m_asc:
  180. self.opc_value.set_Batch_m(m_asc)
  181. self.user_var.batch_m = '{}'.format(chr(m_asc))
  182. value = datetime.datetime.now().day
  183. d = self.opc_value.get_Batch_d()
  184. if d != value:
  185. self.opc_value.set_Batch_d(value)
  186. self.user_var.batch_d = '{0:02d}'.format(value)
  187. self.user_var.batch = self.user_var.batch_y + self.user_var.batch_m + self.user_var.batch_d
  188. self.user_var.batch_str.set(self.user_var.batch)
  189. def product_number_pro(self):
  190. self.user_var.number_value = '{0}{1}{2}{3}{4:04d}{5}'.format(self.user_var.number_type,
  191. self.user_var.batch_y, self.user_var.batch_m,
  192. self.user_var.batch_d,
  193. self.user_var.number_count,
  194. chr(self.user_var.team_sel + ord('A')))
  195. self.user_var.printf_num_str.set(self.user_var.number_value)
  196. self.user_var.serial_num_value = '{0:04d}{1:02d}{2:02d}{3:05d}'.format(datetime.datetime.now().year,
  197. datetime.datetime.now().month,
  198. datetime.datetime.now().day,
  199. self.user_var.serial_num)
  200. self.user_var.serial_num_str.set(self.user_var.serial_num_value)
  201. def insert_airdata(self):
  202. print("Save Data")
  203. # self.update_order_tbl(self.user_var.order_num, ok=self.user_var.order_ok,
  204. # ng=self.user_var.order_ng, targe=self.user_var.order_targe,
  205. # snp=self.user_var.order_snp)
  206. self.insert_data_tbl()
  207. def update_airdata(self, stat):
  208. print("Update Data")
  209. self.update_data_tbl(stat)
  210. def air_work_pro(self):
  211. if self.user_var.opc_conn_stat == "PLC已连接":
  212. datastat = self.opc_value.get_Airdata_stat()
  213. printok = self.opc_value.get_Auto_printok()
  214. airok_r = self.opc_value.get_Airtest_ok_r()
  215. airok_w = self.opc_value.get_Airtest_ok_w()
  216. airng_r = self.opc_value.get_Airtest_ng_r()
  217. airng_w = self.opc_value.get_Airtest_ng_w()
  218. startwork = self.opc_value.get_Start_work()
  219. if self.user_var.airdata_work_stat == 'working':
  220. if airok_r == True and airok_w == True:
  221. print("ok to printing")
  222. self.user_var.product_ok = True
  223. self.insert_airdata()
  224. # self.opc_value.set_Airdata_stat(1)
  225. self.opc_value.set_Airtest_ok_w(False)
  226. self.tcpserverParam.wr_data = self.user_var.number_value
  227. self.tcpserverParam.wr_stat = True
  228. self.user_var.airdata_work_stat = 'printing'
  229. elif airng_r == True and airng_w == True:
  230. print("ng to finish")
  231. self.user_var.order_ng = self.user_var.order_ng + 1
  232. self.user_var.order_targe = self.user_var.order_targe + 1
  233. self.update_order_tbl(self.user_var.order_num, ng=self.user_var.order_ng,
  234. targe=self.user_var.order_targe)
  235. self.user_var.product_ok = False
  236. self.insert_airdata()
  237. self.update_airdata(False)
  238. # self.opc_value.set_Airdata_stat(1)
  239. self.opc_value.set_Airtest_ng_w(False)
  240. self.user_var.airdata_work_stat = 'finish'
  241. elif self.user_var.airdata_work_stat == 'printing':
  242. if self.tcpserverParam.wr_stat == False:
  243. print("ok to printed")
  244. self.user_var.airdata_work_stat = 'printed'
  245. self.opc_value.set_Print_start(True)
  246. elif self.user_var.airdata_work_stat == 'printed':
  247. if printok == True:
  248. print("ok to finish")
  249. self.user_var.order_ok = self.user_var.order_ok + 1
  250. self.user_var.order_targe = self.user_var.order_targe + 1
  251. self.update_order_tbl(self.user_var.order_num, ok=self.user_var.order_ok,
  252. targe=self.user_var.order_targe)
  253. self.update_airdata(True)
  254. self.opc_value.set_Print_start(False)
  255. self.opc_value.set_Auto_printok(False)
  256. self.user_var.airdata_work_stat = 'finish'
  257. elif self.user_var.airdata_work_stat == 'finish':
  258. if startwork == False:
  259. print("to working")
  260. self.opc_value.set_Start_work(True)
  261. self.user_var.airdata_work_stat = 'working'
  262. self.user_var.serial_num = self.user_var.order_ok + self.user_var.order_ng + 1
  263. self.user_var.number_count = self.user_var.order_ok + 1
  264. self.product_number_pro()
  265. self.user_var.serial_num_working = self.user_var.serial_num_value
  266. # def database_pro(self):
  267. def update_data_tbl(self, status):
  268. sqlstr = 'UPDATE product_data_tbl SET '
  269. if status == True:
  270. sqlstr = sqlstr + "batch='{0}', testok={1}, data_17700='{2}', data_17720='{3}', end_time={4}, stat={5} WHERE serial = '{6}'".format(
  271. self.user_var.number_value, True, self.user_var.airtightness_17700, self.user_var.airtightness_17720,
  272. int(time.time()), True, self.user_var.serial_num_working)
  273. else:
  274. sqlstr = sqlstr + "end_time={0}, data_17700='{1}', data_17720='{2}', stat={3} WHERE serial = '{4}'".format(
  275. int(time.time()), self.user_var.airtightness_17700, self.user_var.airtightness_17720, True,
  276. self.user_var.serial_num_working)
  277. self.sqlclient.sql_action_all(sqlstr)
  278. def insert_data_tbl(self):
  279. sqlstr = "INSERT INTO product_data_tbl "
  280. sqlstr = sqlstr + "(batch, serial, product_name, testok, data_17700, data_17720, team, tester, begin_time, end_time, stat)"
  281. sqlstr = sqlstr + " VALUES ('{0}', '{1}', '{2}', {3}, '{4}', '{5}', '{6}', '{7}', {8}, {9}, {10})".format(
  282. 'NULL',
  283. self.user_var.serial_num_value,
  284. self.user_var.product_name,
  285. False,
  286. 'NULL',
  287. 'NULL',
  288. str(self.user_var.team),
  289. 'tester',
  290. int(time.time()),
  291. int(time.time()),
  292. False
  293. )
  294. self.sqlclient.sql_action_all(sqlstr)
  295. def update_order_tbl(self, order_num, ok=-1, ng=-1, targe=-1, snp=-1, end_time=-1, stat=False):
  296. first = False
  297. sqlstr = 'UPDATE order_tbl SET '
  298. if ok >=0:
  299. sqlstr = sqlstr + ' ok={0}'.format(ok)
  300. first = True
  301. if ng >= 0:
  302. if first == True:
  303. sqlstr = sqlstr + ', '
  304. sqlstr = sqlstr + 'ng={0} '.format(ng)
  305. first = True
  306. if targe >=0:
  307. if first == True:
  308. sqlstr = sqlstr + ', '
  309. sqlstr = sqlstr + 'targe={0} '.format(targe)
  310. first = True
  311. if snp >= 0:
  312. if first == True:
  313. sqlstr = sqlstr + ', '
  314. sqlstr = sqlstr + 'snp={0} '.format(snp)
  315. first = True
  316. if end_time >= 0:
  317. if first == True:
  318. sqlstr = sqlstr + ', '
  319. sqlstr = sqlstr + 'end_time={0} '.format(end_time)
  320. first = True
  321. if stat == True:
  322. if first == True:
  323. sqlstr = sqlstr + ', '
  324. sqlstr = sqlstr + 'stat={0} '.format(stat)
  325. sqlstr = sqlstr + " WHERE order_num = '{0}'".format(order_num)
  326. self.sqlclient.sql_action_all(sqlstr)
  327. def insert_order_tbl(self, ok, ng, targe, snp):
  328. self.user_var.order_ok = ok
  329. self.user_var.order_ng = ng
  330. self.user_var.order_targe = targe
  331. self.user_var.order_snp = snp
  332. sqlstr = "INSERT INTO order_tbl "
  333. sqlstr = sqlstr + "(order_num, product_idx, product_name, batch, team, ok, ng, targe, snp, begin_time, stat)"
  334. sqlstr = sqlstr + " VALUES ('{0}', {1}, '{2}', '{3}', '{4}', {5}, {6}, {7}, {8}, {9}, {10})".format(self.user_var.order_num,
  335. self.user_var.product_idx,
  336. self.user_var.product_name,
  337. self.user_var.batch,
  338. str(self.user_var.team),
  339. self.user_var.order_ok,
  340. self.user_var.order_ng,
  341. self.user_var.order_targe,
  342. self.user_var.order_snp,
  343. int(time.time()),
  344. False)
  345. self.sqlclient.sql_action_all(sqlstr)
  346. def order_tbl_check(self):
  347. sqlstr = 'SELECT id, order_num,product_idx, product_name, batch, team, ok, ng, targe, snp FROM order_tbl WHERE stat=False ORDER by begin_time DESC'
  348. results = self.sqlclient.sql_inquire_all(sqlstr)
  349. if results != None and len(results) > 0:
  350. idx = 0
  351. for row in results:
  352. if idx == 0:
  353. order_num = row[1]
  354. product_idx = row[2]
  355. product_name = row[3]
  356. batch = row[4]
  357. team = row[5]
  358. ok = row[6]
  359. ng = row[7]
  360. targe = row[8]
  361. snp = row[9]
  362. if self.user_var.batch == batch:
  363. self.user_var.order_num = order_num
  364. self.user_var.team = team
  365. self.user_var.team_sel = ord(self.user_var.team) - ord('A')
  366. self.user_var.team_value = self.user_var.team_list[self.user_var.team_sel]
  367. self.user_var.order_ok = ok
  368. self.user_var.order_ng = ng
  369. self.user_var.order_targe = targe
  370. self.user_var.order_snp = snp
  371. self.user_var.number_count = self.user_var.order_ok + 1
  372. self.user_var.serial_num = self.user_var.order_ok + self.user_var.order_ng + 1
  373. else:
  374. self.update_order_tbl(order_num, end_time=int(time.time()) ,stat=True)
  375. self.insert_order_tbl(0, 0, 0, 0)
  376. else:
  377. order_num = row[1]
  378. self.update_order_tbl(order_num, stat=True)
  379. idx = idx + 1
  380. else:
  381. self.insert_order_tbl(0,0,0,0)
  382. # def insert_param_tbl(self, type):
  383. # sqlstr = "INSERT INTO product_param_tbl "
  384. # sqlstr = sqlstr + "(product_idx,product_name,param_type,startuptime,airtime,presstime, testtime, \
  385. # exhaust, maxpress, minpress, setpress, capacity, \
  386. # posthreshold, pnegthreshold)"
  387. # if type == 17700:
  388. # sqlstr = sqlstr + " VALUES ({0}, '{1}', {2}, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0')".format(
  389. # self.user_var.product_idx+1,
  390. # self.user_var.product_name,
  391. # 17700)
  392. # else:
  393. # sqlstr = sqlstr + " VALUES ({0}, '{1}', {2}, '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0')".format(
  394. # self.user_var.product_idx+1,
  395. # self.user_var.product_name,
  396. # 17720)
  397. # self.sqlclient.sql_action_all(sqlstr)
  398. #
  399. # def param_tbl_check(self):
  400. # sqlstr = "SELECT startuptime,airtime,presstime, testtime, exhaust, maxpress, minpress, setpress, capacity, \
  401. # posthreshold, pnegthreshold FROM product_param_tbl WHERE product_name='{0}' and \
  402. # param_type=17700".format(self.user_var.product_name)
  403. # paramresult = self.sqlclient.sql_inquire_all(sqlstr)
  404. # if paramresult != None and len(paramresult) > 0:
  405. # for paramrow in paramresult:
  406. # self.user_var.startdelay_17700_str.set(paramrow[0])
  407. # self.user_var.airtime_17700_str.set(paramrow[1])
  408. # self.user_var.presstime_17700_str.set(paramrow[2])
  409. # self.user_var.testtime_17700_str.set(paramrow[3])
  410. # self.user_var.exhaust_17700_str.set(paramrow[4])
  411. # self.user_var.maxpress_17700_str.set(paramrow[5])
  412. # self.user_var.minpress_17700_str.set(paramrow[6])
  413. # self.user_var.setpress_17700_str.set(paramrow[7])
  414. # self.user_var.capacity_17700_str.set(paramrow[8])
  415. # self.user_var.posthreshold_17700_str.set(paramrow[9])
  416. # self.user_var.pnegthreshold_17700_str.set(paramrow[10])
  417. # else:
  418. # self.user_var.startdelay_17700_str.set("0")
  419. # self.user_var.airtime_17700_str.set("0")
  420. # self.user_var.presstime_17700_str.set("0")
  421. # self.user_var.testtime_17700_str.set("0")
  422. # self.user_var.exhaust_17700_str.set("0")
  423. # self.user_var.maxpress_17700_str.set("0")
  424. # self.user_var.minpress_17700_str.set("0")
  425. # self.user_var.setpress_17700_str.set("0")
  426. # self.user_var.capacity_17700_str.set("0")
  427. # self.user_var.posthreshold_17700_str.set("0")
  428. # self.user_var.pnegthreshold_17700_str.set("0")
  429. # self.insert_param_tbl(17700)
  430. #
  431. # sqlstr = "SELECT startuptime,airtime,presstime, testtime, exhaust, maxpress, minpress, setpress, capacity, \
  432. # posthreshold, pnegthreshold FROM product_param_tbl WHERE product_name='{0}' and \
  433. # param_type=17720".format(self.user_var.product_name)
  434. # paramresult = self.sqlclient.sql_inquire_all(sqlstr)
  435. # if paramresult != None and len(paramresult) > 0:
  436. # for paramrow in paramresult:
  437. # self.user_var.startdelay_17720_str.set(paramrow[0])
  438. # self.user_var.airtime_17720_str.set(paramrow[1])
  439. # self.user_var.presstime_17720_str.set(paramrow[2])
  440. # self.user_var.testtime_17720_str.set(paramrow[3])
  441. # self.user_var.exhaust_17720_str.set(paramrow[4])
  442. # self.user_var.maxpress_17720_str.set(paramrow[5])
  443. # self.user_var.minpress_17720_str.set(paramrow[6])
  444. # self.user_var.setpress_17720_str.set(paramrow[7])
  445. # self.user_var.capacity_17720_str.set(paramrow[8])
  446. # self.user_var.posthreshold_17720_str.set(paramrow[9])
  447. # self.user_var.pnegthreshold_17720_str.set(paramrow[10])
  448. # else:
  449. # self.user_var.startdelay_17720_str.set("0")
  450. # self.user_var.airtime_17720_str.set("0")
  451. # self.user_var.presstime_17720_str.set("0")
  452. # self.user_var.testtime_17720_str.set("0")
  453. # self.user_var.exhaust_17720_str.set("0")
  454. # self.user_var.maxpress_17720_str.set("0")
  455. # self.user_var.minpress_17720_str.set("0")
  456. # self.user_var.setpress_17720_str.set("0")
  457. # self.user_var.capacity_17720_str.set("0")
  458. # self.user_var.posthreshold_17720_str.set("0")
  459. # self.user_var.pnegthreshold_17720_str.set("0")
  460. # self.insert_param_tbl(17720)
  461. def product_name_set(self):
  462. sqlstr = "SELECT product_idx,product_name,17700_name,17720_name FROM product_tbl WHERE stat=True"
  463. paramresult = self.sqlclient.sql_inquire_all(sqlstr)
  464. if paramresult != None and len(paramresult) > 0:
  465. for paramrow in paramresult:
  466. product_idx = paramrow[0]
  467. product_name = paramrow[1]
  468. name_17700 = paramrow[2]
  469. name_17720 = paramrow[3]
  470. if product_idx < 14:
  471. self.user_var.product_list[product_idx] = product_name
  472. self.user_var.product_list_str[product_idx].set(product_name)
  473. self.user_var.product_17700_list[product_idx] = name_17700
  474. self.user_var.product_17720_list[product_idx] = name_17720
  475. self.user_var.product_load = False
  476. def product_name_check(self):
  477. value = self.opc_value.get_Product_idx()
  478. self.user_var.opc_product_idx = value
  479. value = self.opc_value.get_Product_name()
  480. self.user_var.opc_product_name = value
  481. if self.user_var.opc_product_idx <= 14:
  482. if self.user_var.product_list[self.user_var.opc_product_idx-1] == self.user_var.opc_product_name:
  483. self.user_var.product_idx = self.user_var.opc_product_idx-1
  484. self.user_var.product_name = self.user_var.product_list[self.user_var.product_idx]
  485. self.user_var.product_17700_name = self.user_var.product_17700_list[self.user_var.product_idx]
  486. self.user_var.product_17720_name = self.user_var.product_17720_list[self.user_var.product_idx]
  487. self.user_var.product_name_noset = '品番已设置'
  488. self.user_var.product_idx_str.set(self.user_var.product_idx + 1)
  489. self.user_var.product_str.set(self.user_var.product_name)
  490. else:
  491. self.user_var.product_idx = 0
  492. self.user_var.product_name = ''
  493. self.user_var.product_17700_name = ''
  494. self.user_var.product_17720_name = ''
  495. self.user_var.product_name_noset = '品番不存在,请设置...'
  496. else:
  497. self.user_var.product_idx = 0
  498. self.user_var.product_name = ''
  499. self.user_var.product_17700_name = ''
  500. self.user_var.product_17720_name = ''
  501. self.user_var.product_name_noset = '品番编号超过14'
  502. def everyday_check(self):
  503. if self.order_change_timeout == 0:
  504. self.order_change_timeout = 10
  505. self.batch_pro()
  506. tt_check = False
  507. c_time = time.strftime("%H:%M:%S", time.localtime())
  508. if c_time[0:2] == '00': # 判断截取小时是否为0
  509. if c_time[3:5] == '00': # 判断截取分钟是否为0
  510. if c_time[6:8] == '00': # 判断截取秒是否为0
  511. tt_check = True
  512. if tt_check == True:
  513. self.update_order_tbl(self.user_var.order_num, end_time=int(time.time()), stat=True)
  514. self.user_var.order_count = 1
  515. self.user_var.order_num = '{0}{1}{2}{3:02d}'.format(self.user_var.number_type,
  516. datetime.datetime.now().strftime('%Y%m%d%H%M%S'),
  517. chr(self.user_var.team_sel + ord('A')),
  518. self.user_var.order_count)
  519. self.insert_order_tbl(0, 0, 0, 0)
  520. self.user_var.serial_num = self.user_var.order_ok + self.user_var.order_ng + 1
  521. self.user_var.number_count = self.user_var.order_ok + 1
  522. print("insert order_tbl everyday!")
  523. elif self.user_var.order_update_stat == True:
  524. self.user_var.order_update_stat = False
  525. self.update_order_tbl(self.user_var.order_num, end_time=int(time.time()), stat=True)
  526. self.insert_order_tbl(self.user_var.order_ok, self.user_var.order_ng,
  527. self.user_var.order_targe, self.user_var.order_snp)
  528. else:
  529. self.order_change_timeout = self.order_change_timeout - 1
  530. def plc_conn_check(self):
  531. if self.plc_conn_timeout == 0:
  532. self.plc_conn_timeout = 20
  533. if self.user_var.workstatstr == True:
  534. self.user_var.workstatstr = False
  535. self.opc_value.set_PLC_ok(True)
  536. else:
  537. self.user_var.workstatstr = True
  538. self.opc_value.set_PLC_ok(False)
  539. else:
  540. self.plc_conn_timeout = self.plc_conn_timeout - 1
  541. def exit(self):
  542. self.exit_stat = True
  543. def run(self):
  544. self.product_name_set()
  545. while self.user_var.opc_conn_stat != "PLC已连接":
  546. if self.exit_stat == True:
  547. break
  548. time.sleep(1)
  549. if self.exit_stat == False:
  550. self.batch_pro()
  551. self.order_tbl_check()
  552. # self.param_tbl_check()
  553. while self.exit_stat == False:
  554. with main.threadlock:
  555. if self.user_var.product_load == True:
  556. self.product_name_set()
  557. self.product_name_check()
  558. self.plc_conn_check()
  559. self.opc_data_pro()
  560. self.check_opc_stat()
  561. self.air_work_pro()
  562. self.everyday_check()
  563. self.product_number_pro()
  564. time.sleep(0.1)
  565. print("work进程结束!")
  566. self.user_var.pro_exit_stat = True