Modbus TCP協議及上位機軟體編寫

2021-03-06 工控上位機學習

一、Modbus由MODICON公司於1979年開發,是一種工業現場總線協議標準。Modbus協議是一項應用層報文傳輸協議,包括ASCII、RTU、TCP三種報文類型。前面已經寫過RTU和ASCII的文章,這次寫下基於Modbus TCP協議的上位機軟體編寫。

二、Modbus TCP協議

發送報文格式:ModbusTCP的數據幀可分為兩部分:MBAP+PDU

1、MBAP為報文頭,長度為7位元組,組成如下:

2、幀結構PDU:

PDU由功能碼+數據組成。功能碼為1位元組,數據長度不定,由具體功能決定。

Modbus的操作對象有四種:線圈、離散輸入、輸入寄存器、保持寄存器。根據對象的不同,Modbus的功能碼有:

例如0x01:讀線圈

在從站中讀1~2000個連續線圈狀態,ON=1,OFF=0

請求:MBAP 功能碼 起始地址H 起始地址L 數量H 數量L(共12位元組)

響應:MBAP 功能碼 數據長度 數據(一個地址的數據為1位)

如:00 01 00 00 00 06 01 01 00 02 00 08 在從站0x01中,讀取開始地址為0x0002的線圈數據,讀0x0008位

回:00 01 00 00 00 04 01 01 01 01數據長度為0x01個字節,數據為0x01,第一個線圈為ON,其餘為OFF

三、上位機編寫:

界面如下:

原始碼較長就不在這裡附了,需要原始碼可以關注轉發並私信我。謝謝您的閱讀。

轉發是最大的鼓勵!謝謝您的支持!

重要通知

想加入工控上位機學習技術交流群

請添加班長為好友

並備註:地區-行業-姓名暱稱獲取進群資格。

分享到朋友圈,和朋友們一起分享吧

——————————————————————

▣ 來源:工控課堂www.gkket.com,侵刪!

▣ 聲明:本文素材系網絡收集,工控上位機學習編輯整理。文中所用視頻、圖片、文字版權歸原作者所有。但因轉載眾多,無法確認真正原始作者,故僅標明轉載來源。如涉及作品版權問題,煩請及時聯繫17621634088(微信同號),我們將即刻確認版權並按國家相關規定支付稿酬!

相關焦點

  • 解讀 | MODBUS通訊協議連接電機及簡單調試
    學習目的:搭建電機硬體環境/使用上位機發送速度指令控制電機轉速。這時候PC到電機之間的連接就都完成了上位機發送指令:調試軟體調試:用驅動器自帶的軟體調試,使能,運轉OK使用串口助手發指令Modbus的庫:Modbus_tk :完整modbus協議棧的實現,支持modbus tcp/RTU{1.提供slave模擬器,即模擬modbus server:502), web-based hmi master支持}Pymodbus:使用twisted實現的modbus完整協議(支持異步通訊
  • 基於Modbus協議實現Openplc與Kingview的仿真通訊與模擬測試
    一、前言工業控制系統離不開上位機監控系統和下位機控制器即PLC,上位機軟體相對比較容易獲得,比如本文採用kingview6.53
  • Modbus驅動庫—libmodbus的使用
    這篇文章是接上一篇Modbus協議簡介,主要介紹Modbus實際項目應用—libmodbus驅動庫的使用,斷斷續續寫了近一周時間。都有哪些內容?上一篇文章,我們介紹了Modbus協議物理層和協議層,我們知道了Modbus是一種總線協議,它可以基於串口或網口,以基於串口的Modbus-RTU為例,我們需要在Windows或Linux下實現一個上位機,上位機的功能是讀寫Modbus接口傳感器設備的數據,或者是和單片機等從設備進行交互。
  • Modbus TCP移植二
    上次推送,給大家移植了lwip協議棧,我們這次移植modbus TCP就是基於這個網絡協議棧,lwip協議棧是開源的應用非常廣泛的TCP協議棧。
  • 寄存器PLC地址與寄存器modbus協議地址
    寄存器modbus協議地址指通信時使用的寄存器地址,在實際編程中,由於寄存器PLC地址前綴的區分作用,所以只需說明後4位數,而且需轉換為4位十六進位地址。例如PLC地址40001對應尋址地址0x0000,40002對應尋址地址0x0001,寄存器尋址地址一般使用16進位描述。再如,PLC寄存器地址40003對應協議地址0002,PLC寄存器地址30003對應協議地址0002。
  • 上位機基於C#通過TCP/IP和庫卡機器人通訊
    ,支持TCP和UDP協議.但具體軟體的安裝以及初步通訊測試就不多做介紹了。如果你沒有C#編程的相關基礎,可以先參考:從零開始基於西門子PLC用C#通過OPC編寫一套簡易車間能源信息系統(附代碼)因為本文不是介紹該軟體的安裝,所以就不多做解釋,下面的內容默認已經能用自帶的測試軟體獲取庫卡機器人發送過來的數據。
  • Modbus和TCP有什麼區別?
    這兩個協議即有區別又有密切的聯繫。它們的相結合,不但實現了基於modbus/tcp/IP協議遠程網絡通訊,促進了modbus在其對應領域中的使用。modbus協議主要應用於電氣自動化和過程控制,一般採用RS-232或RS-485的通信接口。不足之處,就是其傳輸距離短、速度慢,導致應用受到局限。
  • Modbus和TCP究竟有什麼區別?
    這兩個協議即有區別又有密切的聯繫。它們的相結合,不但實現了基於modbus/tcp/IP協議遠程網絡通訊,促進了modbus在其對應領域中的使用。modbus協議主要應用於電氣自動化和過程控制,一般採用RS-232或RS-485的通信接口。不足之處,就是其傳輸距離短、速度慢,導致應用受到局限。
  • 【案例】ABB機器人MODBUS TCP通訊案例
    如果在現場要和PLC進行通訊,而PLC支持的是MODBUS  TCP 通訊協議,ABB並沒有提供標準的MODBUS相關處理函數,要使用modbus/tcp,可以使用普通socket收發,按照modbus TCP格式進行數據傳輸。ABB工業機器人沒有專用的指令,因此只能作為客戶端。客戶端連接程序可以放在初始化程序中,每次運行連接一次即可。
  • ModBusRTU問題匯總及西門子200smart modbus rtu通訊實例
    具體的幀格式如下:modbusRTU  地址域功能碼數據差錯校驗modbusTCP  目的地址協議id 長度單元號功能碼數據簡單的說 tcp是由RTU加工而來的,而RTU則是另外一種概念,不包含在modus協議內,是工控行業對監控設備的簡稱。
  • labview與plc的modbus通訊(含labview源碼)
    小夥伴們一直關注modbus通訊,本期小林子就為大家講解下,關於PLC與labview的modbus通訊~
  • Modbus協議及其攻防
    工業控制系統廣泛使用的Modbus協議由於其可靠、簡單、免費的特點,在工業控制領域長期廣泛使用,但其安全性值得我們深入探討!Modbus協議是一個應用層協消息傳遞協議,位於OSI模型的第7層,在經由不同類型的通信總線或通信媒介連接的設備之間提供客戶端/伺服器通信,Modbus憑藉其實現簡單、傳輸可靠且免費的優勢,至今仍是目前使用最廣泛的工業控制系統協議。Modbus建立在請求和響應模型之上,由功能碼代碼和數據兩部分組成。功能代碼指定請求那個服務或響應哪個服務,數據部分則提供用於功能的數據。
  • 【實戰】工控網絡協議模糊測試:用peach對modbus協議進行模糊測試
    >    <Peach 創建時間,地址,作者等等>    <Include 包含外部文件 />    <DataModel> 類型信息,關係(大小,計數,偏移)、可嵌套等<\DataMode>    <StateModel>測試邏輯,狀態轉換<
  • 濤哥帶你學習 ModBus TCP 協議 (7) – 調試工具
    編者:Modbus TCP 是比較普及的一種標準通信協議,協議格式簡單易懂,特別適合學習底層通信協議開發。
  • Modbus 的RTU、ASCII、TCP都是什麼意思?
    6.1 主機和從機、服務端和客戶端【在modbus協議中】主機發送modbus請求,從機根據請求內容向主機返迴響應。在modbus協議中,主機總是主動方,從機總是被動方。【在modbus tcp中】主機是客戶端,而從機是伺服器端。千萬不要以為伺服器端重要,主機也重要,所以主機就是伺服器端。6.2 是否可以多主機    通過前面的分析,主機為客戶端那麼modbustcp支持多個主機,在一個   區域網中可存在多個主機和多個從機。從機的連接能力(連接主機的數   量)由uIP的最大TCP連接個數決定。
  • C#上位機專題課程,計劃2月21號啟動
    為什麼使用C#(C sharp)語言:1、C#是一種最新的、面向對象的程式語言;2、C#介於C語言與C++語言之間,上手容易;3、C#應用程式基於Microsoft .NET平臺,穩定可靠;4、C#軟體極小,通常幾百k,無需安裝。
  • 連載丨手把手教你winform上位機系列二:PLC編寫及配置
    上一節我們已經搭建好了winform上位機的界面顯示部分,現在我們需要做的事情如下:1.PLC程序編寫及通信配置
  • Modbus 的RTU、ASCII、TCP傻傻搞不清楚?一文全解讀
    6.1 主機和從機、服務端和客戶端【在modbus協議中】主機發送modbus請求,從機根據請求內容向主機返迴響應。在modbus協議中,主機總是主動方,從機總是被動方。【在modbus tcp中】主機是客戶端,而從機是伺服器端。千萬不要以為伺服器端重要,主機也重要,所以主機就是伺服器端。6.2 是否可以多主機    通過前面的分析,主機為客戶端那麼modbustcp支持多個主機,在一個   區域網中可存在多個主機和多個從機。