WINCC中使用C脚本获得操作记录的方法(原创).doc_第1页
WINCC中使用C脚本获得操作记录的方法(原创).doc_第2页
WINCC中使用C脚本获得操作记录的方法(原创).doc_第3页
WINCC中使用C脚本获得操作记录的方法(原创).doc_第4页
WINCC中使用C脚本获得操作记录的方法(原创).doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

文档号版本日期页数 61e1f58628c0abaa5565cfaaa23d3990 pdf 版本版本日期日期作者作者校对校对批准批准说明说明 0 技术总结技术总结 C 脚本获得操作记录的方法脚本获得操作记录的方法 文档号版本日期页数 61e1f58628c0abaa5565cfaaa23d3990 pdf 目录目录 1应用范围应用范围 3 1 1详述 3 1 2适用的系统 3 2硬 软件配置硬 软件配置 3 3解决方法解决方法 4 附件附件 附件文档号说明 文档号版本日期页数 61e1f58628c0abaa5565cfaaa23d3990 pdf 1应用范围应用范围 1 1详述详述 在生产中 有很多时候需要记录操作员的操作 以便进行事故分析 WINCC 本身提供了一些对象可以产 生操作记录 但是在复杂的情况下是无法兼顾既获得操作记录又满足特殊操作的要求 这时 可以使用 C 脚 本来获得操作记录 目前 在 WINCC 中以下对象可以很方便地获得操作记录 任何对象 将 Event Direct Connection Operator Input Message 选中 图 1 通过 DirectConnection 获得操作记录的组态 Check Box 对象和 Option Group 对象 将 property Operator Input Message 属性选择为 yes 图 2 Check Box 对象和 Option Group 对象获得操作记录的组态 IO Field 对象和 Slider 对象 将 property Operator Input Message 属性选择为 yes 或将 property Operator Activities Report 属性选择为 yes Operator Input Message 和 Operator Activities 文档号版本日期页数 61e1f58628c0abaa5565cfaaa23d3990 pdf Report 的区别是后者可以输入操作理由 确认之后操作记录的 Comment 中可以查看到操作理由 图 3 IO Field 对象和 Slider 对象获得操作记录的组态 以上方法可以快捷地实现获取操作记录的功能 但是在某些情况下 功能要求更复杂 通过以上方法并不 能满足要求 比如 操作员操作一个启动按钮 要求系统能够记录操作员操作信息 在单步操作的情况下 通 过 Direct Connection 能够很方便地实现这一功能 但是在两步操作的情况下 需要操作员先确认 在得到确 认之后操作才能生效 由于 Direct Connection 并没有提供操作确认功能 显然通过 Direct Connection 并不能 满足要求 在这一的情况下 可以考虑采用 C 脚本来实现这一功能 通过 MessageBox 函数来完成操作确认 的功能 然后通过特别的函数来使系统产生操作记录 1 2适用的系统适用的系统 该方法适用于安装有 WINCC 的系统中 2硬 软件配置硬 软件配置 安装有 WINCC 软件 无版本限制 3解决方法解决方法 通过 C 脚本产生操作记录主要完成两部分组态工作 首先要在 Alarm Logging 中组态消息类型和定制消息 内容 然后编写 C 脚本来产生操作记录 第一步 在 Alarm Logging 中组态消息类型和定制消息内容 1 新建消息并定义消息类型 系统产生的消息 包括了操作记录 和定制的消息都存储在 Alarm Logging 中 编号从 1000000 开始的消息为系统使用的消息 不能组态 如果需要定制消息 可 以使用 1 1000000 之间的消息号 在 WINCC explorer 中打开 Alarm Logging 新建一条消息 消息号为 1 打开该消息的属性对话框 如图 4 所示 在 Parameters 一栏中 将 Class 和 Type 都选为 Operator Input Message 保留其余默认设置 文档号版本日期页数 61e1f58628c0abaa5565cfaaa23d3990 pdf 图 4 消息的参数组态 2 定制操作记录的内容 每条操作记录都在单独的消息行中显示 消息行的内容取决于选定的消息 块 每个选定的消息块组成消息行中的一列 如图 5 所示 系统提供了三种不同类型的消息块 系统块显示预定义的消息 如日期 时间 持续时间 注释 用户文本块允许最多为一 条消息指定十个可定义文本 包含操作来源 操作内容 时间等信息 过程值块 系统提供了 十个过程值 通过过程值块可以在消息行中显示已定义的标签值 并非消息块中每一项都需要在 消息中显示 可以在系统图形文件 AlarmOperation pdl 中进行定制 图 5 消息块类型 通常 在进行事故分析时 需要了解操作日期 时间 操作来源以及操作内容 前面提到 系统块提供了 操作日期和时间信息 只需要选中这两个选项 无需特别的组态 因此 定制操作记录只需要再对操作来源和 操作内容进行组态就可以了 文档号版本日期页数 61e1f58628c0abaa5565cfaaa23d3990 pdf 先来了解下通过 Direction Connection 产生的操作记录的内容 如图 6 所示 操作来源中显示的是变量名 称 变量包含了工厂层级信息 操作内容中包含了用户名 新值和旧值的信息 变量名 用户名 新值和旧值 可以从过程值块的变量中获得 先对过程值模块中 10 个过程值的用处作如表 1 中的定义 图 6 操作记录列表 过程值 12345678910 用处消息号 变量的 新值 变量的 旧值 备 用 备 用 当前登录 的用户名变量名 备 用 备 用 备 用 表 1 过程值块变量用处的定义 在进行上述的定义之后 进入消息组态对话框 选择 Text 一栏 进行用户文本块的定义 如图 7 所示 图 7 用户文本块的组态 用户文本块中的内容可以手动输入 也可以通过点击右边的进入文本组态对话框进行消息格式的组态 如图 8 所示 文档号版本日期页数 61e1f58628c0abaa5565cfaaa23d3990 pdf 图 8 用户文本块中输出格式的组态 到这里 我们就完成了在 Alarm Logging 中操作记录的组态工作 接下来就要进行 C 脚本的编写了 第二步 编写 C 脚本 C 脚本中要做的工作主要有分两步 先是进行变量的赋值 然后再创建消息 1 变量的赋值 在触发消息的事件 如按钮的鼠标左键释放事件 的 C 脚本中定义变量并给变量赋 值 根据表 1 中的定义 需要定义两个数组 一个是数值类型为 Double 另一个数值类型为字 符指针 前者用于存放消息号 变量的新值和旧值 后者用于存放当前登录的用户名和变量名 以下是按钮鼠标释放事件的 C 脚本程序 include apdefap h void OnLButtonUp char lpszPictureName char lpszObjectName char lpszPropertyName UINT nFlags int x int y WINCC TAGNAME SECTION START syntax define TagNameInAction DMTagName next TagID 1 define Apc CurrentUserName local CurrentUserName define Var AS FAR05 1107 2 HS 806B WINCC TAGNAME SECTION END 定义消息号 并赋值 int nMsgNr 1 int iNewValue 1 int iOldValue int RetMsg double dValue 5 0 0 0 0 0 定义 double 型数组 对应过程值块的前 5 个变量 char lpszVal 5 定义字符指针数组 对应过程值块的后 5 个变量 确认操作 文档号版本日期页数 61e1f58628c0abaa5565cfaaa23d3990 pdf RetMsg MessageBox NULL 确定要启动吗 启动确认 MB OKCANCEL if RetMsg IDOK 获取旧值 赋予新值 iOldValue GetTagBit Var SetTagBitWait Var WORD iNewValue 将用户名 变量名 消息号 新值和旧值放到定义的数组中 lpszVal 0 GetTagCharWait Apc CurrentUserName lpszVal 1 Var dValue 0 nMsgNr dValue 1 iNewValue dValue 2 iOldValue 调用产生消息的函数 OperationLog V6 lpszPictureName nMsgNr dValue lpszVal 2 创建消息 消息创建函数需定义为全局脚本函数 主要将值传递给消息块的结构变量并创建消息 以下是产 生消息函数的 C 脚本 ifndef RUN ON WEBNAVIGATOR include apdefap h pragma code ssmrt dll include ssmrt h pragma code endif void OperationLog V6 char lpszPictureName int nMsgNr double dValue 5 char lpszVal 5 BOOL bOkay CMN ERROR Error MSG RTDATA INSTANCECOMMENT STRUCT MsgCreate 定义为消息到达 MsgCreate dwMsgState MSG STATE COME 赋消息号给将要创建的消息 MsgCreate dwMsgNr nMsgNr 定义用到了过程值块中的哪些过程值 MsgCreate wPValueUsed 0 x001F 定义用到了用户文本块中的哪些选项 MsgCreate wTextValueUsed 0 x03E0 拷贝数值到消息块的过程值中 MsgCreate dPValue 0 dValue 0 1 x x can be replaced by d f MsgCreate dPValue 1 dValue 1 2 x x can be replaced by d f MsgCreate dPValue 2 dValue 2 3 x x can be replaced by d f MsgCreate dPValue 3 dValue 3 4 x x can be replaced by d f MsgCreate dPValue 4 dValue 4 5 x x can be replaced by d f strcpy MsgCreate mtTextValue 5 szText lpszVal 0 6 s strcpy MsgCreate mtTextValue 6 szText lpszVal 1 7 s strcpy MsgCreate mtTextValue 7 szText lpszVal 2 8 s strcpy MsgCreate mtTextValue 8 szText lpszVal 3 9 s strcpy MsgCreate mtTextValue 9 szText lpszVal 4 10 s 发送消息到 Alar

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论