发明名称 BP神经网络在S7-300系列PLC中的实现方法
摘要 本发明公开了BP神经网络在S7‑300系列PLC中的实现方法,在S7‑300系列PLC系统中定义12个数据块(DB1~DB12),使其和BP神经网络迭代算式中的输入变量、隐含节点输入、隐含节点输出、输出节点输入、输出变量、权值w<sub>ij</sub>、权值w<sub>jk</sub>、阈值a<sub>j</sub>、阈值b<sub>k</sub>、误差e<sub>k</sub>、学效率η、期望输出等若干变量一一对应,将BP神经网络迭代算式中若干变量的存取操作转化为PLC系统对应数据块中变量的存取操作。使用PLC系统的指令系统,直接实现BP神经网络的迭代运算,通过提供单次迭代、误差限结束、限次结束三种运行模式,以适应PLC系统的多种应用场合,避免BP神经网络的运行时间过长而影响PLC系统的正常扫描功能。
申请公布号 CN104007659B 申请公布日期 2016.08.24
申请号 CN201410230726.4 申请日期 2014.05.28
申请人 重庆科技学院 发明人 胡文金;苏盈盈;汤毅;刘显荣;李太福;范伟
分类号 G05B13/04(2006.01)I 主分类号 G05B13/04(2006.01)I
代理机构 北京鸿元知识产权代理有限公司 11327 代理人 王玉芝;陈英俊
主权项 BP神经网络在S7‑300系列PLC中的实现方法,其特征在于按照以下步骤进行:第一步,在S7‑300系列PLC中定义12个数据块:数据块DB1~DB12分别存放BP神经网络迭代算式中的输入变量、隐含节点输入、隐含节点输出、输出层输入、输出变量、权值w<sub>ij</sub>、权值w<sub>jk</sub>、阈值a<sub>j</sub>、阈值b<sub>k</sub>、误差e<sub>k</sub>、学习效率η和期望输出;第二步,初始化数据块:BP神经网络样本中的输入变量传送到DB1,样本中的输出变量传送到DB12,数据块DB6和DB7中的各变量初值设为零,数据块DB8和DB9中的各变量初值设为0.05,DB11中的学习效率初值设为0.5;第三步,计算隐含层输入:分别从数据块DB1和DB6中取出x<sub>i</sub>和w<sub>ij</sub>,按下式计算隐含节点输入H<sub>Ij</sub>:<maths num="0001"><math><![CDATA[<mrow><msub><mi>H</mi><mrow><mi>I</mi><mi>j</mi></mrow></msub><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msub><mi>w</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><msub><mi>x</mi><mi>i</mi></msub><mo>,</mo><mi>j</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>l</mi><mo>;</mo></mrow>]]></math><img file="FDA0000985696130000011.GIF" wi="773" he="161" /></maths>第四步,计算隐含层输出:分别从数据块DB2和DB8取出H<sub>Ij</sub>和a<sub>j</sub>,按下式计算隐含节点输出H<sub>Oj</sub>:<maths num="0002"><math><![CDATA[<mrow><msub><mi>H</mi><mrow><mi>O</mi><mi>j</mi></mrow></msub><mo>=</mo><mfrac><mn>1</mn><mrow><mn>1</mn><mo>+</mo><msup><mi>e</mi><mrow><mo>-</mo><mrow><mo>(</mo><msub><mi>H</mi><mrow><mi>I</mi><mi>j</mi></mrow></msub><mo>-</mo><msub><mi>a</mi><mi>j</mi></msub><mo>)</mo></mrow></mrow></msup></mrow></mfrac><mo>,</mo><mi>j</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>l</mi><mo>;</mo></mrow>]]></math><img file="FDA0000985696130000012.GIF" wi="822" he="143" /></maths>第五步,计算输出层输入:分别从数据块DB3和DB7中取出H<sub>Oj</sub>和w<sub>jk</sub>,按下式计算输出层的输入P<sub>Ik</sub>:<maths num="0003"><math><![CDATA[<mrow><msub><mi>P</mi><mrow><mi>I</mi><mi>k</mi></mrow></msub><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>l</mi></munderover><msub><mi>H</mi><mrow><mi>O</mi><mi>j</mi></mrow></msub><msub><mi>w</mi><mrow><mi>j</mi><mi>k</mi></mrow></msub><mo>,</mo><mi>k</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>m</mi><mo>;</mo></mrow>]]></math><img file="FDA0000985696130000021.GIF" wi="789" he="162" /></maths>第六步,计算输出层输出:分别从数据块DB4和DB9中取出P<sub>Ik</sub>和b<sub>k</sub>,按下式计算输出变量P<sub>Ok</sub>:P<sub>Ok</sub>=P<sub>Ik</sub>‑b<sub>k</sub> k=1,2,…,m;第七步,计算预测误差:分别从数据块DB5和DB12中取出P<sub>Ok</sub>和y<sub>k</sub>,按下式计算预测误差e<sub>k</sub>:e<sub>k</sub>=y<sub>k</sub>‑P<sub>Ok</sub> k=1,2,…,m;第八步,更新权值w<sub>ij</sub>和w<sub>jk</sub>:分别从数据块DB7、DB11、DB3和DB10中取出w<sub>jk</sub>、η、H<sub>Oj</sub>和e<sub>k</sub>,按下式更新权值w<sub>jk</sub>:w<sub>jk</sub>=w<sub>jk</sub>+ηH<sub>Oj</sub>e<sub>k</sub> j=1,2,…,l;k=1,2,…,m;分别从数据块DB6、DB11、DB3、DB1、DB7和DB10中取出w<sub>ij</sub>、η、H<sub>Oj</sub>、x<sub>i</sub>、w<sub>jk</sub>和e<sub>k</sub>,按下式更新权值w<sub>ij</sub>:<maths num="0004"><math><![CDATA[<mrow><msub><mi>w</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mo>=</mo><msub><mi>w</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mo>+</mo><mi>&eta;</mi><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msub><mi>H</mi><mrow><mi>O</mi><mi>j</mi></mrow></msub><mo>)</mo></mrow><msub><mi>x</mi><mi>i</mi></msub><munderover><mo>&Sigma;</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></munderover><msub><mi>w</mi><mrow><mi>j</mi><mi>k</mi></mrow></msub><msub><mi>e</mi><mi>k</mi></msub><mo>,</mo><mi>i</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>n</mi><mo>;</mo><mi>j</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>l</mi><mo>;</mo></mrow>]]></math><img file="FDA0000985696130000022.GIF" wi="1442" he="150" /></maths>第九步,更新阈值a<sub>j</sub>和b<sub>k</sub>:分别从数据块DB6、DB11、DB3、DB7和DB10中取出w<sub>ij</sub>、η、H<sub>Oj</sub>、w<sub>jk</sub>和e<sub>k</sub>,按下式更新阈值a<sub>j</sub>:<maths num="0005"><math><![CDATA[<mrow><msub><mi>a</mi><mi>j</mi></msub><mo>=</mo><msub><mi>a</mi><mi>j</mi></msub><mo>+</mo><mi>&eta;</mi><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msub><mi>H</mi><mrow><mi>O</mi><mi>j</mi></mrow></msub><mo>)</mo></mrow><munderover><mo>&Sigma;</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></munderover><msub><mi>w</mi><mrow><mi>j</mi><mi>k</mi></mrow></msub><msub><mi>e</mi><mi>k</mi></msub><mo>,</mo><mi>j</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>l</mi><mo>,</mo></mrow>]]></math><img file="FDA0000985696130000031.GIF" wi="1070" he="150" /></maths>分别从数据块DB9和DB10中取出b<sub>k</sub>和e<sub>k</sub>,按下式更新阈值b<sub>k</sub>:b<sub>k</sub>=b<sub>k</sub>+e<sub>k</sub> k=1,2,…,m;第十步,判断循环与结束:PLC系统实现的BP网络程序根据Mode标志的三种取值进行判断,Mode=0为单次迭代运行模式,Mode=1为限次迭代模式,Mode=2为误差限运行模式。
地址 401331 重庆市沙坪坝区大学城东路20号