TwinCAT3 UML用户手册:类图与状态图指南

需积分: 5 2 下载量 190 浏览量 更新于2024-07-05 收藏 2MB PDF 举报
"TF1910_TC3_UML_EN.pdf" 该文档是关于TwinCAT3集成开发环境中的UML工具的用户手册,版本为2.5,发布日期为2020年12月9日。TwinCAT3是一款广泛应用于工业自动化领域的软件,它支持基于统一建模语言(UML)进行系统设计。手册涵盖了从概述、安装、设置到具体UML类图和状态图的创建与编辑等多个方面。 1. **前言** - 文档注释:手册中可能包含了一些关于如何理解和使用文档的提示和说明。 - 安全指南:强调在使用该软件过程中应遵循的安全操作,以避免潜在风险。 - 信息安全注意事项:提请注意保护项目信息和数据安全的重要性。 2. **概述** - 提供了对TwinCAT3 UML工具的整体介绍,包括其功能和用途,帮助用户理解如何在自动化工程中利用UML进行系统建模。 3. **安装** - 系统需求:列出了运行TwinCAT3 UML工具所需的硬件和软件配置。 - 安装步骤:指导用户如何正确安装和配置该工具。 4. **设置** - 选项:用户可以调整的工具特定设置,如界面语言、显示模式等。 - UML编译器版本:说明如何选择或更改UML编译器的版本,以适应不同的项目需求。 5. **命令** - 包含了各种用于编辑和操作UML图的命令,如创建位图、网格启用/禁用等,这些命令可以帮助用户更高效地构建模型。 6. **UML类图** - 基本原则:介绍了UML类图的基本概念和组成部分。 - 创建与编辑:提供了创建新类图、添加现有元素到图中以及编辑类图的步骤。 - 编辑器:详述了类图编辑器的功能和使用方法。 - 元素:详尽列举了各种UML元素,如类、接口、全局变量列表、用户自定义数据类型、变量声明、属性、方法、动作、组合、关联、实现、泛化和注解,以及如何使用它们构建模型。 7. **UML状态图** - 基本原则:解释了状态图的概念和在系统行为建模中的作用。 - 创建与编辑:指导用户如何创建新的状态图并编辑状态机。 手册内容深入浅出,旨在帮助用户充分利用TwinCAT3的UML功能,实现高效、清晰的自动化系统设计。通过学习和实践,用户能够创建复杂的类图和状态图,从而更好地理解和管理他们的控制系统。
2023-06-03 上传

class PPO(object): def __init__(self): self.sess = tf.Session() self.tfs = tf.placeholder(tf.float32, [None, S_DIM], 'state') # critic with tf.variable_scope('critic'): l1 = tf.layers.dense(self.tfs, 100, tf.nn.relu) self.v = tf.layers.dense(l1, 1) self.tfdc_r = tf.placeholder(tf.float32, [None, 1], 'discounted_r') self.advantage = self.tfdc_r - self.v self.closs = tf.reduce_mean(tf.square(self.advantage)) self.ctrain_op = tf.train.AdamOptimizer(C_LR).minimize(self.closs) # actor pi, pi_params = self._build_anet('pi', trainable=True) oldpi, oldpi_params = self._build_anet('oldpi', trainable=False) with tf.variable_scope('sample_action'): self.sample_op = tf.squeeze(pi.sample(1), axis=0) # choosing action with tf.variable_scope('update_oldpi'): self.update_oldpi_op = [oldp.assign(p) for p, oldp in zip(pi_params, oldpi_params)] self.tfa = tf.placeholder(tf.float32, [None, A_DIM], 'action') self.tfadv = tf.placeholder(tf.float32, [None, 1], 'advantage') with tf.variable_scope('loss'): with tf.variable_scope('surrogate'): # ratio = tf.exp(pi.log_prob(self.tfa) - oldpi.log_prob(self.tfa)) ratio = pi.prob(self.tfa) / (oldpi.prob(self.tfa) + 1e-5) surr = ratio * self.tfadv if METHOD['name'] == 'kl_pen': self.tflam = tf.placeholder(tf.float32, None, 'lambda') kl = tf.distributions.kl_divergence(oldpi, pi) self.kl_mean = tf.reduce_mean(kl) self.aloss = -(tf.reduce_mean(surr - self.tflam * kl)) else: # clipping method, find this is better self.aloss = -tf.reduce_mean(tf.minimum( surr, tf.clip_by_value(ratio, 1.-METHOD['epsilon'], 1.+METHOD['epsilon'])*self.tfadv))

2023-05-31 上传