PLC通過MODBUS協議與ABB變頻器通訊

2022-06-03 14:18:02 字數 3445 閱讀 8699

摘要:本文通過西門子公司的s7-200 。

關鍵詞:modbus plc 變頻器

中圖分類號:tp273 文獻標識碼:a 文章編號:1007-9416(2012)02-0072-02

1、引言

modbus作為一種簡單易用的通訊協議已經越來越多的應用在各類儀器儀表中,,對modbus通訊的應用進行敘述,以期達到拋磚引玉的效果。

2、硬體配置

圖1給出了simatic s7-200cpu與四台abb acs510變頻器構成的modbus網路。s7-200cpu為主工作站。變頻器1、變頻器2,變頻器3和變頻器4為從工作站。

設定變頻器的通訊協議引數9802均為1,即變頻器通過rs485序列通訊口和modbus匯流排相連。設定通訊速率引數5303為19.2kb/s。

設定校驗方式引數5304為偶校驗,1個停止位。設定控制型別引數5305為 abb傳動簡版。從左到右變頻器1、2、3和4的站位址引數5302分別設定為3、4,5和6,並將變頻器4的匯流排終端電阻dip開關置on。

在對變頻器以上引數設定完成後應對傳動重新上電啟用,使新位址及通訊協議生效。

變頻器控制要求:

變頻器分現場和遠端兩種控制模式,現場控制櫃設定三位置模式選擇開關,分別為停止、本控和遠端。在本控模式下啟動/停止命令由現場開關觸發數字輸入di1控制,頻率由現場的電位器改變模擬輸入ai1的輸入電壓進行調節。當選擇遠端模式時,數字輸入di2接通,通知plc現變頻器已經處於遠端控制模式。

為能夠實現以上功能並在人機介面能夠觀察到變頻器的執行頻率和通過模擬輸入ai2輸入的實際流量,還需要對變頻器其他部分引數進行設定,見表1。

3、程式設計

3.1 通訊內容

主工作站輪流傳送請求報文到每個變頻器從工作站,隨之每個從工作站產生響應報文。plc主工作站分別對每個變頻器從工作站進行如下操作:

(1)對每個變頻器的輸出線圈1~3的狀態進行查詢;

(2)查詢變頻器狀態暫存器40004狀態字、40005實際值、40006實際值和40007實際值。40005~40007資料值對應於表1中變頻器引數5310、5311和5312中的實際值。

(3)寫變頻器控制字,對變頻器的遠端啟停進行控制。

(4)寫變頻器暫存器,對變頻器的外部2給定進行控制。

對乙個變頻器的資料全部讀寫完成後,開始對下一站號變頻器的資料進行讀寫。當所有變頻器的資料讀寫完成後,主工作站重新開始對最小站號變頻器的資料進行讀寫。資料的傳輸及接受採用plc自由通訊口模式進行,報文按照modbus的協議組織。

3.2 通訊格式

modbus請求報文格式如表2。

因在s7-200plc傳送指令xmt中,傳送緩衝器的第乙個位元組指定的是資料傳輸的位元組數,從第二個位元組以後的資料為需要傳送的資料。因此,結合modbus請求報文格式,plc傳送資料的格式如表3。

在整個網路通訊過程中,主工作站輪流傳送請求報文到每個從工作站,隨之每個從工作站必須產生響應報文返回到主工作站。當主工作站向從工作站傳送請求報文和接受從工作站返回的響應報文時,在主工作站儲存區開闢了傳送緩衝區和接受緩衝區。主工作站向從工作站傳送請求報文時,首先對相應從工作站輸出緩衝區的資料進行crc運算生成校驗碼,並將校驗碼疊加在輸出緩衝區的資料之後再傳送到傳送緩衝區,然後再由傳送指令發出。

建立乙個遠端迴圈結束標誌位,當響應報文全部接受完成,置該位為on。主工作站在接受從工作站的響應報文時,先把響應報文輸入到接受緩衝區,再把接受緩衝區中的資料傳送到輸入緩衝區。為此,在主工作站中要留有兩個資料儲存區,乙個作為報文請求(輸出緩衝區),另乙個作為報文響應(輸入緩衝區)。

在modbus rtu通訊協議中都必須要求有crc迴圈冗餘校驗。crc迴圈冗餘校驗為兩個位元組,附加在報文後面的crc的值由傳送裝置計算,當放置crc 值於報文時,高低位元組必須交換。首先傳送低位位元組,然後再傳送高位位元組。

故此在傳送緩衝區中的資料要比輸出緩衝區的資料多兩個crc迴圈冗餘校驗位元組。接收裝置在接收報文時重新計算crc的值,並將計算結果於實際接收到的crc值相比較。如果兩個值不相等,則傳送的資料為錯誤。

3.3 程式描述

sbr0子程式:在plc上電初始化階段,設定通訊口為自由口通訊方式,並設定波特率及校驗方式,允許全部中斷時件,並設定定時中斷的時基為20毫秒。在這裡設定波特率為19.

2kb/s,偶校驗,每字元8個資料。注意必須與從工作站的通訊引數相同。為輸出和輸入緩衝區的資料位址建立間接定址指標。

並設定請求報文的剩餘數目為4,設定從工作站的查詢剩餘數目為4。

將輸出緩衝區指標中指出的位址為起始位址的12個位元組通過塊傳送命令傳送到傳送緩衝區單元中。並復位遠端迴圈結束標誌位。

對傳送緩衝區中的報文進行運算生成crc,交換crc 暫存器中的高低位元組,並將交換完成的crc 暫存器疊加到傳送緩衝區中。

啟動定時中斷和傳送中斷,並通過傳送指令將傳送緩衝區中的請求報文傳送。

建立跳轉入口,標號1。

若迴圈未結束,跳轉到標號1。程式不向下執行,直至遠端迴圈結束,標誌位為on。

遠端i/o更新完成,將接受的報文通過塊傳送命令傳送到接受緩衝區指標指出的接受緩衝區中。

修改傳送緩衝區和接受緩衝區指標值,指向下乙個輸出和輸入緩衝區位元組位址。將請求報文的剩餘數目減1。

當請求報文的剩餘數目為零時,重新設定請求報文的剩餘數目為4,將從工作站的查詢剩餘數目減1。

當工作站的查詢剩餘數目為零時,重新設定從工作站的查詢剩餘數目為4,為輸出和輸入緩衝區的資料位址重新建立間接定址指標。

int_0中斷程式:在接受報文超時情況下,禁止接受中斷和接受定時中斷,置遠端迴圈結束標誌位為on。

int_1中斷程式:在傳送超時情況下禁止傳送中斷和傳送定時中斷,置plc為stop模式。

int_10中斷程式:禁止傳送完成中斷,啟動接受定時中斷int_0和接受資料中斷程式int_11。

int_11中斷程式:若接受的首字元(從工作站位址)為從工作站的正確位址,則建立乙個接受字元的位址指標。並把接受到的字元裝入到接受字元指標指出位址中。

增加指標的數值,指向下乙個位址。並啟動中斷程式int_12。

int_12中斷程式:把接受到的第二個字元(功能碼)裝入到接受字元指標指出位址中,增加指標的數值,指向下乙個位址。啟動中斷程式int_13。

int_13中斷程式:把收到的第三個字元(位元組數)裝入到接受字元指標指出位址中,並修改指標值。第三個字元為接受的不含crc校驗碼字元的總數目,剩餘接受字元數目為將位元組數加2,若反饋的功能碼為十六進製制數0f,全部剩餘字元數目為5。

將全部剩餘字元數目置入到累加器ac1中,當累加器ac1為零時,接收字元也就完成。啟動中斷程式int_14。

int_14中斷程式:將接受到的字元裝入接受字元指標指出位址中,並修改位址指標值和將將累加器ac1數值減一。若累加器ac1的數值為零。

則關閉字元接受中斷和定時中斷,並將遠端迴圈結束標誌位置on。

4、結語

該系統自投入**執行以來,系統調節迅速且執行穩定,並取得了良好的經濟效果,在助劑新增中具有較高的推廣價值。

參考文獻

[1]殷洪義.可程式設計序控制器選擇、設計與維護.機械工業出版社,2023年.

[2]s7-200可程式設計控制器系統手冊.2023年.

MODBUS協議詳細講解

modbus rtu詳細解釋 modbus乙個工業上常用的通訊協議 一種通訊約定。modbus協議包括rtu ascii tcp。其中modbus rtu 最常用,比較簡單,在微控制器上很容易實現。雖然rtu比較簡單,但是看協議資料 手冊說得太專業了,起初很多內容都很難理解。所謂的協議是什麼?就是互...

modbus通訊協議

工業控制已從單機控制走向集中監控 集散控制,如今已進入網路時代,工業控制器連網也為網路管理提供了方便。modbus就是工業控制器的網路協議中的一種。一 概述 modbus 協議是應用於電子控制器上的一種通用語言。通過此協議,控制器相互之間 控制器經由網路 例如乙太網 和其它裝置之間可以通訊。它已經成...

MODBUS通訊協議v1 6版

引數存放首址對應輸入暫存器首址。主機傳送命令格式如下 從機位址 1byte 功能編碼 1byte 輸入暫存器首址 2byte 輸入暫存器個數 2byte crc校驗值 2byte 從機位址值範圍在1 99 從機回應格式如下 從機位址 1byte 功能編碼 1byte 讀出的位元組個數 1byte 位...