欢迎来到西门子工业支持中心网站!

  1. 移动端入口
    • 工业服务小程序
    • 支持中心移动端首页
    • 智能小西-智能问答与在线预约
    • SIEMENS工业找答案小程序
    • SIEMENS工业专家大讲堂小程序
    • 西门子工业1847俱乐部
    • 自动化So酷
  2. 签到有奖
  3. 登录后可享:

    学技术视频
    查海量资料
    论话题经验
    问常见问题
    立即登录

    还没有账号?

    立即注册
  4. 会员
  5. 消息

    登录后可查看消息记录

    立即登录
  6. 收藏

    登录后可查看收藏记录

    立即登录
  7. 历史

    登录后可查看历史记录

  8. 公告
搜索

热搜词:1847工业学习平台SIWAREX MS选型

  • 技术支持
    • 首页
    • 智能小西-自动预约
    • 风驰卡
    • 产品入门
  • 下载中心
    • 首页
    • 售前文档(样本、宣传册等)
    • 售后文档(FAQ、手册等)
  • 工业学习平台
    • 首页
    • 了解会员权益
    • 立即开通1847会员
  • 培训认证
    • 首页
    • 取证训练营
    • 教室培训
    • 证书查询
  • 技术论坛
    • 首页
    • 最新发帖
    • 精华帖
    • 发新帖
  • 找答案
    • 首页
    • 已解决问题
    • 精华常见问题
    • 发布新问题
  • 售后服务
    • 首页
    • 提交服务需求
    • 查询服务进程

西门子官方商城

西门子中国
  • 工业自动化
  • 驱动技术
  • 客户服务
  • 冶金技术
  • 行业市场解决方案
  • 工业支持中心
工业支持中心
  • 我的支持中心
  • 下载中心
  • 全球技术资源
  • 1847工业学习平台
  • 产品入门新手必读
  • 找答案
  • 技术论坛
  • 售后服务
  • 网络资源新手必读
  • 高级搜索
技术论坛
  • 论坛公告
  • 用户指南
  • 用户排行榜
  • 热门帖子
  • 最高收藏帖
  • 精华帖
  • 分享帖
  • 高端推荐帖
  • 在线用户列表
  • 论坛管理
特别专题 / 西门子工业1847俱乐部
畅学技术 | SIMATIC WinCC V7.5脚本应用——C脚本参数应用
 • 产品分类
自动化系统
    SIMATIC S7-1500(T) 
    SIMATIC S7-1200 
    SIMATIC S7-200
    SIMATIC S7-200 SMART 
    SIMATIC S7-300/400 
    SIMATIC S5
    SIMATIC Net
    Profinet技术开发专区
    工业边缘计算
    SIMATIC WinCC / Panel 
    SIMATIC WinCC OA (原PVSS)
    SIMATIC PCS 7
    IPC/PG
    LOGO!
    SIMATIC IOT2000
    工业电源
驱动技术
    MicroMaster 
    MasterDrives
    直流调速器
    电机
    SIMOTION
    SINAMICS 
    驱动技术综合产品
数控系统
    SINUMERIK 
    SIMODRIVE
低压电器
    低压电器
传感器与通讯
    过程仪表
    分析仪器
    工厂传感器
谈天说地
    谈天说地
 • 咱工程师的故事
网友专栏
    网友专栏 
1847大咖专栏
    电气传动系统漫谈
    崔工谈博途与PLC
    漫谈SCADA进阶之路
    运动控制产品天地
    聊聊收放卷
    运动控制应用天地
    驱动诊断
    西家讲师教学精要
    漫谈过程自动化
    PROFINET工业通信详解
    冯工聊工业网络
    EMC问题及处理
特别专题
    专家大讲堂课后探讨
    西家技术派
    专家诊断专栏
    西家传动
    自动化so酷
    西门子工业1847俱乐部
 • 培训与认证答疑专区
培训与认证答疑专区
    S7-1200精英训练营
    WinCC精英训练营
    S7-200SMART精英训练营
    小型自动化系统
    V90精英训练营
    G120变频器精英训练营
    PLC编程精英训练营
 • 服务合作伙伴专区
服务合作伙伴专区
    西门子工业技术π圈
    Networks and Communication
    GMC蓝黄带考试-G120
    GMC蓝黄带考试-V90
    GMC 合作伙伴专区
  • 畅学技术 | SIMATIC WinCC V7.5脚本应用——C脚本参数应用
  • 作者: 1847会员 羲发布时间:2021-11-05 13:08:29浏览次数:914次 官方 回复本帖
  • 西门子工业官方学习订阅号

    汇聚工业领域的学习型人才

    传递工业自动化和数字化方面的专业知识

    分享全面的行业经验

    让我们一起学习、持续创新、共塑未来

    SIMATIC WinCC是西门子推出的强大的SCADA和HMI系统,其带有VBScript、C脚本、和VBA脚本功能。基于脚本功能可以大大扩展WinCC的功能。

    VBScript:WinCC提供了使用Visual Basic脚本,可以用来编写全局动作程序和函数,以及 在Runtime中动态化图形对象和触发动作。与VBA不同,VBS既不能在编辑状态下创建对象和画面,也不能修改对象和画面。

    VBA脚本:在图形设计器中,WinCC提供VBA编辑器,可以通过编写 VBA 自动创建配置图形。该VBA编辑器与微软Office产品中的VBA编辑器相同。工程师可以直接利用Office中的VBA编程经验。

    ANSI C:在Runtime中,后台任务,例如打印日常报告、监控变量或执行特定的计算,都可以使用C脚本来执行。WinCC存在大量的函数,可以由工程师使用,也可以基于C语言开发自己的功能。

    本文“SIMATC WinCC V7.5脚本应用—C脚本参数应用”为您提供WinCC事件脚本、内部函数和项目函数的使用方法,掌握后您可以大幅提高WinCC项目的组态效率。

    WinCC的事件脚本(例如按钮按下触发的脚本)、标准函数、内部函数以及项目函数(用户自定义函数)都带有接口参数,本文档将通过一个例子来介绍这些参数的应用。

     案例功能概述 

    本例实现通过画面模板结合结构变量来实现多个电机的控制功能。点击画面中的不同按钮弹出相应电机的控制画面,并且画面标题与按钮文本保持一致,同时操作画面弹出位置和按钮位置对应。

    1.jpg

    首先创建 “motor” 结构类型,包括start、stop和run三个元素,分别用来控制电机的启动、停止以及反馈电机的状态。然后,创建4个数据类型为“motor”的结构变量,分别为motor1、motor2、motor3和motor4。

    2.jpg

    创建画面作为模板画面,添加如下图所示的对象并调整画面大小。运行状态文本及文本颜色根据“run”元素的值发生变化,因此为文本创建文本及字体颜色的动态对话框动画,使用变量“.run”。

    3.jpg

    “启动”按钮置位结构变量的“start”元素,复位结构变量的“stop”元素,编写如下C脚本:

    SetTagBit(".start",1);

    SetTagBit(".stop",0);

    “停止”按钮置位结构变量的“stop”元素,复位结构变量的“start”元素,同样编写如下C脚本:

    SetTagBit(".stop",1);

    SetTagBit(".start",0);

    接下来介绍如何使用C脚本来设置画面窗口的属性,将介绍直接使用标准函数和使用项目函数两种方法:

    使用标准函数实现

    新建画面,在画面中添加四个按钮和一个画面窗口,四个按钮分别用来打开电机的控制画面,按钮文本设置为“电机一”、“电机二”、“电机三”和“电机四”,设置画面窗口对象的名称为“picw1”,其它对象和属性保持默认即可。

    为按钮编写以下C脚本,用来设置画面窗口的变量前缀、对应画面名称并显示画面窗口,读取按钮的文本并设置画面标题,根据按下按钮时鼠标的位置来确定弹出画面的位置

    4.jpg

    脚本运行结果如下图:

    5.jpg

    首先来看按钮事件脚本的参数: void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y),其中lpszPictureName为按钮所在的画面名称,lpszObjectName为按钮对象的名称,lpszPropertyName为触发事件的按钮属性名称,x、y为点击按钮时鼠标所处的位置。这些接口参数可以被其下面的脚本直接使用。

    接着来看具体的脚本,这里使用的都是WinCC内部函数。

    设置画面窗口的变量前缀使用函数SetTagPrefix(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName,char* szTagPrefix),其中lpszPictureName是画面窗口所在画面的名称,lpszObjectName是画面窗口对象的名称,szTagPrefix为变量前缀,这三个参数都可以设置为字符串数据。例如,本例为画面窗口的变量前缀设置为“motor1”的脚本为SetTagPrefix(lpszPictureName, "picw1","motor1"),由于事件接口参数已经包括画面名称lpszPictureName,因此这里可以直接使用此参数。

    设置画面窗口的画面名称使用SetPictureName(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName, char* szPictureName) ,其中lpszPictureName是画面窗口所在画面的名称,lpszObjectName是画面窗口对象的名称,szPictureName为画面名称。例如,本例画面窗口加载画面“motor”的脚本为SetPictureName (lpszPictureName,"picw1","motor")。

    设置某个对象是否显示使用函数SetVisible(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName, BOOL bVisible),其中参数lpszPictureName和 lpszObjectName分别是画面名称和对象名称,bVisible=0时对象隐藏,bVisible=1时对象显示。例如,本例中设置画面窗口"picw1"显示的脚本为 SetVisible (lpszPictureName, "picw1",1)。

    获取对象文本的函数为GetText(lpszPictureName,lpszObjectName),本例中获取按钮对象的文本,由于事件接口参数已经包括按钮对象名称,因此可以直接使用事件参数lpszPictureName和lpszObjectName ,脚本为GetText (lpszPictureName, lpszObjectName) ;

    设置对象属性的函数为SetPropxxxx,xxxx和属性的类型相关,本例中设置画面窗口的标题,标题为文本,因此使用函数SetPropChar (LPCTSTR lpszPictureName, LPCTSTR lpszObjectName, LPCTSTR lpszPropertyName, char* szValue) ,其中lpszPropertyName代表属性名称。本例中读取按钮文本并设置画面窗口的标题的脚本为SetPropChar (lpszPictureName, "picw1", "CaptionText", GetText(lpszPictureName,lpszObjectName)),"CaptionText"是画面窗口的标题属性名称。

    设置对象位置的函数为SetLeft(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName, long int lTop)、SetTop(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName, long int lTop)。本例中,设置画面窗口弹出位置的脚本为SetLeft(lpszPictureName,"picw1",x);SetTop (lpszPictureName, "picw1", y),由于事件参数已经包括鼠标位置x、y,这里可以直接使用。

    这些函数对应参数的说明可以从WinCC帮助系统中获得。

    6.jpg

    另外,在事件中使用函数时,会弹出参数选择对话框,在这里可以为各个参数选择对应的对象或输入数值,也可以点击“确认”按钮之后在脚本编辑器中修改参数。

    7.jpg

    通过项目函数实现

    本例中多个按钮实现相同的功能,因此可以使用项目函数来提高组态效率。首先创建项目函数,并为项目函数添加接口参数,包括对象所在画面名称、画面窗口的名称、画面窗口加载的画面名称、变量前缀、对象名称以及画面窗口的显示位置,本例中创建的项目函数为:void motor_op(char* lpszPictureName, char* PicWName,char* PICName,char* TagPName,char* lpszObjectName,int x, int y)

    函数下面的脚本就可以直接使用项目函数的接口参数,具体脚本:

    SetTagPrefix(lpszPictureName, PicWName,TagPName);//设置画面窗口的变量前缀

    SetPictureName(lpszPictureName,PicWName,PICName);//设置画面窗口的画面名称

    SetVisible(lpszPictureName,PicWName,1);   //设置画面窗口显示

    SetPropChar(lpszPictureName,PicWName,"CaptionText",GetText(lpszPictureName,lpszObjectName));//读取按钮文本并设置画面窗口的标题       

    SetLeft(lpszPictureName,PicWName,x);   //设置画面窗口显示位置Left 

    SetTop(lpszPictureName,PicWName,y); //设置画面窗口显示位置Top

    项目函数最终结果如下图:

    8.jpg

    在画面按钮事件中调用项目函数,由于画面名称、按钮对象名称和鼠标位置已经在事件接口参数中提供,因此只需要设置画面窗口名称、画面窗口加载的画面名称和变量前缀三个参数即可。

    9.jpg

    4个按钮的最终脚本如下:

    motor_op(lpszPictureName,"picw1","motor","motor1",lpszObjectName,x,y); //电机一

    motor_op(lpszPictureName,"picw1","motor","motor2",lpszObjectName,x,y); //电机二

    motor_op(lpszPictureName,"picw1","motor","motor3",lpszObjectName,x,y); //电机三

    motor_op(lpszPictureName,"picw1","motor","motor4",lpszObjectName,x,y); //电机四

    使用项目函数后运行项目,点击“电机一”、“电机二”、“电机三”、“电机四”弹出相应电机的控制画面,画面标题与按钮文本保持一致,同时画面弹出位置和按钮位置相对应。

    10.jpg

     结束语 

    通过这篇文档,我们学习了WinCC事件脚本、内部函数和项目函数的参数的作用及使用方法,并了解了如何结合使用这些接口参数。掌握这些方法之后可以大幅提高WinCC项目的组态效率。

    后续我们还会介绍更多的脚本使用技巧,下期再见!


    本文版权归西门子工业1847俱乐部所有,转载或者引用本文内容需注明来源及作者。


    推荐帖推荐理由:(推荐人:)  修改
    有帮助(2)


  • weiyt:1楼2021-11-05 13:28:58

  • 简要介绍一下C脚本指令,和指令注意问题,使用体会即可

    精华帖版主置评:
    推荐帖推荐理由:(推荐人:)
    有帮助(0)

      
    收起
    畅学技术 | SIMATIC WinCC V7.5脚本应用——C脚本参数应用
    • 收藏

    • 有帮助

    • 回复
    回复
     *帖子内容
    上传附件要求

    1. 文件大小:上传文件的大小请限制在1M以内。

    2. 文件格式:请不要上传.exe文件,系统支持的格式有:.jpg, .jpeg, .pdf, .gif, .zip, .rar, .doc,.docx, .xls,.xlsx, .ppt, .mp3, .wma, .wmv .asf, .avi, .bmp, .png, .txt, .7z

    发布帖子
    • 分享帖
    • 故事帖
    • 技术探讨帖
    • 求助帖
    • 西家杂谈
    • 投票帖
    邮件
    只看
    楼主
    只看
    精华
    只看
    精编
    发帖
    回复
    二维
    码
    ×
    ◆
    扫描打开手机版

    全球技术资源

    • 推荐文档
    • 新手必读文档
    • mySupport
    • 常问问题
    • 手册
    • 应用与工具
    • 证书
    • 软件
    • 产品通知
    • 特性曲线
    • 技术数据
    • 订阅文档 

    取证训练营

    • 首页
    • 取证训练营
    • 精品课程
    • 证书查询

    技术论坛

    • 首页
    • 发帖
    • 精华贴
    • 高赞帖
    • 分享帖
    • 当前热门
    • 为您推荐
    • 最新发帖
    • 季度标兵
    • 精华之星
    • 用户荣誉榜
    • 我的关注

    找答案

    • 首页
    • 精华问答
    • 高赞问答
    • 有奖问答
    • 全部已解决问题
    • 待解决问题
    • 待推荐问题
    • 快侠榜
    • 上周排行
    • 总分排行
    • 历届夺魁答侠

    产品入门新手必读

    • 首页
    • S7-200产品入门
    • S7-1500产品入门
    • PCS 7产品入门
    • WinCC产品入门
    • MM4系列变频器产品入门
    • S120变频器产品入门
    • SINUMERIK 808D产品入门
    • 国产V系列变频器和数控产品入门
    • 网站新手必读

    售后服务

    • 售后服务简介
    • 服务网络及联系方式
    • 提交服务需求
    • 查询服务进程
    • 下载服务登记表格
    • 我的售后服务信息
    • 售后服务常见问题
    • 服务合作伙伴
    西门子中国  © 西门子(中国)有限公司 1996 – 2021  企业信息   隐私政策  使用条款  京ICP备06054295号  京公网安备 11010502040638号

    系统提示

    新密码:

    密码至少8位,包含大、小写字母,数字和符号至少三种。

    确认密码:

    密码至少8位,包含大、小写字母,数字和符号至少三种。

    取消 确定

    系统提示

    手机号
    验证码
    获取验证码
    暂不验证
    绑 定

    系统提示

    新密码:

    密码至少8位,包含大、小写字母,数字和符号至少三种。

    确认密码:

    密码至少8位,包含大、小写字母,数字和符号至少三种。

    取消 确定

    验证码登录

    密码登录

    获取验证码

    未注册手机验证后自动登录,登录即代表同意
    《支持中心网站注册协议和隐私政策》

    微信登录
    获取验证码
    忘记密码 没有账号?立即注册
    微信登录
     

     短信登录

     

    获取动态密码

     

    登录

     

    ×
    立即
    签到
    已签到
    已签到0天
    累计可抽西币次数:0次抽奖机会
    累计可抽大奖次数:0次抽奖机会
    信息提示
    很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。
    编辑推荐: 关闭

    请填写推广理由:

    正在加载...
     
    发分享帖
    爱工控,乐分享,
    分享您的经验与案例
    发故事
    发表您的精彩故事,
    参与征文活动
    技术探讨帖
    阐述您的观点,
    表达我的看法
    西家杂谈
    海侃天南地北,
    闲聊工控世界
    发求助帖
    求道解惑,“刨根问底”
    解决问题
    发投票帖
    邀投票,做调查,
    网友帮您来作主