在进行C脚本调试时,出现如下问题:
使用SetTagxx设置外部变量的值时,总有设置不成功的情况,比如设置外部变量a的值为1,单并不是每次都为1,我想看看程序每执行一步,变量的值是多少,想单步调试,不知道有什么办法没
问题补充:
使用脚本诊断功能能实现数据监控,也查出来问题了。
发现使用SetTagxx函数设置变量值时,如果这个变量作为内部变量,没有跟PLC关联,则设置正常,但是一旦关联PLC成为外部变量,则设置就不对了,而且PLC程序我也检查了,没有针对该变量的赋值操作。准备用“城外之人”说的办法,试试SetTagxxxWait函数,只是,这个函数跟SetTagxx的区别是什么?
最佳答案
使用printf功能,然后结合脚本诊断工具,可以在脚本诊断上打印出来
参考:
使用ApDiag工具进行WinCC脚本诊断
https://support.industry.siemens.com/cs/cn/zh/view/75403562
补充:
SetTagxxx此函数给作业赋予一个值去写,然后立即返回到调用函数。它并不等到值实际写好后再返回。该调用的明显特点是:此调用比较快。调用函数并不清楚这个值实际是在何时写的。?该函数也不提供写作业状态的有关信息。SetTagxxxWait此函数给作业赋予一个值去写,但是只有当值已经写好后才返回到调用函数。该调用的明显特点是:该调用慢于SetTagxxx。其实际速度取决于通道和PLC的其它因素。调用后值已经实际写好。该函数不提供写作业状态的有关信息。
这个是复制的
好像是带wait是直接往PLC里面写,不带的是写入缓冲区里面,由WINCC统一往PLC里面写。
你退出WINCC再重新激活一下试试,感觉还是你的有多地方操作了,PLC里面没有,在WINCC里面呢,脚本是不是有逻辑错误呢?
提问者对于答案的评价:
谢谢,我试了,用SetTagxxWait确实可以确保变量的值已经赋上,但是由于我通讯波特率低,字节数多,速度很慢,具体应该怎样设置,可以提高执行速度?我用的是1214C的CPU和CM1241通讯板
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc363124.html