技术论坛

 被G120的EPOS定位功能搞得焦头烂额,疑似西门子SINAPOS块有BUG,有没有朋友遇到过?

返回主题列表
作者 主题
airbusa380
游士

经验值:213
发帖数:5
精华帖:2
楼主    2025-10-30 18:19:22
主题:被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楼    2025-11-08 23:24:21
精华帖  主题:回复:被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楼    2025-11-12 08:39:10
精华帖  主题:回复:被G120的EPOS定位功能搞得焦头烂额,疑似西门子SINAPOS块有BUG,有没有朋友遇到过?

哇,过了几天抽空再来看,终于看到了大神专业的回复。其实抽空另搭设备试验那天的后半段,我还是想能够解决在第一次触发时,Actposition直接被置0的问题,通过监控背景DB注意到了ZSW1.%X11这个点,但是通过外围语句复位了一下,这个点,没什么益助。因为我没有办法解开FB300这个技术保护块,加之时间有限,最终还是采用了二次触发的归零的方式避免了设备“呆卡”。最后,关于这个问题时设计人员有意为之的说法我不能苟同,我平时主要从事过程控制的相关应用,虽然时第一次使用EPOS,但认为就是一个欠考虑的Bug,理由如下:

  1. 我收集的FB284有关的文档中,均未有相关的题注

  2. 首次触发时,控制字,状态字均未有故障提示,通过状态字查看,变频器还是出于无故障的运行状态,但是电机就是不动作,如果设计人员有意为之,则不至于出现这种“呆卡”状态,不提示故障,做个防呆也不至于驱动一直在运行中。就是逻辑判断问题让程序走飞了。

  3. 根据公开资料,绝对定位的运行模式其前置条件之一就是必须已回参或编码器已被校正,那么按此要求,显然与回参逻辑形成了一对矛盾,以我的一ing用为例:导致在使用了绝对定位后,至少需要触发两次回参且丧失了正确的actposition值才能启动回参,亦或者要整柜断电才能一次性触发回参?

最后请教,大神时怎么解开技术保护锁的?我猜到了内部并摸索了一点点,但是看不了块内语句,没有办法修正,从而导致目前回零时Actposition还是先归0,再负值增大运行,然后再归0,如果可以,我还是想修正这个问题。

无名的人
至圣

经验值:12386
发帖数:1138
精华帖:55
15楼    2025-11-12 09:23:51
精华帖  主题:回复:被G120的EPOS定位功能搞得焦头烂额,疑似西门子SINAPOS块有BUG,有没有朋友遇到过?

之前我遇到过类似的问题  使用回零指令后回零不成功但回零标志位丢了  后来看了一下S120的功能图中有关EPOS状态机的部分 发现是自己的时序中出了问题 EPS要从普通状态切换到回零状态有一点是要求轴处于静止状态 但是这个静止状态的判断转速 里面就有门道了。

另外  sinapos使用有要求  mode切换完要保持一定时间 建议10ms 后再触发executemode  executemode同样保持10ms以上指令才能保证给到变频器执行

烟锁池塘柳 桃燃锦江堤
无名的人
至圣

经验值:12386
发帖数:1138
精华帖:55
17楼    2025-11-12 14:25:52
精华帖  主题:回复:被G120的EPOS定位功能搞得焦头烂额,疑似西门子SINAPOS块有BUG,有没有朋友遇到过?

可以抱有怀疑的态度 这很好 但是我觉得得先按照下图自查一下



烟锁池塘柳 桃燃锦江堤
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。