技术论坛

 TIA V16 WINCC unified 连接SQL

返回主题列表
作者 主题
南疆血
新手

经验值:31
发帖数:2
精华帖:0
楼主    2020-01-05 22:37:17
主题:TIA V16 WINCC unified 连接SQL

     unified是工业人机交互平台的发展趋势,通过web severs布置可使交互界面基于浏览器访问,其便捷性毋庸置疑。但unified所需脚本Javas cript目前网上基本无参考资料,西门子官方文档也未详细说明,甚至有些对象无法在脚本中使用。因此有此文分享给各位,作者能力有限,不足之处,还请包涵。

    以下脚本为查询Sql中某行中,某列值:

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中s cript 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


您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。