第七章 环境组态
环境的定义: 一个环境就是软件资源的集合和有关显示的集合, 软件资源可以通过顶端菜单键和子菜单来获得, 这些显示是按照用户及其执行的任务从功能上分组的。简单地说, 一个环境就是一套顶端菜单键及其子菜单。如工程师环境, 规定了工程师可以使用的系统资源; 操作员环境则规定了操作员可以使用的系统资源。
环境组态的目的: 保护系统的安全, 规定各个操作人员的工作范围, 并用口令阻止他人非 法进入不属于他的操作环境。
I/A 系统创建的环境如表一所示, 用户可以通过环境组态软件修改这些环境, 或增加新的环境。
表一:I/A 系统缺省的环境 环境名 位置1 2 3 4 5 6 7 8 9 10 Init_Env PassWd_Env_cfg Softw_Eng_Env Plant_Mgmt_Env Maint_Env Proc_Eng_Env Proc_Op_Env
Sys Sys Sys Sys Sys Sys Sys
Alarm Keep Keep Keep Keep Keep Keep
Help Keep Keep Keep Keep Keep Keep
Config Config
UtlCfg Disp Tools Disp Disp Disp
Disp_1 Disp_1
Disp_2 Disp_2
SftMnt SftMnt Disp_3
Keep Keep Keep Keep Keep Keep
Select Keep Keep Keep Keep Keep Keep
环境组态时要注意的几个问题:
一. 初始环境 \"Init_Env\" 是系统最初引导时所进入的环境, 千万不能把口令加入此环境。否则, 若无人敲入口令字系统就不能被完整引导。所以这对系统的正常工作是一个很严重的障碍。
二. \"Sys\" 顶端键是每个环境都不能缺少的, 若没有它就不能改变环境, 除非重新引导系统。
三. 确定键名及其在菜单行上的位置时应尽可能保持一致, 如果同一作用的键在顶端菜单条上左右移动, 容易产生混乱而导致误操作。特别是不要移动处于第一位置的 \"Sys\" 键, 不管该位置的键被定义作什么用, 系统发生报警时总是在这个位置上闪烁, 这样容易引起混乱。
四. 不要滥用 \"keep\" 功能, 否则你会惊奇地发现某些环境居然有未经定义的键。
1 50 系列的环境组态
50 系列的环境文件是文本文件,每个环境名就是文件名,环境文件存放的目录: /usr/fox/sys/Change_Env
7-1
第七章 环境组态
在这个目录下我们可以用编辑命令修改或加入环境文件,(注意非 50 系列的 I/A 在上述目录下有相同文件名的环境文件, 但不是文本文件, 因此不可以用编辑命令修改它, 也不能用 cat, more 之类的命令显示它)
50 系列环境文件的格式: dmcmd nologscr dmcmd passwd dmcmd chng_env
dmcmd button 0 键名 路径 …………….. ……………..
dmcmd button 9 键名 路径
其中 0~9 是十个键的位置,“键名”是要求出现在顶部菜单上与操作人员见面的菜单名,路径是 Unix 文件或目录的全路径名。在键名处同样可以使用 keep,保留上一环境中该处菜单键的功能。 组态一个新环境的最简单办法是拷贝一个已有的环境文件, 然后将它修改成自己所要的环境文件。 注意, 在这儿加入的口令是不起作用的,如要给某个环境加口令,要使用命令,用法如下:
cd /usr/fox/sys/Change_Env↙
/usr/fox/wp/bin/tools/dmsepass 环境文件名 [-p 口令] [-d 环境说明]↙
如要删除某个环境的口令,也是该命令,只是不要后面的选项。 即加入一个空的口令,就等于删除原有的口令。
2 Fox View 环境组态
在安装了 FoxView 软件后, 50 系列就有两套环境文件, 一套如上面所讲的, 存放在/usr/fox/sys/Change_Env 目录下, 供 DM 软件使用; 另一套在 \\opt\\fox\\env 目录下供 FoxView 软件使用。 70 系列只有使用 FoxView, 它的环境文件只有一套, 存放在 D 盘的\\opt\\fox\\env 目录下。 FoxView 的环境文件是文本文件, 每个环境由几个文件组成, 一般以环境名作这一组文件的名字, 以扩展名来区别每个文件的作用。下面介绍其扩展名的含义:
*.env - 环境文件,用于定义该环境的*.acl, *.dbr, *.mbr文件。 *.acl - 操作级别文件,用于定义该环境允许的操作级别。 *.dbr - 显示按钮文件,用于定义该环境的显示按钮。
*.mbr - 顶部菜单文件,用于定义该环境的顶部菜单,并且定义菜单文件。 *.mnu - 菜单文件,用于定义*.mbr文件中的二级菜单。 下面以 Initial 环境为例来说明其带各种后缀的环境文件的格式: 7-2
I/A’s 系统及应用
Initial.env dmcmd script #定义该文件为一个Foxview script文件 dmcmd passwd #定义该环境是否组态了密码
dmcmd chang_env #清除顶部菜单,如果操作员记录打开,则记录 $ENV_DIR/Initial.acl #定义该环境的操作级别文件 $ENV_DIR/Initial.dbr #定义该环境的显示按钮文件 $ENV_DIR/Initial.mbr #定义该环境的顶部菜单文件
Initial.acl dmcmd script
dmcmd unprotect all dmcmd protect value 1,2,3
#开放所有操作级别
#禁止操作级别1,2,3的操作
Initial.dbr dmcmd script
dmcmd dbar_tmplt $FV_DBAR/icon_display_bar #定义显示按钮的基本图 dmcmd dbar_button 1 \"dmcmd chng_env_dlg\" -l \"Change Env\" -b
$FV_DBAR/chgenv.bmp
#定义第一个按钮命令为改变环境
dmcmd dbar_button 2 \"dmcmd stddisp\" -l \"FoxSelect\" -b $FV_DBAR/selscrn.bmp
#定义该按钮命令为 “Foxselect”
dmcmd dbar_button 3 \"dmcmd psc\" -l \"Print Screen\" -b $FV_DBAR/printer.bmp
#定义该按钮命令为打印屏幕
dmcmd dbar_button 4 $INITDSP #定义该按钮命令为打开初始画面
dmcmd dbar_button 5 /opt/menus/demo/centrifuge #以下均为打开的图形显示文件 dmcmd dbar_button 6 /opt/menus/demo/extraction dmcmd dbar_button 7 /opt/menus/demo/overlay1 dmcmd dbar_button 8 /opt/menus/demo/asceptic_pack
Initial.mbr dmcmd script dmcmd mruflush
button -1 &File $ENV_DIR/File.mnu
#定义顶部菜单的第一项为File,其下拉菜单由 File.mnu 文件描述
button -1 &Disp \\opt\\menus
#定义顶部菜单的第二项为 Disp,其下拉菜单为指定的目录
7-3
第七章 环境组态
button -1 &Help $ENV_DIR/help.mnu
File.mnu pulldown foxview menu #定义这是一个下拉菜单 \"Change &Environment... Ctrl+E\" \"Fox&Select...\"
\"chng_env_dlg\" \"stddisp\" \"psc_dlg\"
\"Separator\" \"SEPARATOR\" \"&Print... Ctrl+P\" \"Separator\" \"Separator\" \"Se&lect Point\" \"Separator\" \"&1 MRU\" \"&2 MRU\" \"&3 MRU\" \"&4 MRU\" \"Separator\" \"E&xit\"
\"SEPARATOR\" \"SEPARATOR\" \"select_pt on\" \"SEPARATOR\" \"MRU1\" \"MRU2\" \"MRU3\" \"MRU4\" \"SEPARATOR\" \"dmexit\"
\"Additional &FoxView\" \"run $FVBIN/foxview \"
其中:每一行的前半部分为下拉菜单的显示内容,后半部分为菜单行的命令。
以下为部分命令:
chang_env_dlg 打开改变环境对话框 SEPARATOR 菜单上增加一横线 psc_dlg 打开打印对话框
MRUn 打开最近调用的第n幅基本显示(n=1,2,3,4)
如果要建立一个新的环境,则可根据具体要求建立如上说明的一套文件(不一定全部都要, 满足需要即可),最简便的方法为拷贝一个与新环境相似的某一套环境文件,在此基础上进行修改。
为 FoxView 的环境加口令
70 和 50 都可使用 FoxView 界面, 加口令的方法大同小异。 70 系列 d:
cd \fox\\wp\\bin\ools
dmsepass 环境文件名 [-p password] [-d description] [-f filename] 7-4
I/A’s 系统及应用
口令文件存放于\fox\\wp\\data目录,如果用户未定义文件名,则按 dmpasswd_cfg 存放。
50 系列 cd /opt/fox/env
/usr/fox/wp/bin/tools/dmsepass 环境文件名 [-p password] [-d description] [-f filename]
如何封锁NT平台
为了系统更加安全,V6.0允许封锁NT平台。使操作员不能进入NT环境。操作方法如下:
1. 2. 3. 4. 5. 6.
进入 Control Panel
双击Foxboro I/A图标 (见图7-1) 进入以下对话框
在Start NT Shell at Boot选择框中取消勾号 选择OK 重新启动计算机
封锁环境后,如果要重新启动NT平台,则在工程师环境进入
SftMnt → Expolre → Control Panel → Foxboro I/A,将 Start NT Shell at Boot 恢复即可。
7-5
第七章 环境组态
图 7-1
3 使用 DM 的操作保护级
( FOXDRAW 在环境组态是用带有 .acl 后缀的操作级别文件定义保护级问题, 而 DM 的环境组态需要另外编写一个保护级文件。)环境组态决定了操作人员可以使用的系统资源,但还有更复杂的情况。假如操作员甲和操作员乙都要使用流程图一, 但甲可以操作某一个阀门 (或按钮),而乙不允许操作该阀门。 如果只用环境组态来解决, 那就必须画二幅显示,一幅有这个阀门,另一幅不画这个阀门, 分别存在这二个操作员可以访问的目录下。 这样能够解决问题,但不专业。在显示组态这一章, 我们已经碰到了保护级的问题,任何使用呢?那时讲不清,有了环境组态这个概念后,就能解决这个问题了。譬如我们在显示组态时把这个阀门的保护级定为 50,下面我们就为这二个操作员定义一个操作级别。
一、 建立一个新的环境目录,假定为: /usr/fox/env2
mkdir /usr/fox/env2
二、 将这二个操作员的环境文件移到刚才建立的目录下,假定文件名分别为
Operator1, Operator2。
mv /usr/fox/sys/Change_Env/Operator? /usr/fox/env2/
三、 在 /usr/fox/sys/Change_Env 目录下为这二个操作员建立二个文件,文件名任意,文
件内容为: dmcmd script = P2 $ENV /usr/fox/env2/Operator1
!= $P2 $ENV dmcmd setacl 50 + + -
其中“50 + + -”表示对该环境,保护级为 50、51 的都允许操作,而对保护级为 52 的则不允许操作。同理对操作员乙,只要设定成“50 - ”他进入自己的环境后就不能操作该阀门。
四、 如果是 PW 或 AP20,需要执行下面的命令
cd /usr/fox/sys/Change_Env mkmact
4. 操作员行为记录
I/A 系统的安全一直是大家所关心的问题。环境组态与保护级明确了各个操作人员的责任, 但能否监督操作人员的随意行为? 在 I/A 中有一个类似于黑匣子的工具, 它能记录下工7-6
I/A’s 系统及应用
作站上的每一个动作, 这个工具称为 “操作员行为记录” (以后我们简称为: 记录)。系统启动以后
它并不是立即就投入工作的, 要由过程工程师来启动它。
操作步骤:
在过程工程师环境下依次选择 [Config] → OperActJournal 见图 7-2
Report Printer -- 指定记录下来的报表输出的打印机。(NT 平台的无本项) Report Duration --记录所要监视的起始时间和结束时间。
Report Filters -- 记录所要监视的工作站名, 功能块组合名, 模块名。星号表示适配所有的字符。例如仅在模块名上打入 \"B*\另两个仍是 \"*\记录所有站所有组合中模块名的第一个字母为 B 的所有模块。
Report File Actions -- 现在要将记录下来的报表输出的方向。 有三种选择: 输出到新建立
的文件(文件名及路径在 File To Create 中指定)/ 打印/ 建立文件并打印。(NT 平台的软件无本项)
图 7 - 2
Historian Log -- 历史库的逻辑名, 并选择 Enabled 或 Disabled, 决定是否要激活。缺省的名字为qualdb, 建议改为系统的历史库名, 在我们的实验室中是 histpc。
Printer Log -- 打印机的逻辑名, 如果激活的话, 操作员的每个操作动作立即在指定的打印机上输出。
7-7
第七章 环境组态
File To Create/Print -- 要建立的文件名, 每执行一次 File To Create 就将历史库中记录的数据送到在此指定的文件中。(NT 平台的无本项)
Done -- 接受组态数据并退出。记录就开始监视指定的站, 组合或模块。 Cancel -- 放弃并退出。
好了, 现在每个工作站上的任何一个操作都会被记录下来, 在有必要的时候只要到数据库中查阅就行了。
文件的位置:
缺省的历史库逻辑名为 qualdb, 由于系统中并未建立该数据库因此就需要另外做许多工作。 最简单的办法把它改为已有的数据库 histpc, 在该数据库中有一名为 optaction 的表格, 记录收集来的数据存放在该表格中。 在历史组态中我们已知如何把表格中打印输出。 在做行为记录的 Report File Actions 一栏里提供了 Print File 菜单, 每选择一次该菜单就打印输出一份表格中的数据。 选择 Create File 就将表格中记录的数据输出到一个文本文件, 该文件存放在 /usr/fox/reports 目录下, 缺省的文件名为 PCAT00.oaj, 这是因为我们的 PW 逻辑名是 \"PCAT00\",你也可以另外指定一个文件名。
本章实验
1. 环境组态 2. 操作员行为记录
本实验看似简单, 要做好好象也有点困难。 该实验分二步:
第一步, 启动 OAJ 软件, 要将缺省的历史库名改为你使用的机器中的历史库名, 否则操作员的动作记录不到正确的历史库中, 使得下一步就看不到。
第二步, 用 Create File 将历史库中记录的内容写入文件, 这一步一定要将开始时间定义好, 它不是把历史库中的所有记录都取来, 而是按你指定的时间段将部分记录取来。
如果仍没有记录, 应该检查历史是否投入运行, 有关的信息组是否运行。
7-8
因篇幅问题不能全部显示,请点此查看更多更全内容