为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

广州微嵌组态软件宏指令帮助

2011-09-01 37页 pdf 336KB 22阅读

用户头像

is_773584

暂无简介

举报
广州微嵌组态软件宏指令帮助 如何使用宏指令:...........................................................................................................................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,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索