TIA V16 WINCC unified 连接SQL

已锁定

南疆血

  • 帖子

    2
  • 精华

    0
  • 被关注

    0

论坛等级:新手

注册时间:2019-11-12

普通 普通 如何晋级?

TIA V16 WINCC unified 连接SQL

4984

14

2020-01-05 22:37:17

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

    以下脚本为查询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中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


TIA V16 WINCC unified 连接SQL 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有31062条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

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