数据的解包操作

在plc300的数据块中定义了int数组array[0..100],然后通信发送给wincc定义的原始数据类型变量Raw,怎么通过GetTagRaw函数对原始数据变量进行操作,其返还值得到数据包中依次存放的单个采集数据,将GetTagRaw函数的返回值依次赋给建立好的变量数组中的各元素。以实现数据包的解包操作。
付两个小问题:1.用GetTagRaw时一定要把不是字节数组的数组变量转成字节数组吗,是的话,为什么?
2.plc给原始数据类型变量int数组,那原始数据类型变量的数据类型是int还是我建立定义时选择的数据类型,比如字节
本人初学,不太了解,希望答案能尽量详细和易懂点,不然有些难理解。感谢各位大佬。

最佳答案

此回答已完善

1.用GetTagRaw时一定要把不是字节数组的数组变量转成字节数组吗,是的话,为什么?
GetTagRaw返回的是一组原始字节数据,第2个参数必须对应BYTE数组
2.plc给原始数据类型变量int数组,那原始数据类型变量的数据类型是int还是我建立定义时选择的数据类型
wincc存储解析数据的变量类型要与plc原来相同,如plc是int,那内部变量选择int
 
建立“有符号 16 位数”内部变量如tag0~tag100(变量名称要便于在for循环操作),用于存放解析的数据
 
c脚本示例:
 
char Tag_Name[20]={NULL};
BYTE a[202];  //原始字节数据,202个字节
int  b[101];   //int数据,101个
int i;
 
GetTagRaw("原始数据变量",a,202); //读取原始数据,放入a字节数组
 
for(i=0;i<101;i++) 

   ((BYTE*)&b[i])[0]=a[i*2+1]; 
   ((BYTE*)&b[i])[1]=a[i*2];  
   sprintf(Tag_Name,"%s%d","tag",i); //组合变量名称tag+i
   SetTagSWord(Tag_Name,b[i]); 
}

提问者对于答案的评价:
多谢大佬,只是还有点小疑问,就是c脚本的第一句,Char Tag_Name[20]={NULL}为什么改成这样,不是建立了tag0到tag100的内部变量吗,这个应该是对应它们的吧,那为什么还要用[20]呢,麻烦大佬最后再解答一下。

最佳答案作者回复:
过奖了
Char Tag_Name[20]:定义一存放变量名的字符串变量

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月1日 下午4:05
下一篇 2020年11月1日 下午4:05

相关推荐

  • 无权访问 SQL server

    冗余服务器,WINCC报警提示:无权访问SQL server 怎么解决啊? 最佳答案 看一下计算机启动后,数据库的服务器有没有打开。如果数据库服务器哦没有打开,…

    SIMATIC WinCC 2019年6月11日
  • WinCC画面出现问号

    WinCC的画面拷贝在在PCS7中,在画面编辑器中打开正常,运行后画面都是问号 图片说明:       钻石用户推荐最佳答案 PCS&nbs…

    2020年11月1日
  • pid无扰切换的问题

    在S7-300中,我用FB41(CONT_C)控制调节,在上位机WINCC中,自己建立了PID图,我从自动切换为手动的时候,输出值是投入自动前的手动值,不能实现自动变为手动时输出量…

    SIMATIC WinCC 2019年6月11日
  • wincc静态文本显示问号

    我的wincc项目拷贝到另外一台机子上后静态文本全部显示问号。。。 最佳答案 参考我以前回答的答案 在WINCC里面的图形编辑器里面打开某个画面,出现??? 在…

    SIMATIC WinCC 2019年6月11日
  • 关于西门子软件在win10系统上的运转

    大家好,请问目前西门子的相关软件在win10的操作系统上能够顺利运行吗?目前用的软件有:TIAv15,step7、microwin、wincc、还有一些驱动参数调试的软件 最佳答案…

    SIMATIC WinCC 2021年7月5日
  • WINCC客户机访问不了服务器

    本来产线正常,,是2台服务器冗余的,,4台客户机,因为停机断电把电脑关机了,在开机重启发现,服务器可以运行,客户机可以与服务器互连,可是当客户机WINCC运行起来时就没办法进入登入…

    SIMATIC WinCC 2017年6月5日
  • TP1500触摸屏没有历史报警

    TP1500触摸屏 历史报警无法查看, 问题补充:其他线体用的同样的触摸屏都可以存储些历史报警的 最佳答案 有源程序吗?看看是否组态了报警记录其他的触摸屏功能和这台不显示…

    SIMATIC WinCC 2021年7月5日
  • 数据库时间

    如何在wincc中用VB脚本访问系统时间,并把这个时间写入数据库中. 问题补充:在SQL中建立了一个‘下料量’的数据表,一个字段名为‘时间’,数据类型为‘Datetime’.在wi…

    SIMATIC WinCC 2019年6月11日
  • on_off_2的声音设置

    在Toggle Buttons库中,有一个on_off_2按钮,当我在使用的时候。会有声音出现,且一直响,如何才能把这个声音去掉呢?谢谢。 最佳答案 有这么奇怪的事?检查…

    SIMATIC WinCC 2019年6月11日
  • wincc7.0和MP377画面

    各位老师,我想请教个问题,现在我有4台MP377的触摸屏,我想把这4台触摸屏的画面全部在中控室的电脑上做监视,我想问下,MP377的画面需要一个一个的重新画到WINCC上吗? 最佳…

    SIMATIC WinCC 2019年6月11日