工控编程吧

标题: 威纶通触摸屏宏指令语法 [打印本页]

作者: qq263946146    时间: 2019-2-21 19:20
标题: 威纶通触摸屏宏指令语法
宏指令语法
1.     宏指令的结构
宏指令是由各种语句组成。这些语句包含常数、变量和各种运算符号。这些语句以特定的顺序放置于指定的位置以便执行后达到一个希望的功能。
宏指令的结构一般为以下格式:
全局变量申明  //可无
SubFunction Block Declarations  //子函数申明,可无
局部变量申明 //可无
EndSub  //子函数申明结束,可无
cacro_command_main  //主函数申明,必须有
局部变量申明
各种语句
endmacro_command  //主函数结束,必须有
一个宏指令必须有一个且只有一个主函数,用来开始宏指令的执行。格式为:
macro_command 函数名称()  
end macro_command
变量声明必须放在宏指令语句的前面,否则如果语句放置在变量声明的前面,将会造成宏指令无法编译通过。
局部变量一般用在宏指令主函数或者自定义的子函数中。它的合法性只在指定的函数中有效。
全局变量一般是定义在所有宏指令函数的前面,且它在整个宏指令中均具有有效性。当局部变量和全局变量被定义为相同的名称时,只有局部变量有效。这些和C++一样,为最为基础语法知识。
下面就是一个简单的宏指令,其中就包含了变量声明和函数呼叫。双斜线  "//" 代表程序批注,在它后面文字不会被执行。
macro_command main()                           
short pressure = 250                         //  局部变数声明
SetData(pressure, "Allen-Bradley DF1", N7, 10, 12)       // 函数呼叫
end macro_command
2.     宏指令的语法
1)首先宏指令里会使用常数,常数是一个可以被各式语句直接使用的固定的资料。有如下格式:
常数类型      使用说明                            举例
十进制整数                                       345, -234,0, 23456
十六进制数    必须以  0x 开头                    0x3b, 0xffff, 0x237
字符型        字符必须使用单引号,字符串使用双引号  ‘a’, "data", "函数名称"
布尔型                                           true, false
下面即为一个简单的常数使用的范例。
macro_commandmain()   
  short A, B  //  声明A和B为短整型变数
  A = 1234   
  B = 0x12   //  1234 和  0x12 即为常数
endmacro_command
2)宏指令里更为常见是变量,变量是一个代表着各种资料的名称。在宏指令中,这些资料可以随着宏指令语句执行的结果改变而改变。
变量的命名规则
必须以英文字母开头
变量名称长度不超过  32 个字符
系统保留寄存器名称不能作为变量名称。
下面为  8 种不同的变量类型,前 5种为有号数值类型,后 3种为无号数值类型:
变量类型    描述      范围
bool          布尔型  1 bit (一个位)  0, 1
char          字符型  8 bits (一个字节)  +127 ~ -128
short         短整型  16 bits (一个字符)  +32767 ~ -32768
int           双整型  32 bits (双字符)  +2147483647 ~ -2147483648
float          浮点型  32 bits (双字符)   
unsignedchar  字符型  8 bits (一个字节)  0 到  255
unsignedshort 短整型  16 bits (一个字符)  0 到  65535
unsignedint   双整型  32 bits (双字符)  0 到  4,294,967,295
变量必须在使用前声明。所以,在宏指令,所有的变量都必须在语句使用前都被声明完成。声明变量时,
先定义变量的类型,后面再跟着变量名称。
如下范例:
int        a
short  b, switch
float    pressure
unsignedshort   c
数组声明
宏指令支持一维数组  (下标从  0 开始)。声明数组变量时,先定义数组变量的类型,变量名称,接着就是该数组变量的个数,变量个数必须放置在[]符号中。数组变量的长度为1 ~ 4096。一个宏指令中最多只支持4096个变量。
如下范例:
int        a[10]
short  b[20], switch[30]
float    pressure[15]
数组的下标最小为0,最大下标为(数组的长度-1)
如下范例:   
chardata[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….
这些其实都是C++语法基础,有基础的同学过一篇就好。
3)宏指令中还运算符号也是必不可少的组成部分。
运算符通常被用来指定数据是如何被操作和运算,如下:(在任何一个语句中,运算符左边的变量结果均依据运算符右边的条件而获得。
运算符号      描述          举例
=             赋值运算符号  pressure = 10
数学运算符号  描述         举例
+             加           A = B + C
-             减           A = B – C
*             乘           A = B * C
/             除           A = B / C
%            求余(返回剩余数)  A = B % 5
比较运算符号  描述                 举例
<             小于                 if A < 10 then B = 5
<=            小于或者等于         if A <= 10 then B = 5
>             大于                 if A > 10 then B = 5
>=             大于或者等于        ifA >= 10 then B = 5
==            等于                 if A == 10 then B = 5
<>            不等于               if A <> 10 then B = 5
逻辑运算符号  描述                   举例
And          与                    if A < 10 and B > 5 then C = 10
Or            或                   if A >= 10 or B > 5 thenC = 10
Xor            异或                if A xor 256 then B = 5
Not            非                  if not A then B = 5
4)另外还有移位元和位运算符号,通常被用来操作字符型变量、短整型变量和双整型变量的位。在一个语句中,这些运算符号的优先权是在从该语句的左边到右边依此执行的。即在语句中左边位置的优先执行,依次从左到右执行。
位运算符号  描述           举例
&          位与运算         A= B & 0xf
|          位或运算         A= B | C
^          位异或运算       A =B ^ C
~          位取反运算       A =~B
所有运算符号之间都有执行的先后顺序,叫做优先权 ,
上述所有运算符号的优先权从高到低详细如下所述:
1. 位于圆括号里面的运算符号最优先
2. 数学运算符号
3. 移位和位运算符号
4. 比较运算符号
5. 逻辑运算符号
6. 赋值运算符号
这些优先级按数学常识了解下就好,不必硬记,实际使用时不知道先后顺序,通过符号()加以实现就好。
另外宏指令中还会使用威纶通触摸屏厂家事先定义好的变量,或数组,或函数名。这些我们统称关键字,也有人叫关键词,为避免名称混淆,我们自己定义的如函数名,变量名等都不能与这些事先定义的关键字相同。
下面的关键词为宏指令保留使用:
+, -, *,/, %, >=, >, <=, <, <>, ==, and, or, xor, not, <<,>>,=, &, |, ^, ~
exit,macro_command, for, to, down, step, next, return, bool, short, int, char,float, void, if, then,
else,break, continue, set, sub, end, while, wend, true, false
SQRT,CUBERT, LOG, LOG10, SIN, COS, TAN, COT, SEC, CSC, ASIN, ACOS, ATAN, BIN2BCD,
BCD2BIN,DEC2ASCII, FLOAT2ASCII, HEX2ASCII, ASCII2DEC, ASCII2FLOAT, ASCII2HEX, FILL,RAND,
DELAY, SWAPB,SWAPW, LOBYTE, HIBYTE, LOWORD, HIWORD, GETBIT, SETBITON, SETBITOFF,
INVBIT,ADDSUM, XORSUM, CRC, INPORT, OUTPORT, POW, GetError, GetData, GetDataEx,
SetData,SetDataEx, SetRTS, GetCTS, Beep, SYNC_TRIG_MACRO, ASYNC_TRIG_MACRO, TRACE,
FindDataSamplingDate,FindDataSamplingIndex, FindEventLogDate, FindEventLogIndex
StringGet,StringGetEx, StringSet, StringSetEx, StringCopy, StringMid, StringDecAsc2Bin,
StringBin2DecAsc,StringDecAsc2Float, StringFloat2DecAsc, StringHexAsc2Bin,
StringBin2HexAsc,StringLength, StringCat, StringCompare, StringCompareNoCase, StringFind,
StringReverseFind,StringFindOneOf, StringIncluding, StringExcluding, StringToUpper,
StringToLower,StringToReverse, StringTrimLeft, StringTrimRight, StringInsert。






欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4