全局脚本接口

全局脚本提供接口,方便您通过几行代码快速实现多流程控制和通信控制。

全局脚本接口概览

表 1 全局脚本接口

实现类型

方法

描述

初始化

Init

全局脚本初始化

流程逻辑处理

Process

定义方案下所有流程的批量执行逻辑

SetScriptContinuousExecuteInterval

设置Process方法连续运行的时间间隔

GetScriptContinuousExecuteInterval

获取Process方法连续运行的时间间隔

释放资源

Dispose

释放不再需要的资源

方案加载完成时初始化

InitAfterLoadSol

方案加载完成后进行初始化,实现方案加载完成所需的相关功能

获取/设置全局变量

GetGlobalVariableIntValue

获取int型全局变量

SetGlobalVariableIntValue

设置int型全局变量

GetGlobalVariableFloatValue

获取float型全局变量

SetGlobalVariableFloatValue

设置float型全局变量

GetGlobalVariableStringValue

获取string型全局变量

SetGlobalVariableStringValue

设置string型全局变量

通信接收事件

StartGlobalCommunicate

初始化全局脚本与通信管理的通信端口。

RegesiterReceiveCommunicateDataEvent

注册通信数据接收事件。注册后,通信设备收到数据时,将触发“通信数据接收事件”

UnRegesiterReceiveCommunicateDataEvent

注销通信数据接收事件。注销后,通信设备收到数据时不再触发“通信数据接收事件”

OnReceiveCommunicateDataEvent

通信数据接收事件的回调函数

发送通信数据

SendCommDeviceData

指定某个通信设备发送特定类型的数据。

调试

ConsoleWrite

将信息打印至DebugView中。

Init

接口原型

public int Init(){}

描述

初始化全局脚本。可在此方法中实现初始化相关操作 。该方法在加载方案或预编译全局脚本时执行。

Process

接口原型

public int Process(){}

描述

定义方案下所有流程的批量执行逻辑。具体示例见..\Applications\GlobalScript\Samples\CH\3.x路径下的全局脚本_单流程执行全局脚本_多流程控制执行

使用限制

以下触发场景或需求,无法通过调用Process方法实现流程控制。

  • 硬触发(硬件触发方案)

  • 通信触发方案

  • 全局触发

  • 在主界面或运行界面控制单流程的执行

运行逻辑

该方法在VM主界面快捷工具条上的全流程执行按钮被点击后调用。

图 1 全流程执行按钮

被调用后,该方法的具体运行逻辑如下:

  • 场景1:

    单击则调用一次该方法。在全局脚本的默认代码中,定义在Process中的DefaultExecuteProcess()会被调用,控制方案中的所有流程执行一次。

  • 场景2:

    单击则按特定时间间隔重复调用该方法。

    重复调用该方法的时间间隔,需通过调用SetScriptContinuousExecuteInterval方法进行配置。

    说明:

    在场景2中,仅在Process方法第一次调用时,方案的全部流程会被连续执行。具体的逻辑见下图

图 2 场景2中Process执行逻辑

SetScriptContinuousExecuteInterval

接口原型

void SetScriptContinuousExecuteInterval (uint nMilliSecond);

描述

设置Process方法连续运行的时间间隔 。具体示例见..\Applications\GlobalScript\Samples\CH\3.x路径下的全局脚本_多流程控制执行

输入参数

nMilliSecond:uint 类型,时间间隔(单位:ms)

返回值

调用示例

SetScriptContinuousExecuteInterval(1000);

GetScriptContinuousExecuteInterval

接口原型

uint GetScriptContinuousExecuteInterval();

描述

获取Process方法连续运行的时间间隔。

返回值

如调用成功,则返回时间间隔值。

如调用失败,则返回-1

调用示例

uint x = GetScriptContinuousExecuteInterval();

Dispose

接口原型

public override void Dispose(){}

调用时机

关闭程序或重新编译时。

描述

释放不再需要的资源。例如,释放Init中创建的句柄。

InitAfterLoadSol

接口原型

public override int InitAfterLoadSol(){}

描述

方案加载完成后进行初始化,实现方案加载完成所需的相关功能。例如,可在此方法中发送方案加载完成的信号。

GetGlobalVariableIntValue

接口原型

Int GetGlobalVariableIntValue(string paramName, ref int paramValue)

描述

获取int型全局变量的值 。具体示例见..\Applications\GlobalScript\Samples\CH\3.x路径下的全局脚本_全局变量设置

输入参数

paramName:string类型,变量名称。

输出参数

paramValue:int类型,变量值。

返回值

0:调用成功

0返回值:调用失败。建议根据错误码信息排查失败原因

SetGlobalVariableIntValue

接口原型

Int SetGlobalVariableIntValue (string paramName, int paramValue)

描述

设置int型全局变量的值。具体示例见..\Applications\GlobalScript\Samples\CH\3.x路径下的全局脚本_全局变量设置

输入参数

paramName:string类型,变量名称

输出参数

paramValue:int类型,变量值

返回值

0:调用成功

0返回值:调用失败。建议根据错误码信息排查失败原因

GetGlobalVariableFloatValue

接口原型

Int GetGlobalVariableFloatValue(string paramName, ref float paramValue)

描述

获取float型全局变量的值。具体示例见..\Applications\GlobalScript\Samples\CH\3.x路径下的全局脚本_全局变量设置

输入参数

paramName:string类型,变量名称

输出参数

paramValue:float类型,变量值

返回值

0:调用成功

0返回值:调用失败。建议根据错误码信息排查失败原因

SetGlobalVariableFloatValue

接口原型

Int SetGlobalVariableFloatValue (string paramName, float paramValue)

描述

设置float型全局变量值。具体示例见..\Applications\GlobalScript\Samples\CH\3.x路径下的全局脚本_全局变量设置

输入参数

paramName:string类型,变量名称

输出参数

paramValue:float类型,变量值

返回值

0:调用成功

0返回值:调用失败。建议根据错误码信息排查失败原因

GetGlobalVariableStringValue

接口原型

Int GetGlobalVariableStringValue (string paramName, ref string paramValue)

描述

获取string型全局变量。具体示例见..\Applications\GlobalScript\Samples\CH\3.x路径下的全局脚本_全局变量设置

输入参数

paramName:string类型,变量名称

输出参数

paramValue:string类型,变量值

返回值

0:调用成功

0返回值:调用失败。建议根据错误码信息排查失败原因

SetGlobalVariableStringValue

接口原型

Int SetGlobalVariableStrignValue (string paramName, string paramValue)

描述

设置string型全局变量。具体示例见..\Applications\GlobalScript\Samples\CH\3.x路径下的全局脚本_全局变量设置

输入参数

paramName:string类型,变量名称

输出参数

paramValue:string类型,变量值

返回值

0:调用成功

0返回值:调用失败。建议根据错误码信息排查失败原因

StartGlobalCommunicate

接口原型

bool StartGlobalCommunicate ()

描述

初始化全局脚本与通信管理的通信端口。

返回值

true:调用成功

false:调用失败

相关接口

RegesiterReceiveCommunicateDataEvent

RegesiterReceiveCommunicateDataEvent

接口原型

Void RegesiterReceiveCommunicateDataEvent()

调用时机
调用StartGlobalCommunicate方法后。
描述

注册通信数据接收事件。注册后,通信设备收到数据时,将触发OnReceiveCommunicateDataEvent回调函数。具体示例见..\Applications\GlobalScript\Samples\CH\4.x路径下的全局脚本_通信接收

返回值

相关接口

UnRegesiterReceiveCommunicateDataEvent

UnRegesiterReceiveCommunicateDataEvent

接口原型

Void UnRegesiterReceiveCommunicateDataEvent ()

描述

注销通信数据接收事件。注销后,通信设备收到数据时不再触发OnReceiveCommunicateDataEvent回调函数。

返回值

OnReceiveCommunicateDataEvent

回调函数原型

void UserGlobalMethods_OnReceiveCommunicateDataEvent(ReceiveDataInfo dataInfo)

描述

通信数据接收事件。该事件包含的参数说明见下表。

参数

可通过该回调函数获取的数据结构体为dataInfo(类型:ReceiveDataInfo)。该结构体包含如下数据:

communicateType

:通信设备类型,类型为CommunicateType

DeviceIndex

全局通信模块中通信设备索引下标,类型为int

DeviceAddressIndex

PLC或者Modbus设备子地址索引下标,类型为int

DeviceData

接收到的数据,类型为byte[]数组

SendCommDeviceData

可在全局脚本中调用如下方法,指定某个通信设备发送特定类型的数据。

表 2 具体方法

接口原型

说明

SendCommDeviceData(string data,int deviceID)

指定某个TCP、串口或UDP设备发送string类型的数据。

  • 输入参数:

    • data:string类型,待发送的数据。

    • deviceID:int类型,通信管理中所添加的TCP、串口或UDP设备的设备ID。设备ID 的示例见下文的设备ID与地址ID示例

  • 返回值:无

SendCommDeviceData(byte[] bytedata,int deviceID)

指定某个TCP、串口或UDP设备发送十六进制数据。
  • 输入参数:

    • bytedata:byte[],待发送的十六进制数组。

    • deviceID:int类型,通信管理中所添加的TCP、串口或UDP设备的设备ID。设备ID 的示例见下文的设备ID与地址ID示例

  • 返回值:无

SendCommDeviceData(string data,int deviceID,int addressID,DataType dataType)

指定某个PLC或Modbus设备发送int、float或string类型的数据。

  • 输入参数:
    • data:string类型,待发送的的数据,如需发送多个数据,请用“;”隔开。

    • deviceID:int类型,通信管理中所添加的PLC或Modbus设备的设备ID。设备ID 的示例见下文的设备ID与地址ID示例

    • addressID:int类型,通信管理中所添加的PLC或Modbus设备的地址ID。地址ID的示例见下文的设备ID与地址ID示例

    • dataType:DataType类型,数据类型(包括int、float和string)。

  • 返回值:无

SendCommDeviceData(byte[] bytedata,int deviceID,int addressID,DataType.ByteType)

指定某个PLC或Modbus设备发送十六进制数据。

图 3 设备ID与地址ID示例

上图的示例中,TCP客户端和三菱MC的设备ID分别为1和2,三菱MC的地址ID为1。

ConsoleWrite

接口原型

void ConsoleWrite(string content)

描述

将信息打印至DebugView中。

输入参数

Content:string类型,待打印的内容

返回值