SINUMERIK 840Dsl NC变量与接口信号操作指南

需积分: 14 7 下载量 79 浏览量 更新于2024-07-17 1 收藏 6.69MB PDF 举报
西门子840Dsl NC PLC信号列表手册提供了关于操作界面与PLC之间通过MCPI(Machine Control Panel Interface)接口访问NC(Numerical Control)变量的重要指导。NC变量是数控系统中的关键组成部分,它们包含了控制机器运动、状态监控和通信所需的数据。在使用SINUMERIK 840Dsl/840DESl CNC软件版本4.8SP212/2017时,理解NC变量的结构及其应用条件至关重要。 手册首先强调了基本安全注意事项,提醒用户在操作过程中必须遵循警告提示,以保障人身安全和避免财产损失。操作人员应为合格的专业人员,具备相关的培训和经验,能够识别潜在风险并采取预防措施。此外,用户需严格按照西门子的产品使用规定,确保正确安装、运输、存储和维护设备,且只能在制造商目录和指定的技术文件中规定的条件下使用。 NC变量部分详细阐述了变量的定义和用途,可能包括但不限于轴位置、速度、刀具数据、加工参数等。这些变量在CNC程序中扮演着核心角色,对控制机床的精确性和效率至关重要。手册指出,用户可以通过NC变量表快速查找相关信息,表中列出了每个变量的名称,以及指向详细解释的相应手册章节(第35页)。 接口信号一览部分列举了不同类型的信号,如输入输出信号、中断信号等,这些都是PLC与外部设备交互的桥梁。详细说明部分则深入解释了每个接口信号的功能、含义和使用方法,帮助用户理解如何有效地利用这些信号进行通信和控制。 最后,附录A包含了法律资讯、警告提示系统的详细内容,以及关于责任免除的声明。这些内容强调了遵守所有相关法规和西门子的知识产权政策的重要性。 阅读和理解这份西门子840Dsl NC PLC信号列表手册对于熟练掌握该系统操作和优化生产过程至关重要,确保了用户在安全的前提下有效利用NC变量和接口信号进行高级数控控制。

帮我给每一行代码添加注释 class DeepKalmanFilter(nn.Module): def __init__(self, config): super(DeepKalmanFilter, self).__init__() self.emitter = Emitter(config.z_dim, config.emit_hidden_dim, config.obs_dim) self.transition = Transition(config.z_dim, config.trans_hidden_dim) self.posterior = Posterior( config.z_dim, config.post_hidden_dim, config.obs_dim ) self.z_q_0 = nn.Parameter(torch.zeros(config.z_dim)) self.emit_log_sigma = nn.Parameter(config.emit_log_sigma * torch.ones(config.obs_dim)) self.config = config @staticmethod def reparametrization(mu, sig): return mu + torch.randn_like(sig) * sig @staticmethod def kl_div(mu0, sig0, mu1, sig1): return -0.5 * torch.sum(1 - 2 * sig1.log() + 2 * sig0.log() - (mu1 - mu0).pow(2) / sig1.pow(2) - (sig0 / sig1).pow(2)) def loss(self, obs): time_step = obs.size(1) batch_size = obs.size(0) overshoot_len = self.config.overshooting kl = torch.Tensor([0]).to(self.config.device) reconstruction = torch.Tensor([0]).to(self.config.device) emit_sig = self.emit_log_sigma.exp() for s in range(self.config.sampling_num): z_q_t = self.z_q_0.expand((batch_size, self.config.z_dim)) for t in range(time_step): trans_loc, trans_sig = self.transition(z_q_t) post_loc, post_sig = self.posterior(trans_loc, trans_sig, obs[:, t]) z_q_t = self.reparametrization(post_loc, post_sig) emit_loc = self.emitter(z_q_t) reconstruction += ((emit_loc - obs[:, t]).pow(2).sum(dim=0) / 2 / emit_sig + self.emit_log_sigma * batch_size / 2).sum() if t > 0: over_loc, over_sig = self.transition(overshooting[:overshoot_len - 1]) over_loc = torch.cat([trans_loc.unsqueeze(0), over_loc], dim=0) over_sig = torch.cat([trans_sig.unsqueeze(0), over_sig], dim=0) else: over_loc = trans_loc.unsqueeze(0) over_sig = trans_sig.unsqueeze(0) overshooting = self.reparametrization(over_loc, over_sig) kl = kl + self.kl_div(post_loc.expand_as(over_loc), post_sig.expand_as(over_sig), over_loc, over_sig) / min(t + 1, self.config.overshooting) reconstruction = reconstruction / self.config.sampling_num kl = kl / self.config.sampling_num return reconstruction, kl

2023-02-22 上传

优化代码 def module_split(self, save_on=True): """ split module data :param save_on: :return: """ for ms in range(self.mod_num): m_sn = self.module_list[ms] module_path = os.path.join(self.result_path_down, m_sn) cols_obj = ChuNengPackMustCols(ms, self.mod_cell_num, self.mod_cell_num) # 传入当前的module序号(如0,1,2,3,4),电芯电压个数,温度NTC个数。 aim_cols = [i for i in cols_obj.total_cols if i in self.df.columns] print(m_sn, aim_cols) self.modules[m_sn] = rename_cols_normal(self.df.loc[:, aim_cols], ms, self.mod_cell_num) print("after change cols name:", ms, m_sn, self.modules[m_sn].columns.tolist()) self.modules[m_sn].dropna(axis=0, how='any', subset=['soc'], inplace=True) volt_col = [f'volt{i}' for i in range(self.mod_cell_num)] temp_col = [f'temp{i}' for i in range(self.mod_cell_num)] self.modules[m_sn].dropna(axis=0, how='any', subset=volt_col, inplace=True) self.modules[m_sn] = stat(self.modules[m_sn], volt_col, temp_col) self.modules[m_sn].reset_index(drop=True, inplace=True) print(self.modules[m_sn]['discharge_ah'].iloc[-1]) self.module_cap[m_sn] = [self.modules[m_sn]['discharge_ah'].iloc[-1], self.modules[m_sn]['charge_ah'].iloc[-1], self.modules[m_sn]['soh'].iloc[-1]] self.module_peaks[m_sn] = list(quick_report(self.modules[m_sn], module_path, f'quick_report_{m_sn[:8]}')) # check soc status mod_soc = self.modules[m_sn]['soc'] self.module_soc_sig[m_sn] = [np.nanmedian(mod_soc), np.max(mod_soc), np.min(mod_soc)] if save_on: single_variables_plot(mod_soc, module_path, f'{m_sn[:8]}_soc_distribution_box.png', 'box', 'SOC') single_variables_plot(mod_soc, module_path, f'{m_sn[:8]}_soc_distribution_violin.png', 'violin', 'SOC')

2023-05-25 上传