<< 点击显示目录 >> 主页 mappView帮助助手 > mappView入门简单Wiki > 描述 |
事件文件构建器可用于快速复制和粘贴事件绑定。 复制第 1-4 章中的代码以创建事件绑定。
从事件绑定的外框开始
<EventBinding>
<!-- Add a description for the event binding here />-->
</EventBinding>
添加一个以下类型的事件触发器。 读 这里 了解更多信息。
<Source xsi:type="opcUa.Event" refId="::Program:boolVariable" event="ValueChanged" />
触发器创建两个内部变量 newValue 和 oldValue。 这些值可以稍后用于条件。
Variable
<Source xsi:type="session.Event" refId="variable1" event="ValueChanged"/>
Timer
<Source xsi:type="session.Timer.Event" refId="AutoLogOutTimer" event="Elapsed"/>
触发器创建两个内部变量 newValue 和 oldValue。 这些值可以稍后用于条件。
•键盘事件 KeyBoard Events
<Source xsi:type="clientSystem.Event" event="KeyPress" />
<Source xsi:type="clientSystem.Event" event="KeyUp" />
<Source xsi:type="clientSystem.Event" event="KeyDown" />
触发器创建两个变量 keyASCII 和 key。 该值可以稍后用于条件。
<EventHandler condition="keyASCII = 97" >
<EventHandler condition="key = "ArrowLeft"" >
•手势事件 Gesture Events
<Source xsi:type="clientSystem.Event" event="SystemSwipe" />
触发器创建一个变量direction。 该值可以稍后用于条件。
<EventHandler condition="direction="fromTop"">
•内容加载事件 ContentLoaded Event
<Source xsi:type="clientSystem.Event" event="ContentLoaded" />
触发器创建两个变量 contentId 和 visuId。 这些值可以在以后用于条件。
<EventHandler condition="contentId="Content1"">
•取消点击事件 DisabledClick Event
<Source xsi:type="clientSystem.Event" event="DisabledClick" />
触发器创建三个变量 contentId、widgetId 和 hasPermission。 这些值可以在以后用于条件。
<EventHandler condition="contentId="Content1"">
•对话框打开事件 DialogOpened Event
<Source xsi:type="clientSystem.Event" event="DialogOpened" />
触发器创建一个变量dialogId。 该值可以稍后用于条件。
<EventHandler condition="dialogId="Dialog1"">
•对话框关闭事件 DialogClosed Event
<Source xsi:type="clientSystem.Event" event="DialogClosed" />
触发器创建一个变量dialogId。 该值可以稍后用于条件。
<EventHandler condition="dialogId="Dialog1"">
<Source xsi:type="widgets.brease.Button.Event" contentRefId="Content1" widgetRefId="Button1" event="Click"/>
操作数可用于将其他变量加载到事件绑定中。
操作数的数据类型可以是 BOOL, ANY_REAL, ANY_INT, ANY_STRING, BOOL_ARRAY, ANY_REAL_ARRAY, ANY_INT_ARRAY, ANY_STRING_ARRAY, DATE_AND_TIME
<!-- Read value from PLC />-->
<Operand name="ContentIsVisible1" datatype="BOOL">
<ReadTarget xsi:type="opcUa.NodeAction.Read" refId="::AsGlobalPV:Motor[1].IsVisible" >
<Method xsi:type="opcUa.NodeAction.GetValue" />
</ReadTarget>
</Operand>
<!-- Read session variable />-->
<Operand name="InputValue2" datatype="ANY_INT">
<ReadTarget xsi:type="session.VariableAction.Read" refId="InputValue2" >
<Method xsi:type="session.VariableAction.GetValue" />
</ReadTarget>
</Operand>
<!-- Read widget property />-->
<Operand name="contentid" datatype="ANY_STRING">
<ReadTarget xsi:type="widgets.brease.ContentControl.ReadAction" contentRefId="Content1" widgetRefId="ContentControl1" >
<Method xsi:type="widgets.brease.ContentControl.Action.GetContentId" />
</ReadTarget>
</Operand>
这是触发触发器时执行的部分。 选择 3.1 或 3.2 并在必要时添加 3.3。
当动作应该一直执行时,使用这个框架作为处理程序。
<EventHandler>
</EventHandler>
在某些情况下,可能需要将事件触发器与其他条件结合起来。 有关比较的详细信息,请参阅 this . 布尔值使用表示法“newValue”表示真,“NOT newValue”表示假。
<!-- New value smaller 20, old value greater 10 />-->
<EventHandler condition="newValue < 20 AND oldValue > 10" >
</EventHandler>
<!-- String value is not equal 'correct' />-->
<EventHandler condition="value <> "correct"">
</EventHandler>
如果事件处理程序必须执行多个操作,请使用序列帧。
<Sequence>
<Step order="0">
...
</Step>
<Step order="1">
...
</Step>
</Sequence>
触发触发器时执行操作。 以下目标可用于操作。 参考 this 了解更多细节. 将以下外框用于事件操作,然后将以下目标之一复制到其中。
<Action>
</Action>
•SetValueBool
<Target xsi:type="opcUa.NodeAction" refId="::Program:Variable1" >
<Method xsi:type="opcUa.NodeAction.SetValueBool" value="true" />
</Target>
使用false重置变量
•ToggleValueBool
<Target xsi:type="opcUa.NodeAction" refId="::Program:Variable1" >
<Method xsi:type="opcUa.NodeAction.ToggleValueBool"/>
</Target>
•SetValueNumber
<Target xsi:type="opcUa.NodeAction" refId="::Program:Variable1" >
<Method xsi:type="opcUa.NodeAction.SetValueNumber" value="37.1" />
</Target>
•AddValue
<Target xsi:type="opcUa.NodeAction" refId="::Program:Variable1" >
<Method xsi:type="opcUa.NodeAction.AddValue" value="2" />
</Target>
•SetValueString
<Target xsi:type="opcUa.NodeAction" refId="::Program:Variable1" >
<Method xsi:type="opcUa.NodeAction.SetValueString" value="Hello World" />
</Target>
•SetValueDateAndTime
<Target xsi:type="opcUa.NodeAction" refId="::Program:Variable1" >
<Method xsi:type="opcUa.NodeAction.SetValueDateTime" value="2018-02-23T09:33:30Z" />
</Target>
•GetValue
<ReadTarget xsi:type="opcUa.NodeAction.Read" refId="::Program:Variable1" >
<Method xsi:type="opcUa.NodeAction.GetValue" />
</ReadTarget>
•GetServerStatus
<ReadTarget xsi:type="opcUa.SystemAction.Read" serverAlias="extern" >
<Method xsi:type="opcUa.SystemAction.GetServerStatus" />
</ReadTarget>
每个客户端连接的会话变量都作为单独的数据集存在。
•SetValueBool
<Target xsi:type="session.VariableAction" refId="Variable1" >
<Method xsi:type="session.VariableAction.SetValueBool" value="false" />
</Target>
使用 false 重置变量
•ToggleValueBool
<Target xsi:type="session.VariableAction" refId="Variable1" >
<Method xsi:type="session.VariableAction.ToggleValueBool" />
</Target>
•SetValueNumber
<Target xsi:type="session.VariableAction" refId="Variable1" >
<Method xsi:type="session.VariableAction.SetValueNumber" value="4.8" />
</Target>
•AddValue
<Target xsi:type="session.VariableAction" refId="Variable1" >
<Method xsi:type="session.VariableAction.AddValue" value="-4.8" />
</Target>
•SetValueString
<Target xsi:type="session.VariableAction" refId="Variable1" >
<Method xsi:type="session.VariableAction.SetValueString" value="Hello World" />
</Target>
•SetValueDateAndTime
<Target xsi:type="session.VariableAction" refId="Variable1" >
<Method xsi:type="session.VariableAction.SetValueDateTime" value="2018-02-23T09:33:30Z" />
</Target>
•GetValue
<ReadTarget xsi:type="session.VariableAction.Read" refId="Variable1" >
<Method xsi:type="session.VariableAction.GetValue" />
</ReadTarget>
•Start (Timer)
<Target xsi:type="session.TimerAction" refId="RepetitivTimer" >
<Method xsi:type="session.TimerAction.Start" interval="1000" />
</Target>
•Stop (Timer)
<Target xsi:type="session.TimerAction" refId="RepetitivTimer" >
<Method xsi:type="session.TimerAction.Stop" />
</Target>
•IsRunning (Timer)
<ReadTarget xsi:type="session.TimerAction.Read" refId="RepetitivTimer" >
<Method xsi:type="session.TimerAction.IsRunning" />
</ReadTarget>
•OpenDialog
<Target xsi:type="clientSystem.Action">
<Method xsi:type="clientSystem.Action.OpenDialog" dialogId="dialog1" horizontalPos="left" verticalPos="top" />
</Target>
•CloseDialog
<Target xsi:type="clientSystem.Action">
<Method xsi:type="clientSystem.Action.CloseDialog" dialogId="dialog1" />
</Target>
•ShowMessageBox
<Target xsi:type="clientSystem.Action">
<Method xsi:type="clientSystem.Action.ShowMessageBox" type="OKCancel" message="$MachineStoppedText" header="Warning!" icon="Warning" />
</Target>
<Result>
<ResultHandler condition="result = 4">
...
</ResultHandler>
</Result>
•Action.Navigate
<Target xsi:type="clientSystem.Action"> <Method xsi:type="clientSystem.Action.Navigate" pageId="mainpage" /> </Target>
•LoadContentInArea
<Target xsi:type="clientSystem.Action">
<Method xsi:type="clientSystem.Action.LoadContentInArea" contentId="Content3" areaId="A1" pageId="MainPage" />
</Target>
The action returns the result for load successful
•LoadContentInDialogArea
<Target xsi:type="clientSystem.Action">
<Method xsi:type="clientSystem.Action.LoadContentInDialogArea" contentId="Content3" areaId="A1" dialogId="Dialog1" />
</Target>
The action returns the result for load successful
•ChangeTheme
<Target xsi:type="clientSystem.Action">
<Method xsi:type="clientSystem.Action.ChangeTheme" theme="MyNewTheme" />
</Target>
•Login
<EventBinding>
<Source xsi:type="opcUa.Event" refId="::Program:startLogin" event="ValueChanged" />
<Operand name="user" datatype="ANY_STRING">
<ReadTarget xsi:type="opcUa.NodeAction.Read" refId="::Program:user">
<Method xsi:type="opcUa.NodeAction.GetValue" />
</ReadTarget>
</Operand>
<Operand name="pwd" datatype="ANY_STRING">
<ReadTarget xsi:type="opcUa.NodeAction.Read" refId="::Program:pwd">
<Method xsi:type="opcUa.NodeAction.GetValue" />
</ReadTarget>
</Operand>
<EventHandler condition="newValue = 1">
<Action>
<Target xsi:type="clientSystem.Action">
<Method xsi:type="clientSystem.Action.Login" userName="=user" password="=pwd" />
</Target>
</Action>
</EventHandler>
</EventBinding>
•Logout
<Target xsi:type="clientSystem.Action">
<Method xsi:type="clientSystem.Action.Logout"/>
</Target>
•SetLanguage
<Target xsi:type="clientSystem.Action">
<Method xsi:type="clientSystem.Action.SetLanguage" value="en" />
</Target>
•SetMeasurementSystem
<Target xsi:type="clientSystem.Action">
<Method xsi:type="clientSystem.Action.SetMeasurementSystem" value="imperial" />
</Target>
•ScrollContent
<Target xsi:type="clientSystem.Action">
<Method xsi:type="clientSystem.Action.ScrollContent" contentId="Content2" position="top" duration="2000" />
</Target>
The action returns the result for load successful
•OpenDialogAtTarget
<Target xsi:type="clientSystem.Action">
<Method xsi:type="clientSystem.Action.OpenDialogAtTarget" dialogId="dialog1" horizontalPos="left" verticalPos="bottom" target="StartContent_Button1" horizontalDialogAlignment="left" verticalDialogAlignment="middle"/>
</Target>
这些是可以在Widget上执行的操作。 有关每个小部件可以触发哪些事件的详细信息,请参阅 Automation Studio 帮助。
<Target xsi:type="widgets.brease.Button.Action" contentRefId="Content1" widgetRefId="Button1" >
<Method xsi:type="widgets.brease.Button.Action.SetEnable" value="true"/>
</Target>