西門子S7-200系列PLC的MODBUS通信功能(二)

2017-05-31 17:36 更新 盧思敏 瀏覽:1565人次 微信二維碼

學工控技術,拿10萬年薪

點下面注冊
馬上注冊,免費學習plc視頻教程
馬上注冊,免費學習超過100課時視頻教程,免費下載海量學習資料


在上一篇文章中我們說到了MODBUS RTU 協議的信息幀的格式,同時也跟到大家提到了如何通過從站設備提供的通信說明中的信息幀格式及地址去準備相應的數據,那么今天我們主要說一下S7-200系列PLCMODBUS RTU庫指令意思。

S7-200SMART系列PLC中的庫指令中集成了MODBUS RTU通信的庫指令,庫指令中包含了S7-200SMART系列PLC作為主站功能的庫指令及S7-200SMART系列PLC作為從站功能的庫指令(如下圖所示)



在這里我們主要介紹下主站的庫指令,主站的庫指令中根據所使用的通信口的個數不一樣分為兩個,若使用時PLC的本體的RS485端口需要作為modbus的主站功能,而擴展的RS485的信號板又需要作為MODBUS的主站的功能,那么前者使用第一個主站庫的指令,后者可以使用第二個主站庫指令,每個主站庫指令中都有兩個指令,分別為初始化指令MBUS_CTRL ,數據讀寫發送請求指令MBUS_MSG指令。下面我們對這兩個指令的意思以及指令上的管腳進行一些說明:


MBUS_CTRL指令



EN初始化指令使能端,需要保持每個掃描周期都接通

Mode通信協議的選擇,若需選擇MODBUS RTU通信,這需要保持該位為1狀態,所以此處可以使用SM0.0接通。

Baud通信波特率的設置

Parity奇偶校驗的選擇,0表示無校驗,1表示奇校驗,2表示偶校驗

Port 端口號設置,若使用PLC本體上的RS485端口,則應選擇為0 (注意S7-200PLC中的庫指令中的MBUS_CTRL沒有此管腳)

Timeout 該參數用于確定 Modbus 從站設備是否對主站發出請求做出響應。若達到設定值后,還未獲得從站的響應,則PLC認為從站出問題,同時MBUS-MSG指令中的故障代碼存儲器中會存儲相應的故障代碼,同時完成位的狀態為1.

Done完成位,當初始化完成后,該位的狀態為1,編寫程序時,可以根據這個完成位來判斷初始化是否完成,完成后可以用于激活MBUS_MSG指令進行數據請求的發送,(需要注意是:初始化完成后,至少需要過一個掃描周期后,才能去激活MBUS-MSG指令,否則可能通信不成功)

Error故障代碼存儲器(使用一個字節進行存儲),當初始化出現錯誤后,在故障存儲器中會產生一個代碼,查看指令幫助中的代碼說明,可以查看到可能出錯的原因是什么。


MBUS_MSG指令



EN:指令的使能

MBUS_MSG指令使用時一定要注意的一點就是,同一個掃描周期內,只能由一條MBUS_MSGEN端的狀態為1.如果在一個掃描周期內出現2條及2條以上的MBUS_MSGEN端的狀態為1的情況。則MBUS_MSG指令中的故障代碼的值會為6,通信會不成功。

First觸發請求,僅保持一個掃描周期的時長 ,因此在使用時需要使用沿脈沖進行觸發。

Slave從站站號,根據從站中設置的地址進行填寫

RW讀寫操作選擇,0表示讀,1表示寫,若控制變頻器運行,使用寫的功能,若需要讀取變頻器的電流等需要用讀的命令。

Addr:起始的MODBUS寄存器地址,此地址使用時一定要正確編寫。

MODBUS寄存器的地址,根據功能碼的不一樣,主要有4種類型的表示方式,分別為0XXXX(讀寫線圈狀態),1XXXX(讀開關輸入狀態),3XXXX(讀輸入寄存器),4XXXX(讀寫保持寄存器)四種類型,對于第四種類型4XXXX的類型,地址可以擴展,擴展為4XXXXX六位數的類型格式。


各功能碼對應的MODBUS地址寄存器類型如下圖所示,而每種地址的起始地址都是從0001開始,而且都是以十進制數進行表示的。


地址類型確認后,如何來確定輸入的地址呢?

該地址的確定與在上篇文章中提到的MODBUS RTU信息幀格式中的Data內容有關,Data的內容包括兩部分內容,一部分內容為數據區的地址,一部為數據區的內容,則此處的MODBUS寄存器的地址與數據區的地址有關。如圖所示:

此處中的數據區的地址,指的是寄存器地址,從圖中可以看到他的范圍是從十六進制數的0000到十六進制數的FFFF,因此從這我們可以看到功能碼為06,對應的寄存器地址是0000的時候,那么在我們MBUS_MSG指令中的Adder的地址應填寫為40001(因為都是表示的第一個地址,需要一一對應上)。


根據這個計算方法,我們可以寫出 在上一篇文章中提到的控制變頻器運行的寄存器地址對應都MBUS_MSG指令中Adder的地址為:

功能碼為06,所以類型為4XXXX的類型,地址為16# 3200,相對于16#0000來講,偏移了12800.(此為十進制數)所以對應到MBUS_MSG指令中的地址為在1的基礎上上偏移12800,即12801,而功能碼06對應的類型為4,所以我們在使用時應在MBUS_MSG指令的Adder出填寫412801這個地址。

Count讀寫的格式,表示從adder這個管腳指的的地址開始的連續多少個地址進行數據的讀寫。

Dataptr讀寫數據存放的地址,使用指針的方式表示,實際地址以十六位的方式表示,假設使用的地址是&VB100。前面的指令管腳定義的是對變頻器運行命令的控制,則當把16#1001寫入到VW100中,則電機正轉運行,若把16#1003寫入到VW100中,則表示的是反轉運行。若是讀取的功能,假設MBUS_MSG指令中adder413077,count2,Dataptr&VB102, 則表示把413077這個地址中的數據讀取出來存放于VW102,把413078的數據讀取出來存放于VW104中。

Done完成位。當執行完成后,該為位1,因此當出現需要使用多個MBUS_MSG指令是,可以使用每個指令的Done來實現輪詢的功能。

Error故障代碼存儲器,方便查詢通信故障。


通過本篇文章,希望大家對MODBUS的庫指令有進一步的了解,有不對這次往指正,下一篇文章,我們主要介紹一下程序的設計。謝謝!


作者:技成培訓網(曾鑫)

本文版權為技成所有,未經同意,盜取必究!

推薦學習相關課程:

西門子S7-300使用指南

西門子S7-300PLC 初級

西門子S7-200PLC 從入門到精通

西門子S7-200SMART PLC 編程應用入門



好書推薦
< >

  • 三菱 PLC 技術功能指令應用詳解

    為三菱FX2N系列PLC順控程序設計和功能指令講解,重點是功能指令講解。為了使讀者能夠在較短的時間內正確理解、 掌握和應用功能指令,書中除了對指令本身作了詳細的說明外...

  • 三菱FX系列PLC定位控制應用技術

    以三菱電動機的三菱FX系列PLC為目標機型,以廣大自動化技術的初學者為對象而編寫的一本專門講解定位控制技術的入門書

  • PLC模擬量與通信控制應用實踐

    以三菱fx2n plc為目標機型,介紹了plc在模擬量控制和通信控制中的應用。在模擬量控制中, 重點介紹了三菱fx2n plc模擬量特殊模塊和pid控制應用...

  • 工控技術應用數學

    本書是針對工作在生產第一線的電工編寫的。他們或因數學知識沒有學好,或因時間長了有所遺忘等種種原因, 在學習和應用電工電子技術...

  1. 1
  2. 2
快乐时时彩