数据打包上传时在C脚本中遇到的问题!

我从下位机给上位机打包上传一组float型数据,上传时是以字节打包形式上传的,在C脚本中进行解包时需要把每四个字节的数据转换为一个float型数据,如何转换呢?

最佳答案

我自己写的一个项目函数,读取raw组数据,转换成float放到中间变量中。三个参数
 RawTagName---raw变量的名字
 RawTagSize---变量的长度(byte)
 FloatTagNameHeader---转换成float后,存放数据中间变量的名字头,尾是_1...._2..._3这样格式的

 void ReadRawFloat(char* RawTagName,int RawTagSize,char* FloatTagNameHeader)
 {
 BYTE ReadData[200];
 BYTE ConvertData[200];
 char  FloatTagName[200];
 char FloatTagTail[200];
 float* intArray;
 int i,j;

 if (RawTagSize>200) return;

 GetTagRaw(RawTagName,ReadData,RawTagSize);
 for (i=0;i<50;i++)
  for (j=0;j<4;j++)
      ConvertData[4*i+3-j]=ReadData[4*i+j];

 intArray=(float*)ConvertData;
 for (i=0;i<RawTagSize/4;i++)
  {
  strcpy(FloatTagName,FloatTagNameHeader);
  sprintf(FloatTagTail,"_%d",i+1);
  strcat(FloatTagName,FloatTagTail);
  SetTagFloat(FloatTagName,intArray[i]);
  } 
 }
 

提问者对于答案的评价:
谢谢!
 

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日 上午10:12
下一篇 2019年6月11日 上午10:13

相关推荐

  • MP277 10" Touch用什么软件组态

    请问各位师傅,我公司有MP277 10" Touch的触摸屏,这样的屏用什么样的软件组态呀?谢谢 问题补充:各位师傅,用485接屏,然后485转232…

    SIMATIC WinCC 2019年6月11日
  • 【求助】wincc与plc的数据库

    我的导师让我建立一个plc与触摸屏的公用数据库,请问这个数据库是用什么做的。 最佳答案 你说的应该plc中的全局数据块,所有需要和hmi通讯的数据都放到这个数据块中。 提问者对于答…

    SIMATIC WinCC 2021年7月5日
  • 麻烦 barry发份Mapper.zip给我谢谢

    Wincc 6.2 AS-OS组件安装不成功,求Mapper.zip 问题补充:邮箱:xinyuan5203728@163.com 最佳答案 如果是WINCC6…

    SIMATIC WinCC 2018年12月3日
  • 无线集中测控

    无线集中测控中,我想用一个远程站的变量通过中心站编程后来控制另一个远程站,是不是用脚本控制会不稳定?有没有其他比较好的控制方式? 问题补充:无线测控是采用公共通信的GPRS,主站采…

    SIMATIC WinCC 2019年6月11日
  • 为什么看不到动态效果呢

    将画面中的矩形背景色设为红色,编了如下代码,将它与矩形属性的背景颜色动态连接 为什么运行状态下,矩形背景颜色不变呢。到底出错在哪里呢 Dim objr…

    SIMATIC WinCC 2019年6月11日
  • 在哪里建立全局脚本可以使用的全局变量

    为什么在全局脚本中不能使用内部变量呢?内部变量不是全局有效的吗? 问题补充:谢谢!按照你的提示做好了. 那我想给那个内部变量赋初值,就是程序一进入运行状态就给它赋一个常量…

    SIMATIC WinCC 2019年6月11日
  • WinCCflexible 变量为1但屏开关显示0

    出现了这样的问题,当我在第一个画面把开关全部设置为1的时候。切个画面。在切回来,其中有些变量变为0了但看PLC程序相对应的变量。还是1。就是屏上面显示0,但那个开关不是总是这样的,…

    SIMATIC WinCC 2019年6月11日
  • 表达式里怎输大于号?

    WCC画面用输入输出域显示过程温度值。当温度大于100度时显示红色并闪烁。低于100度时显示绿色不闪烁。可是在输入输出域的属性里打开动态对话筐怎么也输入不了大于号?我看别的工程有人…

    SIMATIC WinCC 2019年6月11日
  • 结构变量的或运算

    在做一个矩形的颜色变化时,需要2个变量有一个是1的时候就变颜色。我建的是结构变量,在动态对话框连接变量做或运算时连不上。例如‘54.开关状态’+‘60.开关状态’。但是,不是结构变…

    SIMATIC WinCC 2019年6月11日
  • 经典Wincc 什么时候退市?

    基于WinCC消息系统的智能诊断 课程编号:V2666 课程主要内容:<br/>-消…. 点击这里,打开新窗口观看完整视频 该视频下的所有用户提问列表 经典Winc…

    2020年11月1日