12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #!/usr/bin/env python
- # encoding: utf-8
- """
- @CreateTime: 2023/02/01 09:50
- @Author: lxc
- @LastEditTime:
- @Desctiption: 实时获取拉力计 计算公式的参数,并存入redis中
- """
- from event_storage import EventStorage
- from log import OutPutLog
- import time
- from datetime import datetime
- class GetLalijiParam:
- def __init__(self):
- self._storage = EventStorage()
- self._log = OutPutLog()
- def run(self):
- self._log.info("[GetLalijiParam] - GetLalijiParam module is running!")
- # 拉力计1-2原始数据
- serial_list = ['c787', 'c788']
- run_time = 0
- while True:
- this_time = time.time()
- if this_time - run_time > 5:
- run_time = this_time
- real_data_dict = self._storage.get_real_data(serial_list)
- # print("--------------------laliji----------", real_data_dict)
- status = False
- for v in real_data_dict.values():
- if v is not None:
- status = True
- if status:
- param_dict = self.save_param()
- self.lalijisuan(real_data_dict, param_dict)
- # format_data = {'c869': '3', 'c870': '6', 'c871': '4', 'c872': '2', 'c873': '1', 'c874': '2'}
- # format_data = {'c869': 40379.57, 'c870': 38944, 'c871': 38954, 'c872': 38844, 'c873': 38974, 'c874': 38904}
- # format_data = {'c869': 0, 'c871': 38944, 'c872': 38944, 'c873': 38944, 'c874': 38944}
- # self._storage.real_time_data_storage(format_data)
- def save_param(self):
- """实时获取拉力计 计算公式的参数,并存入redis中"""
- get_param_sql = "SELECT `serial_number`,`value` FROM `laliji_config`;"
- param_res = self._storage.execute_sql(get_param_sql)
- param_dict = {}
- for each in param_res:
- param_dict[each['serial_number']] = each['value']
- self._storage.real_time_data_storage(param_dict)
- return param_dict
- def lalijisuan(self, original_dict, param):
- """计算拉力值,并存入redis中"""
- lali_data = {}
- serial_dict = {
- 'c795': ["c787", "c789", "c790", "c791"],
- 'c796': ["c788", "c792", "c793", "c794"]
- }
- for k, v in serial_dict.items():
- original = int(original_dict[v[0]]) # S485读取的无符号整数
- a = param[v[1]] # 参数A
- b = param[v[2]] # 参数b
- f0 = param[v[3]] # 参数f0
- if original and original == 0:
- lali_data[k] = 0
- elif original and original != 0 and a and b and f0:
- f = 80000000 / original # 受力时频率f=80000000/(S485读取的无符号整数)
- p = a * (f * f - f0 * f0) - b * (f - f0) # P=A(f²-f0²)-B(f-f0)
- lali_data[k] = round(p, 2)
- else:
- lali_data[k] = None
- self._storage.real_time_data_storage(lali_data)
|