发布时间:2021-11-23
|
杂志分类:其他
粉丝:{{bookData.followerCount}}
{{!bookData.isSubscribed?'关注':'取消关注'}}
下面是一个用 ST 语言实现简单运算的小程序: 变量声明: PROGRAM PLC VAR A:BOOL; B:BOOL; C:INT; END_VAR 程序: IF A=TRUE THEN C:=20; ELSE IF B=TRUE THEN C:=30; ELSE C:=50; END_IF 简洁、易读的语言 ST 结构化文本这个名字就已经表明它是用于结构化编程的。也就是说,ST 语言为特定的经 常使用的结构化编程提供了预先确定的结构。 举例 比较下面两段分别用 IL 和 ST 语言实现 2 的乘幂的循环的程序代码。 用 IL 语言: Loop: LD Counter NE 0 NOT JMPC END_LOOP LD Var1 MUL 2 ST Var1 LD Counter SUB 1 ST Counter JMP Loop End_LOOP: LD Var1 ST ERG 用 ST 语言: WHILE counter<>0 DO Var1:=Var1*2; Counter... [收起]
[展开]
{{!bookData.isSubscribed?'关注':'已关注'}}
粉丝: {{bookData.followerCount}}
文本内容
第151页
下面是一个用 ST 语言实现简单运算的小程序: 变量声明: PROGRAM PLC VAR A:BOOL; B:BOOL; C:INT; END_VAR 程序: IF A=TRUE THEN C:=20; ELSE IF B=TRUE THEN C:=30; ELSE C:=50; END_IF 简洁、易读的语言 ST 结构化文本这个名字就已经表明它是用于结构化编程的。也就是说,ST 语言为特定的经 常使用的结构化编程提供了预先确定的结构。 举例 比较下面两段分别用 IL 和 ST 语言实现 2 的乘幂的循环的程序代码。 用 IL 语言: Loop: LD Counter NE 0 NOT JMPC END_LOOP LD Var1 MUL 2 ST Var1 LD Counter SUB 1 ST Counter JMP Loop End_LOOP: LD Var1 ST ERG 用 ST 语言: WHILE counter<>0 DO Var1:=Var1*2; Counter:=counter-1; - 141 -
第152页
END_WHILE Erg:=Var1; 可以看出,用 ST 语言实现的循环不仅简洁,而且易于阅读。 9.4 顺序功能图 SFC SFC 是顺序功能图(Sequential Function Chart)的简称,是一种图形化的编程语言,用 来描述程序中不同动作的时间顺序。SFC 由一系列的步和转移组成,如图 9-4-1 所示。步定 义动作,转移控制顺序。 图 9-4-1 顺序功能图语言 9.4.1 基本概念 单步 SFC 语言包含一系列的步,这些步通过有向的连接彼此联系。步分为简化步和 IEC 步。 简化步包含一个动作和一个显示步动作的标志。如果步包含动作,则在步的右上角出现 一个小三角形。 IEC 步包含一个或多个动作和逻辑变量。新插入的步是否为 IEC 步,取决于是否选择了“高 级”/“使用 IEC 步(I)”命令。必须添加特殊的 SFC 库 Iecsfc.lib 才能够使用 IEC 步。 动作 动作是使用其它语言实现的一系列指令,可以是用 IL 或 ST 语言实现的指令语句,也可 以是用 LD、FBD 或 SFC 实现的网络。 对于简化步,动作总是和步直接相关。用鼠标双击动作所属的步,进行编辑。 对于 IEC 步,在对象组织器中选中 SFC 程序,点击右键,选择“添加动作”命令创建新动 作。可以赋给 IEC 步多个动作,同时这些动作也可以被多个步重复使用。 IEC 步的动作显示在步的右边框中。左边字段包含可能有时间常量的限定符,右边字段 包含动作名即逻辑变量名。 IEC 的动作分散在步中。在它们所属的 POU 中,这些动作可以被重复使用。使用“高 - 142 -
第153页
级”/“关联动作”命令添加动作,使用“高级”/“清除动作或转移”命令删除已添加的动作。 包含两个动作的 IEC 步举例,如图 9-4-2 所示。 图 9-4-2 顺序功能图语言举例 入口动作和出口动作 “添加入口动作”和“添加出口动作”命令可以在步中加入入口动作和出口动作。 入口动作只有当步在活动状态时立即执行一次。出口动作只在步不活动之前执行一次。 有入口动作的步在左下角有“E”标志进入,有出口动作的步右下角有“X”标志退出。可以用任 意语言实现入口和出口动作,鼠标双击步的相应角,即可编辑入口或者出口动作。 入口和出口动作步的举例,如图 9-4-3 所示。 图 9-4-3 入口和出口动作步的举例 转换/转换条件 步之间的切换就是转换。只有当步的转换条件为真时,步的转换才进行。即前步的动作 执行完后,如果有出口动作则执行一次出口动作,后步如果有入口动作则执行一次后步的入 口动作,然后按照控制周期执行该活动步的所有动作。 转换条件可以是逻辑变量、逻辑地址、逻辑常量或者是由其它语言编程实现的逻辑。 活动步 调用 POU 之后,初始化步(双边的步)的动作首先执行。动作被执行的步称为活动步。 每次循环执行活动步的动作。在线模式下,活动步以蓝色显示。为了更容易地跟随过程, 在线模式下,所有的活动动作象活动步一样以蓝色显示。每次循环以后做一次检查,查看哪 个动作是活动的。在一个控制周期中,执行活动步的所有动作。之后,如果下步的转换条件 是 TRUE,下步将变成活动步,在下个周期执行。 限定符 把 IEC 步和动作关联,需要使用限定符。IEC 步的使用如图 9-4-4 所示,限定符对应的 含义如表 9-4-1 所示。 图 9-4-4 使用 IEC 步 表9-4-1 SFC限定符 说明 备注 限定符 名称 - 143 -
第154页
N 非存储 普通型:动作随步活动,当步开始激活时,动作开始执行; 当步退出时,动作停止执行。 S 设置 置位型:当步开始激活时,动作开始执行;当步退出时,动 存储 作还将继续执行。一直等到有 R 限定符给它复位之后,动作 才将停止执行。在动作没有被 R 停止之前,任何限定符也不 能使得动作停止(包括 P 限定符)。 R 重置 复位型:当步开始激活时,动作停止执行。 L 时限 限时结束型:动作在一定时间被激活。最长时间是步活动时 要加时间常数 间。当步开始激活时,动作开始执行;同时开始计时,当时 (设定值) 间到达设定值后,动作将停止执行。如果时间还没有到达设 定值时,步的转移条件已经满足,此时,动作也将停止执行。 D 延时 延时开始型:当步开始激活时,开始计时,当时间到达设定 要加时间常数 值后,动作将开始执行;当步退出时,动作停止执行。如果 (设定值) 时间还没有到达设定值时,步的转移条件已经满足,在这种 情况下,动作将不可能被执行。 P 脉冲 脉冲型:当步开始激活时,动作开始执行,并且动作只被执 行一次,之后动作将停止执行。 SD 存储和 延时绝对开始置位型:当步开始激活时,开始计时,当时间 要加时间常数 延时 到达设定值后,动作将开始执行;当步退出时,动作还将执 (设定值) 行,一直等到有 R 限定符给它复位之后,动作才将停止执行。 在动作没有被 R 停止之前,任何限定符也不能使得动作停止 (包括 P 限定符)。如果时间还没有到达设定值时,步的转 移条件已经满足,在这种情况下,计时还在进行,一直到时 间达到设定值后,动作将被执行,此时不管当前步还是不是 原来的步了。 DS 延时和 延时开始置位型:当步开始激活时,开始计时,当时间到达 要加时间常数 存储 设定值后,动作将开始执行;当步退出时,动作还将执行, (设定值) 一直等到有 R 限定符给它复位之后,动作才将停止执行。在 动作没有被 R 停止之前,任何限定符也不能使得动作停止 (包括 P 限定符)。如果时间还没有到达设定值时,步的转 移条件已经满足,在这种情况下,动作将不可能被执行。 SL 存储和 绝对限时结束型:在一定时间内动作是活动的。当步开始激 要加时间常数 时限 活时,动作开始执行;同时开始计时,当时间到达设定值后, (设定值) 动作将停止执行。如果时间还没有到达设定值时,步的转移 条件已经满足,此时,动作还将继续执行,直到当时间到达 设定值后动作才会停止执行。限制符 L、D、SD、DS 和 SL 需要 TIME 常量格式的时间值。 SFC 中的隐含变量 在 SFC 中可以隐含声明的变量。每步的标志都存储了步的状态。 对于简化步,步标志为<步名>。对于 IEC 步,步标志为<步名>.x。 当步是活动状态的时候,步标志的值为 TRUE。当步是非活动状态的时候,步标志的值 为 FALSE。 对于 IEC 步,可以使用变量<动作名>.x 询问动作是否是活动的。对于 IEC 步,可以使用 - 144 -
第155页
隐含变量<步名>.t 用来询问步的活动时间。 SFC 标志 在 SFC 中,步的活动状态时间取决于它的属性状态时间,有时会设置一些特殊标志。同 样,可以设置变量来控制顺序功能图中的程序流。要使用这些标志,必须在全局或局部变量 中作为输入或者输出变量声明这些标志。 SFCEnableLimit:BOOL 型变量,变量值是 TRUE 时,步的超时将会注册在 SFCWError 中,忽略其它的超时。 SFCInit:BOOL 型变量,变量值是 TRUE 时,顺序功能图返回到初始化步,同时其它的 SFC 标志重置。只要变量有 TRUE 值,初始化步保持活跃,但不被执行。只有当 SFCInit 被 重新设置为 FALSE,功能块才恢复正常执行。 SFCQuitError:BOOL 型的变量,变量值是 TRUE 时,SFC 图停止执行。在变量 SFCError 中,重置一个可能的超时。当变量重新获得 FALSE 时,在活动步中所有以前的时间重置。 SFCPause:BOOL 型变量,变量值是 TRUE 时,SFC 图停止执行。 SFCError:当超时发生在 SFC 图中时,设置这个逻辑变量。如果一个超时发生而变量 SFCError 不重置,则不会注册其它超时。 SFCTrans:BOOL 型变量。当转换执行时,变量值为 TRUE。 SFCErrorStep:STRING 型变量,存储一个导致超时发生的步名。 SFCErrorPOU:STRING 型变量,包含一个发生了超时的块名。 SFCCurrentStep:STRING 型变量,步名存储在活动变量中,不受时间监视。一旦在同时 顺序下,步存储在右外侧的分支里。 9.4.2 操作说明 选中元素 被选中的元素周围用点线矩形圈住。点击鼠标左键,或用键盘的上下键可以选中元素。 按住 SHIFT 键,点击鼠标左键可以选中一组元素。注意,删除步时,必须同时选中此步前转 移或后转移,一起删除。 “插入”/“前步转移”: ,快捷键<Ctrl>+<T> 执行此命令,在选中元素前面插入步和转移。 “插入”/“后步转移”: ,快捷键<Ctrl>+<E> 执行此命令,在选中元素后面插入步和转移。 “插入”/“右选择分支”: ,快捷键<Ctrl>+<A> 选中元素必须以转移开始和结束,执行此命令,新插入的分支作为选中元素的右分支, 新分支包括一个转移。 “插入”/“左选择分支”: 选中元素必须以转移开始和结束,新插入的分支作为选中元素的左分支,新分支包括一 个转移。 “插入”/“右并行分支”: ,快捷键<Ctrl>+<L> - 145 -
第156页
选中元素必须以步开始和结束,执行此命令,新插入的分支作为选中元素的右分支,新 分支包括一个步。如果此并行分支需从其它元素跳转过来,那么此并行分支还要加标签。 “插入”/“左并行分支”: 选中元素必须以步开始和结束,执行此命令,新插入的分支作为选中元素的左分支,新 分支包括一个步。如果此并行分支需从其它元素跳转过来,那么此并行分支还要加标签。 “插入”/“跳转”: ,快捷键<Ctrl>+<U> 选中元素所在的分支必须是选择分支,执行此命令,在此分支末尾插入跳转。新跳转旁 边有文本字符串 Step,可以改为要跳转到的步的名字或并行分支的跳转标签。 “插入”/“转移跳转”: 选中元素所在的分支必须是并行分支,执行此命令,在此分支末尾插入转移和跳转。新 跳转旁边有文本字符串 Step,可以改为要跳转到的步的名字或并行分支的跳转标签。 “插入”/“添加入口动作” 入口动作只在步被激活时执行一次,入口动作可以选择一种语言编写。带入口动作的步 在左下脚有个“E”。 “插入”/“添加出口动作” 出口动作只在步被解除激活前执行一次,出口动作可以选择一种语言编写。带出口动作 的步在右下脚有个“X”。 “高级”“右侧并行粘贴” 选中元素必须是以步开始和结束,执行此命令,剪贴板的内容作为选中元素的右分支。 剪贴板的内容也必须以步开始和结束。 “高级”/“并行分支增加标签” 选中元素必须是并行分支的前转移,执行此命令,此并行分支的上方出现标签。标签缺 省的是“Parallel”加“序列号”,可以编辑,如图 9-4-5 所示,改为“abc”,删除标签名,就可以 删除跳转标签。 - 146 -
第157页
图 9-4-5 并行分支增加标签 “高级”/“后面粘贴” 选中元素,执行此命令,剪贴板的内容粘贴到选中元素的第一个步或转移后面。 注意,普通的粘贴(“编辑”“粘贴”)会粘贴到选中元素的前面。 “高级”/“放大动作/转移”:快捷键<Alt>+<Enter> 执行此命令,弹出编辑器,查看动作或转移条件。如果动作或转移条件是空的,执行此 命令,可以在弹出窗口中选择一种语言,进入相应编辑器,编写内容。 注意,编辑器中的转移条件优先于直接在转移标记中编写的条件。如图 9-4-6 所示,如 果 i>100,那么转移条件是 FALSE,尽管转移标记中写的是 TRUE。 图 9-4-6 转移条件有优先级 “高级”/“清除动作/转移” 执行此命令,清除动作或转移。 选择分支 在 SFC 中,两个以上的分支可定义为选择分支。每个选择分支必须开始和结束于转换。 选择分支包含并行分支和其它选择分支。选择分支开始于水平行(选择开始)结束于水平行 (选择结束)或者结束于跳转。 如果选择起始行之前的步是活动的,那么每个选择分支的第一个转换从左到右执行。从 左边开始,转换条件是 TRUE 则第一个转换被打开,随后的步被激活。 - 147 -
第158页
并行分支 在 SFC 中,两个以上的分支可以定义成并行分支。每个并行分支开始和结束于一个步。 并行分支开始于一个双行(并行开始)结束于一个双行(并行结束)或者是一个跳转。 如果前步的并行开始行是活动的,并且这一步的转换条件是 TRUE,那么所有并行分支 的第一步都成为活动的。这些分支彼此是平行处理的。当前面的步都是活动的并且这一步之 前的转换条件是 TRUE,则并行结束行之后的步被激活。 跳转 跳转实际上是连接到有跳转符号的步的操作。当不允许产生彼此交叉的连接时就需要跳 转。 图 9-4-7 所示是一个 SFC 语言典型功能的举例。 - 148 -
第159页
具有步动作的标记 初始化步 转换条件 具有入口动作的标记 具有出口动作的标记 跳转符号 图 9-4-7 SFC 功能图解说 9.5 连续功能图 CFC 9.5.1 CFC 编辑器 CFC 是连续功能块图(Continuous Function Chart)的简称。CFC 是一种图形化的编程语 言。CFC 基于 FBD 语言,但没有网络限制,摆放元素更加灵活。 CFC 编辑器是一种图形编辑器,如图 9-5-1 所示,通过菜单栏或鼠标右键可以进行编辑。 元素可以摆放在编程区任意位置。用鼠标拖拽在元素之间连线,当元素移动位置时,编辑器 会自动调整连线长度。当元素之间空间不够时,连线会变为红色,一旦空间够用,红线会变 为普通连线。 - 149 -
第160页
图 9-5-1 CFC 编辑器 9.5.2 操作说明 CFC 的元素包括块、输入、输出、跳转、标记、返回和注释等。其中块分为操作符、函 数、功能块和程序四种形式。 光标位置 名称 图形元素 选中元素 文本域 输入引脚和输出引脚 光标位置 编程工具元素 光 标处 于各 元素 的 光标处于蓝色区域及注 光标 处于元素 的输入 的中继线 释的光标所在位置上 引脚和输出引脚上 块 输入 —— —— 输出 —— 跳转 标记 返回 注释 - 150 -
第161页
选中元素 在元素中继线处点击鼠标左键,可以选中元素。 如果想同时选几个元素,按住<Shift>键并选中单个元素。也可以用鼠标左键在编辑器中 画矩形区域选中其中几个元素。”高级”/“全选”选中所有元素。 移动元素 当光标在位置 a 时,或按住<Shift>键同时选中几个元素时,按住鼠标左键可以在编辑器 中移动元素,到合适的位置后释放左键。如果释放位置处已有其它元素或超出编辑区,被移 动元素会跳回原位置,移动失败。 连线 一个元素的输入引脚只能连一个输出引脚(本元素的输出引脚或其它元素的输出引脚), 而一个元素的输出引脚可以连几个输入引脚(本元素的输入引脚或其它元素的输入引脚)。 如图 9-5-2 所示,有三种方式在 E1(a)和 E2(ADD)之间连线。在连线时,编辑器会检查 双方的数据类型是否匹配。如果不匹配,光标会变为“禁止”样式,连线失败。 把鼠标放在 E1 的输出引脚上,按下左键,拖拽到 E2 的输入引脚上,释放左键。 把鼠标放在 E2 的输入引脚上,按下左键,拖拽到 E1 的输出引脚上,释放左键。 按下左键不放,移动 E1 或 E2,使它们的输入引脚和输出引脚接触。 图 9-5-2 连线 删除连线 如图 9-5-2 所示,有三种方式删除 E1(a)和 E2(ADD)之间的连线。选中 E1 的输出 引脚,按下<Delete>键或“编辑”“删除”,如果 E1 的输出引脚有几条线,则会同时删除。选中 E2 的输入引脚,按下<Delete>键或“编辑”“删除”。选中 E2 的输入引脚,用鼠标左键拖拽连线 到编辑器空白位置,释放。 “插入”/“块”: ,快捷键<Ctrl>+<B> 执行此命令,可以插入操作符、函数、功能块和程序。新插入的块随鼠标移动,移动到 合适的位置点击鼠标左键,插入成功。起初插入的是 AND,可以把 AND 改为其他名称。或 者选中 AND,按功能键 F2,从帮助窗口中选择名称。 “插入”/“输入”: ,快捷键<Ctrl>+<I> 执行此命令,可以插入输入。新插入的输入随鼠标移动,移动到合适的位置点击鼠标左 键,插入成功。文本域“???”要输入变量或常量。也可按功能键 F2,从帮助窗口中选择。 “插入”/“输出”: 执行此命令,可以插入输出。新插入的输出随鼠标移动,移动到合适的位置点击鼠标左 键,插入成功。文本域“???”要输入变量。也可以按功能键 F2,从帮助窗口中选择。 - 151 -
第162页
“插入”/“跳转”: ,快捷键<Ctrl>+<J> 执行此命令,可以插入跳转。新插入的跳转随鼠标移动,移动到合适的位置点击鼠标左 键,插入成功。文本域“???”要输入要跳转到的跳转标记。 “插入”/“标记”: ,快捷键<Ctrl>+<L> 执行此命令,可以插入标记。新插入的标记随鼠标移动,移动到合适的位置点击鼠标左 键,插入成功。文本域“???”要输入跳转标记。在线模式时,编辑器自动在 POU 末尾自动插 入标记“RETURN”。 “插入”/“返回”: ,快捷键<Ctrl>+<R> 执行此命令,可以插入返回。新插入的返回随鼠标移动,移动到合适的位置点击鼠标左 键,插入成功。注意,此处的“返回”和在线模式时的 POU 末尾的标记“RETURN”不同,标记 “RETURN”是为了 POU 结束本周期执行之前,自动执行下周期。 “插入”/“注释”: ,快捷键<Ctrl>+<K> 执行此命令,可以插入注释,用<Ctrl>+<Enter>换行。新插入的注释随鼠标移动,移动 到合适的位置点击鼠标左键,插入成功。 “高级”/“顺序”/“显示” 执行此命令,切换执行顺序的显示与否。缺省的是显示(命令前有“√”)。 “高级”/“顺序”/“拓扑” 执行此命令,执行顺序根据拓扑结构排列,也就是所有元素从上到下,从左到右排列。 注意,执行顺序显示在元素的右上脚。 “高级”/“顺序”/“根据数据流排列” 执行此命令,执行顺序根据数据流排列,而不是根据元素所在的位置排列。 CFC 应用举例如图 9-5-3 所示。 图 9-5-3 连续功能图语言示例 - 152 -
第163页
第10章 特殊功能 10.1 Modbus 通讯 LM 系列 PLC 可以通过 Modbus 协议与触摸屏或组态软件等第三方设备进行通讯。默认 状态下,LM 系列 PLC 作为 Modbus RTU 从站。 LM 系列 PLC 的 RS232 端口和 RS485 端口均支持 Modbus RTU 从站协议。 10.1.1 Modbus 概述 Modbus 协议是主从站通讯协议,用异步串行口完成通讯,物理层采用 RS485 或 RS232。 传输速率可以达到 115kbps,理论上可接(寻址)一台主站和至多 247 台从站。受线路和设 备的限制,最多可接一台主站和 32 台从站。 Modbus 协议的某些特性是固定的,如帧格式、帧顺序、通讯错误和异常情况的处理以 及所执行的功能等,都不能随便改动。其他特性属于用户可选的,如传输介质、波特率、字 符奇偶校验、停止位的个数等等,传输模式为 RTU。用户所选择的参数对于各个站必须一致, 在系统运行时不能改变。 10.1.2 Modbus 通讯功能 LM 系列 PLC 所支持的 Modbus RTU 通讯功能码如表 10-1-1 所示。 表 10-1-1 Modbus 功能码 功能码 名称 作用(对主站而言) 01 读取开出状态 取得一组开关量输出的当前状态 02 读取开入状态 取得一组开关量输入的当前状态 03 读取模出状态 取得一组模拟量输出的当前状态 04 读取模入状态 取得一组模拟量输入的当前状态 05 强制单路开出 强制设定某个开关量输出的值 06 强制单路模出 强制设定某个模拟量输出的值 15 强制多路开出 强制设定从站几个开关量输出的值 16 强制多路模出 强制设定从站几个模拟量输出的值 Modbus RTU 协议能访问的数据区包括: 输入区(I)、输出区(Q)、中间区(M) 这三个数据区,均可通过 BOOL 型或 WORD 型数据访问。这些数据区与 Modbus 协议 地址映射关系,如表 10-1-2 所示: - 153 -
第164页
表 10-1-2 LM 系列 PLC 数据区 Modbus 地址映射关系 数据区 类型 地址范围 Modbus 映射公式 Modbus 地址 数据类型 IXm.n:m*8+n I %IX BOOL %IX0.0~%IX511.7 0~4095 IWm:m/2 1x 3x 区 %IW WORD %IW0~%IW510 0~255 QXm.n:m*8+n 0x QWm:m/2 4x Q %QX BOOL %QX0.0~%QX511.7 0~4095 0x MXm.n:m*8+n+3000 4x 区 %QW WORD %QW0~%QW510 0~255 MWm:m/2+3000 M %MX BOOL %MX0.0~%MX7816.7 3000~65535 区 %MW WORD %MW0~%MW8190 3000~7095 部分 HMI 数据地址从 1 开始,若使用 Modbus RTU 协议与 PLC 通讯,在填入数据地址 时,需要在映射地址公式基础上加 1。如:%MX100.0,其地址应为 100*8+0+3000+1=3801。 此类 HMI 如:Eview、MCGS、Weinview 等触摸屏和组态王、三维力控等组态软件。但有的 HMI 数据地址则无需在映射地址公式基础上加 1,如:Hitech 等。 注意: 1、 M 区大小为 8K,其地址按 BOOL 类型访问,从%MX0.0~%MX8191.7,但是根据 Modbus 协议,其 地址最大范围为 65535,所以通过 Modbus 协议访问 M 区的开关量,最大只能访问到%MX7816.7。 2、 表中所列的 I 区和 Q 区范围为最大的可能范围,具体情况需根据实际配置进行计算。对于不存在的 I 区和 Q 区数据无法进行通讯。 10.1.3 Modbus 通讯举例 LM 系列 PLC 的 RS232 和 RS485 均可独立配置为 Modbus RTU 从站协议。在通讯时, PLC 端需要设置从站地址及通讯参数。LM 系列 PLC 默认的从站地址为 51,通讯参数为 38400,n ,8, 1。 设置 PLC 从站地址,需使用 SET_LOCAL_ADDRESS 指令设置 RS232 口的从站地址, 对 LM3108/9-D02 及后续版本使用 SET_LOCAL_ADDRESS_RS485 指令设置 RS485 口的从站 地 址。 设置通 讯参 数, RS232 串口 使用 Reset_COMM_PRMT 指 令, RS485 串 口使 用 Reset_COMM2_PRMT 指令。具体指令使用方法,请参见《指令手册》。 图 10-1-1 为设置从站地址为 5,RS232 串口波特率为 9600,数据位为 8,停止位为 1, 校验方式为无校验的设置方法。 - 154 -
第165页
图 10-1-1 10.2 中断 10.2.1 中断概述 中断指当 PLC 接到外界硬件或内部发来的特殊信号时,马上停止原来的工作,转去处理 这一事件,在处理完了以后,PLC 又回到原来的工作继续工作的过程。产生中断的信号称为 中断源。 LM 系列 PLC 可处理多种中断源产生的中断信号。各种中断源是有优先级区别的,当两 个中断同时到来的时候,优先级高的中断先被执行。 表 10-2-1 是 LM 系列 PLC 能处理的中断源。 表 10-2-1 中断事件 名称 描述 Start 当程序开始时调用 Stop 当程序停止时调用 Debug_loop Taskcode not called 当调试循环运行时被调用 Fast External 0 interupt Fast External 1 interupt 不调用任务代码 Fast External 2 interupt 快速外部中断 0 产生时调用 Fast External 3 interupt 快速外部中断 1 产生时调用 HD_TC7 interupt 快速外部中断 2 产生时调用 HD_TC2 interupt 快速外部中断 3 产生时调用 HD_TC3 interupt 定时器 T7 中断产生时调用 HD_TC4 interupt 高速计数器 T2 产生中断时调用 HD_RTC_ALM0 interupt 高速计数器 T3 产生中断时调用 PTO_0 Finished interupt 高速计数器 T4 产生中断时调用 PTO_1 Finished interupt 实时时钟报警 0 产生中断时调用 QX1.1 高速脉冲输出结束中断时调用 QX0.3 高速脉冲输出结束中断时调用 10.2.2 中断使用举例 使用中断,需要完成两项工作。其一,需要编写一个中断服务程序。所谓中断服务程序 是指在产生中断后,PLC 所要执行的程序。编写中断服务程序的过程就是编写子程序的过程, 请参见 7.4.7 章节。其二,完成中断服务程序后,需要进行任务配置,配置所产生的中断及相 应的中断服务程序。在“资源”选项卡中,双击“任务配置”,右侧弹出任务配置窗口,点击窗 口中“任务配置”下的“System events”,右边窗口显示所有可用的系统事件,如图 10-2-1 所示。 在右边窗口中选择需要使用的系统事件,即在系统事件的前面方框里打勾,然后在该系统事 件后面的“called POU”处,填入事件触发时所需要调用的中断服务程序。 下面举例说明中断的使用方法。 - 155 -
第166页
图 10-2-1 中断调用对话框 举例 要求 不受 PLC 扫描周期的影响,实现下列功能: 每当 I0.6 到达一个上升沿,PLC 立刻响应该脉冲,并产生一个中断,%MW100 中的值 增加 10。 每当 I0.7 到达一个上升沿,PLC 立刻响应该脉冲,并产生一个中断,%MW102 中的值 增加 15。 程序分析 按上述要求,硬件选用 CPU 模块 LM3106,软件需要使用以下指令: Fast_ExINT_E(快速外部中断) 程序分为如下 3 个部分: 主程序—定义 CPU 模块 LM3106 的快速外部中断模式。 INT3PRO—I0.6 脉冲到达执行的中断程序,%MW100 中的值增加 10。 INT2PRO—I0.7 脉冲到达执行的中断程序,%MW102 中的值增加 15。 程序编制 主程序: 首先要将程序所用到的库 Hollysys_PLC_Ex_ExINT.lib 添加到库管理器。按照要求,I0.6 和 I0.7 每到达一个上升沿,就产生一个中断,I1.0 不使用,则 Fast_ExINT_E 功能块的 Mode=16#50,主程序的变量定义和梯形图如图 10-2-2 所示。 图 10-2-2 主程序的变量定义和梯形图 - 156 -
第167页
由于使用了快速外部中断 3(I0.6)和快速外部中断 2(I0.7),所以在如图 10-2-3 所示 的位置前打勾。 图 10-2-3 快速外部中断选择 在 Fast External 2 interrupt 和 Fast External 3 interrupt 后面分别创建一个子程序 INT2Pro 和 INT3Pro,分别点击 Create POU,则 2 个中断程序被创建成功,如图 10-2-4 所示。 图 10-2-4 创建中断程序 所创建的中断程序默认为 ST 语言,可以选择转换为 LD 语言。转换前需要编译通过,如 图 10-2-5 所示。 图 10-2-5 将 ST 转换为 LD - 157 -
第168页
INT3Pro 中断程序梯形图如图 10-2-6 所示。 图 10-2-6 INT3Pro 中断程序梯形图 INT2Pro 中断程序梯形图如图 10-2-7 所示。 图 10-2-7 INT2Pro 中断程序梯形图 然后就可以在 INT2Pro 和 INT3Pro 中编写梯形图程序。当然也可以不进行语言的转化, 使用 ST 直接编写。当系统事件触发时,调用相应的程序。 注意,系统事件不支持仿真模式,只有在程序编译通过且登录运行后才会响应该事件。 当一次进行多个任务配置时,要求先进行全部编译之后,再保存文件。 10.3 模拟量功能使用 10.3.1 模拟量模块寻址 LM 系列 PLC 在使用模拟量模块时,首先需要知道该模块所占用的地址。无论是模拟量 输入还是模拟量输出模块,都需要占用 PLC 的输入区或输出区。在 PLC 配置时,配置了模 拟量模块,则系统自动给该模块配置了数据地址。 以 LM3310 为例。如图 10-3-1 所示,在 LM3107 模块后配置四通道模拟量输入模块 LM3310,则系统自动给 LM3310 分配了%IW2、%IW4、%IW6、%IW8 四个字的地址,每个 字代表一个通道的采集数值。 - 158 -
第169页
图 10-3-1 模拟量输入模块配置表 对于模拟量输出模块,则系统会自动分配 Q 区。诸如%QW2,若要输出模拟量,则需 给%QW2 赋值。 在程序中,可以直接使用这些地址表示该通道的数值。通道数值与实际量程的关系,如 下表所示。 表 10-3-1 模拟量模块的量程及范围 模块 量程 范围 输入:0~10V(电压)、0~20mA(电流) 0~10000 LM3107E 输出:0~10V(电压)、0~20mA(电流) 0~4095 输入:0~10V(电压)、0~20mA(电流)、4~20mA(电流) 0~65535 LM3310/A/B 输出:0~10V(电压)、0~20mA(电流) 0~4095 LM3320 输入:-10~10V (电压)、-20mA~20mA(电流) -32000~32000 LM3313 输入:0~10V(电压)、0~20mA(电流)、4~20mA(电流) 0~65535 输出:0~10V(电压)、0~20mA(电流) 0~4095 LM3330 10.3.2 模拟量模块使用 如果 PLC 配置中使用了模拟量输入扩展模块,则程序中需调用模拟量输入扩展指令 ANALOG_IN。该指令所需填入的参数 Address,与该模拟量输入模块的节点 id 一致。如图 10-3-1 所示的 LM3310,则在程序中,需填入的 Address 值为 0。 如果需要使用多个模拟量输入模块,则需要配置多个 Analog_IN 指令,每个指令对应的 Address 输入值应与对应模块的节点 id 号保持一致。 如果 PLC 配置中使用了模拟量输出扩展模块,则程序中需调用模拟量输出扩展指令 ANALOG_OUT。该指令所需填入的参数 Address,与该模拟量输出模块的节点 id 一致。 如果需要使用多个模拟量输出模块,则需要配置多个 Analog_OUT 指令,每个指令对应 的 Address 输入值应与对应模块的节点 id 号保持一致。 具体指令的使用方法,请参见《指令手册》。 在 PLC 配置模拟量模块后,还需对模块进行参数设置。只有设置正确的模块,才能正确 的使用。参数设置主要包括滤波设置、各通道量程设置、使能设置等。具体设置参数请参见 《硬件手册》。关于模拟量模块配置,也可以参见 7.3.2 章节。 - 159 -
第170页
注意: 1、 对于 LM3107E 模块,在使用到模拟量处理的时候,无需添加 ANALOG_IN 和 ANALOG_OUT 指令。 2、 对于 LM3330 模块,同时使用模拟量输入和模拟量输出功能时,需添加 ANALOG_IN 和 ANALOG_OUT 指令。 10.3.3 模拟量模块使用举例 以 LM3330 模块为例,说明模拟量的使用。LM3330 模块为 4 通道模拟量输入、1 通道模 拟量输出模块。使用 LM3330 的第一个通道采集压力变送器的数值,其量程为 4~20mA,而 输出通道用于控制阀门开度,量程为 0~10V。CPU 选用 LM3107 模块。 PLC 配置如图 10-3-2 所示,模块节点 id 为 0。 图 10-3-2 LM3330 配置 从配置中可以知道,LM3330 的输入通道所占的地址为%IW2、%IW4、%IW6、%IW8, 输出通道占用地址为%QW2。配置完成后,需要对 LM3330 模块进行参数设置。为保证采集 的数据比较稳定,设置模块滤波参数为 16,如图 10-3-3 所示。 图 10-3-3 设置滤波参数 设置完滤波参数后,还需要设置输入通道和输出通道的量程,如图 10-3-4 和 10-3-5 所示。 将第一个输入通道%IW2 的量程设置为 4~20mA,输出通道%QW2 的量程设置为 0~10V。 - 160 -
第171页
图 10-3-4 设置输入通道的量程 图 10-3-5 设置输出通道的量程 设置完成后,开始进入编程。首先需要在程序中添加 ANALOG_IN 和 ANALOG_OUT 指令,参数 Address 均为 0。在使用这两个指令之前,首先需要添加相应的库指令。这两个 指令均在 Hollysys_PLC_analog.lib 库中。关于库的操作,请参见 7.4.4 章节内容。 模拟量输入通道的量程为 4~20mA,参见表 10-3-1 可知,其对应的数值为 0~65535, 即%IW2 的范围为 0~65535,0 表示采集到的电流信号为 4mA,而 65535 表示采集到的电流 信号为 20mA。 模拟量输出通道的量程为 0~10V,参见表 10-3-1 可知,其对应的数值为 0~4095,即%QW2 的范围为 0~4095,0 表示输出 0V 电压,而 4095 表示输出 10V 电压 。 程序如图 10-3-6 所示。第一节和第二节添加了模拟量处理指令。第三节为模拟量输入和 输出的读取和设置。这里,还用到了另外一个指令 H_E,这个指令的作用是完成工程量的转 换,将%IW2 读取到的数值转换为实际的物理量,程序中将转换后的物理量放入 pressure 变 量。%IW2 的范围为 0~65535,数据类型为整型,而 pressure 的范围为 4~20 mA,数据类型 为 REAL 类型。关于该指令的用法,请参见《指令手册》。 在输出处理时,只是简单地将一个变量赋值为%QW2,当%QW2 的范围在 0~4095 之间 时,LM3330 模块输出 0~10V 的电压。 - 161 -
第172页
图 10-3-6 程序 10.4 DP 通讯 10.4.1 DP 通讯设置 LM 系列 PLC 提供 Profibus-DP 通讯处理。LM3401 为 DP 通讯模块,提供 DP 从站通讯 功能。 在完成 PLC 配置后,需要对 LM3401 模块进行参数设置,主要设置参数为输入区和输出 区大小。LM3401 模块参数设置如图 10-4-1 所示,其中 Value 值可选 0-64。在图 10-4-1 中, Value 值为 64。有关 LM3401 模块的具体技术规格请参见《硬件手册》。 图 10-4-1 LM3401 模块参数设置 与模拟量使用方法类似,在使用 DP 通讯时,也需要添加一个指令 DP_Slave。DP_Slave 指令的程序,如图 10-4-2 所示。其中 Address 处的输入值 0 应与 PLC 配置表中 LM3401 的节 点 id 一致。 当 EN 置位时,对 DP 模块进行扫描。当 EN 复位时,不对 DP 模块进行扫描。 - 162 -
第173页
图 10-4-2 DP_Slave 功能块 配置了 LM3401 后,系统自动分配了输入区和输出区,如图 10-4-3 所示。输入区从%IW2 开始的 64 个字节,输出区从%QW2 开始的 64 个字节。DP 主站设备与 LM 系列 PLC 通讯就 是与这些输入区和输出区进行通讯,完成数据交换。输入区用于存放主站发送过来的数据, 而若 LM 系列 PLC 要发送数据给主站,需要将数据放置于 LM3401 的输出区。 图 10-4-3 DP_Slave 配置表 10.4.2 DP 通讯举例 下面作一个简单的 Profibus-DP 功能块的应用实例。 程序要求:PLC 通过 DP 从站模块向 DP 主站模块发送 8 个字节的数据,同时从 DP 主站 模块接收 8 个字节的数据。 变量定义: PROGRAM PLC_PRG VAR EN: BOOL; Example: DP_Slave; T_OR_F: BOOL; SendDataA: WORD; PLC 向 DP 主站发送的数据 A SendDataB: WORD; PLC 向 DP 主站发送的数据 B SendDataC: WORD; PLC 向 DP 主站发送的数据 C SendDataD: WORD; PLC 向 DP 主站发送的数据 D - 163 -
第174页
RecDataA: WORD; DP 主站向 PLC 发送的数据 A RecDataB: WORD; DP 主站向 PLC 发送的数据 B RecDataC: WORD; DP 主站向 PLC 发送的数据 C RecDataD: WORD; DP 主站向 PLC 发送的数据 D END_VAR 软件配置: 配置 DP 从站模块 LM3401,如图 10-4-4 所示。 InputDataLen_Byte 为 DP 主站向 PLC 发送的数据长度,输入接收的字节数 8。 OutputDataLen_Byte 为 PLC 向 DP 主站发送的数据长度,输出发送的字节数 8。 图 10-4-4 LM3401 模块参数设置 DP_Slave 模块中的 Address 与图 10-4-5 所示的节点号一致,DP 主站向 PLC 发送的数据 A、B、C、D 分别存放在图 10-4-5 所示的%IW2、%IW4、%IW6、%IW8 之中。 图 10-4-5 LM3401 配置表 PLC 向 DP 主 站 发 送 的 数 据 A 、 B 、 C 、 D 分 别 存 放 在 图 10-4-6 所 示 的%QW2、%QW4、%QW6、%QW8 之中。 图 10-4-6 LM3401 通道 - 164 -
第175页
配置 DP 主站的接收和发送区,DP 从站的 QW 区数据会自动传送到 DP 主站的接收区, DP 主站的发送区数据会自动传送到 DP 从站的 IW 区。梯形图如图 10-4-7 所示。 图 10-4-7 LM3401 梯形图 系统上电后,程序将 SendDataA、SendDataB、SendDataC、SendDataD 中的数据复制 到%QW2、%QW4、%QW6、%QW8 中,%QW2、%QW4、%QW6、%QW8 中的数据会自动 发送到 DP 主站的接收区。 DP 主 站 发 送 的 数 据 自 动 存 放 在 %IW2 、 %IW4 、 %IW6 、 %IW8 中 , 程 序 将%IW2、%IW4、%IW6、%IW8 中的数据分别复制到 RecDataA、RecDataB、RecDataC、 RecDataD 中。 在主站配置中,其配置地址根据 DP 模块的地址顺序计算,假如按位计算,第一个位的 地址为 1,诸如%IX2.0 或%QX2.0,第二个位地址为 2,诸如%IX2.1 或%QX2.1。按字节计算, 第一个字节地址为 1,诸如%IB2 或%QB2,第二个字节地址为 2,诸如%IB3 或%QB3,以此 类推。 10.5 以太网通讯 10.5.1 以太网通讯设置 LM 系列 PLC 提供以太网通讯处理。LM3403 为以太网通讯模块,提供 Modbus TCP 从 站通讯功能。 - 165 -
第176页
在完成 PLC 配置后,需要对 LM3403 模块进行参数设置,主要设置参数为输入区和输出 区大小。LM3403 模块参数设置如图 10-5-1 所示。在图 10-5-1 中,分别配置 IP 地址 IP_Address、 子网掩码 Subnet_Mask、网关 Gateway_Adress、输入区大小 WriteDataLen_Byte 和输出区大小 ReadDataLen_Byte、MAC 地址 MAC_Address 等参数。有关 LM3401 模块的具体技术规格请 参见《硬件手册》。 图 10-5-1 LM3403 模块参数设置 与模拟量使用方法类似,在使用以太网通讯时,也需要添加一个指令 EtherNet_TCP。 EtherNet_TCP 指令的程序如图 10-5-2 所示。其中 Address 处的输入值 0 应与 PLC 配置表中 LM3403 的节点 id 一致。 当 EN 置位时,对以太网模块进行扫描。当 EN 复位时,不对以太网模块进行扫描。 图 10-5-2 EtherNet_TCP 梯形图 配置了 LM3403 后,系统自动分配了输入区和输出区,如图 10-5-3 所示。输入区从%IW2 开始的 200 字节,输出区从%QW2 开始的 200 个字节。Modbus TCP 主站设备与 LM 系列 PLC 通讯,就是与这些输入区和输出区进行通讯,完成数据交换。输入区用于存放主站发送过来 的数据,而若 LM 系列 PLC 要发送数据给主站,需要将数据放置于 LM3403 的输出区。 图 10-5-3 EtherNet_TCP 配置表 - 166 -
第177页
10.5.2 以太网通讯举例 本例中,PC 机(MODBUS/TCP 主站)通过以太网模块向 PLC 输入区发送 2 个字的数据,从 PLC 输出区接收 2 个字的数据,同时 PC 机按位操作向 PLC 输入区发送 1 个位,从 PLC 输出 区接收 1 个位。 变量定义 PROGRAM PLC_PRG VAR EN: BOOL; Example: EtherNet_TCP; T_OR_F: BOOL; SendDataA: WORD; (*PLC 向 MODBUS/TCP 主站发送的数据 A*) SendDataB: WORD; (*PLC 向 MODBUS/TCP 主站发送的数据 B*) SendBitC: BOOL; (*PLC 向 MODBUS/TCP 主站发送的位 C*) RecDataA: WORD; (*MODBUS/TCP 主站向 PLC 发送的数据 A*) RecDataB: WORD; (*MODBUS/TCP 主站向 PLC 发送的数据 B*) RecBitC: BOOL; (*MODBUS/TCP 主站向 PLC 发送的位 C*) END_VAR 软件配置 配置LM3403以太网模块如图10-5-4。 图 10-5-4 LM3403 配置 IP_Address 为本以太网模块 IP 地址(必须与 PC 机在同一网段,且无冲突的 IP 地址)。 Subnet_Mask 为子网掩码,与 PC 机的子网掩码一致。 GateWay_Addres 为网关地址。 MAC_Address 不填。 ReadDataLen_Byte 为 PC 机向 PLC 发送的数据长度,输入接收的字节数 8(必须大 于实际用到的长度,且最大 200)。 WriteDataLen_Byte 为 PLC 向 PC 机发送的数据长度,输出发送的字节数 8(必须大 于实际用到的长度,且最大 200)。 以太网功能块中的Address与图10-5-5所示的节点id一致,PC机向PLC发送的数据A、 B分别存放在下图所示的%IW4、%IW6,位C存放在%IX8.0。 - 167 -
第178页
图 10-5-5 PLC向PC机发送的数据A、B分别存放在图10-5-6所示的%QW2、%QW4之中,位C 存放在%QX6.0。 图 10-5-6 输出区地址 程序如 10-5-7 所示。在主站配置中,其配置地址根据以太网模块的地址顺序计算,假如 按位计算,第一个位的地址为 1,诸如%IX2.0 或%QX2.0,第二个位地址为 2,诸如%IX2.1 或%QX2.1。按字节计算,第一个字节地址为 1,诸如%IB2 或%QB2,第二个字节地址为 2, 诸如%IB3 或%QB3,以此类推。 图 10-5-7 程序 注意:在以太网的主站配置中,I 区对应的位地址类型为 0x,字地址类型为 4x,Q 区对应位地 址类型为 1x,子地址类型为 3x。 - 168 -
第179页
第11章 视图 视图(Visualization)是 PowerPro 软件的一个组件,能够以图形的方式显示工程变量及 其变化规律,用于实现控制过程的可视化。因此,视图是 PLC 的人机界面(Human Machine Interface,HMI)。 PowerPro 软件的编程系统带有一个集成的视图编辑器。在开发控制系统应用程序的过程 中,PowerPro 软件允许用户开发视图对象来观察和操作 PLC 的数据,而无需使用其它的开 发工具。 11.1 创建视图文件 启动 PowerPro 软件,创建工程 project1.pro。在对象组织器中,点击“视图”选项卡,如图 11-1-1 所示。 图 11-1-1 视图选项卡 在“视图”选项卡中点击鼠标右键,选择“添加”按钮,如图 11-1-2 所示。 图 11-1-2 添加视图 - 169 -
第180页
弹出视图名称对话框,如图 11-1-3 所示。 图 11-1-3 视图名称 在“可视名”中输入视图的名称,例如 visu1,点击“确认”按钮,则在视图选项卡中创建了 一个名为 visu1 的视图,右侧的工作区域为视图编辑区域,如图 11-1-4 所示。 图 11-1-4 创建视图 visu1 11.2 视图编辑工具 编辑视图的工具位于视图编辑区域顶端的标题栏内,包括下拉菜单和快捷工具按钮。 点击标题栏的“插入”菜单,出现编辑视图的“插入”下拉菜单,如图 11-2-1 所示,可以选 择不同的插入对象来添加所需的视图。这些视图对象是视图文件的基本组成单元。 - 170 -
第181页
图 11-2-1 视图“插入”菜单 点击标题栏的“高级”菜单,出现编辑视图的“高级”下拉菜单,如图 11-2-2 所示,可以 对视图对象的属性进行配置。在视图编辑区域点击鼠标右键也会弹出此菜单。 图 11-2-2 视图“高级”菜单 编辑视图的快捷工具按钮位于视图编辑区域顶端标题栏的工具栏中,如图 11-2-3 所示, 与“插入”菜单完全相同。编辑视图的工具共有 15 种,其功能如表 11-2-1 所示。 图 11-2-3 视图快捷工具按钮菜单 - 171 -
第182页
表 11-2-1 编辑视图工具 名称 快捷工具 功能描述 在当前视图中插入矩形。 矩形 在当前视图中插入圆角矩形。 在当前视图中插入圆或椭圆。 圆角矩形 在当前视图中插入多边形。 在当前视图中插入直线或折线。 椭圆 在当前视图中插入贝塞尔曲线。 在当前视图中插入饼图(圆或椭圆的楔形图)。 多边形 在当前视图中插入位图文件。 在当前视图中插入已经创建的其它视图。 折线 在当前视图中插入按钮。 在当前视图中插入 WMF 文件(Windows Metafile, 曲线 即 Windows 图元文件格式)。 在当前视图中插入表格。 Pie 图 在当前视图中插入趋势图。 在当前视图中插入报警表格。 位图 在当前视图中插入 ActiveX 控件。 视图 按钮 WMF 文件 表 趋势图 报警表 ActiveX 控件 11.3 视图编辑方法 11.3.1 绘制视图 在编辑视图时,将鼠标移到视图编辑工具按钮处,会看到相关工具的自动提示。 绘制矩形、圆角矩形、圆或椭圆等规则视图 在需要的工具按钮位置点击鼠标左键,选中所需的视图,然后将鼠标移动到视图编辑区 域中需要绘制所选视图的位置。按下鼠标左键并拖动到所需视图的尺寸,抬起鼠标左键即可 - 172 -
第183页
完成所选视图的绘制。 绘制多边形、折线等不规则视图 在需要的工具按钮位置点击鼠标左键,选中所需的视图,然后将鼠标移动到视图编辑区 域中需要绘制所选视图的位置。在不规则视图的各个顶点处依次点击鼠标左键,可以画出不 规则视图的各条边,在最后的顶点处双击鼠标左键,即可完成不规则视图的绘制。 绘制曲线 一条曲线由初始点、中间点和结束点等三个点来确定。依次点击鼠标左键三次即可完成 一条曲线的绘制。点击鼠标左键确定曲线的初始点、中间点和结束点,以确定曲线的长度和 弧度。鼠标左键第三次点击后,可以通过移动鼠标来改变曲线结束点的位置。双击鼠标左键 结束曲线绘制过程。 复制视图 使用“编辑”/“复制”命令,或者<Ctrl>+<C>复合键,可以复制所选择的一个或多个视图对 象。复制视图的另外一种方法是,选择要复制的视图对象,按下<Ctrl>键的同时点击该视图 对象,则会在原来的视图对象上产生复制的视图对象。 视图中的状态栏 在视图中,鼠标指针的 X、Y 位置显示在状态栏上。状态栏上的位置值总是相对于视图 的左上角。当鼠标位于视图对象上或者正在编辑视图对象时,状态栏上显示该视图对象的顺 序号码。如果选择了要插入的视图对象,状态栏也会显示该视图对象的名称。 11.3.2 布置视图 在绘制视图的过程中,需要对视图进行修改和布置。 选择 用鼠标左键点击视图对象可以将其选中。 可以按下<Tab>键,选择视图对象中的第一个视图对象,再次按下<Tab>键则选择下一个 视图对象。如果同时按下<Tab>和<Shift>键,可以按照视图对象中相反的顺序选择。 在选择一个视图对象后按下<Shift>键,同时点击相应的视图对象,可以选择多个视图对 象。也可以按住鼠标左键不放,在要选择的视图对象上拉一个窗口,同样可选择多个对象。 全选 标题栏“高级”菜单中的“全选”菜单可以将当前视图中的所有视图对象全部选中。 选择方式 如果标题栏“高级”菜单的“选择方式”菜单前有“√”,或者快捷工具栏中表示鼠标状态的 快捷工具按钮被按下时,表示此时处于“选择”状态,可以选择视图对象。否则处于绘图状态。 选择方式和插入方式的切换 视图对象插入后,自动回到选择方式。如果要用同样方式再插入对象,可以再次选择相 应的菜单命令。 切换的另外一种方法是在选择方式下,同时按下<Ctrl>键和鼠标右键,可以在选择方式 和插入方式之间快速转化。 拖动 点击鼠标左键选择视图对象。在所选的视图对象上按下鼠标左键或按下方向键,可以拖 动一个或多个视图对象。 修改 - 173 -
第184页
用鼠标点击对象或者按下<Tab>键,可以选择一个视图对象。在所选择视图对象的周围 有一些小的黑色矩形。通过点击这些小的黑色矩形,按住鼠标左键,可以改变视图对象 的大小,控制视图对象的轮廓。 选择一个视图对象后,同时显示旋转点。旋转点是一个中间带有白色十字的黑色圆圈, 可按一定的角度使对象绕这点旋转。可以按下鼠标左键拖动旋转点。 对于多边形,使用同样的方法拖动每个顶角。鼠标拖动时,按下<Ctrl>键,可以插入一 个顶角。按下<Shift>+<Ctrl>键,可以删除一个顶角。 在视图编辑区,点击鼠标右键,会弹出如图 11-3-1 所示的菜单。 图 11-3-1 视图右键菜单 下面将依次介绍菜单中的选项。 前置 将选择的视图对象置于最上一层。选择一个视图对象,点击标题栏“高级”菜单中的“前 置”菜单,可以将该视图对象放到其它视图对象的前面。 当视图对象以不同对象号显示时,视图对象实际上相当于以不同的图层来显示。将几个 视图置于同一位置处时,会发现视图中对象号最大的置于最上层。如需使某一视图置于最上 层时,可用此命令使该视图前置,且对象号变为当前最大值。 后置 将选择的视图对象置于最下一层。选择一个视图对象,点击标题栏 “高级”菜单中的“后 置”菜单,可以将该视图对象放到其它视图对象的后面。 与“前置”同理,可以使某一视图对象置于最底层,且将视图中对象号变为 0。 选择背景位图 从相应的路径选择合适的背景位图,选择“打开”,在视图中即可呈现所选择的背景位图。 清除背景位图 在背景位图设置好后,如果背景位图不满足需求,选择“清除背景位图”可对其进行清除。 位置排列 选择多个视图对象,点击标题栏“高级”菜单中的“位置”菜单,可以对该多个视图对象 的位置进行排列。 - 174 -
第185页
“位置”菜单有以下几个选项: “左”表示被选中的视图对象以最左侧视图对象的左边沿为基准对齐排列,即左对齐。 “右”表示被选中的视图对象以最右侧视图对象的右边沿为基准对齐排列,即右对齐。 “顶”表示被选中的视图对象以最顶侧视图对象的顶边沿为基准对齐排列,即顶对齐。 “底”表示被选中的视图对象以最底侧视图对象的底边沿为基准对齐排列,即底对齐。 “水平居中”表示每个视图对象以所有视图对象的平均水平中心为基准对齐排列。 “垂直居中”表示每个视图对象以所有视图对象的平均垂直中心为基准对齐排列。 配置 对于不同的视图对象,其配置中的分类选项不同。对于“配置”,一定要在视图对象被选 中的情况下,才显示该对象的一些配置,否则,该项为灰体。 组合 选择多个视图对象,点击标题栏“高级”菜单中的“组合”菜单,可以将多个视图对象组 合成一个视图对象。组合后视图对象的行为与一个视图对象的行为相同。 取消组合 选择一个组合的视图对象,点击标题栏“高级”菜单中的“取消组合”菜单,可以将该组 合的视图对象分解为多个单独的视图对象。 另外,视图编辑区右键菜单中的内容除了以上介绍的选项外,还包括对象列表、使用键 盘、占位符列表和视图设置,这四个选项将在下面进行介绍。 11.3.3 对象列表 点击标题栏“高级”菜单中的“对象列表”菜单,打开视图对象列表对话框,如图 11-3-2 所示,其中包括视图对象的号码、类型和位置等信息。点击该对话框右侧的工具按钮,可以 对其进行编辑。在绘图区点击鼠标右键,选中“对象列表”,也会弹出此对象列表。 “确认”按钮:当对对象列表内容操作完毕后,点击“确认”按钮,关闭对话框。 “最前”按钮:把选择的视图对象放在最上层,此时对象号最大。 “最后”按钮:把选择的对象放在最底层,此时对象号最小。 “向前一步”按钮:把选择的视图对象向上移动一层,此时对象号增大一号。 “向后一步”按钮:把选择的视图对象向下移动一层,此时对象号减小一号。 “删除”按钮:删除选择的对象。 “取消”按钮:取消上一次操作 “重做”按钮:恢复上一次操作。 “编辑”按钮:对视图对象进行编辑操作。 - 175 -
第186页
图 11-3-2 视图对象列表对话框 11.3.4 使用键盘 可以通过选择“Shift”、“Ctrl”及“Key”下拉菜单里的可选按键来实现动作的运行。 通过“Expression”表达式来描述要实现的动作或显示运行动作后的结果。使用键盘对于视 图的每个物体可独自设置,因此,在不同视图中相同的按键设置可以起到不同作用。 举例 下面的表 11-3-1 和表 11-3-2 为 VIS_1 和 VIS_2 两个视图的不同按键设置。 表 11-3-1 VIS_1 键盘设置 Shift Ctrl Action Key Expression Toggle A PLC_PRG.automatic x Zoom Z VIS_2 x 表 11-3-2 VIS_2 键盘设置 Shift Ctrl Action Key Expression Exec E INTERN LANGUAGE DEUTSCH x Zoom Z VIS_1 x 如果在“在线模式”下,且当前视图为 VIS_1,按住“Shift+A”复合键,则 PLC_PRG 中的 automatic 变量会触发“toggle”,另外,如果按住“Ctrl+Z”复合键,则会自动跳到视图 VIS_2。 对于“Action”的各选项,请参见表 11-3-3。 - 176 -
第187页
表 11-3-3 键盘动作 Action 含义 Toggle 切换变量 Tap true 键控变量置为真 Tap false 键控变量置为假 Zoom 缩放视图 Exec 执行程序 Text 文本显示的文本输入变量 可以通过选择按键配合“shift”或“ctrl”组成复合键,触发相应的动作。 11.3.5 占位符列表 占位符列表如图 11-3-3 所示。 图 11-3-3 占位符列表 Placeholder:列出用于配置所有视图对象的占位符。 Element number:显示包含占位符的对象号。 Replacements:可以输入一些字符串。例如文本、变量或表达式等。 11.3.6 视图设置 视图设置如图 11-3-4 所示。 - 177 -
第188页
图 11-3-4 视图设置 Display:填入相应扩大或缩小比例改变屏幕大小,可以选择是否在视图中显示对象 号,如图 11-3-4 所示。 Frame:框架设置,如图 11-3-5 所示。 选择“自动滚动”,在画某个对象或移动某个对象时达框架边界时,视图窗口会跟随该对 象自动移动。 选择“包含背景视图”,背景视图将会符合窗口框架大小,否则只考虑对象。 选择“在线方式最佳匹配”,视图以最佳效果进行运行模拟。 图 11-3-5 框架设置 Grid:网格设置,如图 11-3-6 所示。 图 11-3-6 网格设置 选择网格“可见”,则会在窗口中呈现网格,可以通过改变网格大小调整网格间距,最小 值为 10。 选择“活动”,则会以网格为单位进行移动,否则可实现在窗口任意空间移动。 Language:PLC 不支持此项功能。 - 178 -
第189页
11.4 视图属性配置 11.4.1 属性配置方法 在编辑视图的过程中,选中某一个视图对象并点击鼠标右键,或点击标题栏的“高级” 菜单,则会弹出“高级”下拉菜单,并且激活了其中的“配置”菜单,如图 11-4-1 所示。对于 “配置”菜单,一定要在视图对象被选中的情况下才被激活,否则该项为灰体。 图 11-4-1 视图“高级”/“配置”菜单 点击此“配置”菜单,弹出视图对象属性配置对话框,如图 11-4-2 所示,则可以对所选中 的视图对象的属性进行配置。用鼠标左键双击视图对象则可以快速打开此对话框。 图 11-4-2 视图对象属性配置对话框 - 179 -
第190页
11.4.2 视图对象的属性 对于不同的视图对象,其属性配置中的分类选项不同,属性配置对话框右侧的对应参数 内容也不相同。可以通过设置不同的参数变量来定义该视图对象,从而改变视图对象的属性。 表 11-4-1 给出了视图属性与视图对象的对应关系。其中符号“√”表示有对应关系。 表 11-4-1 属性分类与视图对象的对应关系 视图对象 视图属性 矩圆椭多折曲饼位视按图表趋报控 形角圆边线线图图图钮元格势警件 属性分类 属性名称 矩形 文 图表 形件 Shape 形状 √√√√√√ Text 文本 √√√√√√√√√√√ Text variables 文本变量 √ √ √ √ √ √ √ √ √ √ √ Line width 线宽 √√√√√√√√√ √ Colors 颜色 √√√√√√√ √ Color variables 颜色变量 √ √ √ √ √ √ √ √ √ √ Motion absolute 绝对移动 √ √ √ √ √ √ √ √ √ √ Motion relative 相对移动 √ √ √ √√ √ Variables 变量 √√√√√√√√√√√ Input 输入 √√√√√√√√√√√ Text for tooltip 提示文本 √ √ √ √ √ √ √ √ √ √ √ √ √ √ Security 安全 √√√√√√√√√√√√√√ Programmability 编程 √√√√√√√√√√√ Angle 角度 √ Bitmap 位图属性 √√ Visualization 视图属性 √ Group 组框架属性 √ Table 表格属性 √ Columns 列 √√ Rows 行 √ Selection 选择 √ Trend 趋势图属性 √ Alarm table 报警表属性 √ Settings for sorting 排序设置 √ Settings for alarm table 报警表设置 √ Control 控件类型 √ Method calls 方法调用 √ Display 显示 √ - 180 -
第191页
11.5 视图静态属性 所谓视图的静态属性是指描述图形对象基本形状的参数,主要包括形状、文本、线条宽 度、颜色等。 11.5.1 形状 形状 Shape 属性用来定义视图对象的形状。对于规则视图,形状 Shape 属性可以选择矩 形、圆角矩形、椭圆或直线等。对于不规则视图,形状 Shape 属性可以选择多边形、折线或 曲线等,如图 11-5-1 所示。形状 Shape 属性的改变只在所确定的范围内进行。 图 11-5-1 不规则视图对象属性配置对话框 11.5.2 文本 在视图对象中可以添加文本,用文本 Text 属性来设置,如图 11-5-2 所示。 内容 在“内容”文本框中输入文本,按<Ctrl>+<Enter>组合键换行。 水平 在“水平”选项中设置文本在视图对象中的左、中、右位置。 垂直 在“垂直”选项中设置文本在视图对象中的上、中、下位置。 点击“字体”或“标准字体”按钮,可以设置文本的字体。 图 11-5-2 文本设置 - 181 -
第192页
在标准 C 库中,常用的占位符有%s(字符格式)、%f(浮点型格式)、%d(整型格式) 和%x(16 进制整型)等,其含义如表 11-5-1 所示。 表 11-5-1 占位符与含义 占位符 含义 % a 星期缩写 % A 星期全写 % b 月缩写 % B 月全称 % c 日期时间 % d 一月中的天数(01-31) % H 24 小时格式(00-23) % I 12 小时格式(01-12) % j 一年中的天数(001-366) %m 月(01-12) %M 分钟(00-59) %p 12 小时 A.M/P.M 格式 %S 秒(00-59) %U 一年的第几个星期(00-53),周日为星期第一天 %w 星期(0-6,周日是 0) %W 一年的第几个星期(00-53),周一为星期第一天 %x 日期 %X 时间 %y 不含世纪的年(00-99) %Y 含世纪的年 %z 时区名,如:中国标准时间 %Z %% 百分号 举例 如果在文本内容中填入%2.5f mm,则在程序运行时会显示 32.8889 mm。 举例 在视图中设置如图 11-5-3 所示的格式。程序运行结果如图 11-5-4 所示。显示当前时间格 式:中国标准时间-年-月-日 时:分:秒 图 11-5-3 时间占位符应用 图 11-5-4 程序运行结果 - 182 -
第193页
11.5.3 线宽 线宽 Line width 属性用来定义视图对象线条的宽度。图 11-5-5 所示为线宽设置对话框, 共有 5 种线宽可以直接选择。选中“高级”选项可以输入线宽。在“线宽变量”中可以输入控制 线宽的工程变量,使线宽产生动画效果。输入工程变量时可以使用 F2 功能键。在线模式下, 动态线宽属性会覆盖静态线宽属性。 图 11-5-5 线宽设置 11.5.4 颜色 颜色 Colors 属性用来定义视图对象的颜色和报警的颜色。图 11-5-6 所示为视图对象颜色 设置对话框,可以分别设置视图对象的内部颜色和边框颜色。选中“无填充色”或“无边框色” 可以创建透明的图形对象。视图对象的报警颜色可以用填充颜色或边框颜色来显示。在线模 式下,动态颜色属性会覆盖静态颜色属性。 图 11-5-6 视图颜色设置 11.5.5 工具提示文本 工具提示文本 Text for tooltip 属性用来定义视图对象的工具提示文本。图 11-5-7 所示为 视图对象工具提示文本设置对话框,可以在“内容”文本框中输入表示视图对象的文本。离线 或在线模式下,当鼠标移动到该图形对象上时,会显示所输入的文本。在“内容”文本框中输 入文本,可以按<Ctrl>+<Enter>组合键换行。 - 183 -
第194页
图 11-5-7 工具提示文本 11.5.6 安全属性 安全 Security 属性用来定义视图对象的访问权限。图 11-5-8 所示为视图对象安全设置对 话框,可以定义用户对于视图对象的访问权限。用户组有 8 组,访问权限分为“无访问权限”、 “只读权限”和“完全控制权限”等 3 种。在线模式下,具有不同的访问权限的用户组可以实现 的操作不同。 具有“无访问权限”的用户组,不具有访问视图对象的权限,视图对象不可见。 具有“只读权限”的用户组,视图对象可见,但不可操作,即无输入操作权限。 具有“完全控制权限”的用户组,可以对视图对象进行完全控制。 如果需要将此安全权限的配置用于其他视图对象中,选中“适用所有视图元素”即可。 图 11-5-8 操作权限设置 11.5.7 位图属性 在视图中可以插入位图。位图 Bitmap 属性用来设置插入到视图中位图的参数。图 11-5-9 所示为位图设置对话框。 位图 点击“位图”文本框后的按钮可以选择所需要的位图文件。 选中“背景透明”,可以创建透明的图形对象。 框架 在“框架”选项中可以设置位图框架的属性。 “各项异性”表示在改变位图的尺寸时,位图的高度和宽度可按任意比例进行拉伸。 “各项同性”表示在改变位图的尺寸时,位图的高度和宽度比例保持不变。 - 184 -
第195页
“固定”表示在改变位图的尺寸时,位图本身的高度和宽度大小固定不变。只是可根据需 求,改变位图的显示大小。 在选中“固定”选项前提下,再选中“绘图”表示显示位图对象的框架,否则,不显示位图 对象的框架;如果再选中“剪切”表示当位图对象的框架小于位图时,只显示框架内的位图, 而不显示框架外的位图。如果想显示整个位图大小,可拉伸框架的大小。 “颜色”和“报警色”可以分别设置位图框架的颜色和报警色。 图 11-5-9 位图设置 11.5.8 视图属性 在视图中可以插入其它视图。视图 Visualization 属性用来设置插入到视图中其它视图的 参数。图 11-5-10 所示为视图设置对话框。 视图 点击“视图”文本框后的按钮可以选择所需要的视图文件。 点击“占位符”按钮可以设置视图的替换占位符。 框架 在“框架”选项中可以设置视图框架的属性。 “各项异性”表示在改变视图的尺寸时,视图的高度和宽度可按任意比例进行拉伸。 “各项同性”表示在改变视图的尺寸时,视图的高度和宽度比例保持不变。 “固定”表示在改变视图的尺寸时,视图的本身的高度和宽度大小是固定不变。可根据需 求,改变视图的显示大小。 在选中“固定”选项前提下,再选中“绘图”表示显示视图对象的框架,否则,不显示视图 对象的框架;如果再选中“剪切”表示当视图对象的框架小于视图时,只显示框架内的视图, 而不显示框架外的视图。如果想显示整个视图大小,可拉伸框架的大小。 “颜色”和“报警色”可以分别设置视图框架的颜色和报警色。 - 185 -
第196页
图 11-5-10 视图设置 11.5.9 组框架属性 在视图中可以插入 WMF 图元文件格式的图形文件。WMF 图元文件的组框架 Group 属 性用来设置插入到视图中 WMF 图元文件的参数。图 11-5-11 所示为 WMF 图元文件组框架 Group 设置对话框。 在“框架”选项中可以设置视图框架的属性。 选中“绘图”表示显示视图对象的框架。 选中“各向同性的”表示在改变视图的尺寸时,视图的高度和宽度比例保持不变。 选中“剪切”表示当视图对象的框架小于视图时,只显示框架内的视图,而不显示框架外 的视图。 “颜色”和“报警颜色”可以分别设置视图框架的颜色和报警色。 图 11-5-11 图元文件组框架属性设置 - 186 -
第197页
11.5.10 角度 角度 Angle 属性用来定义饼图对象的角度。双击饼图对象,弹出饼图对象属性配置对话 框,如图 11-5-12 所示。点击角度 Angle 属性,在“开始角度”和“结束角度”文本框中分别输入 饼图对象的开始角度和结束角度,则将会以顺时针方向画出所需要的饼图。选中“只进行段显 示”,则饼图对象不显示夹角,只显示弧段。 图 11-5-12 饼图对象属性配置对话框 举例 声明变量 PROGRAM PLC_PRG VAR angle_start: REAL := 0; angle_end: REAL := 90; END_VAR 视图运行结果如图 11-5-13 所示。 图 11-5-13 饼图示例 11.6 视图编程 11.6.1 编程属性 视图对象的属性不仅可以进行静态参数的设置或常规工程变量的定义,而且可以进行结 构变量的定义,这些结构变量专门用于视图对象的编程。为此,在库 SysLibVisu.lib 中定义 了结构体 VisualObjectType,其成员分量可以用来定义绝大多数图形对象的属性。为了避免 图形对象属性的多重定义,常规工程变量的值将覆盖结构变量的值,而且二者都覆盖静态属 性的定义。 - 187 -
第198页
为了使用结构变量来配置图形对象的属性,可以打开图形对象属性配置对话框,选择编 程属性 Programmability,如图 11-6-1 所示。选中“对象名字”选择框,在其后的文本框中输入 结构变量的名称,则会自动声明 VisualObjectType 结构体类型的结构变量,该结构体 VisualObjectType 在库 SysLibVisu.lib 中已经被定义。这样声明的结构变量是全局变量,其声 明是不可见的隐含声明,前提是必须在库管理器中添加 SysLibVisu.lib 库。 重新编译工程后,新定义的结构变量将出现在工程中。 图 11-6-1 编程属性的设置 11.6.2 视图库 视图库 SysLibVisu.lib 中结构体 VisualObjectType 的定义如下所示。 TYPE VisualObjectType STRUCT (* Absolute movement *) nXOffset:INT; nYOffset:INT; nScale:INT; nAngle:INT; (* Variables *) bInvisible:BOOL; stTextDisplay:STRING; bToggleColor:BOOL; bInputDisabled: BOOL; stTooltipDisplay:STRING; (* Text and font *) dwTextFlags:DWORD; dwTextColor:DWORD; - 188 -
第199页
nFontHeight:INT; dwFontFlags:DWORD; stFontName:STRING; (* Line *) nLineWidth:INT; (* Color *) dwFillColor: DWORD; dwFillColorAlarm: DWORD; dwFrameColor: DWORD; dwFrameColorAlarm: DWORD; dwFillFlags: DWORD; dwFrameFlags: DWORD; (* Relative movement *) nLeft:INT; nTop:INT; nRight:INT; nBottom:INT; END_STRUCT END_TYPE 结构体 VisualObjectType 中的成员分量的数据类型及功能如表 11-6-1 所示。成员分量的 前缀字母表示数据类型,均为小写字母,其含义分别为: n 表示 INT,dw 表示 DWORD,b 表示 BOOL,st 表示 STRING。 表 11-6-1 成员分量的数据类型及功能 成员分量 功能 示例(结构变量为vis1) 对应的图形对象属性 及数据类型 vis1.nXOffset:=val1; Motionabsolute: nXOffset : INT; X方向位移 (沿 X 方向移动到 X=val1 处) X-Offset vis1.nYOffset:=val2; Motionabsolute: nYOffset : INT; Y方向位移 (沿 Y 方向移动到 Y=val2 处) Y-Offset vis1.nScale:=plc_prg.scale_var; Motion absolute: nScale : INT; 改变大小 (取值 plc_prg.scale_var) Scale vis1.anglevar:=15; Motion absolute: nAngle : INT; 旋转角度 (顺时针旋转 15 度) angle Color: bInvisible : BOOL; 可见/不可见 vis1.visible:=TRUE; No color inside+ (图形对象可见) No frame color stTextDisplay: 显示文本 Colorvariables: STRING; vis1.TextDisplay:='ON / OFF'; Fillcolor+Framecolor : 颜 色 在 TRUE 与 (显示文本ON / OFF) Text: bToggleColor FALSE 之间切换 vis1.bToggleColor:=alarm_var; Content BOOL; (当变量 alarm_var 为 TRUE 时,分 Input: 别 显 示 dwFillColorAlarm 和 Toggle variable dwFrameColorAlarm 定义的颜色) Variables: Change color - 189 -
第200页
bInputDisabled : 取值 FALSE,忽略 vis1.bInputDisabled:=FALSE; Variables: BOOL; : 配置 Input (此图形对象不能输入值) Input Disable stTooltipDisplay vis1.stTooltipDisplay:='Switch for '; Text for Tooltip: STRING; 工具提示文本 (显示工具提示文本Switch for) Content: dwTextFlags : 文本位置:: vis1.dwTextFlags:=24; Text: DWORD; 1 左对齐 (文本居中,4+20) Horizontal and 2 右对齐 Vertical options dwTextColor : 4 水平居中 vis1.dwTextColor :=16#00FF0000; Textvariables: DWORD; 8 顶对齐 (蓝色) Textflags 10 底对齐 vis1.nFontHeight:=16; nFontHeight : INT; 20 垂直居中 (字体高度为 16 像素) Textvariables: (取值可以相加) Textcolor dwFontFlags : 文本颜色(颜色的定 vis1.dwFontFlags:=10; Textvariables: DWORD; 义见表后示例) (显示粗体字并取消,2+8) Font heigth 字体高度,取值范围 stFontName : 10-96 像素 vis1.stFontName:=‟Arial‟; Textvariables: STRING; 字体: (使用 Arial 字体) Fontflags 1 斜体字 vis1.nLWidth:=3; nLineWidth : INT; 2 粗体字 (框架线宽为 3 像素) Textvariables: 4 下划线 Fontname 8 取消 (取值可以相加) Line width 改变字体 Color: Color Inside 框架的线宽(像素) Colorvariables: Fill color dwFillColor : 填充颜色(颜色的定 vis1.dwFillColor\":=16#00FF0000; Color: DWORD; Alarm color Inside 义见表后示例) (填充蓝色) Colorvariables: Fill color alarm dwFillColorAlarm : 当 bToggleColor 为 vis1.dwFillColorAlarm:=16#0080808 Color: DWORD; TRUE 时,填充颜色 0; Color Frame (颜色的定义见表 (当 bToggleColor 为 TRUE 时,填 Colorvariables: 充灰色) Frame color 后示例) Color: Alarm color Frame dwFrameColor : 框架颜色(颜色的定 vis1.dwFrameColor:=16#00FF0000; Colorvariables: DWORD; Frame color alarm 义见表后示例) (框架为蓝色) Color: No color inside + No frame color dwFrameColorAlarm 当 bFrameColor 为 vis1.dwFrameColorAlarm:=16#00808 Colorvariables: : DWORD; TRUE 时,填充颜色 080; Fillflags (颜色的定义见表 (当 bFrameColor 为 TRUE 时,填充 灰色) Colorvariables: 后示例) Frameflags dwFillFlags: 显示颜色: vis1.dwFillFlags:=1; DWORD; 0 显示颜色 (显示颜色) >0 忽略颜色设置 dwFrameFlags : 显示框架: vis1.FrameFlags:=1; DWORD; (框架显示虚线) 0 全显示 1 虚线( --- ) 2 点( ) 3 点划线( _._._ ) 4 双点划线(_.._.. ) 8 不显示 - 190 -
百万用户使用云展网进行电子书册制作,只要您有文档,即可一键上传,自动生成链接和二维码(独立电子书),支持分享到微信和网站!
更多案例
百万用户使用云展网进行电子书册制作,只要您有文档,即可一键上传,自动生成链接和二维码(独立电子书),支持分享到微信和网站!
{e.stopPropagation()}">
x
{{toast}}