C-Macro BuilderTM技术手册/用户指南全套手册下载
宏专用命令
以下命令是宏专用命令,用于完成与宏执行相关的各种特殊功能的命令,例如对结果进行条件检查、将宏执行控制转移到宏的其他部分(甚至其他宏)、标记宏的执行点、传输自定义消息、插入延迟、插入描述性注释或结束宏执行。
-
标记
选项 |
值 |
标记名称 |
1-255 个字符 |
标记是宏程序中特定点的名称。标记使程序能够将宏的执行分支或重新引导到宏的其他部分。
每个宏都有一个固定在宏的开头名为开始的初始标记。这是唯一无法从工作区中删除的项目。
标记不占用任何程序空间,也不执行任何任务-您可以添加任意数量的标记。它们的存在只是为了让宏编译器通过分支指令(本章后面将介绍)识别分支到(或转到)的位置。
将项目插入宏时,会出现以下对话框:
标记名称最多可包含255 个字符-但实际上,标记名称应短,长度为1 到16 个字符左右。它们可以包含任何可键入的字符(包括空格)并且区分大小写。
示例1:
在以下的示例中,一个简单宏中已插入一个名为“示例标记”的标记。
在此示例中,标记没有实际用途。宏将简单地跳过标记并按顺序执行所有四个读取指令。
示例2:
在此宏中,还插入了一条简单的分支指令:
在此宏中,将执行前两次读取,但随后该宏将分支并跳过第三次读取,直接进行第四次读取。在此宏中,在任何情况下都不会执行第三次读取。
-
分支
选项 |
值 |
分支标记名称 |
1-255 个字符 |
此命令使宏执行流无条件地分支到宏的另一个位置。这要求已在分支命令的目标处创建标记。这相当于GoTo命令。
将项目插入宏时,会出现以下对话框:
⚠️ 注意:如果在您插入此命令时标记实际上不存在,那没关系–您会在工作区中的命令项旁边看到一条警告消息,上面写着“(*** NOT FOUND)”–这表明宏编译器还不知道您实际上要在哪里分支–您仍然需要插入具有相应名称的标记。
⚠️ 注意:对于所有分支命令,应注意不要使宏进入无限循环,除非这是需要的特性。
示例1:
在本例中,在宏的开头插入了一个转到名为“SKIP_EVERYTHING”的标记的分支。由于没有名为“SKIP_EVERYTHING”的标记,因此会显示警告消息(*** NOT FOUND)。
⚠️ 注意:如果加载并执行此宏,将发生致命错误。
示例1:
在此示例中,已在宏结束之前插入了名为“SKIP_EVERYTHING”的相应标记。执行此宏时,分支指令将使宏跳过接下来的三个命令,并在标记处继续执行-在本例中,只是结束宏。
选项 |
值 |
分支条件 |
符合下列条件之一: 如果上次“读取”结果< 比较数据 如果上次“读取”结果> 比较数据 如果上次“读取”结果= 比较数据 如果上次“读取”结果!= 比较数据 如果上次“读取”结果“包含”比较数据(忽略偏离) 如果上次“读取”或“写入”导致任何错误 如果上次“读取”导致“读取”错误 如果上次“写入”导致“写入”错误 如果上次“读取”或“写入”导致“未发现标签”错误 如果上次“读取”或“写入”导致(旧版)“未发现标签”错误 如果控制器“输入”A = 低 如果控制器“输入”A = 高 如果控制器“输入”B = 低 如果控制器“输入”B = 高 如果控制器“输入”A = 低且“输入”B = 低 如果控制器“输入”A = 高且“输入”B = 低 如果控制器“输入”A = 低且“输入”B = 高 如果控制器“输入”A = 高且“输入”B = 高 如果控制器“输出”A = 低 如果控制器“输出”A = 高 如果控制器“输出”B = 低 如果控制器“输出”B = 高 如果控制器“输出”A = 低且“输出”B = 低 如果控制器“输出”A = 高且“输出”B = 低 如果控制器“输出”A = 低且“输出”B = 高 如果控制器“输出”A = 高且“输出”B = 高 |
比较起始 |
0-65535 |
比较长度 |
0-255 |
比较数据 |
ASCII 或十六进制比较数据的0 到255 字节 |
分支到标记 |
现有标记名称(1-10 个字符) |
此命令导致宏执行流根据先前RFID 命令的结果或错误有条件地分支到宏的另一个位置:
–标签搜索
–标签ID 读取
–标签数据读取
–标签数据写入
–标签数据填充
–控制器输入/输出状态
如果满足条件,此命令要求已在分支的目标位置创建标记。这相当于If -Then -GoTo(如果-那么-转到)命令。
将项目插入宏时,会出现以下对话框:
上部名为分支条件的部分是一个包含26 种不同条件、一些涉及的数据、一些涉及的错误、一些涉及的输入或输出的列表框。
前五个选项允许基于先前的标签数据读取或标签ID 读取命令的结果进行分支。
接下来的五个选项允许基于先前RFID 命令生成的错误进行分支:
–标签搜索
–标签ID 读取
–标签数据读取
–标签数据写入
–标签数据填充
最后16 个选项允许根据控制器输入/输出的状态组合进行分支。
在中间,有一个用于输入比较数据串以及偏离和长度的数据输入框。比较数据仅用于前5 个条件选项。
注意:这里的偏离是上次读取结果中的偏离,而不是标签地址偏离。因此,例如,如果您只是从标签的地址100 读取8 个字节,并且您想要比较这些字节中的最后2 个,那么您将使用的比较起始(偏离)为6,比较长度为2。
注意:所有比较(如“小于”和“大于”)都是逐字节比较的。因此,实际十六进制字节值为41 42 43 44 的字符串“ABCD”比实际字节值为61 62 63 64 的字符串“ABCD”小。同样,字符串“Cat”(43 61 74) 比字符串“CAT”(43 41 54) “小”
最后,还有一个指示在满足条件时宏要分支到标记的“分支到标记”名称。
⚠️ 注意:这里的偏离是上次读取结果中的偏离,而不是标签地址偏离。
因此,例如,如果您只是从标记的起始地址100 读取8 个字节,并且您想要比较这些字节中的最后2 个,那么您将使用的比较起始(偏离)为6,比较长度为2。
⚠️ 注意:所有比较,(如小于和大于)都是逐字节比较的。因此,实际十六进制字节值为0x41 0x42 0x43 0x44 的字符串“ABCD”比实际字节值为0x61 0x62 0x63 0x64 的字符串“ABCD”小。同样,字符串“Cat”(0x43 0x61 0x74) 小于字符串“CAT”(0x43 0x41 0x54)。
最后,还有一个指示在满足条件时宏要分支到标记的分支到标记名称。
⚠️ 注意:如果在您插入此命令时标记实际上不存在,那没关系–您会在工作区中的命令项旁边看到一条警告消息,上面写着“(*** NOT FOUND)”–这表明宏编译器还不知道您实际上要在哪里分支–您仍然需要插入具有相应名称的标记。
⚠️ 注意:对于所有分支命令,应注意不要使宏进入无限循环,除非这是需要的特性。
示例1:
在以下示例中,如果读取的前8 个字节中的最后2 个字节小于字符串“XY”,则宏将使用条件分支命令分支到“TOO_LOW”并设置控制器输出A,否则宏将结束。
示例2:
在以下示例中,如果读取的前8 个字节中的前5 个字节为字节值0x01 0x02 0x03 0x04 0x05,则宏将使用条件分支命令分支到“MATCH”并设置控制器输出A,否则宏将结束。
示例3:
在下面示例中,如果在读取的前100 个字节的任意位置发现字符串“FAILURE”,宏将使用条件分支命令分支到“FOUND_FAILURE”并设置控制器输出A 和B,否则宏将结束。
示例4:
在以下示例中,如果尝试的标签数据读取命令因任何原因而失败,宏将使用条件分支命令分支到“ERROR_OCCURRED”并设置Hub 输出A,否则宏将结束。请注意,需要将出错-继续宏命令插入宏中,否则宏只会在出现错误时结束,而不会设置输出。
示例5:
在以下示例中,如果尝试的标签写入命令因标签写入错误而失败,宏将使用条件分支命令分支到“Partial_Write_Failure”并设置控制器输出B,否则宏将结束。请注意,需要将出错-继续宏命令插入宏中,否则宏只会在出现错误时结束,而不会设置输出。未发现标签错误不会导致设置Hub 输出–只会导致实际的标签写入失败。这在根本未写入标签不是问题但标签被部分写入的应用中非常有用。
-
传输最后响应
选项 |
值 |
无 |
此命令可使以下命令的最后结果/响应再次发送到主机:
–标签搜索
–标签ID 读取
–标签数据读取
–标签数据写入
–标签数据填充
此命令通常与禁用所有主机响应一起使用,以使命令可以执行(例如标签读取),以便宏在决定是否应将结果实际发送回主机前对结果进行一些比较。从而过滤响应,并且可以提高应用的效率。
由于此命令没有可编辑项目,因此当项目插入宏时,不会出现对话框。
示例1:
在此示例中,禁用所有响应类型,读取标签ID,如果标签ID的最后一个字节小于5,则只有在那时,才通过传输最后响应命令将标签ID发送到主机。
-
传输用户定义字符串
选项 |
值 |
用户定义字符串数据 |
ASCII 或十六进制数据的0 到247 字节 |
此命令使RFID 控制器将数据的用户定义字符串传输回主机。这使得发送回主机的信息更具灵活性,并能够在某些可以将数据视为文本的应用中发送人可读的信息数据。
此命令在调试宏时也非常有用,通过在宏的各个点插入许多传输自定义字符串命令,您可以跟踪宏的执行情况。
将项目插入宏时,会出现以下对话框:
此外,此命令的显示模式可以设置为十六进制(带空格)或ASCII。
要输入要返回的用户定义字符串,可以在写入数据框中键入ASCII 文本或以空格分隔的2 位十六进制字节值。
示例1:
在以下示例中,从标签中读取两个字节。如果这两个字节是0x01 0x02,则将自定义字符串“批处理通过”发送到主机。如果两个字节为0x03 0x04,则将用户定义字符串“批处理失败”发送到主机。
示例2:
下面的示例只是一个大型宏的一段,其中插入了许多传输用户定义字符串作为调试辅助工具来跟踪宏的流程。
-
执行宏
选项 |
值 |
要执行的宏编号 |
1-8 |
此命令使RFID控制器结束当前宏并立即开始执行另一个宏。当该宏完成时,控制不会返回到当前宏。此命令允许将宏链接在一起以形成更大的程序。
将项目插入宏时,会出现以下对话框:
使用此命令可以执行从1 到8 的任意宏。
⚠️ 注意:编译后的宏没有与之关联的内部宏编号–它们可以加载到BIS M-6xx 和BIS U-6xx 系列RFID控制器中可用的八个宏隙中的任意一个中。因此,由用户负责跟踪各个宏,并事先知道(例如)每个宏编号将加载什么。
⚠️ 注意:应注意不要使宏进入无限循环,除非这是需要的特性。
⚠️ 注意:如果执行的宏不存在,宏终止将结束。
示例2:
在以下示例中,读取标签的前6 个字节。如果前3 个字节为“RED”,则执行宏5。如果前4 个字节为“BLUE”,则执行宏6。否则执行宏7。
-
等待
选项 |
值 |
等待时间(以毫秒为单位) |
0-65535 |
此命令会导致宏执行流程暂停指定的持续时间。它可用于需要延迟的情况。
将项目插入宏时,会出现以下对话框:
示例1:
在以下示例中,控制器输出A在无限循环中设置为高500 ms,然后设置为低500 ms。
-
注意
选项 | 值 |
注意 | 0-255 个字符的文本 |
注意命令实际上只是一个在宏中放置文本符号的地方,用于注释或其他信息性目的。它们不会影响宏执行的流程。它们可以包括程序逻辑的描述,或版本号,或用户认为应该注意的任何内容。
将项目插入宏时,会出现以下对话框:
-
等待
每个字符串的长度最多可达255 个字节。它们不占用宏空间。
示例1:
以下示例显示了一个大型宏的片段,其中插入了许多注意,用于描述宏的流程并提供其他信息。
-
结尾
选项 |
值 |
无 |
此命令使宏立即终止。此命令应插入在宏中要停止宏执行的任意点。
无论您是否手动插入了一个宏,宏编译器会自动在每个宏的末尾插入一个隐含的结束。不过,在所有宏的末尾加上一个结束可能是一种很好的编程方法。
由于此命令没有可编辑项目,因此当项目插入宏时,不会出现对话框。
若您还有后续其他疑问,可拨打巴鲁夫全国热线 400 820 0016,选择相应板块进行咨询。