创建一个自定义函数。

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

 有一组阀门通用一个操作界面,要求点动开或关,开度模拟量输入。
 变量如下:驱动开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日
下一篇 2019年6月11日

相关推荐