98 lines
3.6 KiB
Python
98 lines
3.6 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('派单测试初始化')
|
||
# 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,block_number:str='') -> 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()
|