精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

第7章_低成本 Modbus 傳感器的實現(xiàn)

嵌入式Linux那些事 ? 來源:嵌入式Linux那些事 ? 作者:嵌入式Linux那些事 ? 2024-06-29 14:36 ? 次閱讀

第7章 低成本 Modbus 傳感器的實現(xiàn)

7.1 硬件資源介紹與接線

我們的 Modbus 傳感器開發(fā)套件共有三個, 三個板子的使用的主控方案是 STM32F030芯片,硬件接口資源如下圖所示:

img

開關量模塊

img

溫濕度變送器模塊

img

環(huán)境檢測模塊

7.2 開發(fā)環(huán)境搭建

在前面我們已經(jīng)安裝了 Keil MDK、STM32CubeMX、STM32CubeProgrammer、ST-Link 驅(qū) 動、 CH340 驅(qū)動。因此在這里我們只需給 Keil MDK 安裝 STM32F030 對應的 PACK 即可對改 芯片進行編碼開發(fā)。

安裝 PACK 的方法有兩種:

  • 第一種方法:雙擊運行開發(fā)板配套資料中的 Pack 安裝包,隨后彈出安裝界面,按照默 認選項進行安裝即可。:

img

  • 第二種方法,在線安裝, 下面演示如何在線安裝。

打開Keil之后, 點擊如下按鈕啟動“Pack Installer”:

使用 “Pack Installer” 可 以 方 便 的 對 Pack 安 裝 和 管 理 。 在 左 上 角 搜 索 框 輸 入 “STM32F030”,展開搜索結(jié)果,可以看到STM32F030CC,點擊右邊的簡介鏈接即可跳轉(zhuǎn) 到Pack下載頁面,如下圖所示。

img

如果跳轉(zhuǎn)網(wǎng)頁無法打開,可直接打開 Pack 下載總?cè)肟冢╳ww.keil.com/dd2/Pack/)。 進入 Pack 下載總?cè)肟诤螅阉鳌癝TM32F030”,找到“STM030CCT”點擊, 如下圖所示(實 測部分網(wǎng)絡環(huán)境打開該鏈接無 Pack 列表,請嘗試換個網(wǎng)絡環(huán)境測試,仍舊不行則使用配 套資料 Pack)。

img

點擊會跳轉(zhuǎn)到 pack 包界面,點擊右上角的”STM32F0xxDFP“即可跳轉(zhuǎn)到 pack 包下載界面,點擊右上角”STM32F0xxDFP“處即可下載 pack 包,如下圖所示。

img

img

下載完成得到“Keil.STM32F0xx_DFP.2.1.1.pack”,直接雙擊該文件,隨后彈出安裝界 面,按照默認選項進行安裝即可。

7.3 創(chuàng)建與體驗第 1 個工程

7.3.1 創(chuàng)建工程

啟動 STM32CubeMX 后,點擊如下圖標開始選擇 MCU

img

如下圖輸入型號“STM32F030CCT”,雙擊找到的芯片, 開始創(chuàng)建工程:

img

調(diào)高 CPU 頻率:

img

配置工程, 如下操作:

img

指定代碼生成方法, 如下:

img

7.3.2 配置調(diào)試器

新建的工程要配置調(diào)試器,參考《2.2.3 配置調(diào)試器》 。

然后就可以編譯程序、燒寫運行了。

7.3.3 配置 GPIO 操作 LED

打開位于“5_硬件資料?1_開發(fā)板原理圖STM32F030CCT6_SWITCH_V11.pdf”的原理圖 文件。

根據(jù)開發(fā)板原理圖可以看到 F030的LED 引腳圖如下:

img

可以雙擊打開工程中如下文件進入STM32CubeMX進行配置:

img

然后如下配置 PB11 、PB12 、PB13 為輸出引腳:

img

點擊右上角的 “GENERATE CODE”按鈕后打開工程。

在main函數(shù)的循環(huán)里, 增加如下代碼:

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
    /* set LED output high */
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_SET); //LED1
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET); //LED2
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_SET); //LED3
    HAL_Delay(500);
    /* set LED output low */
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_RESET);//LED1
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET); //LED2
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET); //LED3
    HAL_Delay(500);
}

最后編譯、燒寫、運行, 可以看到開發(fā)板的 LED 閃爍。

7.4 UART 編程

7.4.1 使用 STM32CubeMX 進行配置

本節(jié)源碼為“3_程序源碼?1_視頻配套的源碼7-5_STM32F030串口編程demo”。 RS4385接口原理圖如下:

img

需要在STM32CubeMX里配置UART1,并且配置PA8為輸出引腳。

1.UART1

先使能 UART1:

img

然后使能中斷:

img

在前面STM32H5的UART程序里使用了DMA,本節(jié)故意不使用DMA而使用純中斷來 實現(xiàn)UART,多學一種編程方法。

2.配置 RS485方向引腳

STM32H5主控板上使用的RS485轉(zhuǎn)換芯片是MAX13487EESA,它會自動切換發(fā)送、 接收方向,無需程序進行方向的控制。使用STM32F030制作的“廉價傳感器”里,使用 的RS485轉(zhuǎn)換芯片是SIT3088ETK,它需要使用一個GPIO來控制方向,如下圖所示:

img

上圖中,RS485_CTRL使用的引腳是PA8,所以還需要把它配置為輸出引腳,輸出低 電平(讓SIT3088ETK默認為接收狀態(tài)) 。如下配置:

img

7.4.2 封裝 UART

本節(jié)源碼為“3_程序源碼?1_視頻配套的源碼7-5_STM32F030串口編程demo”。 現(xiàn)場編程。

7.4.3 上機實驗

本節(jié)源碼為“3_程序源碼?1_視頻配套的源碼7-6_STM32F030 串口測試”,里面有 2 個程序:h5_demo、f030_demo。

要測試 STM32F030 的串口, 只需要把它的 485 接口連接到 PC 去就可以了,但是我們沒 有 PC 上使用的“USB 轉(zhuǎn) 485”模塊,所以使用 STM32H5 來實現(xiàn)一個“USB 轉(zhuǎn) 485 模塊”:

  • 它從 USB 串口讀到數(shù)據(jù),再從 485 接口發(fā)送出去;
  • 它從 485 接口讀到數(shù)據(jù),再從 USB 串口發(fā)送給 PC。

1. 硬件連接

img

2. STM32H5 程序改造

本節(jié)源碼為“3_程序源碼?1_視頻配套的源碼7-6_STM32F030串口測試h5_demo”。

3.STM32F030程序調(diào)試

本節(jié)源碼為“3_程序源碼?1_視頻配套的源碼7-6_STM32F030串口測試f030_demo”。

7.5 libmodbus 移植

本節(jié)源碼為“3_ 程序源碼?1_ 視頻配套的源碼7-7_STM32F030 上libmodbus 移植 f030_demo”。

7.5.1 移植 libmodbus

把“7-6_STM32F030串口測試h5_demodemoMiddlewaresThird_Partylibmodbus”整 個目錄復制到f030_demo中。

在Keil工程中添加代碼, 如下:

img

7.5.2 使用 modbus 控制設備

STM32F030作為從設備(sever),編寫“CoreSrcfreertos.c”:

7.5.3 上機實驗

7.6 傳感器設計

7.6.1 設計思路

上位機(PC 軟件)或中控(STM32H5)通過 modbus 協(xié)議訪問 STM32F030 傳感器時,讀 寫的是 STM32F030 分配出來的 4 個類型的緩沖區(qū)。這里需要解決 2 個問題:

  • 這 4 個類型的緩沖區(qū)起始地址、大小分別是多少? 這根據(jù)傳感器的功能來設置。比如有 2 個按鍵,那么就可以分配 2 個“只讀的位寄存器”(DI)。
  • 這些寄存器的值, 如何跟硬件對應? 比如上位機讀 DI 寄存器時, 誰提供這些值?傳感 器的程序應該讀取按鍵值,填充 DI 寄存器。

第 1 個步驟,被稱為“點表設計”。

7.6.2 三款傳感器功能及所用引腳

這 3 款傳感器的原理圖在網(wǎng)盤如下目錄里:

img

它們控制外設所用的引腳,列表如下:

功能使用的引腳描述寄存器類別
ENV_MONITOR 環(huán)境監(jiān)測模塊BEEP1PB15高電平發(fā)聲DO
BEEP2PB14高電平發(fā)聲DO
LED1PB11低電平發(fā)光DO
LED2PB12低電平發(fā)光DO
LED3PB13低電平發(fā)光DO
OPTO_ADCPA1電壓值跟光強成反比AI
RES_ADCPA2電壓值跟可調(diào)電阻成反比AI
SWITCH開關量模塊KEY1PA3低電平表示被按下DI
KEY2PA4低電平表示被按下DI
KEY3PA5低電平表示被按下DI
K1_CTRLPB5高電平使能繼電器DO
K2_CTRLPB4高電平使能繼電器DO
LED1PB11低電平發(fā)光DO
LED2PB12低電平發(fā)光DO
LED3PB13低電平發(fā)光DO
TEMP_HUMI溫濕度模塊BEEP1PB15高電平發(fā)聲DO
BEEP2PB14高電平發(fā)聲DO
LED1PB11低電平發(fā)光DO
LED2PB12低電平發(fā)光DO
LED3PB13低電平發(fā)光DO
I2C1_SCLPB6可以讀到溫度、濕度 AIAI
I2C2_SDAPB7可以讀到溫度、濕度 AIAI

7.6.3 點表設計

所謂點表, 就是一個 modbus 設備,它的地址是什么? 它里面 4 類寄存器的地址、功能 是什么。

在查看點表時,經(jīng)常碰到“遙測、遙信、遙控、遙調(diào)”的概念。它們實質(zhì)上就是前面 講解 modbus 時引入的“AI、DI、DO、AO”。這些概念起源于電力系統(tǒng)

電力領域中四遙系統(tǒng)是指遙測、遙信、遙控、遙調(diào)功能系統(tǒng), 四遙功能是電力監(jiān)控系 統(tǒng)最基本最重要的功能。具體來說:

  • 遙測(遙測信息,AI):遠程測量;遠方測量顯示諸如電流、電壓、功率、壓力、溫度等 模擬量;
  • 遙信(遙信信息,DI):遠程信號;遠方監(jiān)視各類電氣開關和設備、機械設備的工作狀態(tài) 和運轉(zhuǎn)情況狀態(tài)等;
  • 遙控(遙控信息,DO):遠程控制;接受并執(zhí)行遙控命令,遠方控制或保護電氣設備及電 氣機械化的分合起停等工作狀態(tài);
  • 遙調(diào)(遙調(diào)信息,AO):遠程調(diào)節(jié);接受并執(zhí)行遙調(diào)命令,遠方設定及調(diào)整所控設備的工 作參數(shù)、標準參數(shù);四遙遙測、遙信、遙控、遙調(diào)常常被簡稱為 AI、DI、DO、AO。

AI、DI、DO、AO 都是英文名稱的首字母縮寫,A 的英文全稱 Analog (模擬量)、D 的英 文全稱 Digital (數(shù)字量) 、I 的英文全稱 Input (輸入)、O 的英文全稱 Output (輸出)。 因此, AI 表示的是模擬信號輸出, AO 是模擬信號輸入,DI 是數(shù)字信號輸入, DO 是數(shù)字信 號輸出。

隨著技術不斷地進步,現(xiàn)在也有五遙的說法, 即在四遙的基礎上加上遙視, 遙視指的 是指利用包括電子技術、計算機技術、自動化技術等監(jiān)視并記錄設備運行情況和環(huán)境安全 情況。因此伴隨著技術發(fā)展, 電力系統(tǒng)中從一遙(遙信 DI)階段、發(fā)展到二遙(遙信 AI、 遙測 DI)、三遙(遙信 AI、遙測 DI 和遙控 DO)、四遙(遙信 AI、遙測 DI、遙控 DO 和遙 調(diào) AO);現(xiàn)在開始四遙向五遙過渡。

原文鏈接:https://blog.csdn.net/LuohenYJ/article/details/106027626

在閱讀點表時,還會碰到下表中的“PLC/組態(tài)地址”,或者表中的簡稱“0x、1x、4x、 3x”, 它們的本質(zhì)都是用來分辨“AI、AO、DI、DO”四類寄存器:

寄存器種類PLC/組態(tài)地址Modbus 寄存器地址范圍簡稱讀寫狀態(tài)
線圈狀態(tài)00001~099990000H~FFFFH0x可讀可寫
離散輸入狀態(tài)~10001 199990000H~FFFFH1x只讀
保持寄存器40001~499990000H~FFFFH4x可讀可寫
輸入寄存器~30001 399990000H~FFFFH3x只讀

點表的設計,是完全由開發(fā)人員自行定義的。

1.開關量模塊(SWITCH)

寄存器說明:

設備地址寄存器地址寄存器類別用途描述
01H0000HDI讀取按鍵 KEY11-被按下
0001HDI讀取按鍵 KEY21-被按下
0002HDI讀取按鍵 KEY31-被按下
0000HDO控制繼電器 11-吸合
0001HDO控制繼電器 21-吸合
0002HDO控制 LED11-亮
0003HDO控制 LED21-亮
0004HDO控制 LED31-亮

2. 環(huán)境監(jiān)測模塊(ENV_MONITOR)

寄存器說明:

設備地址寄存器地址寄存器類別用途描述
02H0000HDO控制蜂鳴器 11-響
0001HDO控制蜂鳴器 21-響
0002HDO控制 LED11-亮
0003HDO控制 LED21-亮
0004HDO控制 LED31-亮
0000HAI讀取光敏電壓0xfff 對應 3.3V12 位精度
0001HAI可調(diào)電阻器電壓0xfff 對應 3.3V12 位精度
  1. 溫濕度模塊(TEMP HUMI)
設備地址寄存器地址寄存器類別用途描述
03H0000HDO控制蜂鳴器 11-響
0001HDO控制蜂鳴器 21-響
0002HDO控制 LED11-亮
0003HDO控制 LED21-亮
0004HDO控制 LED31-亮
0000HAI讀取溫度單位 0.1 攝氏度 16 位有符號整數(shù)
0001HAI讀取濕度單位 0.1%RH16 位有符合整數(shù)

7.6.4 開關量傳感器程序設計

繼電器原理圖如下:

img

繼電器對外的信號有 3 個:

  • COM:公共端,通常是中間的觸點, 與常開或常閉觸點相連
  • NC(Normally Closed): 常閉接口,繼電器吸合前與 COM 連接, 吸合后懸空
  • NO(Normally Open): 常開接口, 繼電器吸合前懸空, 吸合后與 COM 連接

開路即通路、斷路,閉合指的是開關閉合,也就是說, 在沒有任何上電之類的動作時, NC 和 COM 端相當于已經(jīng)連通。

本節(jié)源碼為“ 3_ 程 序源 碼?1_ 視 頻配套 的 源 碼7-9_ 開 關 量 傳 感 器 程序 設 計 f030_demo”。

7.6.5 環(huán)境監(jiān)測傳感器程序設計

1. 硬件電路

光敏電路如下, 光照越強,U6 阻值越低,OPTO_ADC 電壓值就越低:

img

可調(diào)電阻器如下,R33 阻值越大,RES_ADC 電壓值越小:

img

本節(jié)源碼為“3_ 程序源碼?1_ 視頻配套的源碼7-10_ 環(huán)境監(jiān)測傳感器程序設計 f030_demo”。

2. 配置 GPIO 和 ADC

先在STM32CubmeMX里配置GPIO和ADC 引腳,使能“Discontinuous Conversion Mode ”:

img

3. 讀取 ADC 的關鍵代碼

// 1. 檢驗
HAL_ADCEx_Calibration_Start(&hadc) ;

// 啟動、讀2次數(shù)值
for (int i = 0; i < 2; i++)
{
    HAL_ADC_Start(&hadc);
    if (HAL_OK == HAL_ADC_PollForConversion(&hadc, 100))
    {
    	mb_mapping- >tab_input_registers[i] = HAL_ADC_GetValue(&hadc); 
    }
}

7.6.6 溫濕度傳感器程序設計

本節(jié)源碼為“ 3_ 程序源碼?1_ 視頻配套 的源碼7-11_ 溫濕度傳感器程序設計 f030_demo”。

1. 硬件電路與操作方法

原理圖如下:

img

AHT20 芯片資料在網(wǎng)盤如下目錄:

img

AHT20 操作方法如下:

img

詳解如下:

  • 發(fā)送測量命令:傳感器的 VDD 上電后需等待 5ms, 發(fā)送寫測量命令 0x70 0xAC 0x330x00, 等待 80ms 測量完成;
  • 獲取溫濕度校準數(shù)據(jù): 在等待 80ms 測量完成后, 發(fā)送 0x71 讀傳感器,可獲取狀態(tài)字 Status、溫濕度校準數(shù)據(jù) SRH[19:0]、ST[19:0]以及校準字 CRC;
  • 根據(jù)公式計算溫濕度:

img

計算檢驗碼的函數(shù)如下:

//**********************************************************//
//CRC校驗類型:  CRC8
//多項式:  X8+X5+X4+1
//Poly:0011 0001 0x31
unsigned char Calc_CRC8(unsigned char *message,unsigned char Num)
{
    unsigned char i;
    unsigned char byte;
    unsigned char crc =0xFF;
    for (byte = 0;byte< Num;byte++)
    {
        crc^=(message[byte]);
        for(i=8;i >0;--i)
        {
            if(crc&0x80)
            crc=(crc< 1)^0x31;
            else
            crc=(crc< 1);
        }
    }
    return crc;
}//
**********************************************************//

2. 配置 I2C

img

3. 讀取溫濕度關鍵代碼

讀取一次溫濕度值, 耗時至少 80ms。不可能在接收到modbus 請求后再去讀溫濕度。而 是使用另一個任務不斷讀取溫濕度。

HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout) ;

HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout) ;
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2548

    文章

    50740

    瀏覽量

    752145
  • 芯片
    +關注

    關注

    454

    文章

    50460

    瀏覽量

    421973
  • MODBUS
    +關注

    關注

    28

    文章

    1765

    瀏覽量

    76850
收藏 人收藏

    評論

    相關推薦

    《機器人設計與實現(xiàn)》——低成本DIY機器人,一本機器人制作的經(jīng)典入門書

    基礎、機器人本體、電子控制設備、傳感器與導航和機器人電源系統(tǒng)等。《機器人設計與實現(xiàn)》是按照搭積木的方法指導機器人愛好者如何設計、制作機器人平臺,如何賦予機器人智能,使機器人能夠運動、感知周圍的環(huán)境和服
    發(fā)表于 08-01 18:21

    請問傳感器怎么和STM32實現(xiàn)modbus rtu通信?

    第一次接觸Modbus傳感器是采用Modbus協(xié)議的485信號,我用STM32做主機,想把傳感器采集的數(shù)據(jù)顯示到STM32觸摸屏上,要怎么實現(xiàn)
    發(fā)表于 05-17 08:57

    傳感器原理及應用(第三版)3

    傳感器原理及應用(第三版)3
    發(fā)表于 08-14 23:31

    車用低成本24GHZ雷達傳感器/測速/測距/測方向

    ` 本帖最后由 佰譽達科技--陳 于 2014-1-3 14:37 編輯 汽車用低成本24GHZ雷達傳感器/測速/測距/測方向模塊K-LC系列RFbeam公司推出低成本短距離測速、測距、測方向
    發(fā)表于 01-03 14:36

    低成本動態(tài)傾角傳感器

    SST810低成本動態(tài)傳感器 ● 無漂移的真正動態(tài)傾角測量產(chǎn)品● 極低成本,高性能● 內(nèi)置三軸加速度計和三軸陀螺儀● 動態(tài)重復精度±0.5°● 刷新率1000Hz● 獨立工作,不需要任何外部輔助
    發(fā)表于 02-17 16:59

    SMSC高精度低成本溫度傳感器

      Standard Microsystems(SMSC)推出采用單導線數(shù)字BudgetBus接口架構(gòu)的小型低成本溫度傳感器。  SMSC設計的EMC1200系列溫度傳感器可通過接口與KBC11xx
    發(fā)表于 10-25 11:40

    SMSC高精度低成本的溫度傳感器

      Standard Microsystems(SMSC)推出采用單導線數(shù)字BudgetBus接口架構(gòu)的小型低成本溫度傳感器。  SMSC設計的EMC1200系列溫度傳感器可通過接口與KBC11xx
    發(fā)表于 11-19 15:16

    SensRcore開發(fā)平臺助力低成本極低功耗傳感器節(jié)點工作

    and-click”配置方式, 低成本ANT基帶處理(BBP), 以及極低功耗2.4GHz射頻芯片,使得在配置極低功耗無線傳感器網(wǎng)絡(WSN)中的傳感器時無需專業(yè)知識以及外部微控制
    發(fā)表于 07-11 08:18

    低成本ONSEMI免電池傳感器監(jiān)測

    器件,包括板載的超低靜態(tài)電流LDO(NCP170)。安森美半導體推出這方案證明了完全有可能實現(xiàn)僅由太陽能供電的低成本、小外形傳感器節(jié)點,特點包括持續(xù)的傳感器監(jiān)測和數(shù)據(jù)傳輸?shù)皆凭W(wǎng)關。一些
    發(fā)表于 09-19 09:05

    傳感器原理與應用(2版)

    全書分三部分共191部分共兩介紹傳感器的一般特性、分析方法,2部分為3
    發(fā)表于 04-20 09:31 ?0次下載

    7 S7-200系列可編程序控制

    6 FX2系列可編程序控制及指令系統(tǒng) 7 S7
    發(fā)表于 04-29 11:28 ?13次下載

    基于傳感器低成本可燃性氣體泄漏報警設計

    基于傳感器低成本可燃性氣體泄漏報警設計
    發(fā)表于 01-24 16:15 ?25次下載

    7:事件管理模塊(EV)PPT下載

    7:事件管理模塊(EV)PPT下載
    發(fā)表于 10-08 14:54 ?9次下載

    7 通孔.zip

    7通孔
    發(fā)表于 12-30 09:22 ?2次下載

    2 ANSYS分析基本過程--7 通用后處理

    2 ?ANSYS分析基本過程--7 通用后處理
    發(fā)表于 08-31 09:31 ?0次下載