登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:winCC C动作的疑问

点击:3068 回复:7

附件 11111.jpg
意图:比较简单,按下按钮启动C动作,将三个I/O域的输入值进行大小比较并输出最大值。
在全局脚本的C脚本里面建立一个项目函数------就是“比较函数”,然后在C动作里面调用。可以用,正确。
我的问题是:能不能在全局脚本里不建立也不调用项目函数,但是在C动作里面直接编辑并用这个“比较函数”,语句如下,但是会提示出错如图。
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma option(mbcs)
double Max (double i,double j,double k);
double i,j,k,max_temp;
i=GetTagFloat("V1");
j=GetTagFloat("V2");
k=GetTagFloat("V3");
max_temp=Max(i,j,k);
SetTagFloat("Maxvalue",max_temp);
}
double Max (double i,double j,double k)
{
double Maxvalue;
if  (i>=j&&i>=k)
Maxvalue=i;
if  (j>=i&&j>=k)
Maxvalue=j;
if  (k>=j&&k>=i)
Maxvalue=k;
return Maxvalue;
}
14-08-16 19:23
求指教,谢谢
14-08-17 08:19
很奇怪,#include "apdefap.h"是C脚本必带的头文件,一般来说不会在这个地方报错,基本上说明不是你后边的语句问题。看你错误代码提示的是:这个模组函数太多了,你试试用注释屏蔽掉一部分语句再试试。我开WINCC还要先开虚拟机,太麻烦,你自己按照这个思路试试吧。记得看错误提示语句。
但是看你的程序,我有个问题,你要调用外部函数,不引用头文件真的可以吗?
14-08-17 12:35
不知道你说的调用外部函数是指全局脚本里面的项目函数,还是主函数外面的函数。嗯,无论哪个,头文件我都没动过,都是直接在下面写的。难道C动作必须调用全局脚本里面的函数?不能再C动作函数的主函数下面直接写?
一天了,真的很想知道为什么
14-08-17 15:53
附件 完整.jpg
整个就这些。A1,A2,A3,是建立的内部变量用于I/O域,是输入三个进行比较大小的数。。A4,是用于输出比较的结果
14-08-17 16:05

引用 neverland36 在 2014/8/17 15:53:31 发言【内容省略】

C语言扔了好多年了,都用的很少,不过我记得,在一个项目中我做一个子程序,然后在主程序中调用,我需要在头文件中加入对这个子程序的调用,我看你的函数里面有对另一个子程序的调用,所以我做了猜测。你可以这样试试,不调用外部函数,把这个外部函数定义到你现在的主程序里面,看能不能编译通过
14-08-17 20:29
实际上,Wincc中包含的C脚本与C还是有较大的区别的,例如:不能在函数中创建函数,不能通过变量的地址传递来传递参数,等等。
附件 snap1.jpg
Regards
14-08-18 08:46
非常感谢!!不能嵌套
14-08-18 19:00

工控新闻

更多新闻资讯