FreeModbus開源協議棧的移植和詳解(一)
引言
很多做單片機或者嵌入式的朋友對Modbus協議應該不陌生了,Modbus協議也已經成爲工控界設備之間通信的一種標準協議。筆者剛開始接觸Modbus協議的時候,是自己按照Mod bus協議自己來寫的代碼,後來接觸到FreeModbus後,就開始使用FreeModbus來搭建自己的軟件,使用開源的協議棧可以很方便地進行開發,在這裏記錄下自己對FreeModbus的理解。建議初次接觸Modbus協議的朋友先自己嘗試寫一個協議,這樣可以加深對Modbus協議的理解,等對協議充分了解之後,無論是使用FreeModbus還是看其他的Modbus協議棧就很簡單了。
一、FreeModbus的獲取
目前,FreeModbus最新版本是V1.6,可以通過官網下載,鏈接如下:
https://www.embedded-solutions.at/en/freemodbus-downloads/
可以下載壓縮包,也可以使用git工具來下載。
二、FreeModbus文件夾的介紹
下載完協議棧之後,解壓壓縮包,可以看到文件夾中有幾個文件夾和幾個文件,幾個文件是對協議的一些升級說明和開源聲明等等,這裏我們主要關注兩個文件夾,一個是Modbus文件夾(這個文件夾是FreeModbus的協議棧源碼),另一個文件夾就是demo文件夾(這個文件夾中是在不同的平臺上移植FreeModbus的一些事例,我們後面移植的時候可以參考)。
三、Modbus文件夾介紹
接下來我們來看看Modbus文件夾裏面都有哪些東西。
打開ModBus文件夾,裏面有五個文件夾和一個C文件,說明如下:
序號 | 名稱 | 說明/描述 |
---|---|---|
1 | ascii | 這個文件夾包含Modbus-ASCII協議的實現代碼 |
2 | functions | 這個文件夾主要包括一些功能碼對應的處理函數 |
3 | include | 裏面主要是Modbus協議需要使用的一些頭文件和配置文件 |
4 | rtu | 這個文件夾包含Modbus-RTU協議的實現代碼 |
5 | tcp | 這個文件夾包含Modbus-TCP協議的實現代碼 |
6 | mb.c | 這個是MODBUS協議棧的主文件,這個文件夾只是一個框架,與具體的協議無關。因爲Modbus有三種具體的協議,分別爲RTU、ASCII和TCP,具體的實現在1、4、5文件夾中,而mb.c在初始化的時候會根據使用情況將指針指向具體的處理函數。 |
注:具體的細節稍後再看,這裏先大概瞭解一下每個文件夾裏面包含什麼即可,大家可以自己進去看一下,瀏覽一下文件。
四、小結
本篇博客作爲開篇,簡單介紹了一下FreeModbus的獲取和文件夾的結構,從下面一篇開始,分析一下FreeModbus的具體代碼。