揭阳市西门子PLC代理商全系列6ES7331-7KF02-0AB0-全新原装

报价
请来电询价
联系手机
18475208684
微信号
18475208684
PLC触摸屏代理商
西门子代理商
伺服电机驱动电缆
西门子一级代理商
变频器直流调速器
西门子一级总代理商
西门子TIA Portal中WinCC脚本使用技巧汇总1)为什么一个由内部变量的 “数值改变”事件触发的脚本不被执行?

如果使用一个内部变量调用另外一个内部变量,以此,例如被调用的变量又去执行一个脚本(比如,根据变量变化),此时一个安全机制会阻止这个功能被执行。
此安全功能是为了阻止连续的执行。
例如
在内部变量 “HMI_Tag_01” 属性下,“更改数值”事件去置位内部变量 “HMI_Tag_02”中的某一位。同时内部变量 “HMI_Tag_02”的“更改数值”事件下又调用一个脚本。结果:这个脚本不会被执行。
解决办法
使用和控制器通讯的外部变量。请注意,通过使用外部变量可以规避上述安全机制。在项目运行时可能会产生问题。


(2)如何在一个脚本中访问数组中的元素?

对数组元素的访问是通过数组的名称和数组中由括号分隔的数组索引来实现的:“SmartTags("ArrayName")(array index) ”
例如    访问数组"DB10_HMI_Data" 的第二个元素 :

Dim Tag_01    \'Internal script tag
Tag_01 = SmartTags("DB10_HMI_Data")(2)

注意
使用下面语法访问字符串类型数组中的元素:

Dim Tag_01   \'Internal script tag
Tag_01 = SmartTags("DB10_HMI_Data[2]")

例如  通过一个循环描述数组 "DM10_HMI_Data"的第一个元素至第十一个元素

Dim Tag_01
For Tag_01=0 to 10
    SmartTags("DB10_HMI_Data")(Tag_01) =5
Next

局部脚本的数组(该数组仅在此脚本中可用)可以使用同样的方式查询,对于多维数组,各个维度通过一个逗号分隔开。

例如  访问二维数组变量 "HMI_Data" 没有连接控制器。

DimHMI_Data(10,10)
Dim Tag_01
Tag_01 =HMI_Data(0, 5)

注意
当使用控制器连接的数组元素时,推荐在脚本开始前将他们赋值给脚本内部变量,然后再使用内部变量进行其他工作。结束脚本前,将内部变量赋值给数组元素。
  

(3)如何在控制器和脚本之间有效的赋值过程变量数组?

从控制器到一个脚本赋值,过程变量数组需要在一个循环中将数组元素一个一个赋值,参考示例。然而,也可以通过一个简单的指令把局部脚本的数组的值赋给过程变量数组。
例如   把控制器的数组"CPU_Array" 的值赋给内部数组 "local_array" 和 把内部数组 "local_array" 的值赋给控制器的数组"CPU_Array" 

Dim local_array(10)
Dim i
...
\' Copy from the CPU to the script:
For i = 0 To 9
    local_array(i) =SmartTags("CPU_Array")(i)
Next
...
\' Copy back to the CPU:
SmartTags("CPU_Array") = local_array

注意使用数组可能导致较高的通信负载和数据不一致。
 

(4)如何访问动态库 ( "动态链接库 ",DLLs)?

WinCC Comfort 和 Advanced  不能访问  DLLs。WinCCProfessional在用户定义的C函数里可以调用DLL函数 (DLL = Dynamic Link Library)。

DLL 位于“..Common FilesSiemensin”文件夹中,或位于 PATH系统变量所定义的文件夹中。此变量由操作系统的系统属性指定。

步骤

按如下步骤执行,以通过 DLL 调用函数:

(1)打开要调用 DLL 函数的用户自定义 C 函数。

(2)在用户自定义 C 函数的开始位置添加以下代码:

 

#pragma code(".dll")

https://声明在 DLL 中存储的函数:

(...);

(...);

...

(...);

#pragma code

结果

<名称.dll> 中的函数 <函数名称 1=""> ... <函数名称n=""> 被声明。可在用户自定义 C 函数中调用这些函数。

示例:

以下示例显示如何集成“kernel32.dll”文件和调用“GetLocalTime”函数:

 

#pragma code("kernel32.dll")

VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);

#pragma code()

 

SYSTEMTIME st;

 

GetLocalTime(&st);

      

(5)如何用VBS脚本确定鼠标当前的位置?


为了读取当前鼠标的位置,需要访问操作系统的 API  (Application ProgrammingInterface) 。VBS 不支持通过 DLLs 访问操作系统的 API 。


(6)为什么不能在脚本里使用 “ MsgBox ” 命令?
“MsgBox” 命令不能用于 WinCC Comfort 和 WinCC Advanced 版本是由于安全的原因。“MsgBox”的弹出显示可能会覆盖掉元素操作,比如:阻止设备的快速操作。此外,消息框可能会阻止脚本的进一步执行。
解决办法可以使用系统函数ShowSystemAlarm。


如何在一个脚本中使用十六进制符号给变量赋值?
在脚本编辑器中把字符组合"&h"作为个十六进制常数的标识。
例如


Dim Tag_01
Tag_01= &h45E    \' Corresponds to the decimal value "1118"
 

(7)如何在脚本里显示或隐藏各个层级?
使用层是 WinCC (TIA Portal) 开发系统的一个功能。层只能在这里组态及显示隐藏。
这个功能在操作面板或 PC 的运行系统中不可用。所以不能用脚本显示或隐藏“层”。
解决办法
在 “ 属性>动画>可见性 ”组态变量,根据变量值控制相关对象的显示或隐藏。
 


(8)如何在脚本中合并字符串?

可以使用“ ”来合并字符串:
例如  将 "Tag_Text_01", "Tag_Text_02" 和 "Tag_Text_03" 合并成新字符串"Tag_01"


    Dim Tag_01, Tag_Text_01, Tag_Text_02,Tag_Text_03
    Tag_01 =Tag_Text_01 & Tag_Text_02 & Tag_Text_03
注意
VB函数 CStr (Expression)将相应的表达式转换为“字符串”类型。 这样在连接字符串转换之前可以避免运行时出现错误。
 

(9)在脚本中如何在单独的字符串之间插入一个通配符(空格)?

为了在两个文本之间插入任意数量的空格,可以使用两个引号 ""。“空格”的数量取决于两个引号间的距离"  "

连接下一个字符需要再次使用连接操作"&"。

例如  将字符串"Tag_Text_01", "Tag_Text_02" 和 "Tag_Text_03" 还有空格组合成一个新的字符串"Tag_01"

    Dim Tag_01, Tag_Text_01, Tag_Text_02,Tag_Text_03
    Tag_01 = Tag_Text_01& " " &Tag_Text_02 & "" & Tag_Text_03


(10)如何组态带返回值和参数的脚本?

脚本类型必须是“ Function ”才可以有返回值。所以,请在TIA Portal 中添加新 VB 函数的  "Properties > General> Settings"  类型的下拉列表框中选择  “Function” 。

在 “ Parameter ”表格中您以创建脚本变量用来将内部变量或控制器变量传入在脚本需要的时候。组态函数返回值,在脚本中为脚本的名称分配表达式。

例如

组态函数类型,。按下面所示,在TIA Portal  组态名称为 “ VBFunction_1 ”脚本函数的参数和返回值:

 

图片

图. 01

例如,脚本在按钮的 “ Click ” 的事件中被使用。

图片

图. 02


在脚本中使用 "HMI_Tag_1" 的值赋给"Parameter_1" ,"HMI_Tag_2"的值赋给"Parameter_2" ,必须有一行脚本定义了返回值。

下面的例子的返回值是两个传入参数的乘积:

VB_Function_1= Parameter_1 * Parameter_2
"VB_Function_1" 是这个函数的名字,在执行这个脚本后,"HMI_Tag_3" 获得这个函数的返回值是 "HMI_Tag_1" * "HMI_Tag_2" 。

注意

定义一个 "by reference" 的参数 ,这意味着作为 "By_Ref "参数,仅对脚本中定义的和引用的变量产生影响,对 HMI内部变量或者控制器变量不起作用。
 

(11)如何在运行时改变对象的属性(颜色,长度等)?

以下手册中提供了对象的属性和使用的信息:
SIMATIC WinCC WinCC Engineering V15 - 编程参考下"VB脚本编写 > VBS 对象模型> 属性"。(没有该手册的可以联系主编)


(12)什么能导致“Zui大嵌套深度到达”消息被触发?

如果太多的脚本在结束前调用自己或者调用其他脚本,会引起到达Zui大嵌套深度消息。


解决方法检查脚本过程的处理,如有必要,减少脚本的嵌套。

(13)如何确定当前画面的编号和画面名称?

通过预定义 VB 函数“HmiRuntime.BaseScreenName ”的返回值提供了当前画面的名字。
注意
不能使用脚本通过相关画面的“属性”直接读取画面名称/编号。
也可以使用“画面编号”区域指针。


(14)如何在脚本中使用多路复用变量?

多路复用变量不能用在脚本中。
 


(15)如何在脚本里使用 HMI UDT 变量?

可以使用“SmartTags” 访问数据类型是HMI UDT的变量元素(用户定义的数据类型)。

例如  访问 UDT变量 " Recipe " 的元素 "x"

SmartTags("Recipe.x")

注意
这适用于在项目中已创建库类型 HMI UDT的实例。不能直接访问库类型。


(16)如何在脚本中保存变量值当他们在两个脚本之间调用?
在两个脚本间相互传递数据需要使用全局变量。全局变量可以是HMI 或者 PLC 变量。

脚本中定义的变量总是在脚本结束时删除。
 

(17)如何通过脚本修改文本域的内容?

文本域的文本在运行时可以通过修改相应的对象属性而改变。

例如  在画面"MachineData" 中,将文本  "NewText"  分配给 文本域 "Text_Field_01" :

Dim obj
Set obj =HmiRuntime.Screens("MachineData").ScreenItems("Text_Field_01")
obj.Text ="NewText"

注意
文本的变化只是“暂时”的。当屏幕更改后这个被修改后的文本将被组态的文本覆盖。
 

(18)如何在脚本中从密码列表或用户视图中读取用户密码?
由于安全原因这个功能在 WinCC (TIA Portal) 中不能实现。

(19)如何通过脚本关闭 WinCC 运行系统和关闭PC和面板?

通过系统函数 StopRuntime” 可以关闭WinCC 运行系统和操作系统 。

可以通过修改 "StopRuntime"函数的参数方式选择仅关闭运行系统或者将运行系统和操作系统都关闭。
   

ParameterMeaning

0 = hmiStopRuntime

Ends on the Runtime

1 = hmiStopRuntimeAndOperationSystem

Ends both the Runtime and the OS

例如StopRuntimehmiStopRuntime
StopRuntime 1

注意 Windows-based面板的操作系统不能通过这种方式关闭。
  

(20)如何在脚本中访问一个画面或者模板的对象?

组态 “Runtime”对象的属性 “ ActiveScreen”,可以找到画面上组态对象的名字和修改相关的属性。

例如  把激活屏幕中的对象  "Circle_01"设置为不显示 

 HmiRuntime.ActiveScreen.ScreenItems("Circle_01").Visible=False

注意
在画面中被组态对象必须有唯一的名字。对象的属性修改仅是暂时的,当屏幕更改后视图使用组态时的配置。


关键词

西门子一级总代理商 , 西门子总代理商 , 西门子变频器一级代理商 , 西门子PLC触摸屏代理商 , 西门子伺服电机电缆代理商

更新时间
钻石会员
第3年
统一社会信用代码
441304000246495
成立日期
2022年11月17日
法定代表人
林海霞

主营产品

西门子PLC、西门子模块、西门子触摸屏、西门子变频器、西门子伺服电机驱动电缆、西门子工控机、西门子低压、西门子控制单元、西门子全系列等

经营范围

一般项目:技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广;工业自动控制系统装置销售;仪器仪表销售;电线、电缆经营;工业机器人安装、维修(上门服务);工业工程设计服务;机械设备租赁;电工仪器仪表销售;专用设备修理(上门服务);配电开关控制设备销售;电气信号设备装置销售;五金产品零售;家用视听设备销售;网络设备销售;物联网技术服务;电子元器件批发;专

公司简介

广东湘恒智能科技有限公司主要从事工业自动化产品的集成,销售与维修。致力于为您提供在机械、化工、水泥、电力、环保等领域的电气及自动化技术的完整解决方案,包括自动化产品及系统、工程项目执行及管理、主要过程控制领域技术支持,以及专业的售后服务、培训等。公司本着“以人矢志创新、追求卓越”的工作方针,致力于工业自动化控制领域的产品开发、工程配套和系统集成、销售,拥有丰富的自动为本、科技先导、化产品的应用和实践经验以及雄厚的技术力量,尤其以 PLC...

查看公司详情
联系电话13922889745拨打手机18475208684拨打
经理向小姐
地址惠州大亚湾澳头石化大道中480号太东天地花园6栋32号铺
我们其他产品
我们的新闻
微信
电话