- 概述
智嵌物联串口IO模块提供了用户编程接口,增强了应用的灵活性,简化了用户的编程的难度,缩短了开发产品的周期;用户不需要了解IO板卡底层驱动,只需将控制逻辑和通讯协议嵌入其中即可。
串口IO模块提供keil开发环境下的函数库,功能强大,使用方便。开发人员只需略懂C语言(提供详尽技术指导和咨询)就可以在本司串口IO平台上开发所需功能。
- 开关量相关函数
- Write_Relay函数
函数原型如下:
![poYBAGIQXymAXiQgAACF3bMkkFM425.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXymAXiQgAACF3bMkkFM425.png)
该函数需被其他函数调用才能使用。
举例:
Write_Relay(0,1);//闭合第一路继电器的常开触点,断开常闭触点。
Write_Relay(1,0);//断开第二路继电器的常闭触点,打开常开触点。
在使用过程中,注意传入的参数(channel,status)不能出错,channel的范围为0到N,N为控制板IO输出点个数;status的值只能为0或1。参数超出定义范围时,函数将返回错误信息。
- Read_Relay函数
函数原型如下:
![pYYBAGIQXymAU63LAAB1sbz1Bdc328.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXymAU63LAAB1sbz1Bdc328.png)
该函数需被其他函数调用才能使用。
举例:
unsigned char temp = 0;
temp =Read_Relay(0);//读取第一路的输出状态并将结果赋给temp。
temp =Read_Relay(3);//读取第四路的输出状态并将结果赋给temp。
然后根据temp的值即可判断当前IO输出的状态:
temp为0则:常开触点断开,常闭触点闭合。
temp为1则:常闭触点断开,常开触点闭合。
temp为2则:传入的参数channel错误。
temp为3则:其他未知错误。
- 开关量输入相关函数
- Read_IN函数
函数原型如下:
![poYBAGIQXymAVRsXAABbj1s6a6s531.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXymAVRsXAABbj1s6a6s531.png)
该函数需被其他函数调用才能使用。
举例:
unsigned char temp = 0;
temp =Read_IN(0);//读取第一路的输入状态并将结果赋给temp。
temp =Read_Relay(3);//读取第四路的输入状态并将结果赋给temp。
然后根据temp的值即可判断当前IO输入的状态:
temp为0则:该路为无信号输入(逻辑值为0,低电平)。
temp为1则:该路为有信号输入(逻辑值为1,高电平)。
temp为2则:传入的参数channel错误。
- 串口通讯相关函数
智嵌物联双串口IO控制板均有RS232和RS485接口,这两种接口可以独立使用。
串口接收缓冲器以及缓冲器大小在“ZQWL_IO_xBNRRx.h”文件中有定义:
![poYBAGIQXymAeBaOAAAg7xzgwIc760.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXymAeBaOAAAg7xzgwIc760.png)
- RS232_Init函数
函数原型如下:
![pYYBAGIQXyqAJ5L-AAC40ya62XI506.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXyqAJ5L-AAC40ya62XI506.png)
该函数为RS232串口初始化函数,如果要使用RS232通讯功能,必须调用该函数来初始化通讯相关参数。
举例:
![pYYBAGIQXyqATlHSAAAJX7g4oOg080.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXyqATlHSAAAJX7g4oOg080.png)
注意该函数的第三个参数parity,必须为以下三种:
![poYBAGIQXyuAWQ6zAAADgx7TV4I798.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXyuAWQ6zAAADgx7TV4I798.png)
。
如果该函数调用成功则返回值为0,否则返回相应的错误信息。
- RS485_Init函数
函数原型如下:
![poYBAGIQXyuAdDF2AAC55-Cad34746.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXyuAdDF2AAC55-Cad34746.png)
该函数为RS485串口初始化函数,如果要使用RS485通讯功能,必须调用该函数来初始化通讯相关参数。
举例:
![poYBAGIQXyuAG62XAAAJmpdRkFg714.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXyuAG62XAAAJmpdRkFg714.png)
注意该函数的第三个参数parity,必须为以下三种:
。
如果该函数调用成功则返回值为0,否则返回相应的错误信息。
- RS232_Send_Data函数
函数原型如下:
![pYYBAGIQXyuAI045AABQJzCOlSQ024.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXyuAI045AABQJzCOlSQ024.png)
该函数为串口发送函数,调用该函数前必须正确调用RS232_Init()函数。
举例1,直接发送字符串:
RS232_Send_Data("1234567890",10);
举例2,将数组中数据发送出去:
unsigned char temp[10];
RS232_Send_Data(temp,10);
- RS485_Send_Data函数
函数原型如下:
![pYYBAGIQXyuAVEfhAABRCq7kB8U390.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXyuAVEfhAABRCq7kB8U390.png)
该函数为串口发送函数,调用该函数前必须正确调用RS485_Init()函数。
举例1,直接发送字符串:
RS485_Send_Data("1234567890",10);
举例2,将数组中数据发送出去:
unsigned char temp[10];
RS485_Send_Data(temp,10);
- RS232_Recv_Handler函数
函数原型如下:
![poYBAGIQXyuARtC0AACQJOUVd2w806.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXyuARtC0AACQJOUVd2w806.png)
该函数为类似中断函数,不能被其他函数调用。必须在正确调用RS232_Init()函数后该函数才能生效。建议在该函数中首先将buff中的数据复制出来,然后退出,在别的函数中进行数据的处理。
举例:
![pYYBAGIQXyyAfhF5AAAl3qnsjvk987.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXyyAfhF5AAAl3qnsjvk987.png)
- RS485_Recv_Handler函数
函数原型如下:
![poYBAGIQXyyAF0mMAACOt9MbdL8662.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXyyAF0mMAACOt9MbdL8662.png)
该函数为类似中断函数,不能被其他函数调用。必须在正确调用RS485_Init()函数后该函数才能生效。建议在该函数中首先将buff中的数据复制出来,然后退出,在别的函数中进行数据的处理。
举例:
![poYBAGIQXyyAdb69AAAjqCZYHEk125.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXyyAdb69AAAjqCZYHEk125.png)
- 系统指示灯相关函数
该系列控制板有1个系统LED指示灯,可以用来指示系统运行的状态。
- RUN_LED_Toggle函数
函数原型如下:
![pYYBAGIQXyyAMyZhAABNziPgoco773.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXyyAMyZhAABNziPgoco773.png)
此函数实现系统LED的状态翻转功能(调用后原来熄灭则会点亮,原来点亮则会熄灭)。
举例:
RUN_LED_Toggle();//调用后,指示灯状态翻转。
- RUN_LED_ON函数
函数原型如下:
![pYYBAGIQXyyANOnkAABKJCT4kDI349.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXyyANOnkAABKJCT4kDI349.png)
举例:
RUN_LED_ON();//点亮系统LED指示灯
- RUN_LED_OFF函数
函数原型如下:
![poYBAGIQXyyANPPSAABKaON2I1M934.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXyyANPPSAABKaON2I1M934.png)
举例:
RUN_LED_OFF();//熄灭系统LED指示灯
- 延时相关函数
- Delay_ms函数
函数原型如下:
![pYYBAGIQXy2APC66AABDF9N_hJY181.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXy2APC66AABDF9N_hJY181.png)
举例:
Delay_ms(500);//延时500毫秒。
Delay_ms(2000);//延时2000毫秒。
- Delay_us函数
函数原型如下:
![poYBAGIQXy2AEBANAABRSBGt4sA051.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXy2AEBANAABRSBGt4sA051.png)
举例:
Delay_us(500);//延时500微秒。
Delay_us(999);//延时999微秒。
函数原型如下:
![pYYBAGIQXy2AIKzSAAB1lBK8cPc237.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXy2AIKzSAAB1lBK8cPc237.png)
该函数为中断函数,不能被其他函数调用。每隔1ms中断一次,用户以此为基础可以设计出各种定时服务功能。例如设计一个10ms定时服务功能:
![poYBAGIQXy2AGjWrAABV7HPGjtQ878.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXy2AGjWrAABV7HPGjtQ878.png)
- 看门狗相关函数
- IWDG_Init函数
函数原型如下:
![pYYBAGIQXy2AJQYtAADJjzsd6uU012.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXy2AJQYtAADJjzsd6uU012.png)
举例:
IWDG_Init(WD_1000MS);//设置看门狗定时器为1000毫秒。
IWDG_Init(WD_2000MS);//设置看门狗定时器为2000毫秒。
- Feed_Dog函数
函数原型如下:
![poYBAGIQXy2Ac653AAAqwgAi4-4022.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXy2Ac653AAAqwgAi4-4022.png)
如果调用了IWDG_Init(),那么, Feed_Dog()函数就必须周期调用,并且调用周期必须小于看门狗定时器设定值。否则,系统将不断的复位。
建议在产品开发阶段先不用看门狗功能,产品发布时再加上此功能。
- Flash相关函数
该系列控制板均提供128字节的用户flash空间,可以用来存放控制板掉电后需要保存的参数,比如波特率,地址码等。
- User_Flash_Write函数
函数原型如下:
![pYYBAGIQXy6ANQJwAACsPCHrvos325.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXy6ANQJwAACsPCHrvos325.png)
举例:
![poYBAGIQXy6AKmuQAAAftixOKeU309.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXy6AKmuQAAAftixOKeU309.png)
- User_Flash_Read函数
函数原型如下:
![poYBAGIQXy6AQzaaAACdEBaX2AQ388.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXy6AQzaaAACdEBaX2AQ388.png)
举例:
![pYYBAGIQXy6ABMfJAAAmKw6B5Xo012.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXy6ABMfJAAAmKw6B5Xo012.png)
- 系统异常相关函数
- HardFault_Handler函数
函数原型如下:
![poYBAGIQXy6AQE5QAABY4XUDn4A871.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXy6AQE5QAABY4XUDn4A871.png)
当系统有异常时,比如指针操作不当、数组操作不当等,会进入此中断。
- 系统复位相关函数
- MCU_Soft_Reset函数
函数原型如下:
![pYYBAGIQXy-AQHRAAABEcZwYkgk065.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXy-AQHRAAABEcZwYkgk065.png)
调用该函数后,系统将复位。
- CAN相关函数
只有控制板硬件具有CAN通讯的版本才支持CAN相关函数。
CAN相关的数据结构定义:
![poYBAGIQXzCAMtNnAAn_l79TetY226.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXzCAMtNnAAn_l79TetY226.png)
- CAN_Configuration函数
![poYBAGIQXy-AaFvTAALmY8GDNBU707.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXy-AaFvTAALmY8GDNBU707.png)
使用CAN通讯前必须正确调用该函数。
- CAN_Recv_IRQHandler函数
![pYYBAGIQXy-ARIigAALgCnER7p8510.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXy-ARIigAALgCnER7p8510.png)
例如:
![pYYBAGIQXzCAanuhAAS0lXg5cls865.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXzCAanuhAAS0lXg5cls865.png)
- CAN_Send_Data函数
![poYBAGIQXzCAWbo0AAMMYg8L2Hc267.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXzCAWbo0AAMMYg8L2Hc267.png)
- main函数
该函数为系统入口函数,提供如下示例:
![pYYBAGIQXzCAPNKDAArS0oF0FZ8237.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXzCAPNKDAArS0oF0FZ8237.png)
- 模块编程
- 开发环境
该模块开发环境使用keil 5.10版本(其他版本未验证),有关keil的使用教程请参考其他开发文档,keil5的安装包在MDK5.zip里面。
在“软件包”里有该控制板的keil5工程
打开“软件包”:
![pYYBAGIQXzGAUvmjAAAMLPY1U_w270.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXzGAUvmjAAAMLPY1U_w270.png)
此即为该控制板的工程文件, 打开文件:
![poYBAGIQXzGAKzJDAAAI_Bqb03w644.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXzGAKzJDAAAI_Bqb03w644.png)
打开“Proj”:
![pYYBAGIQXzGAJDYnAAA9kkYQ5kY261.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXzGAJDYnAAA9kkYQ5kY261.png)
双击上图中的“pro”,则可以通过keil软件打开该工程,工程配置如下:
![poYBAGIQXzGAB8OcAAH5w5s_O6E180.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXzGAB8OcAAH5w5s_O6E180.png)
有关KEIL软件的使用请自己查找资料学习。
工程编译后会生成一个IO_APP.bin文件(路径:ZQWL_IO_APP(双串口+CAN)_V1.2\project\BIN):
![poYBAGIQXzGAc9WaAAAQE4j5SXw008.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXzGAc9WaAAAQE4j5SXw008.png)
如果是其他网络模块,则需要将“xBXRA16_V1.0.lib”从工程中移除,再添加上相对应的lib文件即可(路径在:ZQWL_IO_APP\App):
![pYYBAGIQXzGAExM6AAALk31oNxI441.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXzGAExM6AAALk31oNxI441.png)
- 程序下载
智嵌串口IO模块的固件是通过《智嵌物联 串口继电器控制板固件升级工具》来下载程序的:
![pYYBAGIQXzKAFZO8AADIfz_Njy8864.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXzKAFZO8AADIfz_Njy8864.png)
点击上图的“浏览”,将编译好的IO_APP.bin文件载入软件,然后点“打开”,接点“开始升级”,即可实现固件的下载,下完成后自动运行:
![poYBAGIQXzKAJfLzAACAUhOZa8Y362.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXzKAJfLzAACAUhOZa8Y362.png)
- 程序出错处理
在调试程序时难免会出现程序出错,出错后可能造成不能直接对模块进行固件下载,这时需要按照如下步骤操作:
第一步:断电。
第二步:将拨码开关全部拨到OFF状态(强制进入升级固件状态)。
第三步:上电,此时看到模块的运行灯快速闪烁,说明进入到了固件下载模式,此时就可以对模块下载固件了。注意此过程中要保证拨码开关一直全OFF状态。
注意,智嵌物联网ZQWL的部分网络IO控制器也支持编程功能,如型号ZQWL-NET8880M,Smart IO,该类产品功能更强大。除此之外,智嵌物联ZQWL新推出的Smart GW串口服务器也具有编程功能,该类产品通讯接口支持4G,网口,WIFI,CAN,RS485等,部分产品也具有IO扩展功能,性能更强大,使用更方便。
-
IO控制器
+关注
关注
0文章
26浏览量
7595
发布评论请先 登录
相关推荐
TMS320C6000 DSP软件可编程锁相环控制器指南
![TMS320<b class='flag-5'>C</b>6000 DSP软件<b class='flag-5'>可编程</b>锁相环<b class='flag-5'>控制器</b>指南](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
评论