请问dcount107关于数组拆分的问题,急切!

看到dcount107兄在其他人的回帖,用用指针或union实现:
 BYTE bytes[4];
 float ff;
 bytes[0]=0x00;
 bytes[1]=0x00;
 bytes[2]=0xC8;
 bytes[3]=0x42;
 ff=*(float*)&bytes[0];
 printf("\r\n%f",ff);
 --------------------
 union aa
 {
 BYTE bytes[4];
 float ff;
 }aa;
 aa.bytes[0]=0x00;
 aa.bytes[1]=0x00;
 aa.bytes[2]=0xC8;
 aa.bytes[3]=0x42;
 printf("\r\n%f",aa.ff);

 这两种我直接做到按钮中试过可行,但我如果引用外部的数组变量就不行了,具体是这样的:我用kep的modbus直接读取3个连续的浮点数据400005【3】,直接用kep监测是有数据的,然后添加到wincc中为一个名叫AI的原始数据类型,用GetTagRaw获取处理如下:
 union uu 
 {
 BYTE b[12];
 float ff[3];
 }uu;

 int j;
 BYTE c[12];//原始变量存放数组
 GetTagRaw("AI",c,12);//获取原始浮点数组

 for (j=0;j<=2;j++)     //前后调换字节
 {
 uu.b[j*4]=c[j*4+3];
 uu.b[j*4+1]=c[j*4+2];
 uu.b[j*4+2]=c[j*4+1];
 uu.b[j*4+3]=c[j*4];

 printf("\r\n%f",uu.ff[0]);   
 printf("\r\n%f",uu.ff[1]);
 printf("\r\n%f",uu.ff[2]);

 程序没反应,请各位帮忙看看,哪有问题??

问题补充:
也能出现数字,但完全对不上号;
 比如我的400005[3]=[1.11,2,0]那出来的结果为:
 771345028601111420000000000000000000.000000
 0.000000
 0.000000

 400005[3]=[0.1,0.2,0]那出来的结果为:
 -429492128.000000
 -428443584.000000
 0.000000

 400005[3]的数值比较大的话则全为0,请大家帮忙看看

 

最佳答案

这倒挺奇怪。
  你可以试试这样:
  1、Kep单独读取一个浮点数,WinCC直接连接,看看是什么效果,然后用GetTagRaw试试。
  2、还有你把c的每个字节打印出来看看到底是怎么回事?

 补充------------------
 另外KepServer似乎不支持Float寄存器吧?40000x是保持型寄存器。

提问者对于答案的评价:

 现在问题解决了,原来在kep中采集到的原始数据付给新的字节后并不需要改变前后顺序,直接用就行了!

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

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

相关推荐

  • wincc中data@monitor的授权有哪些

    7.0版本使用datamonitor时显示“未找到有效的datamonitor许可证”。这是授权安装的不对么,请各位赐教 问题补充:现在有网上下的授权,但具体不知道安装哪几个?俱怀…

    SIMATIC WinCC 2019年6月11日
  • 在报表编辑器中如何制作实时表格

    我想在报表编辑器布局的动态部分做一个表格。可以显示实时数据。并且可以打印。怎么实现。 最佳答案 1、在布局里建立表格,并且连接上变量,然后根据你需求的格式去调整下,也可以在静态部分…

    SIMATIC WinCC 2019年6月11日
  • wincc报警系统问题请教

    wincc报警系统在报警事件发生时为什么没有音响,只有消息窗口报警显示?请问储位是哪能儿设置不对?谢谢 问题补充:计算机的声卡是好的,除了用脚本触发声音外,组态时在哪配置报警音响?…

    SIMATIC WinCC 2019年6月11日
  • wincc7.0新建变量点击选择无反应

    wincc7.0可以导入符号变变量,PLCSIM仿真运行成功,取消wincc激活后修改变量属性地址选择无反应,同样新建变量地址选择也没有反应,问题出在什么地方?请赐教 最佳答案 怀…

    SIMATIC WinCC 2017年6月5日
  • 多用户项目测试,CS架构

    为啥我在客户机(%ignore_a_1%机)上找不到服务器(本机),找不到服务器上创建的wincc项目,是不是虚拟机设置错了?虚拟机上找不到服务器,只看到客户机的计算机名称ZFY-…

    2020年11月1日
  • HMI的产品目录

    不知道哪位大侠有HMI的各个型号的参数的手册?(应该叫HMI产品目录什么的) 我以前有一份关于HMI的开孔尺寸的,结果弄丢了,在下载中心也没有找到。 麻烦发一份…

    SIMATIC WinCC 2019年6月11日
  • WINCC 中事件响应

    比如说当按钮按下我要让某个tag为1 我先新建一个按钮 然后再按钮属性中 events中进入press action然后出来direct&n…

    SIMATIC WinCC 2019年6月11日
  • WINCC7.4搅拌器旋转动画

    那位大神有搅拌器叶片旋转的动画,请多指教。 最佳答案 直接找gif图片来实现比如这个:四叶螺旋式搅拌器.gifhttp://2019pic.oss-cn-beijing.aliyu…

    SIMATIC WinCC 2020年11月1日
  • 某个按钮操作权限

    如果当前有用户正确登录(不管什么权限)都可以点击操作该按钮,应该如何设计?谢谢! 问题补充:不好意思,没有表达清楚!意思是如果要操作某个按钮则必须有用户登录才行,而不管这个用户拥有…

    SIMATIC WinCC 2019年6月11日
  • 请问大家如何通过控制变量来写入用户归档?

    用户归档域有30多个,需要一次性写入,我分别做了两个按钮,一个是启动,一个停止。启动需要写入ID和启动时间及其他PLC数据,停止需要写入停止时间及其他PLC数据,请问怎么用控制变量…

    2021年7月5日