日本欧美一区-日本欧美一区二区三区片-日本强好片久久久久久AAA-日本-区一区二区三区A片-日本人伦一区二区三区-日本人妻A片成人免费看

電子開發網

電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 梯形圖實例 >> 正文

西門子PLC S7-200 smart如何使用Modbus 485通訊傳輸接收數據_200smart modbus

作者:佚名    文章來源:網絡整理    點擊數:    更新時間:2025/7/19

前言

西門子在 STEP 7-Micro/WIN SMART 中正式推出 Modbus RTU 主站協議庫(西門子標準庫指令)。使用 Modbus RTU 主站指令庫,可以讀寫 Modbus RTU 從站的數字量、模擬量 I/O 以及保持寄存器,從而實現PLC通過modbus方式控制其他器件。


提示:以下是本篇文章正文內容,下面案例可供參考

一、準備工作

電腦

S7-200smart st30

485通訊線

說明:這里將以S7-200smart作為主站,電腦串口調試助手作為從站。做操作演示。

此處省略接線。

二、寫梯形圖

1.MBus_CTRL

1. 調用 Modbus RTU 主站初始化和控制子程序

使用 SM0.0 調用 MBUS_CTRL 完成主站的初始化,并啟動其功能控制:

 調用 Modbus RTU 主站初始化和控制子程序 


圖 2. 用 SM0.0 調用 Modbus RTU 主站初始化與控制子程序

各參數意義如下:

a.

EN

使能:

必須保證每一掃描周期都被使能(使用 SM0.0)

b.

Mode

模式:

為 1 時,使能 Modbus 協議功能;為 0 時恢復為系統 PPI 協議

c.

Baud

波特率:

支持的通訊波特率為1200,2400,4800,9600,19200,38400,57600,115200。

d.

Parity

校驗:

校驗方式選擇

0=無校驗(通常默認選擇0)

1=奇較驗

2=偶較驗

e.

Port

端口號:

0 = CPU 集成的 RS 485 通訊口 ; 1 = 可選 CM 01 信號板 。

f.

Timeout

超時:

主站等待從站響應的時間,以毫秒為單位,典型的設置值為 1000 毫秒(1 秒),允許設置的范圍為 1 - 32767。

注意: 這個值必須設置足夠大以保證從站有時間響應。

g.

Done

完成位:

初始化完成,此位會自動置1。

h.

Error

有錯誤

1.MBus_MSG

調用 Modbus RTU 主站讀寫子程序MBUS_MSG,發送一個Modbus 請求;

 

各參數意義如下:

a.

EN

使能:

同一時刻只能有一個讀寫功能(即 MBUS_MSG)使能

注意:建議每一個讀寫功能(即 MBUS_MSG)都用上一個 MBUS_MSG 指令的 Done 完成位來激活,以保證所有讀寫指令循環進行(見例程)。

b.

First

讀寫請求位:

每一個新的讀寫請求必須使用脈沖觸發

c.

Slave

從站地址:

可選擇的范圍 1 - 247

d.

RW

讀寫請求:

0 = 讀, 1 = 寫

e.

Addr

讀寫從站的

選擇讀寫的數據類型

數據地址:

00001 至 0xxxx - 數字量輸出

10001 至 1xxxx - 數字量輸入

30001 至 3xxxx - 模擬量輸入

40001 至 4xxxx - 保持寄存器

f.

Count

數據個數

通訊的數據個數(位或字的個數)

注意: Modbus主站可讀/寫的最大數據量為120個字(是指每一個 MBUS_MSG 指令)

g.

DataPtr

數據指針:

1. 如果是讀指令,讀回的數據放到這個數據區中 2. 如果是寫指令,要寫出的數據放到這個數據區中

h.

Done

完成位

讀寫功能完成位

i.

Error

錯誤代碼:

只有在 Done 位為1時,錯誤代碼才有效

0 = 無錯誤

1 = 響應校驗錯誤

2 = 未用

3 = 接收超時(從站無響應)

4 = 請求參數錯誤(slave address, Modbus address, count, RW)

5 = Modbus/自由口未使能

6 = Modbus正在忙于其它請求

7 = 響應錯誤(響應不是請求的操作)

8 = 響應CRC校驗和錯誤

101 = 從站不支持請求的功能

102 = 從站不支持數據地址

103 = 從站不支持此種數據類型

104 = 從站設備故障

105 = 從站接受了信息,但是響應被延遲

106 = 從站忙,拒絕了該信息

107 = 從站拒絕了信息

108 = 從站存儲器奇偶錯誤

三、使用難點與解答

通常支持485通訊的器件給的使用說明書,給的指令是16進制的字符串代碼。很難與當前PLC庫指令對應起來,尤其是命令地址。我們以IAI馬達給的使用說明書為例子。如圖所示:

 

 

該示例是PLC通過modbus去讀取馬達的位置。讀取控制器地址9000這個寄存器里面的數據

RW填0,表示去讀取數據。

Plc庫里面需要填的Addr(e)是十進制,需要將16進制的9000轉成十進制。

通過計算器得知:16#9000=36864

注意事項:這里博主也比較奇怪,實際使用讀取寄存器地址的時候需要+1,36865

不知道有沒有人可以解釋一下的。

 

由于這里是讀取寄存器,所以Addr=436865.

 

count是寄存器數量:按照示例,這里有2個寄存器。所以count填2

通過串口調試助手來測試一下:接通M15.0發送信號,串口調試助手收到了PLC發送的信號。且可以看到收到的數據與IAI操作手冊示例一致。測試成功

 

以上是通過modbus讀取的示例。

注意事項:

1、只有在操作就被控方寄存器的時候(無論讀取還是寫入),轉換的成十進制的地址后第一位需要加個4

2、注意發送命令和讀取命令的字符長度,需要正確填寫

3、需要注意波特率要填寫正確,與被控方保持一致。否則發出去的信號與收到的信號不相符

4、發出去的內容填寫到DataPtr中。

 

此處我們再來解讀plc的這個命令就比較清晰了:

通過MB_MSG,向1號從站讀取從36865(Addr)這個地址開始2位(Count)的數據,并把讀取到的數據寫入VB2000

如果是寫入:通過MB_MSG,將PLC的VB2000開始的2位寄存器內的數據,寫入到1號從站的36865寄存器中

Tags:MODBUS通訊,MODBUS,200SMART  
責任編輯:admin
  • 上一篇文章:
  • 下一篇文章: 沒有了
  • 請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
    1分 2分 3分 4分 5分

    還可以輸入 200 個字
    [ 查看全部 ] 網友評論
    推薦文章
    最新推薦
    關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
    返回頂部
    刷新頁面
    下到頁底
    晶體管查詢