女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

第7章_低成本 Modbus 傳感器的實現

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

第7章 低成本 Modbus 傳感器的實現

7.1 硬件資源介紹與接線

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

img

開關量模塊

img

溫濕度變送器模塊

img

環境檢測模塊

7.2 開發環境搭建

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

安裝 PACK 的方法有兩種:

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

img

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

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

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

img

如果跳轉網頁無法打開,可直接打開 Pack 下載總入口(www.keil.com/dd2/Pack/)。 進入 Pack 下載總入口后,搜索“STM32F030”,找到“STM030CCT”點擊, 如下圖所示(實 測部分網絡環境打開該鏈接無 Pack 列表,請嘗試換個網絡環境測試,仍舊不行則使用配 套資料 Pack)。

img

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

img

img

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

7.3 創建與體驗第 1 個工程

7.3.1 創建工程

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

img

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

img

調高 CPU 頻率:

img

配置工程, 如下操作:

img

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

img

7.3.2 配置調試器

新建的工程要配置調試器,參考《2.2.3 配置調試器》 。

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

7.3.3 配置 GPIO 操作 LED

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

根據開發板原理圖可以看到 F030的LED 引腳圖如下:

img

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

img

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

img

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

在main函數的循環里, 增加如下代碼:

/* 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);
}

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

7.4 UART 編程

7.4.1 使用 STM32CubeMX 進行配置

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

img

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

1.UART1

先使能 UART1:

img

然后使能中斷:

img

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

2.配置 RS485方向引腳

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

img

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

img

7.4.2 封裝 UART

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

7.4.3 上機實驗

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

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

  • 它從 USB 串口讀到數據,再從 485 接口發送出去;
  • 它從 485 接口讀到數據,再從 USB 串口發送給 PC。

1. 硬件連接

img

2. STM32H5 程序改造

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

3.STM32F030程序調試

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

7.5 libmodbus 移植

本節源碼為“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 協議訪問 STM32F030 傳感器時,讀 寫的是 STM32F030 分配出來的 4 個類型的緩沖區。這里需要解決 2 個問題:

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

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

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

這 3 款傳感器的原理圖在網盤如下目錄里:

img

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

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

7.6.3 點表設計

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

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

電力領域中四遙系統是指遙測、遙信、遙控、遙調功能系統, 四遙功能是電力監控系 統最基本最重要的功能。具體來說:

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

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

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

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

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

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

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

1.開關量模塊(SWITCH)

寄存器說明:

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

2. 環境監測模塊(ENV_MONITOR)

寄存器說明:

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

7.6.4 開關量傳感器程序設計

繼電器原理圖如下:

img

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

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

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

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

7.6.5 環境監測傳感器程序設計

1. 硬件電路

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

img

可調電阻器如下,R33 阻值越大,RES_ADC 電壓值越小:

img

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

2. 配置 GPIO 和 ADC

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

img

3. 讀取 ADC 的關鍵代碼

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

// 啟動、讀2次數值
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 溫濕度傳感器程序設計

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

1. 硬件電路與操作方法

原理圖如下:

img

AHT20 芯片資料在網盤如下目錄:

img

AHT20 操作方法如下:

img

詳解如下:

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

img

計算檢驗碼的函數如下:

//**********************************************************//
//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) ;
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2562

    文章

    52542

    瀏覽量

    763606
  • 芯片
    +關注

    關注

    459

    文章

    52153

    瀏覽量

    436020
  • MODBUS
    +關注

    關注

    28

    文章

    1995

    瀏覽量

    78944
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    《機器人設計與實現》——低成本DIY機器人,一本機器人制作的經典入門書

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

    請問傳感器怎么和STM32實現modbus rtu通信?

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

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

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

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

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

    低成本動態傾角傳感器

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

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

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

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

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

    SensRcore開發平臺助力低成本極低功耗傳感器節點工作

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

    低成本ONSEMI免電池傳感器監測

    器件,包括板載的超低靜態電流LDO(NCP170)。安森美半導體推出這方案證明了完全有可能實現僅由太陽能供電的低成本、小外形傳感器節點,特點包括持續的傳感器監測和數據傳輸到云網關。一些
    發表于 09-19 09:05

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

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

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

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

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

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

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

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

    7 通孔.zip

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

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

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