| 作者 | 主题 |
|---|---|
|
airbusa380 游士 经验值:213 发帖数:5 精华帖:2 |
楼主
主题:被G120的EPOS定位功能搞得焦头烂额,疑似西门子SINAPOS块有BUG,有没有朋友遇到过?
起因:欲使用G120 +CU250S 实现简单定位功能 控制目标描述:控制螺杆升降,手动时使用JOG , 程控时使用绝对定位(下降)和主动回零(上升)----非常简单吧? 因为就只一个变频器,非常简单,所以就想使用这个现成的SINAPOS 功能块来实现,看起来很简单,也因为是个技改项目,没有预先测试的条件,结果疑似碰到了该EPOS功能块的bug! 问题出现在主动回零部分: 在 axisRef 管脚为1的情况下,置位excute mode ,变频器直接卡死,此时AxisRef被复位,同时actpostion 被置为0 ,(此时,整个sinapos块无任何故障表现,通过报文查看变频器为运行状态且无任何故障)。 最后,需要将excutmode 复位, 在下一次执行的时候 主动回零模式才运行。 其实也就是需要AxisRef=0的时候主动回零模式才能运行。 这个问题造成我在现场焦头烂额,百思不得其解,我反复怀疑自己程序都没有怀疑西门子的sinapos块。最后静下心来在办公室搭了一套设备单独管脚上监控修改发现了此问题 现在虽通过程序二次激发实现了主动回零,但是Actpostion的值在第一次激发的时候被直接改为了0,然后运动的时候再一直负数减小直到碰到参考点再置位为0,十分的不好。 看起来这个SINAPOS块的内部回零时序有问题,如果诚如我说的这番,希望西门子能够修正! 我气死了,才??这么多,真的很生气,困扰了我很多天 |
|
hhyx9 奇侠 经验值:8510 发帖数:848 精华帖:20 |
10楼
主题:回复:被G120的EPOS定位功能搞得焦头烂额,疑似西门子SINAPOS块有BUG,有没有朋友遇到过?刚才做了下测试,此现象的原因找到了,其实很简单,就是SINA_POS内写了在ZSW1.%X11=TRUE(状态字已回参标志位)时,程序内复位ExecuteMode,导致STW2.%X11无法被触发(控制字回参启动命令),以至于无法执行回参动作。 将原程序内的 IF #sxRecvBuf.ZSW1.%X11 OR NOT #ExecuteMode THEN #sbExecute := FALSE; END_IF; 改为 IF NOT #ExecuteMode THEN #sbExecute := FALSE; END_IF; 即可进行多次回参 这个问题很难被定义为“故障”、“缺陷”或BUG,我测试了FB284、FB300、BPOS,都是这个情况,更多感觉是编程人员有意为之,不允许二次回参,只有当原参考点丢失后才能再次执行 原触发逻辑 现逻辑 回参控制字 测试程序 另将SINA_POS中ExecuteMode触发相关原程序段及注释贴在这里 // Betriebsart aktivieren erkennen (RQ 3901129, RQ 4094299) IF #ExecuteMode AND NOT #sbExecuteEdge THEN(ExecuteMode上升沿时可触发静态变量#sbExecute置位,#sbExecute为后续程序内实际使用的触发命令) #sbExecute := True; #siExecuteCyc := 0;(复位触发时间计时器) ELSIF #ActMode <> #ModePos THEN(如果当前实际激活的控制模式不等于输入的实参控制模式,则取消触发激活) #sbExecute := FALSE; ELSIF #siExecuteCyc > (2 * #siCycWait) THEN(当触发命令持续时间大于2*#siCycWait时根据不同的控制模式对ExecuteMode做对应处理,#siCycWait缺省值5) IF #ModePos <> 4 THEN(如果控制模式不为4主动回参,则复位#sbExecute触发指令,因为除了Mode=4外,其它Mode的#ExecuteMode都是给定脉冲指令即可) #sbExecute := FALSE; ELSE(如果控制模式为4,则在已回参和外部输入实参被复位的情况下,复位#sbExecute) IF #sxRecvBuf.ZSW1.%X11 OR NOT #ExecuteMode THEN #sbExecute := FALSE; END_IF; END_IF; ELSE ; // not used END_IF;
IF #siExecuteCyc > 100 THEN #siExecuteCyc := 0; ELSE #siExecuteCyc := #siExecuteCyc + 1;(复位触发时间计时器循环累加) END_IF;
// Verfahrauftrag aktivieren Flanke merken #sbExecuteEdge := #ExecuteMode;(#ExecuteMode,边沿触发状态记录) |
|
airbusa380 游士 经验值:213 发帖数:5 精华帖:2 |
14楼
主题:回复:被G120的EPOS定位功能搞得焦头烂额,疑似西门子SINAPOS块有BUG,有没有朋友遇到过?哇,过了几天抽空再来看,终于看到了大神专业的回复。其实抽空另搭设备试验那天的后半段,我还是想能够解决在第一次触发时,Actposition直接被置0的问题,通过监控背景DB注意到了ZSW1.%X11这个点,但是通过外围语句复位了一下,这个点,没什么益助。因为我没有办法解开FB300这个技术保护块,加之时间有限,最终还是采用了二次触发的归零的方式避免了设备“呆卡”。最后,关于这个问题时设计人员有意为之的说法我不能苟同,我平时主要从事过程控制的相关应用,虽然时第一次使用EPOS,但认为就是一个欠考虑的Bug,理由如下:
最后请教,大神时怎么解开技术保护锁的?我猜到了内部并摸索了一点点,但是看不了块内语句,没有办法修正,从而导致目前回零时Actposition还是先归0,再负值增大运行,然后再归0,如果可以,我还是想修正这个问题。 |
|
无名的人 至圣 经验值:12386 发帖数:1138 精华帖:55 |
15楼
主题:回复:被G120的EPOS定位功能搞得焦头烂额,疑似西门子SINAPOS块有BUG,有没有朋友遇到过?之前我遇到过类似的问题 使用回零指令后回零不成功但回零标志位丢了 后来看了一下S120的功能图中有关EPOS状态机的部分 发现是自己的时序中出了问题 EPS要从普通状态切换到回零状态有一点是要求轴处于静止状态 但是这个静止状态的判断转速 里面就有门道了。 另外 sinapos使用有要求 mode切换完要保持一定时间 建议10ms 后再触发executemode executemode同样保持10ms以上指令才能保证给到变频器执行
烟锁池塘柳 桃燃锦江堤
|
|
无名的人 至圣 经验值:12386 发帖数:1138 精华帖:55 |
17楼
主题:回复:被G120的EPOS定位功能搞得焦头烂额,疑似西门子SINAPOS块有BUG,有没有朋友遇到过?
烟锁池塘柳 桃燃锦江堤
|