A. SAC算法解析
上一篇文章介绍了利用确定策略来解决连续控制问题的DDPG,现在再来介绍一种非常牛的用随机策略来做连续控制的方法 Soft Actor Critic (SAC) 。它是一种以off-policy的方式来优化随机策略的算法,它的核心特点是 熵正则化 , 策略的训练在最大化预期回报和最大化熵之间作了个权衡,在这一点上实际也跟exploration还是exploitation有重大关系,增加熵会导致更多探索,这可以加速之后的学习,还可以防止策略过早地收敛到一个糟糕的局部最优。
为了防止有些人不太清楚熵的概念,在正式开始讲SAC之前,我稍微介绍一下熵的概念,以及随机策略的好处。
这里的熵指的是信息熵 ,它代表一个随机变量 所有可能取值的自信息 的加权求和:
正如上式所示,随机变量越是随机,熵就越大。根据热力学第二定律,自然界本身无时无刻不处在于一个熵增的过程之中,即不断走向混沌,而人类的奋斗进程则是对抗自然的熵减过程,他期望变得明确和有序,强化学习的过程也是如此。
一般的,强化学习的目标在于最大化奖励,即最大化动作状态价值 ,确定策略可以直接选择最大 的 来行动,但是这样就会使得操作模式是固化的,比如训练一个机械臂去捡东西,实际运动轨迹可以多种多样,而确定策略就会使这个动作变得很单调。 并且如果是在对抗的环境中,这种固定化的操作也容易被对手利用而存在漏洞,而基于策略 随机采样的动作 来行动就可以有效避免这一点,并且 的熵越大,也便代表动作越随机,越能在同一情况下做出不同的动作,让对手无法轻易预测,当然在训练时鼓励熵增带来的探索优化的好处也是不言而喻的。
actor-critic方法依赖于策略梯度,目标是利用梯度上升来让 最大化,因为期望不好求,于是就用蒙特卡洛方法来近似:
假设动作 是 维的,那么策略 使用 个高斯分布 连乘的方式来近似 :
而其中的 和 使用神经网络来近似:
相对于A3C之类的算法只给策略网络增加了熵正则,SAC给价值网络也增加了熵正则,这样鼓励产生更多的状态空间,进一步增加了探索性,使得模型更具鲁棒性。它的做法是通过修改了普通策略学习的目标函数,在每一步的回报中增加了策略的熵,于是目标就变成了
于是策略梯度就变成了:
然后训练方式基本和普通的actor-critic架构一致...
如果只是像上面那样的网络来训练,很明显会存在高估的问题,在最大化Q值时会导致高估,而在通过自身网络来计算TD目标的时候又将高估无限传导进一步导致了高估。因此,为了解决高估问题,我们必须要斩断这种传导以及最大化带来的高估。SAC采用了一个一个类似TD3算法中的clipped double-Q 技巧。
如上图所示,SAC使用两个Q网络,并通过取最小的Q值的方式来避免最大化带来的高估,并且使用延迟的价值网络(通过Polyak平均)来缓解bootstraping带来的高估无限传递。具体是这样一个训练过程:
另外,注意一点,上面提到的那个策略熵平衡系数 可以手工设置超参数,也可以使用自动的方式调整的,工业上倾向于自动的方式。
B. 杭州优稳自动化系统有限公司的技术带头人
孙优贤教授,中国工程院院士,浙江大学工业自动化国家工程研究中心主任,浙江大学控制工程国家实验室主任,中国自动化学会理事长,控制科学与工程国家重点学科学术带头人。
王文海教授,浙江大学信息学院控制系研究员; 参与20项国家级重点科技攻关项目;获“2013国家科技进步奖一等奖”、“2006国家科技进步二等奖”、“2007国家教育部科技进步一等奖”、“国家八五攻关重大科技成果奖”、“国家教委2004科技进步二等奖”、“浙江省2004科技进步一等奖”、“浙江省2005科技进步一等奖”。现任中国自动化学会理事;中国自动化学会专家咨询工作委员会常委;浙江省自动化学会/浙江省仪器仪表学会常务理事;PLCopenChina常务理事;SAC/TC124/SC2控制仪表及装置标委会委员;浙大ASEA主任。
C. 请问谁有西门子PLC的详细教程啊,谢谢各位大哥大姐!
我有一些西门子的学习资料,供你下载,希望对你有所帮助。STEP 7编程软件的使用方法
4.1.1 STEP 7概述
STEP 7用于S7,M7,C7,WinAC的编程、监控和参数设置,基于STEP 7 V5.2版。
STEP 7具有以下功能:硬件配置和参数设置、通信组态、编程、测试、启动和维护、文件建档、运行和诊断功能等。
4.1.2 STEP 7的硬件接口
PC./MPI适配器+RS-232C通信电缆。
计算机的通信卡CP 5611(PCI卡)、CP 5511或CP 5512(PCMCIA卡)将计算机连接到MPI或PROFIBUS网络。计算机的工业以太网通信卡CP 1512(PCMCIA卡)或CP 1612(PCI卡),通过工业以太网实现计算机与PLC的通信。
STEP 7的授权在软盘中。STEP 7光盘上的程序AuthorsW用于显示、安装和取出授权。
4.1.4 STEP 7的编程功能
1.编程语言
3种基本的编程语言:梯形图(LAD)、功能块图(FBD) 和语句表(STL)。
S7-SCL (结构化控制语言) ,S7-GRAPH(顺序功能图语言),S7 HiGraph和CFC。
2.符号表编辑器
3.增强的测试和服务功能
设置断点、强制输入和输出、多CPU运行(仅限于S7-400),重新布线、显示交叉参考表、状态功能、直接下载和调试块、同时监测几个块的状态等。
程序中的特殊点可以通过输入符号名或地址快速查找。
4.STEP 7的帮助功能
按F1键便可以得到与它们有关的在线帮助。菜单命令“Help→contents”进入帮助窗口。
4.1.5 STEP 7的硬件组态与诊断功能
1.硬件组态
(1)系统组态:选择硬件机架,模块分配给机架中希望的插槽。
(2)CPU的参数设置。
(3)模块的参数设置。可以防止输入错误的数据。
2.通信组态
(1)网络连接的组态和显示;
(2)设置用MPI 或PROFIBUS-DP连接的设备之间的周期性数据传送的参数。
(3)设置用MPI、PROFIBUS或工业以太网实现的事件驱动的数据传输,用通信块编程。
3.系统诊断
(1)快速浏览CPU的数据和用户程序在运行中的故障原因。
(2)用图形方式显示硬件配置、模块故障;显示诊断缓冲区的信息等。
4.2 硬件组态与参数设置
4.2.1 项目的创建与项目的结构
插入新的对象的方法。
4.2.2 硬件组态
图4-2 S7-300的硬件组态窗口
4.2.3 CPU模块的参数设置
图4-3 CPU属性设置对话框
表4-1 时钟存储器各位对应的时钟脉冲周期与频率
位 7 6 5 4 3 2 1 0
周期(s) 2 1.6 1 0.8 0.5 0.4 0.2 0.1
频率(Hz) 0.5 0.625 1 1.25 2 2.5 5 10
4.2.4 数字量输入模块的参数设置
在CPU处于STOP模式下进行。设置完后下载到CPU中。当CPU从STOP模式转换为RUN模式时,CPU将参数传送到每个模块。
图4-4 数字量输入模块的参数设置
4.2.5 数字量输出模块的参数设置
图4-5 数字量输出模块的参数设置
4.2.6 模拟量输入模块的参数设置
1.模块诊断与中断的设置
8通道12位模拟量输入模块(订货号为6ES7 331-7KF02-0AB0)的参数设置。
图4-6 模拟量输入模块的参数设置
2.模块测量范围的选择
“4DMU”是4线式传感器电流测量,“R-4L”是4线式热电阻,“TC-I”是热电偶,“E”表示测量种类为电压。
未使用某一组的通道应选择测量种类中的“Deactivated”(禁止使用)。
3.模块测量精度与转换时间的设置
SM 331采用积分式A/D转换器,积分时间直接影响到A/D转换时间、转换精度和干扰抑制频率。为了抑制工频频率,一般选用20ms的积分时间。
表4-2 6ES7 331-7KF02模拟量输入模块的参数关系
积分时间(ms) 2.5 16.7 20 100
基本转换时间(ms,包括积分时间) 3 17 22 102
附加测量电阻转换时间(ms) 1 1 1 1
附加开路监控转换时间(ms) 10 10 10 10
附加测量电阻和开路监控转换时间(ms) 16 16 16 16
精度(位,包括符号位) 9 12 12 14
干扰抑制频率(Hz) 400 60 50 10
模块的基本响应时间(ms,所有通道使能) 24 136 176 816
4.设置模拟值的平滑等级
在平滑参数的四个等级(无,低,平均,高)中进行选择。
4.2.7 模拟量输出模块的参数设置
CPU进入STOP时的响应:不输出电流电压(0CV)、保持最后的输出值(KLV)和采用替代值(SV)。
4.3.1 符号表
共享符号(全局符号)在符号表中定义,可供程序中所有的块使用。
在程序编辑器中用 “View→Display with→Symbolic Representation”选择显示方式。
2.生成与编辑符号表
CPU将自动地为程序中的全局符号加双引号,在局部变量的前面自动加“#”号。生成符号表和块的局域变量表时不用为变量添加引号和#号。
图4-7 符号表
数据块中的地址(DBD,DBW,DBB和DBX)不能在符号表中定义。应在数据块的声明表中定义。
用菜单命令“View→Columns R, O, M, C, CC”可以选择是否显示表中的“R, O, M, C, CC”列,它们分别表示监视属性、在WinCC里是否被控制和监视、信息属性、通信属性和触点控制。可以用菜单命令“View→Sort”选择符号表中变量的排序方法。
3.共享符号与局域符号,后者不能用汉字。
4.过滤器(Filter)
在符号表中执行菜单命令“View→Filter”,“I*”表示显示所有的输入,“I*.*”表示所有的输入位,“I2.*”表示IB2中的位等。
4.3.2 逻辑块
逻辑块包括组织块OB、功能块FB和功能FC。
1.程序的输入方式:增量输入方式或源代码方式(或称文本方式、自由编辑方式)。
2.生成逻辑块
图4-8 梯形图编辑器
6.网络
执行菜单命令“Insert→Network”,或点击工具条中相应的图标,在当前网络的下面生成一个新的网络。菜单命令“View→Display→Comments”用来激活或取消块注释和网络注释。
可以用剪贴板在块内部和块之间复制和粘贴网络,可用Ctrl键。
7.打开和编辑块的属性
菜单命令“File→Properties”来查看和编辑块属性。
8.程序编辑器的设置
进入程序编辑器后用菜单命令“Option→Customize”打开对话框,可以进行下列设置:
(1)在“General”标签页的“Font”设置编辑器使用的字体和字符的大小。
(2)在“STL”和“LAD/FDB”标签页中选择这些程序编辑器的显示特性。
(3)在“Block”(块)标签页中,可以选择生成功能块时是否同时生成背景数据块、功能块是否有多重背景功能。
(4)在“View”选项卡中的“View after Open Block”区,选择在块打开时显示的方式。
9.显示方式的设置
执行View菜单中命令,放大、缩小梯形图或功能块图的显示比例。
菜单命令“View→Display→Symbolic Representation”,切换绝对地址和符号地址方式。
菜单命令“View→Display→Symbol information”用来打开或关闭符号信息。
图4-9 符号信息
4.4 S7-PLCSIM仿真软件在程序调试中的应用
4.4.1 S7-PLCSIM的主要功能
在计算机上对S7-300/400 PLC的用户程序进行离线仿真与调试。
模拟PLC的输入/输出存储器区,来控制程序的运行,观察有关输出变量的状态。
在运行仿真PLC时可以使用变量表和程序状态等方法来监视和修改变量。
可以对大部分组织块(OB)、系统功能块(SFB)和系统功能(SFC)仿真。
4.4.2 使用S7-PLCSIM仿真软件调试程序的步骤
(1)在STEP 7编程软件中生成项目,编写用户程序。
(2)打开S7-PLCSIM窗口,自动建立了STEP 7与仿真CPU的连接。
仿真PLC的电源处于接通状态,CPU处于STOP模式,扫描方式为连续扫描。
(3)在管理器中打开要仿真的项目,选中“Blocks”对象,将所有的块下载到仿真PLC。
(4)生成视图对象。
(5)用视图对象来模拟实际PLC的输入/输出信号,检查下载的用户程序是否正确。
4.4.3 应用举例
电动机串电阻降压起动。速度监视。
图4-11 S7-PLCSIM仿真窗口
4.4.4 视图对象与仿真软件的设置与存档
1.CPU视图对象
2.其他视图对象
通用变量(Generic Variable)视图对象用于访问仿真PLC所有的存储区(包括数据块)。垂直位(Vertical Bits)视图对象可以用绝对地址或符号地址来监视和修改I,Q,M等存储区。
累加器与状态字视图对象用来监视CPU中的累加器、状态字和地址寄存器AR1和AR2。
块寄存器视图对象用来监视数据块地址寄存器的内容,当前和上一次打开的逻辑块的编号,以及块中的步地址计数器SAC的值。
嵌套堆栈(Nesting Stacks)视图对象用来监视嵌套堆栈和MCR(主控继电器)堆栈。
定时器视图对象标有“T=0”的按钮用来复位指定的定时器。
3.设置扫描方式
用“Execute”菜单中的命令选择单次扫描或连续扫描。
4.设置MPI地址
菜单命令“PLC→MPI Address…”设置仿真PLC在指定的网络中的节点地址。
5.LAY文件和PLC文件
LAY文件用于保存仿真时各视图对象的信息;PLC文件用于保存上次仿真运行时设置的数据和动作等。退出仿真软件时将会询问是否保存LAY文件或PLC文件。一般选择不保存。
4.5 STEP 7与PLC的在线连接与在线操作
4.5.1 装载存储器与工作存储器
系统数据(System Data)包括硬件组态、网络组态和连接表,也应下载到CPU。
下载的用户程序保存在装载存储器的快闪存储器(FEPROM)中。CPU电源掉电又重新恢复时,FEPROM中的内容被重新复制到CPU存储器的RAM区。
4.5.2 在线连接的建立与在线操作
1.建立在线连接
通过硬件接口连接计算机和PLC必须,然后通过在线的项目窗口访问PLC。
管理器中执行菜单命令“View→Online”、“View→Offline”进入离线状态。
在线窗口显示的是PLC中的内容,离线窗口显示的是计算机中的内容。
如果PLC与STEP 7中的程序和组态数据是一致的,在线窗口显示的是PLC与STEP 7中的数据的组合。
2.处理模式与测试模式
在设置CPU属性的对话框中的“Protection”(保护)标签页选择处理(Process)模式或测试(Test)模式。
3.在线操作
进入在线状态后,执行菜单命令“PLC →Diagnostics/Settings”中不同的子命令。
进入在线状态后,“PLC”主菜单中的命令功能。
设置了口令后,执行在线功能时,会显示出“Enter Password”对话框。若输入的口令正确,就可以访问该模块。用菜单命令“PLC→Access Rights→ Setup”输入口令。
4.5.3 下载与上载
1.下载的准备工作
计算机与CPU之间必须建立起连接,要下载的程序已编译好;在RUN-P模式一次只能下载一个块,建议在STOP模式下载。
在保存块或下载块时,STEP 7首先进行语法检查,应改正检查出来的错误。下载前应将CPU中的用户存储器复位。可以用模式选择开关复位,CPU进入STOP模式,再用菜单命令“PLC→Clear/Reset”复位存储器。
2.下载的方法
(1)在离线模式下载
在管理器的块工作区选择块,可用Ctrl键和Shift键选择多个块,用菜单命令“PLC→Download”将被选择的块下载到CPU。在管理器左边的目录窗口中选择Blocks对象,下载所有的块和系统数据。
对块编程或组态硬件和网络时,在当时主窗口,用菜单命令“PLC→Download”下载当前正在编辑的对象。
(4) 上载程序
可以用“PLC→Upload”命令从CPU的RAM装载存储器中,把块的当前内容上载到计算机打开的项目中。
4.6 用变量表调试程序
4.6.1 系统调试的基本步骤
首先进行硬件调试,可以用变量表来测试硬件,通过观察CPU模块上的故障指示灯,或使用4.8节介绍的故障诊断工具来诊断故障。
下载程序之前应将CPU的存储器复位,将CPU切换到STOP模式,下载用户程序时应同时下载硬件组态数据。
可以在OB1中逐一调用各程序块,一步一步地调试程序。
最先调试起动组织块OB100,然后调试FB和FC。应先调试嵌套调用最深的块,例如首先调试图4-13中的FB1。调试时可以在完整的OB1的中间临时插入BEU(块无条件结束)指令,只执行BUE指令之前的部分,调试好后将它删除掉。
最后调试不影响OB1的循环执行的中断处理程序,或者在调试OB1时调试它们。
4.6.2 变量表的基本功能
变量表可以在一个画面中同时监视、修改和强制用户感兴趣的全部变量。一个项目可以生成多个变量表。变量表的功能:
监视(Monitor)变量、修改(Modify)变量、对外设输出赋值、强制变量、定义变量被监视或赋予新值的触发点和触发条件。
4.6.3 变量表的生成
1.生成变量表的几种方法
(1)在管理器中用生成新的变量表。
(3)在变量表编辑器中,可以用主菜单“Table”生成一个新的变量表。
2.在变量表中输入变量
可以从符号表中拷贝地址,将它粘贴到变量表。
IW2用二进制数(BIN)可以同时显示和分别修改 I 2.0~I 3.7这十六点数字量输入变量。
图4-14 变量表
4.6.4 变量表的使用
1.建立与CPU的连接
2.定义变量表的触发方式
图4-15 定义变量表的触发方式
用菜单命令“Variable→Trigger”打开图4-15中的对话框选择触发方式。
3.监视变量
用菜单命令“Variable→Update Monitor Values”对所选变量的数值作一次立即刷新。
4.修改变量
在STOP模式修改变量时,各变量的状态不会互相影响,并且有保持功能。
在RUN模式修改变量时,各变量同时又受到用户程序的控制。
5.强制变量
强制变量操作给用户程序中的变量赋一个固定的值,不会因为用户程序的执行而改变。
图4-16 强制数值窗口
强制作业只能用菜单命令“Variable→Stop Forcing”来删除或终止。
4.7 用程序状态功能调试程序
4.7.1 程序状态功能的起动与显示
1.起动程序状态
进入程序状态的条件:经过编译的程序下载到CPU;打开逻辑块,用菜单命令“Debug→Monitor”进入在线监控状态;将CPU切换到RUN或RUN-P模式。
2.语句表程序状态的显示
图4-17 用程序状态监视语句表程序
从光标选择的网络开始监视程序状态。右边窗口显示每条指令执行后的逻辑运算结果(RLO)和状态位STA(Status)、累加器1(STANDARD)、累加器2(ACCU 2)和状态字(STATUS…)。用菜单命令“Options→Customize”打开的对话框分STL标签页选择需要监视的内容,用LAD/FBD标签页可以设置梯形图(LAD)和功能块图(SFB)程序状态的显示方式。
3.梯形图程序状态的显示
LAD和FBD中用绿色连续线来表示状态满足,即有“能流”流过,见图4-18左边较粗较浅的线;用兰色点状线细表示状态不满足,没有能流流过;用黑色连续线表示状态未知。
图4-18 梯形图程序状态的显示
梯形图中加粗的字体显示的参数值是当前值,细体字显示的参数值来自以前的循环。
4.使用程序状态功能监视数据块
4.7.2 单步与断点功能的使用
进入RUN或RUN-P模式后将停留在第一个断点处。单步模式一次只执行一条指令。
程序编辑器的“Debug(调试)”菜单中的命令用来设置、激活或删除断点。执行菜单命令“View>Breakpoint Bar”后,在工具条中将出现一组与断点有关的图标。
1.设置断点与进入单步模式的条件
(1)只能在语句表中使用单步和断点功能。
(2) 执行菜单命令“Options → Customize”,在对话框中选择STL标签页,激活“Activate new breakpoints immediately(立即激活新断点)”选项。
(3)必须用菜单命令“Debug>Operation”使CPU工作在测试(Test)模式。
(4)在SIMATIC管理器中进入在线模式,在线打开被调试的块。
(5)设置断点时不能起动程序状态(Monitor)功能。
(6)STL程序中有断点的行、调用块的参数所在的行、空的行或注释行不能设置断点。
2.设置断点与单步操作
在菜单命令“Debug →Breakpoints Active”前有一个“√”(默认的状态),表示断点的小圆是实心的。执行该菜单命令后“√”消失,表示断点的小圆变为空心的。要使断点起作用,应执行该命令来激活断点。
图4-19 断点与断点处CPU寄存器和状态字的内容
将CPU切换到RUN或RUN-P模式,将在第一个表示断点的紫色圆球内出现一个向右的黄色的箭头(见图4-19),表示程序的执行在该点中断,同时小窗口中出现断点处的状态字等。执行菜单命令“Debug→Execute Next Statement”,黄色箭头移动到下一条语句,表示用单步功能执行下一条语句。执行菜单命令“Debug→ Execute Call(执行调用)”将进入调用的块。块结束时将返回块调用语句的下一条语句。
为使程序继续运行至下一个断点,执行菜单命令“Debug → Resume(继续)”。
菜单命令“Debug→Delete Breakpoint”删除一个断点,菜单命令“Debug→Delete All Breakpoint”删除所有的断点。执行菜单命令“Show Next Breakpoint”,光标跳到下一个断点。
4.8 故障诊断
4.8.1 故障诊断的基本方法
图4-20 诊断符号
在管理器中用 “View→Online”打开在线窗口。查看是否有CPU显示诊断符号。
4.8.2 模块信息在故障诊断中的应用
1.打开模块信息窗口
建立在线连接后,在管理器中选择要检查的站,执行菜单命令“PLC→Diagnostics/ Settings→Mole Information”,显示该站中CPU模块的信息。诊断缓冲区(Diagnostic Buffer)标签页中,给出了CPU中发生的事件一览表。
图4-21 CPU模块的在线模块信息窗口
最上面的事件是最近发生的事件。因编程错误造成CPU进入STOP模式,选择该事件,并点击“Open Block”按钮,将在程序编辑器中打开与错误有关的块,显示出错的程序段。
4.8.3 用快速视窗和诊断视窗诊断故障
1.用快速视窗诊断故障
管理器中选择要检查的站,用命令“PLC→Diagnostics/Settings→Hardware Diagnose”打开CPU的硬件诊断快速视窗(Quick View),显示该站中的故障模块。用命令“Option→Customize”,在打开的对话框的“View”标签页中,应激活“诊断时显示快速视窗”。
图4-22 快速视窗
2.打开诊断视窗
诊断视窗实际上就是在线的硬件组态窗口。在快速视窗中点击“Open Station Online”(在线打开站)按键,打开硬件组态的在线诊断视窗。
在管理器中与PLC建立在线连接。打开一个站的“Hardware”对象,可以打开诊断视窗。
3.诊断视窗的信息功能
诊断视窗显示整个站在线的组态。用命令“PLC>Mole Information”查看其模块状态。
D. SAC官网,全新的计算方式带来更好管理
人类是在不断地前进的,人类研发出来的每一项成果都有造福于民,而区块链技术也是一样的,它的出现解决了网络数据安全的问题,令无数的企业拍手称赞。如果说不了解区块链技术的人们可以到网络上面去搜索SAC官网,上面有对于智能应用链的详细的介绍,这种全新的计算方式为用户们带去更好的管理体验。SAC官网推出的SAC智能应用链可以说是世界领先的全新计算方式,深的世界各国互联网企业的认同,其中的区块链技术就是令块链式的数据结构来验证和存储数据,使用分布节点共识算法来生成和更新数据,再加上密码学方式来充分的确保数据的传输以及访问的安全。其自动化的脚本代码组成的智能合约可以编程和操作数据,是一种全新的分布式的基础架构和计算方式。其中的所谓共识机制就是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。SAC官网智能应用链基础架构则是有数据层、网络层、共识层、激励层、合约层、应用层六部分组成,其中每一层都具有各自的功能,具体数据层有封装底层数据区块和相关数据加密以及时间戳等技术;网络层是组网、数据传播、数据验证机制等;共识层主要封装网络节点的各类共识算法;激励层将经济因素集成到区块链技术体系中去;合约层主要封装各类脚本、算法和智能合约;应用层则封装区块链的各种应用场景和案例。