通过WinCC运行系统给Step7里的变量赋值失败

在WinCC的图形界面放入一个输入/输出域,连接内部变量QCwp_HI_1,类型浮点数32位。
同一画面内放入一个按钮写入C动作:
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
SetTagDWord("QCwp_HI",GetTagDWord("QCwp_HI_1"));
}
//QCwp_HI是外部变量,类型浮点数32位,地址MD0。

在Step7里,我确定以及肯定只有这一条语句中有用到MD0。
    A     M    200.0
    =     L      0.0
    BLD   103
    CALL  "SCALE"                FC105        --数值转换
     IN     :=PIW432
     HI_LIM :="QCwp_HI"          MD0          --前池液位上限
     LO_LIM :="QCwp_LO"          MD10         --前池液位下限
     BIPOLAR:=L0.0
     RET_VAL:="QCwp_IN1"         MW4
     OUT    :="QCwp_OUT4"        MD20         --前池实际液位
    A     BR
    R     M    200.0

打开仿真器,下载到PLCsim,PLC点选RUN。
打开OS站,WinCC激活,用诊断工具看到连接正常。

在WinCC运行界面,输入/输出域输入11.8按下回车,输入/输出域固定在11.8。
点击按钮,Step7的变量监控窗口,MD0闪了一下又恢复为0.0,点击一次闪一次。

网上找了很多,说是PLC程序也在控制MD0。但我找不到问题所在,被困扰多时。

希望各位大大帮帮忙,我想要输入/输出域输入回车并固定在一个值,同时MD0也固定在这个值。
如何解决?跪求答案。

问题补充:
谢谢  满  大工程师的指点,问题解决了。
  
  我想进一步学习一下,MB0,M0.0,MW0,MD0之间是什么关系?
举个例子,分析一下。十分感谢

最佳答案

1、你用交叉引用在STEP7中查一下MD0是不是在别的地方掉用了。比如:M0.0,MB0,MW0都不能用在别的地方。
2、脚本没有语法错误,但浮点数的赋值应该为:
SetTagFloat("QCwp_HI",GetTagFloat("QCwp_HI_1"));
3.、程序没问题,你在仔细查一查吧。

提问者对于答案的评价:
其他地方我确实用了M0.0,MW0。
  谢谢解惑。膜拜

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

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

相关推荐