图形循环往复移动的问题

我想做一个皮带机运行时的动态效果,在一个矩形里面等距离放了一些小矩形,把这些小矩形合成一个组,让这个组往右移动5次后返回原地,这样循环形成一个动态的效果。我在全局脚本里面编了一下,可是发现激活项目的时候,动态效果什么的都正常,如果在图形编辑器界面再次点激活按钮,运行画面中的小矩形组就错位了。譬如小矩形组静态X坐标是100,我让他每250ms,X轴的坐标加5,移动5次后回到坐标100,可是在图形编辑器界面再次点激活按钮,运行画面中的小矩形组的X轴坐标会错位到100以前,不知道为什么?我对C动作不熟悉,请大家指教,全局脚本如下(其中的一条皮带机):
long a;     //PL-1皮带X轴坐标
static int a1;
BOOL a2;
a2=GetTagBit("temp_1");  //temp_1皮带机运行反馈信号
if(a2==1)
{
a=GetLeft("主画面.pdl","组8");  //组8就是要循环移动的小矩形组
if(a1<5)
{a=a+5;a1=a1+1;}
else
{a=a-25;a1=0;}
SetLeft("主画面.pdl","组8",a);
}

问题补充:
谢谢满!!
在激活状态下点激活,怎样才能让我的计数器a1清零呢?
或者还有其他更好的办法实现这个动态吗?下面是我用另一种方法实现的,不会出现错位的情况,但是需要一个参照物。
long a;    //PL-1
long a1; 
a=GetLeft("主画面.pdl","组8"); //Return-Type: long int 
a1=GetLeft("环烧主画面20.pdl","矩形121");  //我把这个固定的矩形当参照物
if (a<a1-10+25)
a=a+5;
else
a=a1-10;  //小矩形组的起始位置在参照物矩形的左边10的位置
SetLeft("环烧主画面20.pdl","组8",a);

最佳答案

因为每次激活的时候都是读a1和小矩形组静态X坐标值。问题出在从新激活时的小矩形组静态X坐标值是固定的(100),但是 a1值不一定是0,因此矩形不一定移动5次,所以在减去-25后矩形组的X轴坐标会错位到100以前。
  如果每次直接激活的话出现你说的问题,如果取消激活后再次激活的话不会出现上述问题。

提问者对于答案的评价:
谢谢了!

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc264662.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日 上午3:09
下一篇 2019年6月11日 上午3:09

相关推荐

  • 1个WINCC和2套冗余PLC通讯

    依照以下方法做的,但实际运行中PLC(A)自动切换到PLC(B),WINCC和PLC(A)通讯正常,不能自动切换到PLC(B),请教有没有解决的办法? PLC(B)自动切…

    SIMATIC WinCC 2019年6月11日
  • 归档数据丢失

    在项目中做的数据归档,一直运行是好的,前天突然关机再开机后,头天的数据在运行中的在线数据表格控件中就查不到了。但在项目的ArchiveManager/Tagloggingfast文…

    SIMATIC WinCC 2019年6月11日
  • 输入输出域如何修改

    在画面设置:一个输入输出域,组态io域类型为:输入,连接内部变量 tag1;一个按钮,通过脚本如何将输入输出域赋值 0( hmiruntime.tag…

    SIMATIC WinCC 2019年6月11日
  • 关于wincc报警记录 消息变量分开显示的问题

    我在报警记录里类别“错误”设置了一些消息变量 在类别“系统,没有确认”设置了一些消息变量 在类别“系统,需要确认”设置了一些消息变量 如何通过控件–…

    2019年6月10日
  • SQL2005安装出现以下错误

    安装SQL2005时出现Rahmensetup  not registered. Please  contact&nbs…

    SIMATIC WinCC 2019年6月11日
  • wincc 项目函数路径

    求wincc  项目函数路径?  谢谢 问题补充:我想知道wincc自带c函数的路径 请高手帮忙 谢谢 最佳答案 C:\…

    SIMATIC WinCC 2019年6月11日
  • WINCC7.0找不到变量

    图形编辑器中的按钮或输入输出域链接变量时找不到变量,显示驱动链接下变量为空,没有变量,是什么原因?WINCC换成7.2版本的也是这样。 最佳答案 把与winCC有关的软件都删除后重…

    SIMATIC WinCC 2017年6月19日
  • wincc VBS 动作触发器没办法触发

    在VBS编辑器的动作脚本中写了个触发器,没办法触发!1、新建内部变量“CNUM”,有符号的16位数2、画面中放两个按钮,一个按钮按下就往“CNUM”中写1,另外一个按钮按下就往“C…

    SIMATIC WinCC 2019年6月11日
  • WINCC与EXCEL通过DDE连接的问题

    1、我阅读了通过DDE使WINCC与EXCEL的连接文档,但是貌似只能连接内部变量吧 ?2、想问一下,如果我想在EXCEL中的指定单元格直接写入外部变量(实时数据),怎么…

    SIMATIC WinCC 2019年6月11日
  • vbs csng函数报错

    现在是从300PLC 里读上来的字符串变量,在VBS里直接用csng函数转换成浮点数,再插入SQL,奇怪的是同一句语句,在做试验的时候(一个小工程和PLCSIM联锁仿真)…

    SIMATIC WinCC 2019年6月11日