数据的解包操作

在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

相关推荐

  • 可以用SETP7和WinCC打开PCS7做的程序和画面

    请问如何用SETP7和WinCC如何才能打开用PCS7做的CFC程序和组态画面?急!!!! 最佳答案 1.没这么做过,即使可以通过以上几位的方法实现,也不建议这样用!毕竟不是一样的…

    SIMATIC WinCC 2019年6月11日
  • wincc 对象属性名出现乱码

    请教各位:我的wincc组态时发现对象属性名都是乱码 ,比如我在画面中添加管道控件,然后对管道控件点右键选择属性,接着在控件属性里出现的属性名居然中文不象中文日文不象日文…

    SIMATIC WinCC 2019年6月11日
  • WINCC报警显示:OS1无权访问SQL Server

    wincc运行时,输入用户名登录后,过一会报警显示;OS1无权访问SQL Server,无法再次用用户名登录, 最佳答案 在客户端使用cliconfg,在Alias选项页…

    SIMATIC WinCC 2020年11月1日
  • wincc V7.4中使用Mschart控件

    新建一个画面,插入Mschart控件后保存退出,再打开画面就打不开,显示未响应。wincc软件重启后可以打开画面,但是关闭的时候系统会提示是否保存,点击是后,画面再打开又是未响应。…

    SIMATIC WinCC 2021年7月5日
  • wincc中vb脚本语句解释

    Dim oClassSet oClass = ClassMulti(od(1),od(2),od(3),od(4),od(5))这句不懂&n…

    SIMATIC WinCC 2021年7月5日
  • wincc7.0显示时间与电脑系统时间不一致

    变量是DB1,DBB3,(怎么来的?)然后界面用输入输出调用变量显示时间, 最佳答案 变量时间是CPU的时间,它和计算机时间不一定同步,要设置。在hardware界面里面,选中CP…

    SIMATIC WinCC 2017年6月4日
  • windows 2008安装wincc 7.0 sp3提示无法安装SQL

    请问,现在做了一个项目,windows server 2008系统安装wincc 7.0 sp3提示无法安装SQL standar…

    2019年6月11日
  • WinCC函数控件问题

    现在在学WinCC V7.0中的函数趋势控件: (1)请问在函数趋势控件中,如果只想显示需要的X轴坐标数值能实现吗,比如只想显示0,10,15,40,100这5…

    SIMATIC WinCC 2019年6月11日
  • dp头带感应电如何解决

    有22胎300PLC 型号为315-2DP;用CP5613A2组态WINCC上位机系统。不知道为什么DP头上有感应电,而且能电人。现在CP5613板卡也不能正常工作了,无…

    SIMATIC WinCC 2019年6月11日
  • 登陆问题

    我在服务器的用户管理里上做了几个用户,并设置了权限,可是我在重新打开WINCC,根本不弹出登陆框,跟没有一样。请问还要在别的地方设置吗? 最佳答案 1. 先在画面中需要密…

    SIMATIC WinCC 2019年6月11日