基于HTML5+CSS3的Web Scada的应用场景

发布于:2022-12-17 ⋅ 阅读:(188) ⋅ 点赞:(0)

        Web SCADA系统主要通过组合各种物联网硬件,可对设备开关、模拟量及其他设备数据进行采集,通过配置传感器,还可以实现对设备温度、震动及环境湿度等多种数据进行采集;通过简单配置,用户既可以在工控机上实现数据监测和设备控制,也可通过手机、平板等联网终端进行远程监控;

        对于复杂逻辑则通过二次开发实现,通过最新的Web技术(JavaScript、HTML5、JQuery、CSS3、Ajax及最新的JS框架库等)等进行复杂逻辑的处理,通过引入ThreeJS库,可完美的支持3D漫游等效果,让工程师通过简单的托拉拽实现对设备的数据采集、监视及控制;

       对于有二次开发能力的企业或个人则让其更关注业务逻辑,无需关注底层的数据采集过程,将采集到的数据封装成JS包,通过引用JS包可通过简单的几个命令获取到数据进而进行其他逻辑处理,如GetTag(“TagName”)、SetTag(“TagName”)等进行逻辑处理,WEB SCADA可应用于智能制造、数字工厂、设备智能化、环境与能源、智慧楼宇、智慧热网、智慧水务、智慧管廊、智慧管网,行业涉及热力、自来水、污水处理、化工、中石油、电力、楼宇、消防、矿厂、制冷、路灯远控、数字工厂、汽车、电信、高铁楼宇、钢厂等行业;

Web SCADA逻辑架构图:

 

如下是通过简单的JS代码实现底层数据的获取与逻辑处理:

 <body style="background:#778899">
        <div id="idButtons" class="paragraph"></div>
        <h1  style="color:#FFFAFA" >配电室1参数报表</h1>
        <div id="idTimestamp" class="paragraph"></div>
        <table  width="100%" style="color:#00008B" ; text-align:center>
         <tr>
            <th>电表</th>
            <th colspan="8">PWM001
            <th colspan="8">PWM002
            <th colspan="8">PWM003
            <th colspan="8">PWM004
            <th colspan="8">PWM005
         </tr>
            <tr>
                <th>参数</th>
                <th>A向电流</th>
                <th>B向电流</th>
                <th>C向电流</th>
                <th>A向电压</th>
                <th>B向电压(V)</th>
                <th>C向电压(V)</th>
                <th>功率因数</th>
                <th>总电度</th>
                
                
                <th>A向电流</th>
                <th>B向电流</th>
                <th>C向电流</th>
                <th>A向电压</th>
                <th>B向电压(V)</th>
                <th>C向电压(V)</th>
                <th>功率因数</th>
                <th>总电度</th>
                
                
                <th>A向电流</th>
                <th>B向电流</th>
                <th>C向电流</th>
                <th>A向电压</th>
                <th>B向电压(V)</th>
                <th>C向电压(V)</th>
                <th>功率因数</th>
                <th>总电度</th>
                
                
                <th>A向电流</th>
                <th>B向电流</th>
                <th>C向电流</th>
                <th>A向电压</th>
                <th>B向电压(V)</th>
                <th>C向电压(V)</th>
                <th>功率因数</th>
                <th>总电度</th>
                
               
                <th>A向电流</th>
                <th>B向电流</th>
                <th>C向电流</th>
                <th>A向电压</th>
                <th>B向电压(V)</th>
                <th>C向电压(V)</th>
                <th>功率因数</th>
                <th>总电度</th>
                
         </tr>
            <tr>
                <th>时间/单位</th>
                <th>(A)</th>
                <th>(A)</th>
                <th>(A)</th>
                <th>(V)</th>
                <th>(V)</th>
                <th>(V)</th>
                <th>(PF)</th>
                <th>(Kwh)</th>
                                
                <th>(A)</th>
                <th>(A)</th>
                <th>(A)</th>
                <th>(V)</th>
                <th>(V)</th>
                <th>(V)</th>
                <th>(PF)</th>
                <th>(Kwh)</th>
                
                <th>(A)</th>
                <th>(A)</th>
                <th>(A)</th>
                <th>(V)</th>
                <th>(V)</th>
                <th>(V)</th>
                <th>(PF)</th>
                <th>(Kwh)</th>
               
                <th>(A)</th>
                <th>(A)</th>
                <th>(A)</th>
                <th>(V)</th>
                <th>(V)</th>
                <th>(V)</th>
                <th>(PF)</th>
                <th>(Kwh)</th>
                
                <th>(A)</th>
                <th>(A)</th>
                <th>(A)</th>
                <th>(V)</th>
                <th>(V)</th>
                <th>(V)</th>
                <th>(PF)</th>
                <th>(Kwh)</th>
           
            <tr>
                <td data-igrx='{"attr":"log","tag":"app.currentTime"}'>Time</td>
                
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM001.I_PhA"}'>###.#</td>  
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM001.I_PhB"}'>###.#</td>   
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM001.I_PhC"}'>####</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM001.U_PhA"}'>####</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM001.U_PhB"}'>###.#</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM001.U_PhC"}'>###.#</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM001.PF_Total"}'>###.#</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM001.WH_Total"}'>###.#</td>
               
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM002.I_PhA"}'>###.#</td>  
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM002.I_PhB"}'>###.#</td>   
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM002.I_PhC"}'>####</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM002.U_PhA"}'>####</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM002.U_PhB"}'>###.#</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM002.U_PhC"}'>###.#</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM002.PF_Total"}'>###.#</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM002.WH_Total"}'>###.#</td>
               
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM003.I_PhA"}'>###.#</td>  
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM003.I_PhB"}'>###.#</td>   
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM003.I_PhC"}'>####</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM003.U_PhA"}'>####</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM003.U_PhB"}'>###.#</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM003.U_PhC"}'>###.#</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM003.PF_Total"}'>###.#</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM003.WH_Total"}'>###.#</td>
                
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM004.I_PhA"}'>###.#</td>  
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM004.I_PhB"}'>###.#</td>   
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM004.I_PhC"}'>####</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM004.U_PhA"}'>####</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM004.U_PhB"}'>###.#</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM004.U_PhC"}'>###.#</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM004.PF_Total"}'>###.#</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM004.WH_Total"}'>###.#</td>
                
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM005.I_PhA"}'>###.#</td>  
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM005.I_PhB"}'>###.#</td>   
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM005.I_PhC"}'>####</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM005.U_PhA"}'>####</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM005.U_PhB"}'>###.#</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM005.U_PhC"}'>###.#</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM005.PF_Total"}'>###.#</td>
                <td data-igrx='{"attr":"log","tag":"opc.kepi.PWM005.WH_Total"}'>###.#</td>
                
                </tr>
            
        </table>
    </body>
    <script type='text/javascript'src='system/scripts/igrX.js'></script>
    var getTotal = getTag("WH_Total")
    <script type="text/javascript">

    var rpt = igrx.report();
    
    
    getTotal
    
    </script>

通过引入igrX.js库,通过JS则可实时获取对应的TAG值,如{“attr”:"log","tag":"opc.kepi.PWM005.WH_Total"} 则代表当前属性进行LOG数据存储,且获取方式是通过OPC采集,采集的点为WH_Total;

实时图表分析:

       通过IDE环境将指定的采集点设置为曲线数据监控,如下图:

最终的展现效果为如下:

 单图表实现代码解析:

通过简单的配置系统生成对应的JS代码,技术人员可对JS代码进行相应的调整及逻辑处理;

<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Plot</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <link rel="stylesheet" type="text/css" href="system/styles/igrX.css" />
    <!--[if lte IE 7]>
    <link rel="stylesheet" media="screen, print" href="system/styles/plot.compat.css" />
    <![endif]-->
</head>
<body>
    <div class='trend' 
        data-trend='{"pen":
        [{"enabled":false,
          "max":100.000000,
          "min":0.000000,
          "name":"Temperature",
          "pens":[
                {"format":"#.##","name":"Temp Cook","tag":"temperature_cook"},
                {"format":"#.##","name":"Effluent Temp","tag":"effTemp"}
          ],"unit":"&deg;C"},
          {"enabled":false,"max":100.000000,"min":0.000000,"name":"Flowrate",
          "pens":[{"format":"#.###","name":"Effluent Flow","tag":"effFlow"},
                {"format":"#.###","name":"Influent Flow 1","tag":"infFlow1"},
                {"format":"#.###","name":"Influent Flow 2","tag":"infFlow2"}],"unit":"m3/hr"},
                {"enabled":false,"max":14.000000,"min":0.000000,"name":"Acidity",
          "pens":[{"format":"##.#","name":"Effluent pH","tag":"effPH"}],"unit":"pH"},
                {"enabled":false,"max":120.000000,"min":0.000000,"name":"Pressure",
          "pens":[{"format":"##.##","name":"Cooking Pressure","tag":"pressure_cook"}],"unit":"kPa"},
                {"enabled":false,"max":30000.000000,"min":0.000000,"name":"ModSim",
          "pens":[{"format":"#","name":"HR40001","tag":"HR40001"},
                {"format":"#","name":"HR40002","tag":"HR40002"},
                {"format":"#","name":"HR40003","tag":"HR40003"}],"unit":"unit"},
                {"enabled":false,"max":70.000000,"min":-10.000000,"name":"Miscellaneous",
          "pens":[{"format":"0","name":"Time in Second","tag":"timeSecond"},
                {"format":"0","name":"Time in Minute","tag":"timeMinute"},
                {"format":"0","name":"Time in Hour","tag":"timeHour"},
                {"format":"0","name":"Time in Day","tag":"timeDay"}],"unit":"-"}],
          "opt":{"axisColor":"#555555","backgroundColor":"white",
          "borderColor":"#333333","borderWidth":0,"disableNavigation":0,
          "hideParameter":0,"legendPosition":"nw","length":600,"limit":0,
          "lineWidth":2,"lograte":5000,"maxPen":100,"min-zoom":20000,"refLineColor":"black",
          "showLegend":0,"showMarker":0,"title":"Temperature","x-tickColor":"#dddddd","y-tickColor":"#dddddd"}}'></div>
</body>
<script type="text/javascript" src="system/scripts/igrX.js"></script>

</html>

对物联网技术感兴趣的伙伴们,欢迎留言讨论、共同交流学习,进步!


网站公告

今日签到

点亮在社区的每一天
去签到