From 0a248d577a394cbb17296cb1580d4e0fc7979012 Mon Sep 17 00:00:00 2001
From: mgw <1392924357@qq.com>
Date: Sun, 29 Jan 2023 09:26:19 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81-=E8=AE=BE?=
=?UTF-8?q?=E7=BD=AE=E6=8C=89=E9=92=AE=E6=9D=83=E9=99=90=E7=AD=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/vcs.xml | 6 +
.idea/workspace.xml | 121 +++++++++++++++
sf_machine_connect/__manifest__.py | 7 +-
sf_machine_connect/models/ftp_client.py | 141 ++++++++++++++++--
sf_machine_connect/models/ftp_operate.py | 5 +-
.../views/SfWorkOrderBarcodes.xml | 3 +-
sf_machine_connect/views/compensation.xml | 18 ++-
sf_machine_connect/views/ftp_button.xml | 11 +-
.../views/machine_info_present.xml | 19 +++
sf_machine_connect/views/machine_monitor.xml | 28 +++-
10 files changed, 335 insertions(+), 24 deletions(-)
create mode 100644 .idea/vcs.xml
create mode 100644 .idea/workspace.xml
create mode 100644 sf_machine_connect/views/machine_info_present.xml
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 00000000..94a25f7f
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 00000000..328c04dd
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1673428094330
+
+
+ 1673428094330
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sf_machine_connect/__manifest__.py b/sf_machine_connect/__manifest__.py
index 52fee05c..7f116a51 100644
--- a/sf_machine_connect/__manifest__.py
+++ b/sf_machine_connect/__manifest__.py
@@ -1,9 +1,9 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
{
- 'name': 'sf_machine_connect',
- 'version': '1.0',
- 'summary': '智能工厂机床连接模块',
+ 'name': '机企猫智能工厂 对接机床',
+ 'version': '2.0',
+ 'summary': 'sf_machine_connect',
'sequence': 10,
'description': """
这是一个模块
@@ -20,6 +20,7 @@
'views/WorkCenterBarcodes.xml',
'views/Stock_picking_Barcodes.xml',
'views/machine_monitor.xml',
+ # 'views/machine_info_present.xml',
],
'assets': {
diff --git a/sf_machine_connect/models/ftp_client.py b/sf_machine_connect/models/ftp_client.py
index 6744ca1a..1941f09a 100644
--- a/sf_machine_connect/models/ftp_client.py
+++ b/sf_machine_connect/models/ftp_client.py
@@ -24,6 +24,23 @@ class FtpButton(models.Model):
_inherit = 'sf.cnc.processing'
button_state = fields.Boolean(string='是否已经下发')
+ user_permissions = fields.Boolean(string='权限', related='workorder_id.user_permissions')
+ state = fields.Selection(string='状态', related='workorder_id.state')
+
+ @api.onchange('users_ids')
+ def get_user_permissions(self):
+ uid = self.env.uid
+ for workorder in self:
+ if workorder.users_ids:
+ list_user_id = []
+ for item in workorder.users_ids:
+ list_user_id.append(item.id)
+ if uid in list_user_id:
+ workorder.user_permissions = True
+ else:
+ workorder.user_permissions = False
+ else:
+ workorder.user_permissions = False
def pri(self):
"""
@@ -53,7 +70,13 @@ class FtpButton(models.Model):
except Exception:
raise UserError("补偿值写入执行超时,请检查机床状态或者写入状态")
- ftp = ftp_operate.FtpController()
+ # host="192.168.2.158", port=8080, username="MITSUBISHI", password="CNC"
+ host = self.workorder_id.workcenter_id.machine_tool_id.ftp_host
+ port = self.workorder_id.workcenter_id.machine_tool_id.ftp_port
+ username = self.workorder_id.workcenter_id.machine_tool_id.ftp_num
+ pwd = self.workorder_id.workcenter_id.machine_tool_id.ftp_pwd
+
+ ftp = ftp_operate.FtpController(host, port, username, pwd)
# ftp.delAllfile('C://Users//马广威//Desktop//ftp')
a = self.cnc_id
_logger.info(a.public)
@@ -62,12 +85,14 @@ class FtpButton(models.Model):
# file_path = '{}\{}\{}'.format(a._filestore(), a.store_fname.split('/'[0]), a.display_name)
file_path_local = '{}/{}'.format('/nc2machine', a.display_name)
- file_path_remote = '{}\{}'.format('//(192,168,2,141)//DS', a.display_name)
+ file_path_remote = '{}\{}'.format('//M80(192,168,2,142)//DS', a.display_name)
with open(file_path_local, mode='wb+') as file:
file.write(datas)
# 存在本地的文件下发到机床
+ _logger.info("=====================11================")
ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
+ _logger.info("=====================22================")
except Exception as e:
_logger.info("=====================================", e)
raise UserError('NC下发执行超时, 请检查下发状态')
@@ -84,6 +109,41 @@ class FtpButton(models.Model):
# 'type': 'ir.actions.act_window',
# 'target': 'new'
# }
+ # def up_all(self):
+ # """
+ # 此函数用于将NC代码全部下发到机床
+ # :return:
+ # """
+ # # host="192.168.2.158", port=8080, username="MITSUBISHI", password="CNC"
+ # host = self.workorder_id.workcenter_id.machine_tool_id.ftp_host
+ # port = self.workorder_id.workcenter_id.machine_tool_id.ftp_port
+ # username = self.workorder_id.workcenter_id.machine_tool_id.ftp_num
+ # pwd = self.workorder_id.workcenter_id.machine_tool_id.ftp_pwd
+ #
+ # ftp = ftp_operate.FtpController(host, port, username, pwd)
+ # # ftp.delAllfile('C://Users//马广威//Desktop//ftp')
+ # for item in self.cnc_ids:
+ # a = item.cnc_id
+ # print(a.display_name)
+ # # _logger.info(a.public)
+ # # _logger.info(a.display_name)
+ # # datas = base64.standard_b64decode(a.datas)
+ # #
+ # # # file_path = '{}\{}\{}'.format(a._filestore(), a.store_fname.split('/'[0]), a.display_name)
+ # # # file_path_local = '{}/{}'.format('/nc2machine', a.display_name)
+ # # file_path_local = '{}/{}'.format('D:\\jikimo', a.display_name)
+ # # # file_path_remote = '{}\{}'.format('//M80(192,168,2,142)//DS', a.display_name)
+ # #
+ # # with open(file_path_local, mode='wb+') as file:
+ # # file.write(datas)
+ # # 存在本地的文件下发到机床
+ # # _logger.info("=====================11================")
+ # # ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
+ # # _logger.info("=====================22================")
+ # # except Exception as e:
+ # # _logger.info("=====================================", e)
+ # # raise UserError('NC下发执行超时, 请检查下发状态')
+
def check_compensation_before_up(self):
"""
@@ -93,9 +153,9 @@ class FtpButton(models.Model):
try:
temp_dict = {}
temp_dict[
- 'ns=1;s=Project_Default.Group1.Mitsubishi_NC2.hongbianliang550'] = self.workorder_id.compensation_value_x
+ 'ns=1;s=Project_Default.Group1.Mitsubishi_NC.hongbianliang550'] = self.workorder_id.compensation_value_x
temp_dict[
- 'ns=1;s=Project_Default.Group1.Mitsubishi_NC2.hongbianliang551'] = self.workorder_id.compensation_value_y
+ 'ns=1;s=Project_Default.Group1.Mitsubishi_NC.hongbianliang551'] = self.workorder_id.compensation_value_y
temp = py2opcua.Py2opcua()
# temp.connect()
temp.write(temp_dict)
@@ -111,6 +171,21 @@ class Machine_ftp(models.Model):
"""
_inherit = 'sf.machine_tool'
+ workorder_ids = fields.One2many('mrp.workorder', 'machine_tool_id', string='工单')
+
+ # 机床配置项目
+ # ftp相关
+ ftp_num = fields.Char('ftp账号')
+ ftp_pwd = fields.Char('ftp密码')
+ ftp_host = fields.Char('ftp地址')
+ ftp_port = fields.Integer('ftp端口')
+ # 补偿值写入相关
+ x_compensation_node = fields.Char('x补偿值节点')
+ y_compensation_node = fields.Char('y补偿值节点')
+ # 数采配置相关
+ machine_ip = fields.Char('机床IP')
+
+ # 机床采集项目
timestamp = fields.Datetime('时间戳', readonly=True)
signed = fields.Integer('刷新间隔', readonly=True)
status = fields.Boolean('在线状态', readonly=True)
@@ -160,25 +235,63 @@ class WorkCenterBarcode(models.Model):
compensation_value_x = fields.Float(string='X轴补偿值')
compensation_value_y = fields.Float(string='Y轴补偿值')
button_compensation_state = fields.Boolean(string='是否已经补偿')
+ machine_tool_id = fields.Many2one('sf.machine_tool', string='机床')
def compensation(self):
- """
- 将节点与其值放入字典,字典作为参数传入
- :return:
- """
+
+ hongbianliang550 = self.workcenter_id.machine_tool_id.x_compensation_node
+ hongbianliang551 = self.workcenter_id.machine_tool_id.y_compensation_node
+
try:
temp_dict = {}
- temp_dict['ns=1;s=Project_Default.Group1.Mitsubishi_NC2.hongbianliang550'] = self.compensation_value_x
- temp_dict['ns=1;s=Project_Default.Group1.Mitsubishi_NC2.hongbianliang551'] = self.compensation_value_y
- temp = py2opcua.Py2opcua()
- # temp.connect()
- temp.write(temp_dict)
- self.button_compensation_state = True
+ temp_dict[hongbianliang550] = self.compensation_value_x
+ temp_dict[hongbianliang551] = self.compensation_value_y
+ print("=================================")
+ print(temp_dict)
+ # temp = py2opcua.Py2opcua()
+ # # temp.connect()
+ # temp.write(temp_dict)
+ # self.button_compensation_state = True
# temp.disconnect()
except Exception as e:
_logger.info("=====================================", e)
raise UserError('补偿值获取失败,或机床未连接,请检查')
+ def up_all(self):
+ """
+ 此函数用于将NC代码全部下发到机床
+ :return:
+ """
+ # host="192.168.2.158", port=8080, username="MITSUBISHI", password="CNC"
+ host = self.workcenter_id.machine_tool_id.ftp_host
+ port = self.workcenter_id.machine_tool_id.ftp_port
+ username = self.workcenter_id.machine_tool_id.ftp_num
+ pwd = self.workcenter_id.machine_tool_id.ftp_pwd
+ print(host, port, username, pwd)
+ # ftp = ftp_operate.FtpController(host, port, username, pwd)
+ # ftp.delAllfile('C://Users//马广威//Desktop//ftp')
+ for item in self.cnc_ids:
+ a = item.cnc_id
+ print(a.display_name)
+ _logger.info(a.public)
+ _logger.info(a.display_name)
+ datas = base64.standard_b64decode(a.datas)
+
+ # file_path = '{}\{}\{}'.format(a._filestore(), a.store_fname.split('/'[0]), a.display_name)
+ # file_path_local = '{}/{}'.format('/nc2machine', a.display_name)
+ file_path_local = '{}/{}'.format('D:\\jikimo', a.display_name)
+ # file_path_remote = '{}\{}'.format('//M80(192,168,2,142)//DS', a.display_name)
+
+ with open(file_path_local, mode='wb+') as file:
+ file.write(datas)
+ # 存在本地的文件下发到机床
+ # _logger.info("=====================11================")
+ # ftp.upload_file(remotepath=file_path_remote, localpath=file_path_local)
+ # _logger.info("=====================22================")
+ # except Exception as e:
+ # _logger.info("=====================================", e)
+ # raise UserError('NC下发执行超时, 请检查下发状态')
+
def get__state(self):
pay_time = str(datetime.now())
json = {
diff --git a/sf_machine_connect/models/ftp_operate.py b/sf_machine_connect/models/ftp_operate.py
index 18838684..e60d5807 100644
--- a/sf_machine_connect/models/ftp_operate.py
+++ b/sf_machine_connect/models/ftp_operate.py
@@ -45,6 +45,9 @@ class FtpController:
self.port = port
self.username = username
self.password = password
+ # 测试
+ print("==============================================")
+ print(self.username, self.port, self.host, self.password)
ftp = FTP_P()
# self.ftp.set_debuglevel(2) #打开调试级别2,显示详细信息
ftp.set_pasv(0) # 0主动模式 1 #被动模式
@@ -68,7 +71,7 @@ class FtpController:
:param localpath:
:return:
"""
- bufsize = 1024
+ bufsize = 8192
# fp = open(localpath, 'rb')
# self.ftp.storbinary('STOR ' + remotepath, fp, bufsize)
# fp.close()
diff --git a/sf_machine_connect/views/SfWorkOrderBarcodes.xml b/sf_machine_connect/views/SfWorkOrderBarcodes.xml
index 858d96f0..11c155c5 100644
--- a/sf_machine_connect/views/SfWorkOrderBarcodes.xml
+++ b/sf_machine_connect/views/SfWorkOrderBarcodes.xml
@@ -1,4 +1,4 @@
-
+
sf.install.the.tray.workorder.form.scan.barcode
@@ -8,7 +8,6 @@
-
diff --git a/sf_machine_connect/views/compensation.xml b/sf_machine_connect/views/compensation.xml
index 42c0b383..4a2e6e69 100644
--- a/sf_machine_connect/views/compensation.xml
+++ b/sf_machine_connect/views/compensation.xml
@@ -11,12 +11,26 @@
+
+
+
+
+
diff --git a/sf_machine_connect/views/ftp_button.xml b/sf_machine_connect/views/ftp_button.xml
index 4eb8da2a..c8bf8caa 100644
--- a/sf_machine_connect/views/ftp_button.xml
+++ b/sf_machine_connect/views/ftp_button.xml
@@ -10,8 +10,17 @@
+
-
+
+
+
+
+
+
+
diff --git a/sf_machine_connect/views/machine_info_present.xml b/sf_machine_connect/views/machine_info_present.xml
new file mode 100644
index 00000000..97928af7
--- /dev/null
+++ b/sf_machine_connect/views/machine_info_present.xml
@@ -0,0 +1,19 @@
+
+
+
+ machine.info.form.inherit.sf
+ mrp.workorder
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sf_machine_connect/views/machine_monitor.xml b/sf_machine_connect/views/machine_monitor.xml
index 51d23150..20374e6f 100644
--- a/sf_machine_connect/views/machine_monitor.xml
+++ b/sf_machine_connect/views/machine_monitor.xml
@@ -9,7 +9,10 @@
-
+
+
+
+
@@ -95,6 +98,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+