- 概述
智嵌物聯(lián)串口IO模塊提供了用戶編程接口,增強(qiáng)了應(yīng)用的靈活性,簡(jiǎn)化了用戶的編程的難度,縮短了開(kāi)發(fā)產(chǎn)品的周期;用戶不需要了解IO板卡底層驅(qū)動(dòng),只需將控制邏輯和通訊協(xié)議嵌入其中即可。
串口IO模塊提供keil開(kāi)發(fā)環(huán)境下的函數(shù)庫(kù),功能強(qiáng)大,使用方便。開(kāi)發(fā)人員只需略懂C語(yǔ)言(提供詳盡技術(shù)指導(dǎo)和咨詢)就可以在本司串口IO平臺(tái)上開(kāi)發(fā)所需功能。
- 開(kāi)關(guān)量相關(guān)函數(shù)
- Write_Relay函數(shù)
函數(shù)原型如下:
![poYBAGIQXymAXiQgAACF3bMkkFM425.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXymAXiQgAACF3bMkkFM425.png)
該函數(shù)需被其他函數(shù)調(diào)用才能使用。
舉例:
Write_Relay(0,1);//閉合第一路繼電器的常開(kāi)觸點(diǎn),斷開(kāi)常閉觸點(diǎn)。
Write_Relay(1,0);//斷開(kāi)第二路繼電器的常閉觸點(diǎn),打開(kāi)常開(kāi)觸點(diǎn)。
在使用過(guò)程中,注意傳入的參數(shù)(channel,status)不能出錯(cuò),channel的范圍為0到N,N為控制板IO輸出點(diǎn)個(gè)數(shù);status的值只能為0或1。參數(shù)超出定義范圍時(shí),函數(shù)將返回錯(cuò)誤信息。
- Read_Relay函數(shù)
函數(shù)原型如下:
![pYYBAGIQXymAU63LAAB1sbz1Bdc328.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXymAU63LAAB1sbz1Bdc328.png)
該函數(shù)需被其他函數(shù)調(diào)用才能使用。
舉例:
unsigned char temp = 0;
temp =Read_Relay(0);//讀取第一路的輸出狀態(tài)并將結(jié)果賦給temp。
temp =Read_Relay(3);//讀取第四路的輸出狀態(tài)并將結(jié)果賦給temp。
然后根據(jù)temp的值即可判斷當(dāng)前IO輸出的狀態(tài):
temp為0則:常開(kāi)觸點(diǎn)斷開(kāi),常閉觸點(diǎn)閉合。
temp為1則:常閉觸點(diǎn)斷開(kāi),常開(kāi)觸點(diǎn)閉合。
temp為2則:傳入的參數(shù)channel錯(cuò)誤。
temp為3則:其他未知錯(cuò)誤。
- 開(kāi)關(guān)量輸入相關(guān)函數(shù)
- Read_IN函數(shù)
函數(shù)原型如下:
![poYBAGIQXymAVRsXAABbj1s6a6s531.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXymAVRsXAABbj1s6a6s531.png)
該函數(shù)需被其他函數(shù)調(diào)用才能使用。
舉例:
unsigned char temp = 0;
temp =Read_IN(0);//讀取第一路的輸入狀態(tài)并將結(jié)果賦給temp。
temp =Read_Relay(3);//讀取第四路的輸入狀態(tài)并將結(jié)果賦給temp。
然后根據(jù)temp的值即可判斷當(dāng)前IO輸入的狀態(tài):
temp為0則:該路為無(wú)信號(hào)輸入(邏輯值為0,低電平)。
temp為1則:該路為有信號(hào)輸入(邏輯值為1,高電平)。
temp為2則:傳入的參數(shù)channel錯(cuò)誤。
- 串口通訊相關(guān)函數(shù)
智嵌物聯(lián)雙串口IO控制板均有RS232和RS485接口,這兩種接口可以獨(dú)立使用。
串口接收緩沖器以及緩沖器大小在“ZQWL_IO_xBNRRx.h”文件中有定義:
![poYBAGIQXymAeBaOAAAg7xzgwIc760.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXymAeBaOAAAg7xzgwIc760.png)
- RS232_Init函數(shù)
函數(shù)原型如下:
![pYYBAGIQXyqAJ5L-AAC40ya62XI506.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXyqAJ5L-AAC40ya62XI506.png)
該函數(shù)為RS232串口初始化函數(shù),如果要使用RS232通訊功能,必須調(diào)用該函數(shù)來(lái)初始化通訊相關(guān)參數(shù)。
舉例:
![pYYBAGIQXyqATlHSAAAJX7g4oOg080.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXyqATlHSAAAJX7g4oOg080.png)
注意該函數(shù)的第三個(gè)參數(shù)parity,必須為以下三種:
![poYBAGIQXyuAWQ6zAAADgx7TV4I798.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXyuAWQ6zAAADgx7TV4I798.png)
。
如果該函數(shù)調(diào)用成功則返回值為0,否則返回相應(yīng)的錯(cuò)誤信息。
- RS485_Init函數(shù)
函數(shù)原型如下:
![poYBAGIQXyuAdDF2AAC55-Cad34746.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXyuAdDF2AAC55-Cad34746.png)
該函數(shù)為RS485串口初始化函數(shù),如果要使用RS485通訊功能,必須調(diào)用該函數(shù)來(lái)初始化通訊相關(guān)參數(shù)。
舉例:
![poYBAGIQXyuAG62XAAAJmpdRkFg714.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXyuAG62XAAAJmpdRkFg714.png)
注意該函數(shù)的第三個(gè)參數(shù)parity,必須為以下三種:
。
如果該函數(shù)調(diào)用成功則返回值為0,否則返回相應(yīng)的錯(cuò)誤信息。
- RS232_Send_Data函數(shù)
函數(shù)原型如下:
![pYYBAGIQXyuAI045AABQJzCOlSQ024.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXyuAI045AABQJzCOlSQ024.png)
該函數(shù)為串口發(fā)送函數(shù),調(diào)用該函數(shù)前必須正確調(diào)用RS232_Init()函數(shù)。
舉例1,直接發(fā)送字符串:
RS232_Send_Data("1234567890",10);
舉例2,將數(shù)組中數(shù)據(jù)發(fā)送出去:
unsigned char temp[10];
RS232_Send_Data(temp,10);
- RS485_Send_Data函數(shù)
函數(shù)原型如下:
![pYYBAGIQXyuAVEfhAABRCq7kB8U390.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXyuAVEfhAABRCq7kB8U390.png)
該函數(shù)為串口發(fā)送函數(shù),調(diào)用該函數(shù)前必須正確調(diào)用RS485_Init()函數(shù)。
舉例1,直接發(fā)送字符串:
RS485_Send_Data("1234567890",10);
舉例2,將數(shù)組中數(shù)據(jù)發(fā)送出去:
unsigned char temp[10];
RS485_Send_Data(temp,10);
- RS232_Recv_Handler函數(shù)
函數(shù)原型如下:
![poYBAGIQXyuARtC0AACQJOUVd2w806.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXyuARtC0AACQJOUVd2w806.png)
該函數(shù)為類似中斷函數(shù),不能被其他函數(shù)調(diào)用。必須在正確調(diào)用RS232_Init()函數(shù)后該函數(shù)才能生效。建議在該函數(shù)中首先將buff中的數(shù)據(jù)復(fù)制出來(lái),然后退出,在別的函數(shù)中進(jìn)行數(shù)據(jù)的處理。
舉例:
![pYYBAGIQXyyAfhF5AAAl3qnsjvk987.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXyyAfhF5AAAl3qnsjvk987.png)
- RS485_Recv_Handler函數(shù)
函數(shù)原型如下:
![poYBAGIQXyyAF0mMAACOt9MbdL8662.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXyyAF0mMAACOt9MbdL8662.png)
該函數(shù)為類似中斷函數(shù),不能被其他函數(shù)調(diào)用。必須在正確調(diào)用RS485_Init()函數(shù)后該函數(shù)才能生效。建議在該函數(shù)中首先將buff中的數(shù)據(jù)復(fù)制出來(lái),然后退出,在別的函數(shù)中進(jìn)行數(shù)據(jù)的處理。
舉例:
![poYBAGIQXyyAdb69AAAjqCZYHEk125.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXyyAdb69AAAjqCZYHEk125.png)
- 系統(tǒng)指示燈相關(guān)函數(shù)
該系列控制板有1個(gè)系統(tǒng)LED指示燈,可以用來(lái)指示系統(tǒng)運(yùn)行的狀態(tài)。
- RUN_LED_Toggle函數(shù)
函數(shù)原型如下:
![pYYBAGIQXyyAMyZhAABNziPgoco773.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXyyAMyZhAABNziPgoco773.png)
此函數(shù)實(shí)現(xiàn)系統(tǒng)LED的狀態(tài)翻轉(zhuǎn)功能(調(diào)用后原來(lái)熄滅則會(huì)點(diǎn)亮,原來(lái)點(diǎn)亮則會(huì)熄滅)。
舉例:
RUN_LED_Toggle();//調(diào)用后,指示燈狀態(tài)翻轉(zhuǎn)。
- RUN_LED_ON函數(shù)
函數(shù)原型如下:
![pYYBAGIQXyyANOnkAABKJCT4kDI349.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXyyANOnkAABKJCT4kDI349.png)
舉例:
RUN_LED_ON();//點(diǎn)亮系統(tǒng)LED指示燈
- RUN_LED_OFF函數(shù)
函數(shù)原型如下:
![poYBAGIQXyyANPPSAABKaON2I1M934.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXyyANPPSAABKaON2I1M934.png)
舉例:
RUN_LED_OFF();//熄滅系統(tǒng)LED指示燈
- 延時(shí)相關(guān)函數(shù)
- Delay_ms函數(shù)
函數(shù)原型如下:
![pYYBAGIQXy2APC66AABDF9N_hJY181.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXy2APC66AABDF9N_hJY181.png)
舉例:
Delay_ms(500);//延時(shí)500毫秒。
Delay_ms(2000);//延時(shí)2000毫秒。
- Delay_us函數(shù)
函數(shù)原型如下:
![poYBAGIQXy2AEBANAABRSBGt4sA051.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXy2AEBANAABRSBGt4sA051.png)
舉例:
Delay_us(500);//延時(shí)500微秒。
Delay_us(999);//延時(shí)999微秒。
函數(shù)原型如下:
![pYYBAGIQXy2AIKzSAAB1lBK8cPc237.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXy2AIKzSAAB1lBK8cPc237.png)
該函數(shù)為中斷函數(shù),不能被其他函數(shù)調(diào)用。每隔1ms中斷一次,用戶以此為基礎(chǔ)可以設(shè)計(jì)出各種定時(shí)服務(wù)功能。例如設(shè)計(jì)一個(gè)10ms定時(shí)服務(wù)功能:
![poYBAGIQXy2AGjWrAABV7HPGjtQ878.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXy2AGjWrAABV7HPGjtQ878.png)
- 看門狗相關(guān)函數(shù)
- IWDG_Init函數(shù)
函數(shù)原型如下:
![pYYBAGIQXy2AJQYtAADJjzsd6uU012.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXy2AJQYtAADJjzsd6uU012.png)
舉例:
IWDG_Init(WD_1000MS);//設(shè)置看門狗定時(shí)器為1000毫秒。
IWDG_Init(WD_2000MS);//設(shè)置看門狗定時(shí)器為2000毫秒。
- Feed_Dog函數(shù)
函數(shù)原型如下:
![poYBAGIQXy2Ac653AAAqwgAi4-4022.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXy2Ac653AAAqwgAi4-4022.png)
如果調(diào)用了IWDG_Init(),那么, Feed_Dog()函數(shù)就必須周期調(diào)用,并且調(diào)用周期必須小于看門狗定時(shí)器設(shè)定值。否則,系統(tǒng)將不斷的復(fù)位。
建議在產(chǎn)品開(kāi)發(fā)階段先不用看門狗功能,產(chǎn)品發(fā)布時(shí)再加上此功能。
- Flash相關(guān)函數(shù)
該系列控制板均提供128字節(jié)的用戶flash空間,可以用來(lái)存放控制板掉電后需要保存的參數(shù),比如波特率,地址碼等。
- User_Flash_Write函數(shù)
函數(shù)原型如下:
![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函數(shù)
函數(shù)原型如下:
![poYBAGIQXy6AQzaaAACdEBaX2AQ388.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXy6AQzaaAACdEBaX2AQ388.png)
舉例:
![pYYBAGIQXy6ABMfJAAAmKw6B5Xo012.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXy6ABMfJAAAmKw6B5Xo012.png)
- 系統(tǒng)異常相關(guān)函數(shù)
- HardFault_Handler函數(shù)
函數(shù)原型如下:
![poYBAGIQXy6AQE5QAABY4XUDn4A871.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXy6AQE5QAABY4XUDn4A871.png)
當(dāng)系統(tǒng)有異常時(shí),比如指針操作不當(dāng)、數(shù)組操作不當(dāng)?shù)龋瑫?huì)進(jìn)入此中斷。
- 系統(tǒng)復(fù)位相關(guān)函數(shù)
- MCU_Soft_Reset函數(shù)
函數(shù)原型如下:
![pYYBAGIQXy-AQHRAAABEcZwYkgk065.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXy-AQHRAAABEcZwYkgk065.png)
調(diào)用該函數(shù)后,系統(tǒng)將復(fù)位。
- CAN相關(guān)函數(shù)
只有控制板硬件具有CAN通訊的版本才支持CAN相關(guān)函數(shù)。
CAN相關(guān)的數(shù)據(jù)結(jié)構(gòu)定義:
![poYBAGIQXzCAMtNnAAn_l79TetY226.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXzCAMtNnAAn_l79TetY226.png)
- CAN_Configuration函數(shù)
![poYBAGIQXy-AaFvTAALmY8GDNBU707.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXy-AaFvTAALmY8GDNBU707.png)
使用CAN通訊前必須正確調(diào)用該函數(shù)。
- CAN_Recv_IRQHandler函數(shù)
![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函數(shù)
![poYBAGIQXzCAWbo0AAMMYg8L2Hc267.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXzCAWbo0AAMMYg8L2Hc267.png)
- main函數(shù)
該函數(shù)為系統(tǒng)入口函數(shù),提供如下示例:
![pYYBAGIQXzCAPNKDAArS0oF0FZ8237.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXzCAPNKDAArS0oF0FZ8237.png)
- 模塊編程
- 開(kāi)發(fā)環(huán)境
該模塊開(kāi)發(fā)環(huán)境使用keil 5.10版本(其他版本未驗(yàn)證),有關(guān)keil的使用教程請(qǐng)參考其他開(kāi)發(fā)文檔,keil5的安裝包在MDK5.zip里面。
在“軟件包”里有該控制板的keil5工程
打開(kāi)“軟件包”:
![pYYBAGIQXzGAUvmjAAAMLPY1U_w270.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXzGAUvmjAAAMLPY1U_w270.png)
此即為該控制板的工程文件, 打開(kāi)文件:
![poYBAGIQXzGAKzJDAAAI_Bqb03w644.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXzGAKzJDAAAI_Bqb03w644.png)
打開(kāi)“Proj”:
![pYYBAGIQXzGAJDYnAAA9kkYQ5kY261.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXzGAJDYnAAA9kkYQ5kY261.png)
雙擊上圖中的“pro”,則可以通過(guò)keil軟件打開(kāi)該工程,工程配置如下:
![poYBAGIQXzGAB8OcAAH5w5s_O6E180.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXzGAB8OcAAH5w5s_O6E180.png)
有關(guān)KEIL軟件的使用請(qǐng)自己查找資料學(xué)習(xí)。
工程編譯后會(huì)生成一個(gè)IO_APP.bin文件(路徑:ZQWL_IO_APP(雙串口+CAN)_V1.2\project\BIN):
![poYBAGIQXzGAc9WaAAAQE4j5SXw008.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXzGAc9WaAAAQE4j5SXw008.png)
如果是其他網(wǎng)絡(luò)模塊,則需要將“xBXRA16_V1.0.lib”從工程中移除,再添加上相對(duì)應(yīng)的lib文件即可(路徑在:ZQWL_IO_APP\App):
![pYYBAGIQXzGAExM6AAALk31oNxI441.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXzGAExM6AAALk31oNxI441.png)
- 程序下載
智嵌串口IO模塊的固件是通過(guò)《智嵌物聯(lián) 串口繼電器控制板固件升級(jí)工具》來(lái)下載程序的:
![pYYBAGIQXzKAFZO8AADIfz_Njy8864.png](https://file.elecfans.com/web2/M00/31/7B/pYYBAGIQXzKAFZO8AADIfz_Njy8864.png)
點(diǎn)擊上圖的“瀏覽”,將編譯好的IO_APP.bin文件載入軟件,然后點(diǎn)“打開(kāi)”,接點(diǎn)“開(kāi)始升級(jí)”,即可實(shí)現(xiàn)固件的下載,下完成后自動(dòng)運(yùn)行:
![poYBAGIQXzKAJfLzAACAUhOZa8Y362.png](https://file.elecfans.com/web2/M00/31/74/poYBAGIQXzKAJfLzAACAUhOZa8Y362.png)
- 程序出錯(cuò)處理
在調(diào)試程序時(shí)難免會(huì)出現(xiàn)程序出錯(cuò),出錯(cuò)后可能造成不能直接對(duì)模塊進(jìn)行固件下載,這時(shí)需要按照如下步驟操作:
第一步:斷電。
第二步:將撥碼開(kāi)關(guān)全部撥到OFF狀態(tài)(強(qiáng)制進(jìn)入升級(jí)固件狀態(tài))。
第三步:上電,此時(shí)看到模塊的運(yùn)行燈快速閃爍,說(shuō)明進(jìn)入到了固件下載模式,此時(shí)就可以對(duì)模塊下載固件了。注意此過(guò)程中要保證撥碼開(kāi)關(guān)一直全OFF狀態(tài)。
注意,智嵌物聯(lián)網(wǎng)ZQWL的部分網(wǎng)絡(luò)IO控制器也支持編程功能,如型號(hào)ZQWL-NET8880M,Smart IO,該類產(chǎn)品功能更強(qiáng)大。除此之外,智嵌物聯(lián)ZQWL新推出的Smart GW串口服務(wù)器也具有編程功能,該類產(chǎn)品通訊接口支持4G,網(wǎng)口,WIFI,CAN,RS485等,部分產(chǎn)品也具有IO擴(kuò)展功能,性能更強(qiáng)大,使用更方便。
-
IO控制器
+關(guān)注
關(guān)注
0文章
26瀏覽量
7595
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
TMS320C6000 DSP軟件可編程鎖相環(huán)控制器指南
![TMS320<b class='flag-5'>C</b>6000 DSP軟件<b class='flag-5'>可編程</b>鎖相環(huán)<b class='flag-5'>控制器</b>指南](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
PLC可編程控制器的簡(jiǎn)介
可編程電阻焊控制器:智能化工業(yè)焊接新解決方案探究
可編程邏輯控制器——安全威脅和解決方案
![<b class='flag-5'>可編程</b>邏輯<b class='flag-5'>控制器</b>——安全威脅和解決方案](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
可編程邏輯控制器的特點(diǎn)與用途
PLC編程語(yǔ)言和C語(yǔ)言的區(qū)別
變頻驅(qū)動(dòng)器與可編程邏輯控制器的區(qū)別
可編程電源如何編程
可編程邏輯控制器和微控制器的區(qū)別
智嵌物聯(lián)網(wǎng)絡(luò)IO控制器接入智嵌云控演示
![智<b class='flag-5'>嵌</b><b class='flag-5'>物</b>聯(lián)網(wǎng)絡(luò)<b class='flag-5'>IO</b><b class='flag-5'>控制器</b>接入智<b class='flag-5'>嵌</b>云控演示](https://file.elecfans.com/web2/M00/31/9B/poYBAGIS-LuAFpS9AASzUz-hJ2Y376.png)
PLC(可編程邏輯控制器)的升級(jí)方式有哪些呢?
PLC(可編程邏輯控制器)利用Modbus通訊可以完成哪些任務(wù)呢?
極海APM32F407可編程邏輯控制器PLC應(yīng)用概述
![極海APM32F407<b class='flag-5'>可編程</b>邏輯<b class='flag-5'>控制器</b>PLC應(yīng)用概述](https://file1.elecfans.com/web2/M00/C3/A7/wKgaomXm8F6ADiU5AAARHI96SK8638.jpg)
評(píng)論