创建一个自定义函数。

想写一个自定义控制阀门的函数,要求如下:

 有一组阀门通用一个操作界面,要求点动开或关,开度模拟量输入。
 变量如下:驱动开fa1_on  地址Q 33.1  驱动关fa1_off地址Q 33.0  模拟量KD1
 要求:点击一组阀门其中任何一个阀门,就会弹出通用操作界面,界面的变量、画面名称等等和阀门一一对应,
 只要在鼠标按左键动作里产生类似这样的语句
 #include "apdefap.h"
 void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
 {
 SetSwitchOpen("fa1_on", "1号阀门开", lpszPictureName, "  ", 'n', 'Y', 0);

 }
 其中SwitchOpen就是要的自定义函数。
 望各位大侠赐教 !!
 

最佳答案

定义所有函数都可使用的全局 C 变量 
 隐藏订货号显示订货号订货号:
 6AV637..   WINCC SIMATIC HMI Software 
 6AV6371-2..   SIMATIC WinCC V7.0 
 6AV638..   WINCC SIMATIC HMI Software 2 
 6AV6381-2..   SIMATIC WinCC V7.0 
 6ES7650..   SIMATIC PCS 7 PC 
 6ES7658..   SIMATIC PCS7 SW-Packages (BLE, ES, OS)  
  
  
  
 问题:
 如何定义所有函数都可使用的全局 C 变量? 

 解答:
 请执行如下步骤:
 创建一个新项目函数,例如: 

 void dummy()
 {
 } 

 现在,如果在一个伪函数中创建一个变量,例如: 

 void dummy()
 {
 int a = 0;
 } 

 则只有该伪函数可使用该变量。 

 但是,如果要在整个 C 程序中都可使用该变量,则只需在该函数范围之外声明该变量,例如: 

 int a = 0;
 void dummy()
 {
 } 

 现在,(所有函数、动作、对象动作、项目函数、标准函数) 可在整个程序范围内在运行时使用该变量 a。
 例如,现在为了能够在对象上的动作中使用变量 a,则只需声明为外部变量。这表示会通知编译器,它不必自己创建该变量,而是在运行时的另一个点会创建它。变量 a 在计算机中仅是局部存在的。在一个多计算环境中,其它计算机不能识别该变量。这种情形下,只能借助于内部 WinCC 变量,将它们作为数据交换区。 

 实例:
 void OnPropertyChange(..........) {
  Extern int a;
  // 变量没有在栈中创建,而仅是声明
  
  
   
  // 在其他地方已被实例化.
  
  
  a += 1;
  // 因此不可在这里初始化。
  
 }
   
   
  

 
 如果现在访问该变量,则公共变量 a 在整个程序范围内被改变。
 如果在项目函数内声明变量,则该变量存在于整个项目中。
 如果在标准函数中声明该变量,则该变量存在于所有项目中。 

 注意事项: 

 一个函数及通过它定义的全局变量最大可用内存为 64 KB。 
 如果修改了全局 C 变量,则使用该 C 变量的所有函数 (项目函数、全局动作和画面中的对象动作) 都会被重新编译。 
 对项目函数和标准函数,可通过全局脚本编辑器的“Compile all functions”函数实现。为了能够一起处理画面中所有对象动作,可使用 WinCC 插件“PictureScriptRebuild”:  
 插件“PictureScriptRebuild”链接      
 有关该主题的信息可在 WinCC 信息系统中搜索术语“global tags”。 
 有关该主题的更多注意事项参见条目号 1405195。   
  
 http://support.automation.siemens.com/CN/llisapi.dll?func=cslib.csinfo&lang=zh&siteid=cseus&objid=71096
 上那儿去瞧瞧看看,很精彩!

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

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

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

相关推荐

  • WINCC 7.0版本中画面模板的C动作!

    我这有个6.2版本的C动作,用7.0打开可以正常使用,但是新建一个项目的时候,用同样一个C动作,就没法实现。请问怎么办?就是鼠标点一下电机图标,弹出一个公共的电机控制画面,自动更改…

    SIMATIC WinCC 2017年12月9日
  • wincc6.0画面中的联锁问题

    现有一个操作画面,有三个库,当启动一个库下的设备时,另外两个库设备不能启动,我想在此画面上做一个选择按钮,按下时,只能启动一个设备,另一台设备被屏蔽,不能进行任何操作。想请教一下,…

    SIMATIC WinCC 2017年11月19日
  • WINCC7.0 SP2 ASIA版本的订货号

    现在需要WINCC7.0 SP2 ASIA的订货号,另外还有就是CP5512卡的订货号又是多少?谢谢! 最佳答案 1、订货要根据你的 PowerTag…

    SIMATIC WinCC 2019年6月11日
  • wincc画面中的变量总为零

    一个用wincc和s7-300组成的工程项目在运行中,突然画面中变量总为零,不随PLC中的变量变化而变化,且画面中变量的背景也与以前正常时不一样,是不是PC机与S7-300没连接上…

    SIMATIC WinCC 2019年6月11日
  • 请教WINCC运行事件记录问题

    我用报警记录实现的,现在遇到一个问题,如何只显示从某个时刻开始的记录?其他时间的记录不必显示. 问题补充:wincc flexible报警视图属性-"显示&qu…

    SIMATIC WinCC 2019年6月11日
  • Wincc画面路径如何获取

    希望实现VBS脚本获取对象的画面路径 图片说明:    最佳答案 在画面1中,加入VBS脚本:msgbox AccessPath 提问者对于答案的评价…

    2021年7月5日
  • 求wincc中的c脚本和vb脚本学习资料

    哪位大侠有c脚本和vb脚本的详细资料, 谁有能邮一份给我么: jeffreyzhou84@qq.com 或者哪儿能下载到? 非常感谢! 最佳…

    SIMATIC WinCC 2019年6月11日
  • 归档数据能进行修改吗

    上级要求对历史归档数据进行一些修改后重新进行显示,问下老师们,这能实现吗? WINCC是6.2版本的. 最佳答案 楼上几位都误解LZ了,其实楼主只是要修改历史数据而已。修…

    SIMATIC WinCC 2019年6月11日
  • wincc7.4 sp1 安装

    win7 32 sp1 专业版  虚拟机刚装完 第一个软件安装wincc7.4 sp1  …

    2021年7月5日
  • WINCC画面中点击按钮先弹出密码输入框再弹出确认框

    WINCC画面中点击按钮先弹出密码输入框,输入正确密码后,再弹出确认框;请问如何实现 最佳答案 在画面窗口的“画面”属性中连接一个内部变量,根据变量的值显示相应的画面,然后在点击按…

    SIMATIC WinCC 2021年7月5日