数据的解包操作

在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日

相关推荐

  • 在线表格控件

    请问  Wincc的在线表格控件可以调节列间距吗 我希望间距调的小点 组态之后 激活 好像不行  请…

    SIMATIC WinCC 2019年6月11日
  • wincc中如何把外部变量值写入plc

    在项目中,winn采集第三方OPC 服务器的数据,比如变量A1,为浮点数,wincc和PLC通过dp通讯,如何在wincc全局脚本中将A1的值写入plc中的DB1.DBD…

    SIMATIC WinCC 2018年12月2日
  • Wincc报警归档存储的问题

    目前我的有几台机器都运行同一个版本的Wincc,分别记录不同的报警消息,每台机器报警归档的备份路径都设置为 E:\Alarm 文件夹,这样的项目运行一段时间以后…

    SIMATIC WinCC 2017年12月8日
  • WinCC组态上看不到PLCSIM反馈指示

    我在用WinCC V7.3与Simatic s7-312仿真连接时,仿真软件是PLCSIM 5.5,通讯良好,在WinCC V7.3组态上按…

    2020年11月1日
  • 博图V12hmi画面设计

    我能在博图V12里面的HMI 设计画面时做一个按钮,单击按钮时按钮变为不可见吗?具体应该怎么操作呢,谢谢!!! 最佳答案 按钮控件   有动…

    2017年12月1日
  • 再请教wincc的两个基础问题

    还是关于报警消息的: 1、在报警消息控件中,可以调整消息列表的尺寸吗? 因为默认的尺寸太小了。 激活运行以后,消息列表的宽度只占了控件的左半边,右边全…

    SIMATIC WinCC 2019年6月11日
  • 博图如何离线模拟触摸屏画面?

    博图如何离线模拟触摸屏画面?请详述具体操作步骤 谢谢 问题补充:我只是想单纯的仿真触摸屏画面  如何实现 最佳答案 先选中PLC的项目,把仿真运行起来…

    2017年7月30日
  • wincc连接多台plc

    有个项目要求在一个WINCC画面连接几十个PLC,只需监控不去控制。我们设想在TCP/IP目录下或者工业以太网下建立多个连接,IP地址不重复,不知道这样做是否可行,不知道wincc…

    2020年11月1日
  • wincc登录对话框

    我是在项目属性中设置快捷键"Ctrl+D"用于打开用户登录对话框,设置快捷键"Ctrl+T"用于退出用户登录,请教如何做用户登录/退出状态显示?以表示用户已登录或已退出.谢谢! 最…

    SIMATIC WinCC 2019年6月11日
  • wincc与博途编译好的plc通讯

    博途编译好的西门子plc1500怎么通过tcp/ip协议跟wincc建立连接(注,不是博途里的wincc。)地址,机架,插槽号都正确。 最佳答案 参考下面的文档:WinCC&nbs…

    SIMATIC WinCC 2017年6月6日