基于15001200 PLC的webserver---用户自定义页面
1. 创建html页面
- 页面需要包含字符集信息:
<meta http-equiv="content-type" content="text/html; charset=utf-8">
- 包含AWP命令的html文件,大小限制为64KB
- 最简单的页面自动刷新:
<meta http-equiv="Refresh" content="10">
2. AWP指令
- AWP 命令公式中”“之前的空格,对于命令的正确编译至关重要。疏漏空格字符可能导致编译器无法生成正确代码。 这种情况下,编译器不会显示错误。
- 读取变量:
:=<Varname>:
:- M,Q,I:直接使用
"变量符号名"
- DB:规则为
"DB名".变量名
1
2
3"test_MB" :="test_MB":
"test_MW" :="test_MW":
"web_test2_优化".b :="web_test2_优化".b:
- M,Q,I:直接使用
- 读取特殊变量(从PLC读取并传给HTTP响应头):
<!-- AWP_Out_Variable Name='<Type>:<Name>' [Use='<Varname>'] -->
- type对应特殊变量的类型
- type1:HEADER
- type2:COOKIE_VALUE
- type3:COOKIE_EXPIRES
- name对应HEADER或COOKIE的名称
1
2<!-- AWP_Out_Variable Name='"此处填写变量名"' -->
<!-- AWP_Out_Variable Name='"HEADER:Status"' Use='"Status"' -->
- 写入变量:
<!-- AWP_In_Variable Name='<Varname1>' [Use='<Varname2>'] ... -->
,方括号 [ ] 中包含的项为可选项。- 能被写入的变量事先要激活
从 HMI/OPC UA/Web API 可访问
和从 HMI/OPC UA/Web API 可写
- 配合POST命令写入,添加表单
<form action="" method="post"> </form>
,添加文本域<input name="PLC变量名" type="text" /> :
,添加按钮<input name="" type="submit" value="" /> :
。 - 案例如下,要写入的变量先在最前面声明出来:预览效果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32<!-- AWP_In_Variable Name='"test_MB"' -->
<!-- AWP_In_Variable Name='"test_MW"' -->
<!-- AWP_In_Variable Name='"web_test2_优化".b' -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://wwww.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Refresh" content="5"/>
<title>1200_RD_WR</title>
</head>
<body>
<p><strong>数据读取</strong></p>
<p>"test_MB" :="test_MB":</p>
<p>"test_MW" :="test_MW":</p>
<p>"web_test2_优化".b :="web_test2_优化".b:</p>
<p><strong>数据写入</strong></p>
<form action="" method="post">
<input name='"test_MB"' type="text" />
<input name="" type="submit" value="set" />
</form>
<form action="" method="post">
<input name='"test_MW"' type="text" />
<input name="" type="submit" value="set" />
</form>
<form action="" method="post">
<input name='"web_test2_优化".b' type="text" />
<input name="" type="submit" value="set" />
</form>
</body>
</html>
- 能被写入的变量事先要激活
更多例子:
1 |
|
预览效果
3. 组态
- 组态用户自定义,选html文件所在目录,选默认打开的html页面,生成块。
- 生成的块属于占用程序资源,成为程序的一部分
- 通过
WWW
指令来让标准web页面可以访问web页面(如果想要通过程序控制何时web页面可见,则可以通过用户程序控制www
块的调用)1
2
3
4
5
6
7// call www
// #TmpWWWreturnInt=0,无错误
// #TmpWWWreturnInt=16#00yx,相关位的请求处于等待状态
// #TmpWWWreturnInt=16#803a,未装载DB
// #TmpWWWreturnInt=16#8081,DB类型格式或版本错误
// #TmpWWWreturnInt=16#80C1,资源不足以用于初始化web
#TmpWWWreturnInt:=WWW(333); - 只能在 CPU 处于停止模式时下载用户定义的网页程序块(正常下载硬件组态时候PLC就处于停止模式)
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
4. 拓展应用
用bool量控制图形
1
2
3
4
5//图片1url: Images.Lamp00.png
//图片2url: Images.Lamp01.png
//用Bool变量来替换Lamp0x后面的这个x,0的时候就是Lamp00.png,1的时候就是Lamp01.png
//这个:="TestFinished":就是从PLC回读到一个bool量
<img src='Images/Lamp0:="TestFinished":.png' />基于json做html中的变量刷新
- 建立json文件,注意不是.json的json文件,而是一个json结构的
.html
文件,实测过,用.json文件写如下结构会报错的。
1 |
|
- 需要从html输入到plc的文件,另外再建立一个.
html
文件,作为写入给PLC的数据
1 |
|
jquery实现数据读出和写入是通过对应id寻找到要显示或者要输入的变量
1 |
|
1 |
|
- 在head中引入外部java script调用脚本的语句
1 |
|
- js做一个1000ms刷新的时钟,
$
表示这是jquery方法,setInterval()方法用来做延时
1 |
|
- 把功能代码放到时钟里面去,这里的
#
表示对应的html元素的id,js就是通过这种方式对应元素
1 |
|
- 控制PLC的某一个bool量,这里的”IO_Input.html”是上面建立的输入给PLC的数据结构.html文件。
1 |
|
- 数值写入PLC
1 |
|
- 图形显示
1 |
|
基于15001200 PLC的webserver---用户自定义页面
http://example.com/2024/07/21/基于15001200 PLC的webserver---用户自定义页面/