在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