返回列表 发帖

WINCC 损己利人小窍门

在一般的小工程中,由于你的老板和甲方老板都是出了名的小气鬼,有时,你不得不做一些损己利人的事!比如关于wincc的tag配置问题。明明有上千点需要交换,但老板却老早就定好了128点的,如果你有异议,狡猾的老板会摸着后脑勺故做傻子的说:“我不懂啊,你怎么不早说!”搞的你查点吐血!

但吐血归吐血,吐完了你不得还要想办法解决吗!看来就只有打包拆包一途了!

1、输入的拆包

建一个32位的变量,把plc中32个bool数据读上来。

在wincc中建一全局脚本,做32个与运算,取出你需要的位来,并赋给相应的内部变量,用32点tag做触发器,如

......

dint 11,22,33...;

aa=getdwordtag(bb);//bb是外部连接tag

11=aa&0x01000000//取低字节的第一位

if(11==0x01000000)

{

cc=1;//cc为内部bool变量

}

else

{

cc=1;

}

......

2、打包输出

建一个32位的变量,负责把上位32点的信号传下去。

如要将a、b、c.....等变量传下去,则事先约定各下传bool变量在32位tag中的位置。

dint bb;

if(a)//加入第一个数据

bb=bb+0x01000000;

else

bb=bb+0x00000000

if(b)//加入第二个数据

bb=bb+0x02000000;

else

bb=bb+0x00000000

if(c)//加入第三个数据

bb=bb+0x04000000;

else

bb=bb+0x00000000

......

setdwordtag(cc,bb);//cc为32点外部变量
欢迎光临:逐梦论坛

一段wincc小车运动代码

1、先建一个对象;

2、在属性的几何的位置x或y处建立c动作;

3、代码

{

// wincc:tagname_section_start

// syntax: #define tagnameinaction "dmtagname"

// next tagid : 1

// wincc:tagname_section_end



// wincc:picname_section_start

// syntax: #define picnameinaction "picturename"

// next picid : 1

// wincc:picname_section_end

{

static int x = 0;

static int t = 0;



t += 100;

if ( t < 300 || t > 500 ) x ++;

if ( x > 500 ) {x = 0; t = 0;}



return (x);

}

}
欢迎光临:逐梦论坛

TOP

谢谢啊,好帖一定要回的!当然,回帖的质量也会逐步提高的,呵呵

TOP

谢谢啊,好帖一定要回的!
kkhuihb

TOP

好铁好帖好帖好帖好帖好帖

TOP

牛帖!
牛帖!
牛帖!谢谢楼主

TOP

哈哈不错不错,那车我很喜欢~~~我做了个不过不怎么好看。不是跑车~

TOP

好贴。

TOP

好帖

TOP

呵呵,学习了,感谢楼主分享

TOP

返回列表

Powered by Discuz! 7.2   论坛QQ群:逐梦论坛群

© 2001-2021 Comsenz Inc. 鲁公网安备 37120302000001号