信捷C函数 功能块 软件bug
plc编程吧
全部回复
仅看楼主
level 4
试问卷帘 楼主
信捷C函数之布尔取反
信捷C函数功能块是一个非常好用的功能,很多涉及运算,加密的功能的时候特别好用,特别是适合熟悉C语言编程方式的人。
原来做了一个案例,一个伺服轴,周期性旋转运动,在这个一周旋转的过程中,有一个输出,是某一角度输出。之所以用,是还有几个是在角度范围之类一直输出的输出口,采用粘贴复制,省去编程的时间。我就选用了信捷C函数功能块做的。
功能也挺好用的,M324用了一个C语言中的取反运算符。机器也工作挺正常的。好多台出厂运行了。
今天调试机器,突然发现这个M324的输出不动作了,这就奇怪了,虽然程序稍有改动,但是不至于干涉了运行。
只能先局部调试了,把机器运行到角度范围,然后自由监控M30:触发标志 ,M1380:翻转动作 M73:触发执行标志 M324:输出。 强制M30和M1380,M324和M73 都置ON了,有输出啊,然后我再复位M73,强制M1380 ,然后强制M30,M73,M30 ,M1380再次复位,但是M324没有变化。
在plc中搜索M324,看是否有有控制进行了干扰,对整个程序搜索了一次,没有发现。应该外部没有干扰,逻辑上没有什么问题,这个写法也复合C函数语法,也有好几台出厂在工作。
没有办法,因为逻辑是执行的,我决定换一个写法吧。
增加了一个辅助M80 每次执行M324前先把M324的反状态赋值给M80,后面在把M80赋值给M324, 之所有这么写,也是因为刚弄了一个机器人,无法执行嵌套if循环程序,想出了这样,正好就用在这里试一下。
下载程序后,再次测试,发现M324能顺利的触发切换。挺高兴的,能解决问题,但是比这个机器解决了问题更加让我担心的是编程超出了逻辑范畴。
我静下心来想,让调试人员接着调试机器,我开始了探索自己的问题。应该是M324=~M324 出现了异常,可是这个在原来就一直用。我初步定位是在plc的版本差异上,于是我先拨通了信捷官方客户的咨询,首先她们让我查看的软件版本,这个不是最新的版本,让我更新为最新的版本。我立刻下载了最新的版本,还好信捷的软件只有50M左右,卸载都安装几分钟就搞定了。
安装好了后,开始了测试,结果还是不行,再次拨打了信捷客服电话,回复过程中经过了漫长的等待,当然我也不指望客户,毕竟太多的问题,客服是解决不了的,一群女生经过理论培训上岗的,没有任何实战经验,她们基本上只我是触发问题解决的方向。
当初我只是怀疑plc的版本,客户说可能是编程软件的版本。虽然最新的软件也不能,但是我觉得编程软件的概率是比较大的。
回到我办公桌,我桌上正好有接好电的XC和XD的plc。我决定先用xc的试下,编写好一个测试程序
测试后,XC的可以用,没有啥问题,我再次测试我桌上的XD的plc 这个比较早,排除下是不是plc的版本问题。
同样的操作写了一个测试程序,果然xd的软件在C功能块上比XC的在输入方便多了,但是结果还是一样,不能完成M的取反动作。
又跟客服沟通了下我这边的测试过程,让她们帮忙查下下,结果半小时后,发给了一个C功能块。打开后,就是和我解决机器的问题同类型的手法,怎么解决单次执行取反的问题,没有解决为啥取反运算不能用。
也不指望客服他们了,既然原来可以用,那么就找原来的plc编程软件版本,电脑上没有了原来的安装包,上官网找,有个3.2.2的版本的 18年的。卸载 下载,安装。 联机都比较正常,可以不能下载程序,提示编程软件版本太低。3.7.4a是为了使用xdh的plc升级的,以及刚升级的3.7.4b 都不行,我又找来了其他安装人员的电脑。找到了一个3.5.3的,于是又进行了一次卸载,下载,安装。功夫不负有心人,终于还是发现了问题。是软件版本的问题。
问题很小,但是我是一个比较较真的人,机器的问题虽然很小,但是不能被小问题打败自己。也不能坐等,寄希望于他人。
491160493 plc编程 QQ群 欢迎加入共勉前进
2021年08月12日 03点08分 1
level 1
‘~’是取反,‘!’是逻辑非
例如
int a=0X00000000;
而 !a = 1
而 ~a = 0XFFFFFFFF
楼主用BOOL量取反的时用 ' ! ' 也许有效。
软件版本 3.7.4a
2021年08月19日 05点08分 3
我的写法 在软件版本3.5可以使用 在3.7 不能用
2021年08月23日 09点08分
level 1
位操作怎么弄的,我这没整对
2022年12月21日 15点12分 5
1