在每一次调试前,我们要做的工作就是把硬件全部组态正确,网络组建好。此时,才能把程序下载进去进行软硬件的调试。然而,就是这前期的组网问题,往往能够遇到千奇百怪的问题。不管经历过多少的弯路,最终都会把项目调试完成。只不过是顺利不顺利的问题。下面就我经历过的一些小白问题,跟大家分享下。
1、模块已组态,但不可用,预设值/实际值不匹配:(插入的模块和组态的模块类型不同) 期望的型号 ,与当前型号不匹配或是 不可用。
这样的故障最为常见了。那么,很有可能的原因:(1)就是检查组态型号和实际模块型号是否一致。不过这样的原因很小,因为大家做工程都很谨慎,(2)就是硬件上有些模块没能正确连接上,导致故障出现。也会出现此类故障现象。我遇到a.西门子ET200S上的高性能直接启动器模块与底板插接处,因为接线工的暴力,竟然把链接处的插针压弯了。表面上安装到位了。实际没有到位。这样导致ET200S故障,导致CPU也会出现上面的故障。当时,换了模块也不行,换了底板才发现插针已经损坏。b.实际安装的模块数量比软件组态中的数量模块多一个,但是多这个模块没有用,只是备用。但是,软件中的硬件组态下载到CPU中,硬件多一个模块,虽然没有接外边传感信号,但是它在ET200S接口模块上。这个故障让我很郁闷。大致一看,没有问题。都是正确的。但是,仔细检查,少组态了一个备用的模块。同样也会出现上面的故障信息。
2、针对总线没有连通,我遇到的情况跟大家分享下。
(1)ProfiNet网络不能正常连接
a、网线硬件连接就是错误的。由于接线都是接线工来操作。根据在线诊断,定位故障的子站或是分站的设备。 我都是再另外做一根长的网线,单独拉一根到出故障的设备上面,进行检测。直接判断出,网线的硬件接线错误。b.干扰问题所致。当时,我的网络总线布置是分站和变频器走在一路上面,星型连接。每一路上面都是ET200S子站和变频器。当时组态没有问题,但是真正运行时候,就出现网络故障。后来在网络布置上进行更改,一路上把子站放一路,把变频器放一路,这样重新布置网络,重新布线,避免了上面的问题。
(2)ProfiBus网络不能正常连接
a.设备初期运行正常,运行了半年之后,就总是出现丢站的现象。当时,以为是干扰所致,就把所有屏蔽做了检测和修改。故障仍然出现。总线电缆也是西门子原装的。后来就更改网络结构。把CPU上的DP接口放在总线的中间,终端电阻打到OFF,然后,两边再连接其他DP站。原来是CPU放在DP总线的开始端,这样经过更改之后,故障不出现了。这根通讯的据率和速率有关系导致这个故障出现。
b、DP总线一直故障,连接不上。从硬件检查,包括DP设备上拨码开关。软件参数的检查都没有问题。但是始终通讯不上。这个故障让我折腾很长时间才找出问题。当时,也是把通讯电缆和动力电缆分开布线,降低通讯速率,终端电阻检查,屏蔽接线的检查。都没有问题。
原来是DP接头安放的位置不对所致的。 我CPU下挂了机器人。机器人对CPU来说是从站,但是机器人自身有下挂了ET200L作为这个模块的主站。这样,机器人作为CPU从站,作为ET200L模块的主站。DP总线需要两个DP接头,一个是从CPU过来的,一个是从ET200L过来。都要接在机器人上安装的CP5614 A2这个通讯卡上面。同时,要保证机器人内部通讯参数配置正确,I.O驱动配置正确。以为这方面原因,折腾来折腾去的。反复配置断电重启。都不行。看终端电阻的位置也都正确。后来静心想了下,漏 一个环节,因为接线安装都是工人在操作。我一看DP接头硬件安装位置机不对,导致整个DP总线就不能通讯。后来把两个DP接头在机器人控制柜内换下位置就全部好了。
上面是我们都经常在调试前遇到小问题,只是我们做调试前,细心点,冷静点,都能把这些问题快速解决。
请问PID控制中,当输出超出范围后执行 MX = 1.0 - (MPn + MDn ) 和MX = - (MPn + MDn),这两条算法的作用是什么呢?”
答:这两个公式用来对PID的输出限幅。S7-200的系统手册的PID“变量和范围”中有下面的内容:
“输出变量是由PID运算产生的,所以在每一次PID运算完成之后,需更新回路表中的输出值,输出值被限定在0.0~1.0之间。
如果使用积分控制,积分项前值要根据PID运算结果更新。这个更新了的值用作下一次PID运算的输入,当计算输出值超过范围(大于1.0或小于0.0),那么积分项前值必须根据下列公式进行调整:
MX=1.0 –(MPn + MDn) 当计算输出Mn > 1.0
或
MX= –(MPn + MDn) 当计算输出Mn < 0.0
其中:
MX是调整过的偏差的数值
MPn是在采样时间n时回路输出比例项数值
MDn是在采样时间n时回路输出微分项数值
Mn是在采样时间n时回路输出数值”
在系统手册的积分项部分,对积分项公式中的MX的解释如下:“MX是在采样时刻n–1时的积分项的数值(也称为积分和或偏差)。”
“积分和(MX)是所有积分项前值之和。在每次计算出MIn之后,都要用MIn去更新MX。”
可见可以将MX视为PID的输出的积分部分MIn。PID的输出Mn= MPn + MIn + MDn= MPn + MX + MDn
上面的两个公式实际上是用来对PID的输出限幅的。
当Mn > 1.0时,令Mn = MPn + MX + MDn= 1.0,所以MX=1.0 –(MPn + MDn)
当Mn > 0.0时,令Mn = MPn + MX + MDn= 0.0,所以MX= –(MPn + MDn)
S7-200PLC中断优先级和排对等候
优先级是指多个中断事件同时发出中断请求时,CPU对中断事件响应的优先次序。S7-200规定的中断优先由高到低依次是:通信中断、I/O中断和定时中断。每类中断中不同的中断事件又有不同的优先权,如表2所示。
一个程序中总共可有128个中断。S7-200在各自的优先级组内按照先来先服务的原则为中断提供服务。在任何时刻,只能执行一个中断程序。一旦一个中断程序开始执行,则一直执行至完成。不能被另一个中断程序打断,即使是更高优先级的中断程序。中断程序执行中,新的中断请求按优先级排队等候。中断队列能保存的中断个数有限,若超出,则会产生溢出。中断队列的最多中断个数和溢出标志位如表3所示。
表2中断事件及优先级
优先级分组 |
组内优先级 |
中断事件号 |
中断事件说明 |
中断事件类别 |
通信中断 |
0 |
8 |
通信口0:接收字符 |
通信口0 |
0 |
9 |
通信口0:发送完成 |
||
0 |
23 |
通信口0:接收信息完成 |
||
1 |
24 |
通信口1:接收信息完成 |
通信口1 |
|
1 |
25 |
通信口1:接收字符 |
||
1 |
26 |
通信口1:发送完成 |
||
I/O中断
|
0 |
19 |
PTO 0脉冲串输出完成中断 |
脉冲输出 |
1 |
20 |
PTO 1脉冲串输出完成中断 |
||
2 |
0 |
I0.0上升沿中断 |
外部输入 |
|
3 |
2 |
I0.1上升沿中断 |
||
4 |
4 |
I0.2上升沿中断 |
||
5 |
6 |
I0.3上升沿中断 |
||
6 |
1 |
10.0下降沿中断 |
||
7 |
3 |
I0.1下降沿中断 |
||
8 |
5 |
I0.2下降沿中断 |
||
9 |
7 |
I0.3下降沿中断 |
||
10 |
12 |
HSC0当前值=预置值中断 |
高速计数器 |
|
11 |
27 |
HSC0计数方向改变中断 |
||
12 |
28 |
HSC0外部复位中断 |
||
13 |
13 |
HSC1当前值=预置值中断 |
||
14 |
14 |
HSC1计数方向改变中断 |
||
15 |
15 |
HSC1外部复位中断 |
||
16 |
16 |
HSC2当前值=预置值中断 |
||
17 |
17 |
HSC2计数方向改变中断 |
||
18 |
18 |
HSC2外部复位中断 |
||
19 |
32 |
HSC3当前值=预置值中断 |
||
20 |
29 |
HSC4当前值=预置值中断 |
||
21 |
30 |
HSC4计数方向改变 |
||
22 |
31 |
HSC4外部复位 |
||
23 |
33 |
HSC5当前值=预置值中断 |
||
定时中断 |
0 |
10 |
定时中断0 |
定时 |
1 |
11 |
定时中断1 |
||
2 |
21 |
定时器T32 CT=PT中断 |
定时器 |
|
3 |
22 |
定时器T96 CT=PT中断 |
表3 中断队列的最多中断个数和溢出标志位
队列 |
CPU 221 |
CPU 222 |
CPU 224 |
CPU 226和CPU 226XM |
溢出标志位 |
通讯中断队列 |
4 |
4 |
4 |
8 |
SM4.0 |
I/O中断队列 |
16 |
16 |
16 |
16 |
SM4.1 |
定时中断队列 |
8 |
8 |
8 |
8 |
SM4.2 |