执行GSV指令还可以获取模块的故障代码,这是一种非常典型的对模块的访问操作。请注意,不是所有的模块都能被控制器读取故障信息,只有模块与控制器之间原本就存在通信关系的智能模块才能交换模块的状态信息。
于在线帮助文件中,找到如图14-10所示的详细说明。模块故障代码是整型字,分别为两个被访问的模块创建整型字标签DInput_DOutput_FaultCode和AInput_AOutput_FaultCode,模块故障代码是只读状态信息,只能被GSV指令访问,是仅可读取的访问对象。
图14-10 模块故障代码的详细说明
梯级逻辑的编写如图14-11所示。梯级条件成立时,从指定模块中获取故障代码,存放在创建的故障代码数据标签中。模块指定可以从浏览I/O组态中找到,也即跟控制器保持通信交换数据的模块。
图14-11 访问模块故障代码的梯级逻辑
像所有的计算机系统一样,控制器对外通信的资源无非是空间和时间,前面说到的MSG指令章节中,我们曾经讨论如何修改控制器通信缓冲区,这是对控制器通信资源空间的调整,下面我们再来看看对控制器通信资源时间的调整。
Over head Time Slice是一个直接关系到控制器的对外通信能力的参数设置,这个设定值的真正含义是控制器逻辑CPU连续扫描执行代码和对外通信的比值关系,即对外通信占用逻辑CPU工作的百分比。早期版本的控制器对这个参数是十分敏感的,这个设置值偏小将影响到控制器的通信能力,偏大则影响执行代码的扫描速度,直到16版本之后,这个问题才得到较好的解决,增加了新的选项,用户可以选定当不使用Overhead Time Slice时,逻辑CPU扫描执行代码,将通信富余的时间用来扫描执行代码。
设定这个参数通常在编程软件的控制器属性中设置,如图14-12所示。
为控制器选定一个合适的Overhead Time Slice百分比值,是控制系统现场调试要做的工作之一,在测试阶段,不妨手动在外部逐步调整,以求得最佳设定值。
于在线帮助文件中,找到如图14-13所示的详细说明,Time Slice是整型字,为被访问的对象创建整型字标签OverHeadTimeSlice和OverHeadTimeSlice_New,这个参数可以被SSV指令和GSV指令访问。
图14-12 在编程软件的控制器属性中设置参数
图14-13 通信时间片段的详细说明
如果要外部手动设置Overhead Time Slice参数,可以由操作人员通过模拟量旋钮设置这个系统的内部参数,控制器则以指令执行来实现,编写的梯级逻辑如图14-14所示。
运用事先编制好的Add—On模拟量定标指令(后续章节将详细讨论),将指定通道的模拟量A/D转换后的数据范围0~31104定标为设定所需的0~10的范围值,这个数值范围将对应要设置的10%~90%,一共9个设置范围。(www.xing528.com)
执行GSV指令获取当前Overhead Time Slice值,这个当前值将作为确定设置怎样的比值的判断条件,当前值与它一致则不进行设置操作。
连续9个梯级都是相同的梯级逻辑关系,用以设定9个不同的OverheadTimeSlice值。首先通过LIM指令确定设置范围,然后对比当前OverheadTimeSlice是否不等于设置范围,同时满足这两个条件,则梯级条件成立,传送相应设置值到缓冲数据标签Overhead Time Slice_New,最后由SSV指令送至控制器系统。如果当前Overhead Time Slice已经是欲设定的值,则无需操作SSV指令再次设置。
Overhead Time Slice的设定值通常在20%~30%,在某些特定的情况(如冗余系统)下可能会高达50%,像采用90%这样的极端情况是极为少见的。过高的设定值将使得梯级逻辑的扫描时间变得很慢。
图14-14 调整通信时间片段的梯级逻辑
图14-14 调整通信时间片段的梯级逻辑(续)
图14-14 调整通信时间片段的梯级逻辑(续)
图14-14 调整通信时间片段的梯级逻辑(续)
图14-14 调整通信时间片段的梯级逻辑(续)
你可能注意到了,我不厌其烦地将帮助文件中访问对象的结构数据的详细说明列举出来,其目的就是提醒你要特别地关注面对的这个信息是什么内容,具有什么样的数据类型,有效的数据是什么。因为SSV/GSV指令执行访问失败后,基本是没有反馈信息提供给你的。
MSG指令和SSV/GSV指令都可以对控制系统中的模块或设备操作,它们的操作有什么区别呢?
SSV/GSV指令操作的是组态信息和状态信息,设置模块或设备中的组态信息,获取模块或设备中的状态信息。这些信息在用SSV/GSV指令操作时,借助于系统预定义的结构数据来表达,具有固定的形式,同样的信息还可以出现在编程软件固有的组态或状态界面中。这其实是一套数据的两种不同的表达形式,SSV/GSV指令的结构数据所表达的信息可以直接的被程序引用并为实施逻辑监视提供数据,也可以为人机界面的监视提供数据,且更为详细。
MSG指令对模块或设备操作时,属于服务性操作,是具体的命令式的操作,发送的是命令动作,它所执行的正是组态或状态界面上我们用鼠标点击的那些按钮,那些按钮下隐藏的命令操作与MSG指令触发后执行的命令操作几乎是一样的,比如说对模块的复位操作或模块的重组态操作。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。