广州微嵌组态软件宏指令帮助
如何使用宏指令:...........................................................................................................................2
基本说明................................................................................................................................
如何使用宏指令:...........................................................................................................................2
基本说明...........................................................................................................................................3
1 宏指令数据............................................................................................................................3
1.1 常量和变量................................................................................................................3
1.2 数据类型....................................................................................................................4
2 宏指令语法...........................................................................................................................5
3 数组.......................................................................................................................................5
3.1 数组............................................................................................................................5
3.2 指针............................................................................................................................6
自由
实现方法...........................................................................................................................6
使用自由协议模拟MODBUS-RUT ........................................................................................7
附录宏指令函数...............................................................................................................................9
数学运算函数...........................................................................................................................9
Sqrt ....................................................................................................................................9
Sin .....................................................................................................................................9
Cos ..................................................................................................................................10
Tan ..................................................................................................................................10
Cot...................................................................................................................................11
Sec...................................................................................................................................11
Csc...................................................................................................................................12
Asin .................................................................................................................................12
Acos ................................................................................................................................12
Atan.................................................................................................................................13
Rand ................................................................................................................................13
数据转换函数.........................................................................................................................14
Bcd2Bin ..........................................................................................................................14
Bcd2Bin ..........................................................................................................................14
Bin2Bcd ..........................................................................................................................15
Bin2Bcd ..........................................................................................................................15
Dec2Ascii........................................................................................................................16
Dec2Ascii........................................................................................................................16
Dec2Ascii........................................................................................................................17
Dec2Ascii........................................................................................................................17
Ascii2Float ......................................................................................................................18
Hex2Ascii........................................................................................................................19
Hex2Ascii........................................................................................................................19
Ascii2Dec........................................................................................................................20
Ascii2Dec........................................................................................................................20
Ascii2Hex........................................................................................................................21
Ascii2Hex........................................................................................................................21
数据操作函数.........................................................................................................................22
Fill ...................................................................................................................................22
SwapB .............................................................................................................................23
SwapW............................................................................................................................23
Lobyte .............................................................................................................................24
Hibyte..............................................................................................................................24
Loword............................................................................................................................25
Hiword ............................................................................................................................25
位状态转换.............................................................................................................................26
GetBit ..............................................................................................................................26
GetBit ..............................................................................................................................26
SetBitOn..........................................................................................................................27
SetBitOn..........................................................................................................................27
SetBitOff .........................................................................................................................28
SetBitOff .........................................................................................................................28
InvBit ..............................................................................................................................29
InvBit ..............................................................................................................................29
通讯函数.................................................................................................................................30
AddSum ..........................................................................................................................30
XorSum...........................................................................................................................30
GetWordData ..................................................................................................................30
GetByteData....................................................................................................................31
SetWordData...................................................................................................................31
SetWordData...................................................................................................................32
SetByteData ....................................................................................................................32
SetByteData ....................................................................................................................33
LRC.................................................................................................................................33
CRC.................................................................................................................................34
Output .............................................................................................................................34
Input ................................................................................................................................35
其他.........................................................................................................................................35
CubeRt ............................................................................................................................35
Log10 ..............................................................................................................................35
log ...................................................................................................................................36
Pow .................................................................................................................................36
Delay ...............................................................................................................................37
如何使用宏指令:
1.菜单-设定-宏指令-指令编辑器
2.新增宏指令,名称不能使用数字开头和特殊符号
3.编写过程中,可以完全遵循 C/C++规则
4.编写完成后,点击编译,编译通过以后,可以使用这一条指令
5.通过编译后的宏指令可以放在全局宏、页面宏、按键触发宏、条件
触发宏
基本说明
1宏指令数据
1.1 常量和变量
1.1.1 常量
在使用之前已经预先设定并且在整个程序的运行过程中保持不变,且不能修改的数据称
为常量。比如:
整型常量
类型 位数(位) 范围
short(有符号短整型) 16 -32768~32767
unsigned short(无符号短整型) 16 0~65535
int(有符号整型) 32 (-2^31)~(2^31 – 1)
unsigned int(无符号整型) 32 0~(2^32-1)
1.1
比如 1,2,3,等。
八进制和十六进制
在数字前面添加前缀 0x 或者 0X 来表示十六进制值,如 0x10 或者 0X10。每位表示的
十进制范围为 0-15,对应的十六进制字符为 0-9,A,B,C,D,E,F。如 0xFF,0x1F 等。
在数字掐面添加前缀 0(零)表示使用八进制,如 020.每位表示的十进制范围为 0-7,
对应的八进制字符也为 0-7,如 06,07,010 等。
字符常量
类型 位数(位) 范围
char 8 0~255
表 1.2
比如’a’,’b’,’c’等。
浮点数常量
类型 位数(位) 范围
float 32 至少能表示 6 位有效数字
double 64 至少能表示 10 位有效数字
表 1.3
比如 0.1,1.1 等。
布尔常量
类型 位数(位) 范围
bool 1 0(false)或者 1(true)
表 1.4
1.1.2 变量
在程序运行过程中可能变化或被赋值的数据被称为变量。比如:
int a,b;
上句中声明了变量 a 和 b。
变量的类型可以为常量类型中介绍的类型。比如:
int a; a 为有符号变量
unsigned int b; b 为无符号变量
char c; c 为字符变量
float f; f 为 float 变量
double d; d 为 double 变量
int i[10]; i 为有符号数组变量(数组介绍见 3.1)
变量名的命名规则
①由英文字母、数字和下划线组成,首字符不能为数字;
②名字长度不超过 32 个字符;
③名字不能与系统保留寄存器名称相同;
④名字不能与关键字名称相同(关键字介绍见 1.3);
1.2 数据类型
数据类型可以分为整型、浮点型、布尔型、字符型,对应的存储空间和存储的数据范围
见表 1.1 至表 1.4。
1.3 关键字
auto、break、case、char、const、continue、default、do、double、else、enum、extern、
float、for、goto、if、int、long、register、return、short、signed、sizeof、static、struct、switch、
typedef、union、unsigned、void、volatile、while。
Sqrt、Sin、Cos、Tan、Cot、Sec、Csc、Asin、Acos、Atan、Rand、Bcd2Bin、Bin2Bcd、
Dec2Ascii、Ascii2Float、Float2Ascii、Hex2Ascii、Ascii2Dec、Ascii2Hex、Fill、SwapB、SwapW、
LoByte、HiByte、LoWord、HiWord、GetBit、SetBitOn、SetBitOff、InvBit、AddSum、XorSum、
GetWordData、GetByteData、SetWordData、SetByteData、LRC、CRC、Output、Input、CubeRt、
Log10、Log、Pow、Delay。
上面的这些关键字为宏指令内部使用,在编写宏指令时变量名不能与这些关键字名称相
同。
2 宏指令语法
2.1 运算符
2.2 语句
3 数组
3.1 数组
程序中通常使用数组来存储数据。
数组的定义格式:
[count];
或者
[count] = {value_1,value_2,…};
或者
[ ] = {value_1,value_2,…};
表示数组保存数据的类型,如整型、字符型等。
表示定义的数组名。
count 表示该数组存储的数据元素个数。
比如:
int month[12] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
或者
int month[] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
month 为含有 12 个元素的数组变量名,它存储的数据的数据类型为 int。同理,可以使
用其他数据类型定义数组来存放元素。
如果要使用数组 month 里元素,那么应该注意,数组的下标([]里面的数字)是从 0 开
始算起的,比如要使用 month 里的第 1 个元素,并把它赋给变量 value_1,则:
value_1 = month[0];
如果把 month 里的第 2 个元素赋给变量 value_2,则:
value_2 = month[2];
注意:
如果这样定义 month 数组:
int month[12];
则 month 存储的数据是未知的,如果此时直接使用 month 中的元素的话可能不会得到
预期的结果。
3.2 指针
指针提供了一种用来使用存储器地址的符号方法。如下面定义一个字符串指针:
char *p = “abcde”;
其中 p 是一个指针变量,该变量内部存储这字符串”abcde”中的首字符在存储器中的地
址。
数组标记实际上就是使用指针的一种形式,比如上面的例子中:
char *p = “abcde”;
与
char p[] = {‘a’,’b’,’c’,’d’,’e’,’\0’};(而非 char p[] = {‘a’,’b’,’c’,’d’,’e’};)。
是等同的。
在宏指令中使用指针的话,比如:
char *source = "56.8";//或者char source[4] = {'5', '6', '.', '8'};
float result;
unsigned int count = 4;
Ascii2Float(source,result,count);
因为
char *source = “56.8”;
相当于
char source[] = {‘5’,’6’,’.’,’8’,’\0’};
但是最后一个字符’\0’是不需要用到的,所以在函数 Ascii2Float 中指定了有效内容的个数,
如上面的例子中为 4 个有效内容,所以把指针 source 传递给该函数时候,该函数会自动把’\0’
字符忽略掉。
自由协议实现方法
1. 工程属性选用 FreeProtocol 协议;
2. 打开控制令编辑器(设定—>宏指令—>宏指令编辑器)或者直接按 F8;
3. 新增宏指令,在宏指令里面使用到Output()、Input()、SetWordData()、GetWordData()
这四个函数;注:可以参考附一
4. Output()函数,把设定好的字符串发送到相应的串口输出;Input()函数,从
设定好的串口读取需要的字符串;
5. 采集显示:
SetWordData()函数,把 Input()函数接收回来的数据,发送给 HIM 用户
自定义寄存器里,然后在显示控件里填上已经有数据的 HIM 寄存器,即可显示单
片机采集上来的数据;
6. 改写发送:
在显示控件了把需要改写的数据绑定 HIM 寄存器,使用 GetWordData()获
得修改后的数据,通过 output()发送把数据发送到单片机;
使用自由协议模拟 MODBUS-RUT
//COM1:freeprotocol
//COM2:modbus-RTU
/*自由协议通道采集数据存放在系统通道,在界面显示
modbus 通道采集到的数据,处理后,发送到自由协议的设备上*/
unsigned char command[32];
unsigned char response[32];
unsigned char temp1,temp2;
unsigned short address, checksum;
unsigned short read_no, return_value1,
return_value2,return_value3,read_data[2], i;
unsigned short com2_data;
/****************以上是新建需要使用的变量***********/
Fill(command, 0, 32);// initialize command[0]~command[31] to 0
Fill(response, 0, 32); //把 command 和 response 初始化
command[0] = 0x1;// 设置发送字符窜的第一个数据 station number
command[1] = 0x3;// 设 置 发 送 字 符 窜 的 第 二 个 数 据 read holding
registers (function code is 0x3)
address = 0;// starting address (4x_1) is 0
HiByte(address, command[2]);//设置发送字符窜的第三个数据
LoByte(address, command[3]);//设置发送字符窜的第四个数据
read_no = 2; // the total words of reading is 2 words
HiByte(read_no, command[4]);//设置发送字符窜的第五个数据
LoByte(read_no, command[5]);//设置发送字符窜的第六个数据
CRC(command, 6,checksum);// calculate 16-bit CRC
LoByte(checksum, command[6]); //设置发送字符窜的第七个数据
HiByte(checksum, command[7]); //设置发送字符窜的第八个数据
Output(1,command,8, return_value1); //把设置好的 8 个数据,从通讯口
1 发送出去,具体参数设置参考
Output()使用
Input(1,response,9,return_value2); //从通讯口 1 等待接收 9 个字符数
据 , 并 且 放 在
response[0]~response[8],具体参
数设置参考 Intput()使用
CRC(response, 7,checksum); //对采集上来的 9 个数据中前 7 个进行了
CRC-16 校验,校验结果存放在 checksum
LoByte(checksum, temp1); //把 checksum 的低 8 位放在 temp1
HiByte(checksum, temp2); //把 checksum 的高 8 位放在 temp1
if(temp1==response[7]&&temp2==response[8]) //CRC 校验码进行对比
判别时候接收正确
{
//CRC 检验正确后,把采集来的数据中指定需要的数据放在 read_data[]
read_data[0] = response[4] + (response[3] << 8);
read_data[1] = response[6] + (response[5] << 8);
SetWordData(0 ,1 ,0 ,2,0 , read_data); // 通过 SetWordData()函数,
把 read_data 送到系统寄存器中,具体使用需要参考 SetWordData()函数
使用
}
GetWordData( 2, 1, 2, 2, 3, &com2_data); // 通讯口 2,使用的是
modbus-RTU 协议,
command[0] = 0x1;// station number
command[1] = 0x6;// wirte holding registers (function code is 0x6)
address=10;
checksum=0;
HiByte(address, command[2]);
LoByte(address, command[3]);
HiByte(com2_data, command[4]);
LoByte(com2_data, command[5]);
CRC(command, 6,checksum);// calculate 16-bit CRC
LoByte(checksum, command[6]);
HiByte(checksum, command[7]);
Output(1,command,8, return_value3); //发出定义好 8 个字符串
附录宏指令函数
数学运算函数
Sqrt
函数名称 Sqrt
语法 Sqrt(source, result);
描述 函数功能:求出 source的平方根并保存到 result中。
函数中第一个参数 source存放的是用户给出的值,且大于等于 0,数据类
型为 float。
函数中第二个参数 result保存的是最终的结果,数据类型为 float。
范例 float source = 9;
float result;
Sqrt(source, result);// result == 3
**********************************************************
Sin
函数名称 Sin
语法 Sin(result, angle);
描述 此函数的功能相当于数学中的sin公式。
第一个参数result是保存此函数运算结果值,第二个参数angle是用户给
出的值,两个参数的数据类型都为float。
此函数运算结果保存在函数中的result中,它的值等于angle的sin值,
相当于数学公式的result = sin(angle)。
成功返回TRUE,失败返回FALSE。
范例 float angle = 30;
float result;
Sin(result, angle);// result == 0.5
Sin(result, 90);// result == 1
**********************************************************
Cos
函数名称 Cos
语法 Cos(result,angle);
描述 此函数的功能相当于数学中的cos公式。
第一个参数result是保存此函数运算结果值,第二个参数angle是用户给
出的值,两个参数的数据类型都为float。
此函数运算结果保存在函数中的result中,它的值等于angle的cos值,
相当于数学公式的result = cos(angle)。
成功返回TRUE,失败返回FALSE。
范例 float result;
float angle = 60;
Cos(result,angle);//result == 0.5
**********************************************************
Tan
函数名称 Tan
语法 Tan(result, angle);
描述 此函数的功能相当于数学中的tan公式。
第一个参数result是保存此函数运算结果值,第二个参数angle是用户给
出的值,两个参数的数据类型都为float。
此函数运算结果保存在函数中的result中,它的值等于angle的tan值,
相当于数学公式的result = tan(angle)。
成功返回TRUE,失败返回FALSE。
范例 float angle = 45;
float result;
Tan(result, angle);// result == 1
**********************************************************
Cot
函数名称 Cot
语法 Cot(result,angle);
描述 此函数的功能相当于数学中的cot公式。
第一个参数result是保存此函数运算结果值,第二个参数angle是用户给
出的值,两个参数的数据类型都为float。
此函数运算结果保存在函数中的result中,它的值等于angle的cot值,
相当于数学公式的result = cot(angle)。
成功返回TRUE,失败返回FALSE。
范例 float result;
float angle = 30;
Cot(result, angle);//result == 1.732
**********************************************************
Sec
函数名称 Sec
语法 Sec(result,angle);
描述 此函数的功能相当于数学中的sec公式。
第一个参数result是保存此函数运算结果值,第二个参数angle是用户给
出的值,两个参数的数据类型都为float。
此函数运算结果保存在函数中的result中,它的值等于angle的sec值,
相当于数学公式的result = sec(angle)。
成功返回TRUE,失败返回FALSE。
范例 float angle = 60;
float result;
Sec(result,angle);// result == 2
**********************************************************
Csc
函数名称 Csc
语法 Csc(source, angle);
描述 此函数的功能相当于数学中的csc公式。
第一个参数result是保存此函数运算结果值,第二个参数angle是用户给
出的值,两个参数的数据类型都为float。
此函数运算结果保存在函数中的result中,它的值等于angle的csc值,
相当于数学公式的result = csc(angle)。
成功返回TRUE,失败返回FALSE。
范例 float result;
float angle = 30;
Csc(result, angle);//source == 2
**********************************************************
Asin
函数名称 Asin
语法 Asin(source, angle);
描述 此函数的功能相当于数学中的arcsin公式。
第一个参数source是用户给出的值,第二个参数angle是此函数运算的结
果,两个参数的数据类型都为float。
此函数运算结果保存在函数中的angle中,它的值等于source的arcsin
值,相当于数学公式的angle = arcsin(source)。
成功返回TRUE,失败返回FALSE。
范例 float source = 0.5;
float angle;
Asin(source, angle);//angle == 30
**********************************************************
Acos
函数名称 Acos
语法 Acos(source, angle);
描述 此函数的功能相当于数学中的arccos公式。
第一个参数source是用户给出的值,第二个参数angle是此函数运算的结
果,两个参数的数据类型都为float。
此函数运算结果保存在函数的angle中,它的值等于source的arccos值,
相当于数学公式的angle = arccos(source)。
成功返回TRUE,失败返回FALSE。
范例 float source = 0.5;
float angle;
Acos(source, angle);//结果值angle == 60
**********************************************************
Atan
函数名称 Atan
语法 Atan(source, angle);
描述 此函数的功能相当于数学中的arctan公式。
第一个参数source是用户给出的值,第二个参数angle是此函数运算的结
果,两个参数的数据类型都为float。
此函数运算结果保存在函数中的angle中,它的值等于source的arctan
值,相当于数学公式的angle = arctan(source)。
成功返回TRUE,失败返回FALSE。
范例 float source = 1.732;
float angle;
Atan(source,angle);//angle == 60
**********************************************************
Rand
函数
本文档为【广州微嵌组态软件宏指令帮助】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。