TIA V16 unified 连接SQL
unified是工业人机交互平台的发展趋势,通过web
severs布置可使交互界面基于浏览器访问,其便捷性毋庸置疑。但unified所需脚本JavaScript目前网上基本无参考资料,西门子官方文档也未详细说明,甚至有些对象无法在脚本中使用。因此有此文分享给各位,作者能力有限,不足之处,还请包涵。
以下脚本为查询Sql中某行中,某列值:
var barCode,request,targetValue,writeDone,writeDoneACK,flag
barCode=Tags("barCode1").Read();
request=Tags("request1").Read();
var barCode,request,targetValue,writeDone,writeDoneACK,flag
barCode=Tags("barCode1").Read();
request=Tags("request1").Read();
targetValue=Tags("targetValue1").Read();
writeDone=Tags("writeDone1").Read();
writeDoneACK=Tags("writeDoneACK1").Read();
flag=Tags("flag[0]").Read()
//通过状态机一次触发
if (request & ! flag )
{
//使用异常抛出
try{
//connectionstring定义未全局变量,方便修改var connectionstring = "Driver={sql server};server=SINOMACH\\DEMO;database=ZhongHua;uid=sa;pwd=123456;" ;
let conn = await HMIRuntime.Database.CreateConnection(connectionstring);
//查询语句
let query = "Select top 1 * from [ZhongHua].[dbo].[productData] where barCode='"+barCode+"'";
let results = await conn.Execute(query);//执行查询
if(results !== undefined && results !== null)//判断是否查询到
{
let statements = results.Results;//查询结果
for(let statement in statements)//遍历结果表单
{
let rows = statements[statement].Rows;
let row = rows[0];//获取其中一行
targetValue=row["targetValue"];//获取结果某行某列值
HMIRuntime.Trace("targetValue:"+targetValue);
writeDone=true;
}
}else
{
targetValue=0.0;
writeDone=false;
}
conn.Close();
}
catch(e)
{
let res = e.Results;
for(let statement in res)
{
let errors = res[statement].Errors;
for (let i in errors)
{
let detailed = errors[i];
HMIRuntime.Trace("Errors state : "+detailed.State);
HMIRuntime.Trace("Errors Message : "+detailed.Message);
}
}
}
} else {
//statements
}
flag=request;//状态机
if(writeDoneACK){
targetValue=0.0;
writeDone=false;
}
//更新变量
Tags("targetValue1").Write(targetValue);
Tags("writeDone1").Write(writeDone);
Tags("flag[0]").Write(flag)
脚本调试器配置方法参见帮助文档中下图位置,需启用SIMATIC Runtime Manager中script debugger setting中调试端口9222
调试脚本步骤:
1,浏览界面,打开脚本所在窗口,地址为https://localhost(计划任务触发脚本未找到调试方法)。
2.打开调试页面,地址http://localhost:9222,(每切换画面都要刷新到此地址一次),第一项为动态画面调试,第二项为事件调试,选择第二项
3.弹出调试工具,点击控制区暂停按钮,暂停脚本
4.切至界面触发脚本,在调试界面所触发脚本暂停,下图,方可单步调试,调试中可看到脚本内是否存在错误。
另利用traceViewer工具可查看报警输出及方法 HMIRuntime.Trace("Errors state : "+detailed.State)内容,便于调试,其路径为:%ProgramFiles%\Siemens\Automation\WinCCUnified\bin\RTILtraceViewer.exe