脚本编辑用于用户完成某些自定义的逻辑运算或者流程处理,用于实现PLC无法实现的上位机功能,例如综合计算或者AGC/AVC等功能
界面如下所示:
序号 | 工具名称 | 功能 | 使用方法 |
---|---|---|---|
1 | 打开脚本 | 从脚本菜单打开脚本 | 点击后在弹出的列表框内选择要编辑的脚本 |
2 | 添加输入 | 添加输入量 | 点击后在弹出的对话框内选择要添加的输入变量 |
3 | 删除输入 | 删除输入量 | 选择需要删除的变量,然后点击删除 |
4 | 添加输出 | 添加输出量 | 点击后在弹出的对话框内选择要添加的输入变量 |
5 | 删除输出 | 删除输出量 | 选择需要删除的变量,然后点击删除 |
6 | 保存 | 保存脚本 | 点击后保存脚本 |
7 | 运行/停止 | 运行或停止脚本 | 点击后运行或停止脚本 |
8 | 刷新/停止 | 刷新或停止刷新 | 点击后刷新或停止刷新脚本 |
9 | 退出 | 退出脚本编辑 | 退出脚本编辑 |
10 | 输入变量区域 | 输入变量区域 | 当前输入变量区域 |
11 | 输出变量区域 | 输出变量区域 | 当前输出变量区域 |
12 | 脚本区域 | 脚本编辑区域 | 脚本编辑区域 |
添加删除输入或输出变量时需要首先点击第8个按钮停止刷新脚本
脚本概述,脚本采用PYTHON语言,其工作流程如下所示
工作流程如下:
使用帮助
读取输入测点数值放入变量 in0,in1,in2 ......
(in0,in1,in2,...) = await db.getInputValue()
设置输出测点 out0测值 12.3,out1测值 23.4,以此类推
await db.setOutValue(['out0,out1,out2'...],[12.3,23.4,33.3,...])
生成新报警,报警内容自定义,报警类别为'操作','越复限','动作',报警级别为'紧急','重要','普通'
await db.newAlarm('报警内容','报警类别','报警级别')
主程序
import sys,os,asyncio
from scriptengine import *
async def engine(db) :
try :
# 在这里写你的代码
pass
except Exception as e :
await db.newAlarm('脚本' + __name__ + '错误:' + str(e),'操作','重要')
print(str(e))
# 主程序入口,请勿修改
async def main(alm,ins,outs,points) :
db = SCDatabase(alm,ins,outs,points)
while True :
await engine(db)
await asyncio.sleep(1)
以第一个图片为例,我们添加了两个输入量,定义为in0, in1 ,添加了一个输出变量,定义为out0
我们在脚本中执行了下列逻辑
(in0,in1) = await db.getInputValue()
v = in0 + in1*2
await db.setOutValue(['out0'], [v])
第一行表示从数据库读取输入量放入in0, in1 两个变量中,
第二行表示将in0的值加上2倍的in1的值放入v变量中,
第三行表示设置输出变量out0的测值为v
完整代码如下所示,程序其他部分请勿修改。
import sys,os,asyncio
from scriptengine import *
async def engine(db) :
try :
# 在这里写你的代码
(in0,in1) = await db.getInputValue()
v = in0 + in1*2
await db.setOutValue(['out0'], [v])
except Exception as e :
await db.newAlarm('脚本' + __name__ + '错误:' + str(e),'操作','重要')
print(str(e))
# 主程序入口,请勿修改
async def main(alm,ins,outs,points) :
db = SCDatabase(alm,ins,outs,points)
while True :
await engine(db)
await asyncio.sleep(1)
设置脚本属性
序号 | 工具名称 | 功能 | 使用方法 |
---|---|---|---|
1 | 自动启动 | 设置自动启动 | 设置自动启动或不启动 |
2 | 删除脚本 | 删除脚本 | 删除当前脚本 |