| 作者 | 主题 |
|---|---|
|
未尽 侠士 经验值:1629 发帖数:878 精华帖:6 |
楼主
主题: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点外部变量
好好生活,天天向上!
|
|
Naga_Orochi 侠士 经验值:1200 发帖数:841 精华帖:19 |
楼
主题:回复:WINCC 损己利人小窍门!
楼主这种情况我也做过,确实比较麻烦,读写、运行速度实在是太过慢了。在这时,我曾经用过3种方案:
1、使用原始数据类型,在PLC编程时用数组模式,长度在250字节/Tag应用成功过,再大就没试过了; 2、将计算机配置OPC PC Station,用S7连接建立变量,再用VB、VC与WinCC用Xml连接,但相对很麻烦; 3、在PLC上用以太网TCP/UDP连接计算机,制作接收发送程序,在WinCC中用Winsock连接做接收发送程序(只对以太网连接)。 最简招式,联系西门子,升级授权。
naga xel:有时笨办法可以解决聪明问题,所幸俺总有笨办法。
|