WinCC OA通用低代码库LIB319(及中文包)
基本信息: 需要https://www.gitee.com 注册账号下载。 1. 低代码库LIB319:(兼容3.17~2.19) 网址:https://gitee.com/zhigangli2020/lib319/ SVN地址: svn://gitee.com/zhigangli2020/lib319
WinCC OA 3.19 中文包:(备注:每个patch都不兼容) 网址:https://gitee.com/zhigangli2020/wincc-oa-chinese/ SVN地址:svn://gitee.com/zhigangli2020/wincc-oa-chinese
本文word版: https://gitee.com/zhigangli2020/lib319/raw/master/WinCC OA通用库LIB.docx
|
版本更新历史
作者 |
日期 |
版本 |
更新内容 |
zhigang.li@live.cn |
2023.5.31 |
1.0 |
首次公开发布 |
zhigang.li@live.cn |
2023.6.9 |
1.1 |
修正了一些bug。 |
zhigang.li@live.cn |
2023.6.12 |
1.2 |
添加Modbus 模板 |
zhigang.li@live.cn |
2023.6.23 |
1.3 |
添加断线诊断等高亮提示。操作更加安全。 |
zhigang.li@live.cn |
2023.6.30 |
1.4 |
自动生成导航、拓扑,pt.xml |
zhigang.li@live.cn |
2023.7.7 |
1.5 |
增加hosts、客户端、冗余配置说明 |
zhigang.li@live.cn |
2023.7.25 |
1.6 |
增加IT通讯接口说明 增加客户端的SVN版本自动更新画面的功能 |
yinlisen |
2023.8.28 |
1.7 |
增加对PULSE_OPEN,PULSE_CLOSE的脉冲点位的支持 |
zhigang.li@live.cn |
2023.9.26 |
1.8 |
增加对influxDB历史库的诊断说明 |
目录
12 系统运维与诊断(Windows系统、influxDB数据库)
13 系统运维与诊断(Linux系统、influxDB历史数据库)
WinCC OA通用低代码库LIB的目的,是可以通过简单的几步工作,实现如下的只有专业监控软件才能具备的功能:
当报警发生,右侧导航将能在导航按钮观察到“一级报警”、“二级报警”、“三级报警”不同位置的红色警示点。点击后追寻到报警设备,继续点击弹开设备面板,显示设备详细数据,读、写、报警三个栏是分离的。报警位置可以进行确认。同时,弹窗弹出报警信息,语音播报出来。10s后自动弹窗关闭。
支持被控设备的模型及模型面板
l 点位信息导入(PLC地址、单位、权限、描述、上下限)
l 画面拓扑、导航、导航菜单、导航框架的自动生成
l 软件运行环境模板
l 数值设定、操作的二次弹窗
l PLC写数据过程的反读校验
l 操作日志
l 设备面板的历史数据曲线、历史操作记录、简单数据报表
l 实时报警、历史报警、报警条
l 历史事件查询
l 动态趋势、固定趋势配置
l 语音报警、报警弹窗、报警画面
l 样式表
l 支持中英文环境
l 支持后期扩展到冗余、分布式、web客户端等架构
l 支持最新的WinCC OA 3.19特性,如趋势图的动态采样
l 自动历史归档配置
同时,支持数据看板功能,可实现对服务器、交换机网络、历史数据库(influxDB)等运行工况进行监视。
图:历史数据库influxDB运行监控
图:系统主机(Windows或Linux)进行监控
需要具有第三方免费代码托管网站 https://www.gitee.com 账号。请先注册。
不注册的情况,可以拷贝已经下载了的上述的两个zip,但不确保是最新版本。
2.1 基础库LIB319的下载同步
新建文件夹
C:\WinCC_OA_Proj\LIB319
使用SVN客户端,填写版本库地址svn://gitee.com/zhigangli2020/lib319
点击更新。如下图所示。
2.2 中文包CN319的下载同步
新建文件夹C:\WinCC_OA_Proj\CN319
下载后解压3.19 中文包到该路径。如下图所示
2.3 config文件举例
host文件存储位置是:C:\windows\system32\drivers\etc\hosts,如果没有此文件,需要手工创建。
服务器主机、备机、客户端、其他与WinCC OA之间相互通讯的主机(如远程驱动的主机等)均需要使用hosts文件,集中存储不易记住和识别的IP地址信息。
hosts 的规范:
127.0.0.1 localhost SEV01
::1 localhost SEV01
# 以下为服务器的IP(举例)
192.168.100.219 SEV01 SEV01-1
192.168.100.220 SEV02 SEV02-1
192.168.3.219 SEV01-2
192.168.3.220 SEV02-2
#以下为操作员站的IP(举例)
192.168.100.221 OS1 OS1-1
192.168.3.221 OS1-2
192.168.100.222 OS2 OS2-1
192.168.3.222 OS2-2
192.168.100.223 OS3 OS3-1
192.168.3.223 OS3-2
#以下为 PLC 的IP(举例)
192.168.100.224 ER1-1
192.168.3.224 ER1-2
192.168.100.225 ER1-1
192.168.3.225 ER1-2
第一行的localhost之后,请追加填写当前的主机的名称。(注,每个主机都不一样,请自行修改)。
冗余网络的情况,请将SEV01当作主访问域名,第一个网卡命名SEV01-1当作别名1,第二个网卡SEV01-2当作别名2.
3.1 新建项目
勾选“Legacy Standard project”
使用经典项目。
2 输入项目名称。如PEX
3按住Ctrl键,多选语言(2 selected)
en_US.utf8
zh_CN.utf8
4 路径:C:/WinCC_OA_Proj/
5 勾选 Runnable、Use NGA
选择经典图标模式
不创建root项目管理密码。
3.2 注册CN319中文库
1的位置注册项目
2的位置打开路径
3的位置确认即可
3.3 注册LIB319基础库
1的位置选择注册项目。
2的位置打开文件夹选择按钮,选择基础库LIB319的文件夹。
3的位置选择文件夹。Runable应该是灰色。
注册完后的基础库,只有基本素材,不含有数据库,不能当作项目来运行。项目管理器应该看不到。
3.4 集成基础库
将基础库LIB319加入到子项目
打开项目管理器,
1的位置管理项目配置。
2的位置配置子项目集成
3的位置将CN319,LIB319选择到右侧。
注意:PEX项目的Gedi运行之后,项目管理器应当如下
运行项目后,可以在项目管理路径下,发现CN319, LIB319已经被集成当作子库。
项目的config文件应该是这样
4 初始化LIB参数
4.1 DP点清理
进入到Gedi开发环境,展开项目后,找到2的位置。
2的位置找到“删除DP.xml”的按钮,其功能为:将执行“清除全部DP” 将清除现有的所有DP。(不清除_为前缀的内部DP)。自动“创建DP” 创建_Ui,_Driver等内部需要的DP。
点击运行画面。执行上面的步骤。
4.1 创建S7驱动-num 3
1的位置选择添加Manager
2的位置选择S7 Driver
3的位置输入 -num 3, 注意有空格
5的位置应当看到运行起来状态是绿色的2.
注意:
若是危险品、重大资产的调试操作,应当先建立-num 3的simulation driver,不要直接在实际的驱动进行操作!
4.2 手工创建占位连接SIEMENSPLC01
只是为了占位。不激活。
1的位置打开系统管理。2的位置找到S7驱动
3的位置创建,输入SIEMENSPLC01,不得起其他的名称。
不要激活驱动,直接点击4,确认即可。
确保num 3号驱动是S7 Driver Manager,已经在运行
新建的某个PLC名称:F1_CUB_1_PEX_PLC01
1的位置找到S7驱动管理
2的位置点击新建,输入PLC名:F1_CUB_1_PEX_PLC01。
3的位置输入隶属的驱动的num号,本例为数字3。
4的位置激活“Set Invalid bit”激活无效位
5的位置如果是冗余PLC,S7-400H则勾选冗余设备(如400H). 如果是单机PLC,不需要勾选。
6的位置输入IP地址。可以是DNS名称或纯IP
7的位置选择“Other”。“其他”指的是S7 PLC具有更多的通讯的资源连接数量。
8的位置为冗余的备机PLC进行设置IP地址等参数。
9的位置激活PLC通讯,同时在State可以查看连接状态是否正常。
如上图所示:应当在控制台,在2的位置同时建立一个Simulation Driver 和1的位置S7 Driver 具有相同的num 号(-num 3)。
必读的重要提示: 导入点位的过程,应当使用Simulation Driver,测试和通讯PLC的过程及生产过程,应当使用S7 Driver;或者将PLC的激活勾选项设置为禁用。 这是因为导入点位的过程,很可能会将DO, AO等执行指令下发给PLC,导致PLC的设备动作,这是极其危险的,应当不能用真实的S7 Driver,而是替代Simulation Driver来实现。Simulation Driver将只是用于配置地址信息等数据,不会做出任何与PLC的读写通讯。 |
将LIB319的C:\WinCC_OA_Proj\LIB319\dplist\LIB.dpl用notepad++打开,替换里面的DUMMY字段,本例替换为项目名称PEX。
然后再导入LIB.dpl,
1的位置打开ASCII manager导入工具
2打开按钮,浏览文件。
3的位置,选择库LIB319的dplist文件夹
4 LIB.dpl
5 勾选自动更新DP 类型、导入报警属性。
拷贝库点位模板的文件夹
LIB319\data\dp\DUMMY\
到项目文件夹的对应路径下。 应当有如下例子的文件路径:
C:\WinCC_OA_Proj\PEX\data\dp\DUMMY\F1_CUB_1_DUMMY_PLC01\01_VFD.txt
将其中文件夹路径、PLC命名、文本文件里面的DUMMY全部替换为PEX.
项目路径下,如1的位置、2的位置,都把DUMMY换成了PEX.
示例01_VFD.txt存储的是用于某个PEX项目的变频调节器(如变频泵等)模板。
用notepad++打开。
可以复制文本粘贴到Excel编辑。Excel必须在使用前,对全部单元格进行格式化成text纯文本格式。否则将自动进行格式化,再进行粘贴操作,否则会出现一些不可预知的错误。
项目 |
描述 |
单位 |
格式 |
量程L |
量程H |
报警死区 |
高高报警限值设定 |
高报警限值设定 |
低报警限值设定 |
低低报警限值设定 |
高高报警使能 |
高报警使能 |
低报警使能 |
低低报警使能 |
仪表下限 |
仪表上限 |
过程值 |
仪表故障 |
高高报警 |
高报警 |
低报警 |
低低报警 |
占位 |
字段1 |
CMD |
CMD |
CMD |
CMD |
CMD |
CMD |
CMD |
CMD |
CMD |
CMD |
CMD |
STATE |
ERROR |
ERROR |
ERROR |
ERROR |
ERROR |
占位 |
|||||
字段2 |
DEADBAND |
HH_SP |
H_SP |
L_SP |
LL_SP |
HH_EN |
H_EN |
L_EN |
LL_EN |
LOW_SPAN |
HIGH_SPAN |
VAL_IN |
ALM |
HH_ALM |
H_ALM |
L_ALM |
LL_ALM |
占位 |
|||||
数据类型 |
AO |
AO |
AO |
AO |
AO |
DO |
DO |
DO |
DO |
AO |
AO |
AI |
DI |
DI |
DI |
DI |
DI |
占位 |
|||||
报警等级 |
二级报警 |
一级报警 |
二级报警 |
二级报警 |
一级报警 |
占位 |
|||||||||||||||||
操作权限 |
6 |
7 |
7 |
7 |
7 |
6 |
6 |
6 |
6 |
7 |
7 |
占位 |
|||||||||||
F1_CUB_1_1_102_XF_TIT01 |
CUB_1_1_102_XF_TIT01消防泵房温度检测 |
℃ |
%4.2f |
0 |
100 |
DB2395.DBD68 |
DB2395.DBD72 |
DB2395.DBD76 |
DB2395.DBD80 |
DB2395.DBD84 |
DB2395.DBX96.0 |
DB2395.DBX96.1 |
DB2395.DBX96.2 |
DB2395.DBX96.3 |
DB2398.DBD8 |
DB2398.DBD4 |
DB2395.DBD142 |
DB2395.DBX114.0 |
DB2395.DBX156.0 |
DB2395.DBX156.1 |
DB2395.DBX156.2 |
DB2395.DBX156.3 |
占位 |
F1_CUB_1_CUB_RO_FQIT01 |
CUB西南侧纯水流量检测 |
m³/h |
%4.2f |
0 |
100 |
DB1554.DBD68 |
DB1554.DBD72 |
DB1554.DBD76 |
DB1554.DBD80 |
DB1554.DBD84 |
DB1554.DBX96.0 |
DB1554.DBX96.1 |
DB1554.DBX96.2 |
DB1554.DBX96.3 |
DB1557.DBD8 |
DB1557.DBD4 |
DB1554.DBD142 |
DB1554.DBX114.0 |
DB1554.DBX156.0 |
DB1554.DBX156.1 |
DB1554.DBX156.2 |
DB1554.DBX156.3 |
占位 |
F1_CUB_1_WT_CW_FQIT01 |
CUB市政补水流量检测 |
m³/h |
%4.2f |
0 |
100 |
DB1586.DBD68 |
DB1586.DBD72 |
DB1586.DBD76 |
DB1586.DBD80 |
DB1586.DBD84 |
DB1586.DBX96.0 |
DB1586.DBX96.1 |
DB1586.DBX96.2 |
DB1586.DBX96.3 |
DB1589.DBD8 |
DB1589.DBD4 |
DB1586.DBD142 |
DB1586.DBX114.0 |
DB1586.DBX156.0 |
DB1586.DBX156.1 |
DB1586.DBX156.2 |
DB1586.DBX156.3 |
占位 |
F1_CUB_1_WT_CWS_FQIT01 |
CUB冷却塔补水泵流量检测 |
m³/h |
%4.2f |
0 |
100 |
DB1546.DBD68 |
DB1546.DBD72 |
DB1546.DBD76 |
DB1546.DBD80 |
DB1546.DBD84 |
DB1546.DBX96.0 |
DB1546.DBX96.1 |
DB1546.DBX96.2 |
DB1546.DBX96.3 |
DB1546.DBD142 |
DB1546.DBX114.0 |
DB1546.DBX156.0 |
DB1546.DBX156.1 |
DB1546.DBX156.2 |
DB1546.DBX156.3 |
占位 |
按上述格式,填写数据,修改地址等。
蓝色部分是手工填入的点位汉字描述。
橙色部分是手工填入的PLC地址。允许为空。
Excel编辑点位设计规范:
l 字段1的规范:只允许 CMD,STATE,ERROR这三种
l 字段2的规范:只允许大写字母与下划线
l 数据类型的规范:只允许AI,AO,DI,DO,WORD,DWORD,PULSE_OPEN,PULSE_CLOSE这几种。
l 报警等级规范:只允许一级报警、二级报警、三级报警这三种
l 操作权限:只允许填写6,7 这两个;6代表一般操作启停控制;7代表参数修改。
l 最后一列必须是“占位”单元格。
l 地址不希望存在、无效、都可用将地址单元格留空。
l 模拟量的格式:%4.2f 代表4个整数,2个小数。
l DP设备点命名只允许有大写,下划线。
l 暂不支持“AI报警”点位的快速导入。需要手工建立。
修改完后,将字段拷贝重新贴回到01.VFD.txt
在GEDI环境修改基础库LIB319路径下的“panels/tools/导入点位工具.xml”的源码,适配这个01.VFD.txt
打开“自动创建 DP TYPE”按钮,修改main函数之前的几行,如VFD的设备,改完之后如下:
string path = getPath( DATA_REL_PATH ) + "dp/PEX/F1_CUB_1_PEX_PLC01/01_VFD.txt"; // !!! 读取文件路径 string dpType = "FMCS_PEX_VFD"; // !!! 改DP类型的名称 string SubSystemPrefix = "PEX"; // ATOM 点位的前缀,组合后应当为:LIB_ATOM_MEP_AI_S7, LIB_ATOM_MEP_DI_S7 string PLCType= "S7"; // 可能选项: S7, MODBUS, AB,OMRON... |
主要是文件路径,DP类型,子系统前缀名称(MEP,CR,UPW,WWT…), PLC类型(S7,MODBUS,AB…)
复制两个按钮出来,进行修改代码。分别执行两个按钮,将会在日志有所提示。
点击2,创建DPTYPE.
注意:按钮一旦修改代码完成并导入数据,最好不要删除,以便将来再次复查修改和追踪原因。
在1的位置点击右键,编辑类型,
2的位置查看结构是否与TXT文本文件定义的结构完全一致。
3的位置检查是否正确引用了ATOM的类型。
如果DP TYPE创建正常,则执行4,5。。。自动创建该类型的DP点位。
若提示导入的点位是“OK”,则证明导入的点位、地址和txt文本文件的校验是基本上没有问题的,但也必须要辅助进行人工复查多次检验,进行最后的确认。
示例表格:
C:\WinCC_OA_Proj_319\LIB319\data\dp\DUMMY\Mod_Plc_1\06_AI.txt
拷贝到项目路径data\dp\PEX\Mod_Plc_3\06_AI.txt, 用Notepad++打开,拷贝全部字符,到Excel粘贴。Excel表格在使用前,需将全部单元格格式化为字符,否则地址信息带有.0后缀的会出错。
按前文所述,编辑字段1,字段2,地址表。地址表的格式:
M.3.3.68.0
M.PLCId.FunctionCode.ReferenceAddress.Offset
PLCId: 在WinCC OA中建立的modbus驱动的ID号。一般一个driver可以带若干个Modbus PLC(PLCId), 用不同的PLCId进行区分。
FunctionCode:功能码,如3代表读4x0000区的寄存器地址。
ReferenceAddress:基准地址。
Offset:偏移的bit位,仅对只读的bool量有意义。其他类型都写0
上述地址不得缺失信息,必须包含四个”.”。
将LIB319/dplist/LIB_MODBUS.dpl通过ASCII manager导入到系统。
1,2的位置选择LIB_MODBUS.dpl
3的位置勾选自动更新类型和导入报警属性。
然后观察是否已经导入了ATOM类型的Modbus基础类型点位:
然后,编辑完点位清单,打开LIB319/tools/LIB_DPImportTool_Modbus.xml ,对DPTYPE, DP导入的按钮进行适配。
如上图,DP TYPE按钮的修改,将路径、dpType名称,SubSystemPrefix,PLCType进行匹配。执行后即可得到
FMCS_PEX_AI_MODBUS的类型。继续下一步导入点位。
1的位置调整路径。
2的位置调整位PEX对应的dpType
3的位置调整PLC的PLCId的序号。
4的位置输入驱动 -num 的号码。通常Modbus从13开始比较好。(1,2预留。3~10预留给S7 驱动,11,12,是Modbus仿真和测试的驱动号)。
5的位置如果是true,则完全重新建立DP,进行地址覆盖(会丢失历史数据)。如果是false,将不对现有的dp进行覆盖。
以这个设备对象FMCS_CR_PUMP为例
点位点表:
将点表转换为设备数据模型:
配置各个点位的参数、属性。
将模型进行实例化。相同的属性,设置为继承自设备模型的配置,无需再次编辑。不同的属性,如地址,配置成可修改的模式,后期进行批量修改。
上图描述了实例化和自动继承的关系。
panels 文件夹下,一级文件夹必须为
MEP_SYS
其中MEP是子系统的名称。MEP_SYS文件夹存储全部的PEX的项目画面。将LIB 319的示例面板、示例设备对象(AI,PUMP…)等拷贝到项目的panels路径下,更改文件夹名称为XXX_SYS,XXX为项目名称,如PEX_SYS
使用Notepad++对MEP_SYS的整个文件夹进行文本替换
选择文件查找替换的窗口,输入项目文件夹路径,对字符串MEP,全部替换为PEX.然后对文件夹结构进行编辑。
文件夹结构规范:
在PEX项目的panels/PEX_SYS文件夹下,CUB_1.xml, CUB_2.xml是同名的文件夹CUB_1, CUB_2的索引。里面只摆放导航画面。
CUB_1、CUB_2文件夹下,需要具体存放一些设备、工艺的画面。用规范化的命名进行文件命名。如上图。
1的位置是PEX_SYS
2的位置是CUB_1.xml 及同名的CUB_1文件夹。同名的索引文件将会在PT.xml自动生成。
3的位置是CUB_1文件夹内部的设备。
支持多层文件夹嵌套,但一定要在每个层面的文件夹用上面的规范(文件夹及同名.xml的索引文件)进行设计文件夹结构。不得使用中文、异形字符、空格。只允许下划线、首字母。
打开LIB319/tools/PT.xml,
将源码中出现MEP_SYS的地方,替换成PEX_SYS,保存点击运行。(可以在Notepad++打开PT.xml批量将MEP替换为PEX)。
在第141行左右,需要过滤掉的文件夹的列表。这里要改一下文件夹名称字符串进行过滤。改造后:
打开拓扑编辑。1的位置打开
2的位置查看展开后和文件夹是否完全一致。每个画面节点和xml文件有无准确匹配。
1的位置点击报警等级范围
2的位置分别点击LIB_Alert_Level1,LIB_Alert_Level2,LIB_Alert_Level3,确认。再次点击确定,此时会更新下面的内部点_SumAlertPanel的DP结构。
在1的位置编辑默认的模板。
2选择LIB
3选择高级配置
4 选择手动,1920x1080
5 确认。
如果前面步骤尚未使用Notepad++批量对PEX_SYS文件夹里面的文件出现MEP的地方进行替换成PEX,可以手动进行如下的步骤:
拷贝库的LIB319/MEP_SYS/MEP_M文件夹到项目的PEX_SYS路径下。
1打开icon_AI/REFERENCE.xml, 双机3的位置,
修改为FMCS_PEX_AI
1的位置打开AI.xml
2的位置空白位置点击后,找到属性“参考文件”,打开,找到项目路径下的REFERENCE.xml,上个小节已经修改过该文件。
保存。
其他的PUMP,VALVE,FAN, PID, VFD….等所有的设备画面,都照此方法调整和保存。
1的位置找到AI.xml, 代表模拟量仪表监控的设备对象。
拖放到2的位置。
3观察是否为设定的FMCS_PEX_AI的设备模型
4自动拆分字段,快速找到分组
5选择DP点位。
确定保存画面
1的位置打开CUB_1.xml,
2的位置若没有导航按钮,就复制一个。
双机后,选择被索引的画面节点。
然后:
当每次将画面、拓扑文件夹自动创建之后,都需要按步骤生成自动汇总报警
1的位置打开拓扑编辑
2的位置点击全部树节点
3,4的位置保存和检查
在console 添加UI, 参数-p vision/startup.pnl , 启动测试模板。
然后
1的位置搜索1920,找到naviPanel
2 的位置找到打开
3的位置双机导航按钮,选择被导航的索引的位置。
冗余主机、备机文件夹路径、项目文件完全100%的一致。首次可以手动复制。
config文件添加:
data = "SEV01-1,SEV01-2$SEV02-1,SEV02-2"
event = "SEV01-1,SEV01-2$SEV02-1,SEV02-2"
console控制台添加:
Redundancy Manager
Split Mode Manager
客户端hosts、计算机名、IP地址。
与服务器一样,将CN319,LIB319拷贝或同步到客户端的项目文件夹。不建议合并此两个文件夹。
建议将项目的其他的项目的静态的画面、颜色、图片、程序脚本、建成一个SVN的库,使用SVN同步来完成,实现版本管理。
将<LIB319>/source/客户端项目模板文件夹改名(如 OS1),拷贝到客户端的项目文件夹下。
注册到WinCC OA,并配置CN319,LIB319库,项目库的依赖,注意顺序不要反。
修改<客户端项目>/config/config文件,配置
#data = "SEV01-1,SEV01-2$SEV02-1,SEV02-2"
#event = "SEV01-1,SEV01-2$SEV02-1,SEV02-2"
使得能够通过网络连接到服务器。此时即可启动
在子节点(或分布式中央节点)修改项目config文件
[dist]
maxSystemsToInitialize = 0 # 0,unlimit
maxUpdateMsgCount = 400000
#requestIdDelay = 100
distPeer = "SEV01-1,SEV01-2$SEV02-1,SEV02-2" 3
修改红色字体适配到实际项目。
在console添加Distribution Manager。
在LIB319/SYSTEM_ID.bat,用记事本打开里面的代码行,
C:\Siemens\Automation\WinCC_OA\3.19\bin\WCCOAtoolSyncTypesSQLite.exe -system 1 MEP -proj "FMCS_MEP_319"
修改红色的字体的变量参数适配到实际项目。
在1的位置打开报警、事件、画面配置与编辑
2的位置选择预配好的,如LIB_OnlineAlert
3的位置选择设定
在弹窗中,找到过滤系统,找到要显示的分布式系统,点击“显示”,激活此系统的显示。或者点击“所有可用的系统”。
在1的位置点击“编辑报警条”,在设定页面与上文相同进行参数设定。
SVN Server 运行在主机SEV01上面做版本管理服务器软件。
备机、OS客户都与SEV01做版本同步。
地址举例:https://SEV01:10443/svn/MEP/
将<LIB319>/config/config.level 用文本工具打开,拷贝下面这段
[ui]
versionControl = "SVN" # 默认使用SVN进行版本管理
versionControlDiff = "C:/Program Files/TortoiseSVN/bin/TortoiseUDiff.exe" # 默认使用SVN进行版本管理,客户端的默认路径
到项目的config 文件,以便于Gedi可以使用SVN的环境。否则只能在Windows文件夹进行SVN管理。
使用LIB的库模板,会在下方的工具栏多一个“自动版本更新”的切换开关。鼠标悬停后,可以弹出窗口显示当前的项目(支持多个层级)的库的版本信息。当切换到自动更新模式,将会在后台以10s为周期自动更新SVN服务器的项目版本到本地硬盘。
帮助
C:\Siemens\Automation\WinCC_OA\3.19\data\NGA\InfluxDB\sql>backupInfluxDB.cmd --help
Usage: backupInfluxDB.cmd [<command> <argument>] <InfluxDB-backup-path>
The commands are:
--database The name of the database (default is "winccoa")
--host Host and port of the database (default is "127.0.0.1:8088")
--max-backup-count Number of backups kept (default is 3)
示例:
C:\Siemens\Automation\WinCC_OA\3.19\data\NGA\InfluxDB\sql>backupInfluxDB.cmd --database winccoa --host localhost:8088 d:\influxdb_backup
2023/07/15 00:33:37 backing up metastore to d:\influxdb_backup\20230715-003337\meta.00
2023/07/15 00:33:38 backing up db=winccoa
2023/07/15 00:33:38 backing up db=winccoa rp=ALERT shard=3 to d:\influxdb_backup\20230715-003337\winccoa.ALERT.00003.00 since 0001-01-01T00:00:00Z
C:\Siemens\Automation\WinCC_OA\3.19\data\NGA\InfluxDB\sql>restoreInfluxDB.cmd --help
Usage: restoreInfluxDb.cmd [<command> <argument>] <WinCC-OA-project-name> <InfluxDB-backup-path>
The commands are:
--database The name of the database (default is "winccoa")
--host Host and port of the database (default is "127.0.0.1:8088")
--backup The backup folder name (e.g. 20211021-133236) inside <InfluxDB-backup-path> (default is the newest backup)
--password The password for the InfluxDB authentication, no further password prompt is shown
(only ASCII characters are allowed in passwords when using this command)
--username The username for the InfluxDB authentication, no further username input prompt is shown
(only ASCII characters are allowed in username when using this command)
--silent The user will not be asked to confirm that the current database will be overwritten
(This command is a switch and needs no argument)
--timeout The timeout after the influxd restore operation (default is 10 seconds)
举例:
C:\Siemens\Automation\WinCC_OA\3.19\data\NGA\InfluxDB\sql>restoreInfluxDB.cmd FMCS_MEP_DEMO d:\influxdb_backup
The database "winccoa" has to be dropped from InfluxDB before restoring from d:\influxdb_backup. All data in "winccoa" will be lost!
Do you want to continue [y/n]? y
Username: etm
Password: *******(密码etm#123)
Starting up influxd -config C:\WinCC_OA_Proj\FMCS_MEP_DEMO\config\influxdb.conf
Dropped database "winccoa" from InfluxDB
Restoring database "winccoa" from backup 20230715-003337
2023/07/15 00:39:30 Restoring shard 44 live from backup 20230714T163337Z.s44.tar.gz
2023/07/15 00:39:30 Restoring shard 8 live from backup 20230714T163337Z.s8.tar.gz
在1的位置,找到DB,DB_2,DB_R,DB_R_2,四个本机历史库的参数,
在2的位置,填写
Database wincc_oa
backupPath 空(空的意思是默认存储到<projdir>/db/wincc_oa/influx/backup)
backupHostConnectionString 127.0.0.1:8088
其中,backupHostConnectionString是influxdb的config文件中全局参数bind-address=":8088"定义的。
11.4 中央历史库的参数界面
在1 的位置,找到中央历史库HIS,HIS_2,HIS_R,HIS_R_2,
在2的位置,填写如下参数:
database winccoa
backupPath C:/influx/db2/backup
influxBinPath C:/Siemens/Automation/WinCC_OA/3.17/bin
dpNameFilterSplitSize 100
backupHostConnectionString H5:9088
databaseStartupTimeout 2
其中,backupPath指的是将中央历史库的数据,存储到本地硬盘的路径。
InfluxBinPath指向本地的influxd程序
backupHostConnectionString是中央历史库的连接符。本例中的中央库的influx的conf配置文件中应当为:bind-address=":9088"
11.5 操作界面
1的位置选择本地(或中央)的历史归档组。
2 的位置选择时间段
3 的位置点击备份按钮,即可自动调用备份程序进行备份。
同时,在备份路径下,可以观察自动生成的一系列备份历史库的文件。
1的位置观察,已经变化为状态“在线和备份”
在备份路径下,已经生成了对应的归档组的备份文件。
备注:备份文件夹的内容可以直接手工删除,此时,归档组的状态又会变化为“在线”。
如果点击删除按钮,将会删除中央历史库实时在线的历史库。
点击offline and backed-up(离线并已经备份),可以对备份的历史再次恢复
12 系统运维与诊断(Windows系统、influxDB数据库)
针对主机(或备机)安装influxDB(8086)历史库运行influxDB的情况。
https://github.com/influxdata/influxdb/releases
https://github.com/influxdata/telegraf/releases
https://github.com/influxdata/chronograf/releases
例如版本:
chronograf-1.10.1_windows_amd64.zip
influxdb-1.8.10_windows_amd64.zip
telegraf-1.28.2_windows_amd64.zip
[windows]
#生成config配置文件
telegraf --input-filter system:mem:swap:disk:diskio:nstat:cpu:processes:kernel:filesystem:influxdb --output-filter influxdb config > telegraf.conf
修改生成的配置文件。
或者直接用附件的配置文件:telegraf.conf
测试
telegraf -config "C:\software\telegraf\telegraf.conf"
12.3 安装windows开机服务:
telegraf --service install --config "C:\software\telegraf\telegraf.conf"
telegraf.exe --service install #安装服务
telegraf.exe --service uninstall #删除服务
telegraf.exe --service start #启动服务
telegraf.exe --service stop
nssm install chronograf
填写必要的参数,注册成功名为“chronograf”的windows服务。
在服务中,找到chronograf,启动。
用浏览器http://<INFLUXDB_SERVER>:8888 进行访问
12.5 配置chronograf 的 dashboard
配置influxdb的连接
1. 新建数据源,填写LOCAL8086, 代表主机INFLUXDB_SERVER,开放端口8086的influxDB,诊断(主)服务器信息。
2. 》仪表盘》导入dashboard》导入json文件》 Windows系统.json,实现对CPU , 内存,网络等基本信息诊断;
3. 》仪表盘》导入dashboard》导入json文件》 InfluxDB.json,实现对influxDB运行参数基本信息诊断;
局域网使用http://<INFLUXDB_SERVER>:8888 进行访问。
13 系统运维与诊断(Linux系统、influxDB历史数据库)
针对同一个主机安装两个端口(8086,9086)两台历史库同时运行influxDB的情况。
https://github.com/influxdata/influxdb/releases
https://github.com/influxdata/telegraf/releases
https://github.com/influxdata/chronograf/releases
例如版本:
influxdb-1.8.10.x86_64.rpm
telegraf-1.28.1-1.x86_64.rpm
chronograf-1.10.1.x86_64.rpm
[windows]
scp telegraf*.rpm chronograf*.rpm chronograf*.rpm root@<INFLUXDB_SERVER>:/opt
[Linux]
su - root
修改执行权限:
chmod 755 /etc/rc.d/rc.local
dnf install /opt/telegraf*.rpm
#生成config配置文件
telegraf --input-filter system:mem:swap:disk:diskio:nstat:snmp:cpu:processes:kernel:interrupts:linux_sysctl_fs:filesystem:influxdb --output-filter influxdb config > telegraf.conf
修改生成的配置文件。
或者直接用附件的配置文件:telegraf.conf
将配置文件拷贝到/etc/telegraf/telegraf.conf
rm -rf /lib/systemd/system/telegraf.service
touch /lib/systemd/system/telegraf.service
echo [Unit] >> /lib/systemd/system/telegraf.service
echo Description=Telegraf Service >> /lib/systemd/system/telegraf.service
echo After=multi-user.target >> /lib/systemd/system/telegraf.service
echo [Service] >> /lib/systemd/system/telegraf.service
echo WorkingDirectory=/opt >> /lib/systemd/system/telegraf.service
echo User=root >> /lib/systemd/system/telegraf.service
echo Type=idle >> /lib/systemd/system/telegraf.service
echo ExecStart=/usr/bin/telegraf -config /etc/telegraf/telegraf.conf >> /lib/systemd/system/telegraf.service
echo Restart=always >> /lib/systemd/system/telegraf.service
echo [Install] >> /lib/systemd/system/telegraf.service
echo WantedBy=multi-user.target >> /lib/systemd/system/telegraf.service
systemctl daemon-reload
systemctl enable telegraf.service
systemctl start telegraf.service
systemctl status telegraf.service
重启
systemctl restart telegraf.service
systemctl status telegraf.service
influx -host localhost -port 8086 -execute "CREATE DATABASE telegraf"
influx -host localhost -port 8086 -execute "CREATE USER "telegraf" WITH PASSWORD 'telegraf' WITH ALL PRIVILEGES"
influx -host localhost -port 9086 -execute "CREATE DATABASE telegraf"
influx -host localhost -port 9086 -execute "CREATE USER "telegraf" WITH PASSWORD 'telegraf' WITH ALL PRIVILEGES"
influx -host localhost -port 8086 -execute "CREATE DATABASE winccoa"
influx -host localhost -port 8086 -execute "CREATE USER "etm" WITH PASSWORD 'etm#123' WITH ALL PRIVILEGES"
influx -host localhost -port 9086 -execute "CREATE DATABASE winccoa"
influx -host localhost -port 9086 -execute "CREATE USER "etm" WITH PASSWORD 'etm#123' WITH ALL PRIVILEGES"
dnf install /opt/chronograf*.x86_64.rpm
chronograf
systemctl daemon-reload
systemctl enable chronograf.service
systemctl start chronograf.service
systemctl status chronograf.service
重启
systemctl restart chronograf.service
systemctl status chronograf.service
用浏览器http://<INFLUXDB_SERVER>:8888 进行访问
13.8 配置chronograf 的 dashboard
配置influxdb的连接
1. 新建数据源,填写LOCAL8086, 代表主机INFLUXDB_SERVER,开放端口8086的influxDB,诊断(主)服务器信息。
2. 》仪表盘》导入dashboard》导入json文件》 Linux系统.json,实现对CPU , 内存,网络等基本信息诊断;
3. 》仪表盘》导入dashboard》导入json文件》 InfluxDB.json,实现对influxDB运行参数基本信息诊断;
局域网使用http://<INFLUXDB_SERVER>:8888 进行访问。
14 influxDB Rest API直接访问历史数据库
14.1 sql语句格式
SELECT 语法:
SELECT <field_key>[,<field_key>,<tag_key>]
FROM <database_name>.<retention_policy_name>.<measurement_name>
WHERE <conditional_expression> [(AND|OR) <conditional_expression> [...]]
GROUP BY time(<time_interval>),[tag_key] [fill(<fill_option>)]
ORDER BY time [asc | desc]
fill()
LIMIT number
SLIMIT N
OFFSET number
tz('<time_zone>')
解释:
SELECT后面查询显示字段必须至少有一个field key,否则会抛异常ERR: at least 1 non-time field must be queried。还可显示tag keys、time,或者*显示所有字段。支持类型转换算符::,如:::float
FROM 返回完全合格测量的数据。通过指定度量的数据库和保留策略来完全限定度量。
WHERE查询条件可为tag keys和time,field keys 也可作为查询条件但是不常用,因为不是索引,查询效率比较低。tag keys条件操作符支持=、!=、<>、正则,field keys支持=、!=、<>、>、>=、<、<=、正则。Tag key 用双引号,字符串用单引号。
GROUP BY只能对tag keys和time进行合分组,可以多字段排序,如group by tag1,tag2,time,也可一个*对所有的tag进行分组聚合,支持time时间分组聚合(前提是对SELECT 使用统计函数进行检索)。time(0 函数支持的单位:"ns" | "u" | "µ" | "ms" | "s" | "m" | "h" | "d" | "w"。
Fill() 如果values结果集中有null的情况,可在查询语句中加fill(0),遇到null用0来填充。fill()中只能填数字和previous(用前值替代)。
ORDER BY只能对time进行排序,asc升序,desc降序。
LIMIT分页,LIMIT后面的数字是查询显示多少条,
SLIMIT <N> , SLIMIT <N>返回指定测量值中 <N> 系列中的每个点。
OFFSET后面数字代表偏移量(从0开始代表第一条),如limit 10 offset 10意思为从第11条开始往后10条。
tz('<time_zone>') 指定时区(仅Linux)
举例:
SELECT original_value_float FROM AI_FAST.AI_FAST WHERE "name" = 'MEP:F1_CUB_1_1_102_XF_TIT01.STATE.VAL_IN.VALUE' AND time > '2023-07-14T15:00:00Z' AND time<'2023-07-14T20:00:00Z'
14.2 python访问历史库
import requests
# 定义InfluxDB的主机和端口 influx_host = 'aigowifi' influx_port = '8086'
# 定义数据库名称和测量名称 database_name = 'winccoa' measurement_name = 'AI_FAST.AI_FAST' field = 'original_value_float' # 定义用户名和密码 username = 'etm' password = 'etm#123' dpe='MEP:F1_CUB_1_1_102_XF_TIT01.STATE.VAL_IN.VALUE' t0='2023-07-14T15:00:00Z' t1='2023-07-14T20:00:00Z' # 构建查询语句 url = f"http://{influx_host}:{influx_port}/query" query = f"SELECT {field} FROM {measurement_name} WHERE \"name\" = '{dpe}' AND time > '{t0}' AND time<'{t1}'" # 发送HTTP请求并获取响应 response = requests.get(url, params={'q': query, 'db': database_name}, auth=(username, password))
# 检查响应状态码,并解析JSON数据 if response.status_code == 200: data = response.json() # 打印结果 print(data) print(query) else: print(f"Error: {query},{response.text}") |
示例程序在<LIB319>/data/webservice/winccoa.py
14.3 curl命令访问
curl -G "localhost:8086/query?db=winccoa" --user etm:etm#123 --data-urlencode "q= SELECT original_value_float FROM AI_FAST.AI_FAST WHERE \"name\" = 'MEP:F1_CUB_1_1_102_XF_TIT01.STATE.VAL_IN.VALUE' AND time > '2023-07-14T15:00:00Z' AND time<'2023-07-14T20:00:00Z' LIMIT 10"
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>WinCC OA influxDB RestAPI For jQuery</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"> </script> </head> <script> $(document).ready(function() { // 指定 InfluxDB 的 RestAPI 地址 var influxdbUrl = 'http://localhost:8086/query'; // 用户名和密码 var username = 'etm'; var password = 'etm#123';
// 构建查询语句,注意每行最后有个空格! // 注意:读出的数据都是UTC时间,请自行转换成LOCAL的时间(+8) var query = `SELECT time AS \"时间\", first(\"original_value_float\") AS \"CUB_1_1_102_XF_TIT01消防泵房温度检测\" FROM AI_FAST.AI_FAST WHERE \"name\" = 'MEP:F1_CUB_1_1_102_XF_TIT01.STATE.VAL_IN.VALUE' AND time >= '2023-07-15T02:00:00Z' AND time <= now() - 1h GROUP BY time(1m) FILL(previous) ORDER BY time DESC LIMIT 1000 SLIMIT 1`;
// 发送 GET 请求进行验证 $.ajax({ url: influxdbUrl, type: 'GET', data: { q: query, db:'winccoa', u: username, p: password }, success: function(response) { // 处理成功返回的数据 console.log(response); }, error: function(xhr, status, error) { // 处理请求失败的情况 console.log('Error: ' + error); console.log('query: ' + query); } }); }); </script> </html>
|
执行结果:
示例程序在<LIB319>/data/webservice/index.html
在运行后的画面点击语音管理。
1的位置激活Cortana语音助理(支持LTSC版本Windows).
6的位置输入系统名称的汉字。如洁净室系统。
2的位置激活报警弹窗功能。
3的位置选择报警条。
4的位置选择三级报警(40)及以上。
5的位置选择播放的声音文件。
应用并关闭。
去除1,2,3的勾选。保存。