98 lines
3.7 KiB
Python
98 lines
3.7 KiB
Python
|
|
import sys
|
|||
|
|
import os
|
|||
|
|
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|||
|
|
import threading
|
|||
|
|
import time
|
|||
|
|
import queue
|
|||
|
|
from core.system_state import SystemState,FeedStatus
|
|||
|
|
from hardware.relay import RelayController
|
|||
|
|
from hardware.inverter import InverterController
|
|||
|
|
from hardware.transmitter import TransmitterController
|
|||
|
|
from config.ini_manager import ini_manager
|
|||
|
|
from hardware.upper_plc import OmronFinsPollingService
|
|||
|
|
from vision.visual_callback_dq import VisualCallback
|
|||
|
|
from opc.opcua_client_feed import OpcuaClientFeed
|
|||
|
|
from busisness.blls import ArtifactBll,PDRecordBll
|
|||
|
|
from busisness.models import ArtifactInfoModel,PDRecordModel
|
|||
|
|
|
|||
|
|
|
|||
|
|
class FeedingControlSystem:
|
|||
|
|
def __init__(self):
|
|||
|
|
print('FeedingControlSystem初始化')
|
|||
|
|
self.pd_record_bll=PDRecordBll()
|
|||
|
|
|
|||
|
|
|
|||
|
|
def send_pd_data(self):
|
|||
|
|
"""
|
|||
|
|
发送PD数据到OPC队列
|
|||
|
|
"""
|
|||
|
|
# 构建PD数据
|
|||
|
|
_cur_mould='SHR2B1-13'
|
|||
|
|
'F块L1块需要设置重量'
|
|||
|
|
_weight=0
|
|||
|
|
_pdrecords = self.pd_record_bll.get_last_pds(_cur_mould)
|
|||
|
|
if _pdrecords:
|
|||
|
|
_pdrecord=_pdrecords[0]
|
|||
|
|
if _pdrecord.TaskID:
|
|||
|
|
if _pdrecord.BlockNumber=='F':
|
|||
|
|
print(f'{_pdrecord.MouldCode} F块,不发送派单数据')
|
|||
|
|
print(f'{_pdrecord.MouldCode} F块,不发送派单数据')
|
|||
|
|
print(f'{_pdrecord.MouldCode} F块,不发送派单数据')
|
|||
|
|
return True
|
|||
|
|
_fact_volumn=self.get_fact_volumn(_pdrecord.MouldCode,_pdrecord.BlockNumber,_weight)
|
|||
|
|
if _fact_volumn>0:
|
|||
|
|
_pdrecord.FBetonVolume=_fact_volumn
|
|||
|
|
print(f'{_pdrecord.MouldCode}-{_pdrecord.BlockNumber} 实际派单方量:{_fact_volumn},{_fact_volumn},{_fact_volumn}')
|
|||
|
|
print(f'{_pdrecord.MouldCode}-{_pdrecord.BlockNumber} 实际派单方量:{_fact_volumn},{_fact_volumn},{_fact_volumn}')
|
|||
|
|
print(f'{_pdrecord.MouldCode}-{_pdrecord.BlockNumber} 实际派单方量:{_fact_volumn},{_fact_volumn},{_fact_volumn}')
|
|||
|
|
# self.state._pd_data=_pdrecord
|
|||
|
|
return True
|
|||
|
|
else:
|
|||
|
|
return False
|
|||
|
|
else:
|
|||
|
|
print(f'{_pdrecord.MouldCode} 未获取到数据-(等待扫码)')
|
|||
|
|
return False
|
|||
|
|
else:
|
|||
|
|
print(f'接口数据异常')
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
def get_fact_volumn(self,mould_code:str,block_number:str='',_weight:float=0) -> float:
|
|||
|
|
"""获取实际派单发量"""
|
|||
|
|
_now_volumn=0
|
|||
|
|
_pd_volumn=0
|
|||
|
|
|
|||
|
|
print(f'get_fact_volumn当前重量:{_weight}')
|
|||
|
|
_now_volumn=_weight/2500
|
|||
|
|
if not block_number and '-' in mould_code:
|
|||
|
|
block_number = mould_code.split('-')[0][-2:]
|
|||
|
|
if block_number=='B1':
|
|||
|
|
_pd_volumn=1.9
|
|||
|
|
if _weight>750:
|
|||
|
|
#留0.3
|
|||
|
|
_pd_volumn=_pd_volumn-_now_volumn+0.3
|
|||
|
|
if _pd_volumn<1:
|
|||
|
|
_pd_volumn=1
|
|||
|
|
|
|||
|
|
if block_number in ['B2','B3']:
|
|||
|
|
_pd_volumn=1.9
|
|||
|
|
elif block_number=='L1':
|
|||
|
|
_pd_volumn=2.0
|
|||
|
|
elif block_number=='L2':
|
|||
|
|
#多F块后面剩下的,大约500,那下完F后多的就可以减去
|
|||
|
|
_pd_volumn=2
|
|||
|
|
# if _weight>1300:
|
|||
|
|
_pd_volumn=_pd_volumn-_now_volumn+0.5
|
|||
|
|
if _pd_volumn>2.1:
|
|||
|
|
_pd_volumn=2.1
|
|||
|
|
elif _pd_volumn<0.8:
|
|||
|
|
_pd_volumn=0.8
|
|||
|
|
|
|||
|
|
return round(_pd_volumn,1)
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
system = FeedingControlSystem()
|
|||
|
|
|
|||
|
|
system.send_pd_data()
|