宏指令的结构,执行方式

宏指令的结构

宏指令是有各种语句组成的,这些语句包含常量,变量和各种运算符号,这些语句放置在待定的顺序位置以便执行达到一个希望执行的结果。
宏指令的结构一般为一下格式:
在这里插入图片描述

执行宏指令有很多种不同的方法,下列分别说明

- 使用“plc控制”,元件

1,开启plc控制元件,并设定属性为“执行宏指令。
2,选择需要执行的宏指令名称,选择一个位作为触发宏指令指令并设定触发宏指令的条件。
在满足条件时,该宏指令将会重复执行
为了每次只让宏指令执行一次,设定时需要在宏指令将该触发位置复位。

- 使用 “ 位状态设定元件 ”或者 “ 位状态切换开关 ”

1,在 “位状态设定 “ 元件或 ” 位状态切换开关 “, 原件的一般属性页中,勾选 ” 使用宏指令 ”
2,选择要执行的宏指令。当这个元件被执行的时候,选择的宏指令就会被执行一次。

- 使用功能键元件

1,在功能键元件的一般属性页中,勾选 “ 触发宏指令 ” 。
2,选择要执行的宏指令,当这个元件被执行的时,选择的宏指令就会执行一次。

  • 其他方法 (勾选周期执行/当HMI 启动的时候执行一次)

宏指令的语法


■(1) 常数

常数是一个可以被各式语句直接使用的固定的资料。有如下格式:

常数类型 ; 举例 ; 使用说明

.十进制整数 ; 345, -234, 0, 23456

.十六进制数 ; 0x3b, 0xffff, ; 必须以 0x 开头

.字符型 ; ‘a’, ‘data’, ‘函数名称’ ; 字符必须使用单引号

.布尔型 ; true, false

下面即为一个简单的常数使用的范例。

macro_command main()

short A, B // 声明 A 和 B 为短整型变数

A = 1234

B = 0x12 // 1234 和 0x12 即为常数

end macro_command

■ (2)变数

变量是一个代表着各种资料的名称。在宏指令中,这些资料可以随着宏指令语句执行的结果改变而改变。

变量的命名规则:

.必须以英文字母开头。

.变量名称长度不超过 32 个字符。

.系统保留缓存器名称不能作为变量名称。

下面为 8 种不同的变量类型,前 5 种为有号数值型态,后 3 种为无号数值型态:

变量类型 ; 描述 ; 范围

.Bool 布尔型 ; 1 bit (一个位) ; 0, 1

.Char 字符型 ; 8 bits (一个字节) ; ±127

.Short 短整型 ; 16 bits (一个字符) ; ±32767

.Int 双整型 ; 32 bits (双字符) ; ±2147418112

.Float 浮点型 ; 32 bits (双字符)

.Unsigned Char 字符型 ; 8 bits (一个字节) ; 0 ~ 255

.Unsigned Short 短整型 ; 16 bits (一个字符) ; 0 ~ 65535

.Unsigned Int 双整型 ; 32 bits (双字符) ; 0 ~ 4,294,967,295

变数声明

变量必须在使用前声明。所以在宏指令中,所有的变量都必须在语句使用前都被声明完成。声明变量时,先定义变量的类型,后面再跟着变量名称。

数组声明

宏指令支持一维数组 (下标从0开始)。声明数组变量时,先定义数组变量的类型,变量名称,接着就是该数组变量的个数,变量个数必须放置在 “[]” 符号中。数组变量的长度为 1 ~ 4096。一个宏指令中只支持 4096 个变量。

如下范例:

int a[10]

short b[20], switch[30]

float pressure[15]

数组的下标最小为 0,最大下标为 (数组的长度 - 1)

如下范例:

char data[100] // 数组变量的长度是 100

所以: 最小的数组为 “data[0]”,最大的数组为 “data[99]”,即 100 - 1 = 99。

变量和数组初始化

有两种方法可以让变量初始化:

.使用语句中的赋值语句 (=)

如下范例:

int a

float b[3]

a = 10

b[0] = 1

.声明变量时直接赋值

char a = ‘5’, b = 9

数组变量的声明是一个特殊的情况。一个完整的数组被初始化时,可以在数组变量声明时,将数据放置在波形括号 “{}” 里面,各数据使用逗号分开。

如下范例:

float data[4] = {11, 22, 33, 44} // 这样 data[0] = 11, data[1] = 22….

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
步科触摸屏的函数脚本说明 目 录 1. KingSCADA的条件事件脚本等系统脚本中不能调用画面内部的对象吗? ...1 2. 我想在一个画面中调用另一个画面的内部对象,怎样做?............................1 3. 画面自定义变量和属性除了能被本画面的图素引用,其他的画面能引用吗? .............................................................................................................................................3 4. 导航图应用有EnableNavigate()和ShowNavigateWindow()两个函数,他们有什 么区别?.............................................................................................................................3 5. KingSCADA 提 供 保 存 画 面 的 函 数 , 如 SavePictureToFile() 、 SaveWholePictureToFile()函数,我写在按钮命令语言里为什么不执行?..................3 6. 利用表格模板和SQLCreateTable()函数创建数据库表格,为什么创建不成 功?.....................................................................................................................................3 7. 用SQLDropTable()函数删除一个数据库表格,为什么删不掉? ....................3 8. 用SQLGetRecord()函数为什么不能返回当前选择集中的指定序号的记录? 3 9. 用VarRefAddress函数不能实现变量的引用?..................................................4 10. KingSCADA运行系统怎样得到当前产生的报警数量? .................................4 11. 怎样从实时报警窗中手动删除确认过的报警记录?......................................5 12. KingSCADA可以实现通过弹出对话框让用户选择文件的功能吗? .............5 13. 有累计计算脚本,长时间运行后,累计值不变?..........................................6 14. FileWriteStr(“c:\sql.txt”,0,“sfd%”,0);但是输出文本里少了%?........................6 15. 在应用程序启动时脚本里添加了打开画面函数,运行时,画面没有打开? .............................................................................................................................................6 16. KS工程里有数据库查询或插入的脚本,长时间运行后,不能查询或插入记 录?.....................................................................................................................................6 17. KingSCADA的全局脚本、局部脚本有大小的限制吗? .................................6 18. KingSCADA中怎样实现把同一类型的文件名显示在列表框中?类似于组态 王的ListLoadFileName()函数的功能。............................................................................6 19. 怎样在KingSCADA运行时获取加密锁序列号? ............................................7 20. 通过调用数据集函数KDBGetDataset()对access数据库进行操作时,一直 报错“对象关闭时,不允许操作。 DBAccess: Open the source recordset failed!”?.7 21. 图素对象属性中的hotkey热键作用?...............................................................7

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值