plc通讯的握手信号_基于Modbus协议实现PLC与智能仪表的通讯
1?引言
Modbus?協議是法國施耐德公司推出的一個全開放的“主從式(Master/Slave)”通訊協議,其本意在于實現上位機(主設備)對PLC(從設備)內部存儲區域的“直接”讀寫操作,無需用戶對PLC進行通訊編程。隨著工業自動化技術的不斷發展,Modbus協議現已不僅僅局限于應用在PLC/上位機之間的通訊上,許多智能儀表廠商也紛紛采用該協議作為自己產品的通訊協議。與此同時,PLC也由以前單純的I/O控制發展成為集控制、數據采集、通訊為一身,在越來越多的自動化工程中,PLC需要取代上位機,作為“主設備”來完成與智能儀表或其它支持該協議的PLC的通訊。針對這一情況,施耐德公司在其編程軟件Concept2.2+補丁程序Service?Release2中增加了一條功能強大的通訊指令XXMIT。通過該指令,用戶可以將施耐德Modicon系列PLC上的原Modbus?Slave通訊口作為Modbus?Master口或標準串口來使用,大大擴展了Modicon系列PLC的通訊功能。本文將結合實例對該指令的Modbus?Master使用方法做一些介紹,以供廣大過程技術人員參考。
2?XXMIT指令基本參數介紹
2.1?基本參數概述
基本參數列表
2.2?重要參數說明
2.2.1?Command參數
該參數的16個為位用于設置通訊口的不同工作方式[page]
Bit1-Bit4:?使用Modem時需設定的相關參數
Bit5:?是否使用XON/XOFF流控制。設為1時表示使用XON/XOFF流控制
Bit6:?是否使用RTS/CTS握手信號。設為1時表示允許使用RTS/CTS信號
Bit7:?是否清除“Back?Space”字符。設為1時表示在“Simple?ASCII?Input”和“Terminated
ASCII?Input”模式下,清除MsgIn中的“Back?Space”字符
Bit8:?是否接管通訊口FIFO緩沖區。設為1時表示XXMIT指令接管通訊口FIFO緩沖區的控制
Bit9:?是否啟用Modbus模式。設為1時表示通訊口工作在Modbus?Master模式下
Bit10:?是否啟用標準串口模式。設我1時表示通訊口工作在標準串口模式下
注:Bit9,Bit10不能同時設為1
Bit11:?是否啟用“Simple?ASCII?Input”模式,設為1時表示啟用
Bit12:?是否啟用“Terminated?ASCII?Input”模式,設為1時表示啟用
Bit13:?不用
Bit14:?是否啟用RS485模式。設為1時表示啟用。只有在使用Modicon?Momentum系列PLC時,該位才設為1
Bit15:?是否啟用RTS/CTS?Modem控制。設為1時表示啟用
Bit16:?不用
2.2.2?Msgout參數
該參數中存放需發送的字符或數據。通常在Concept中用一個WORD型數組來給該參數賦值。當通訊口工作在Modbus?Master模式下時,需按Modbus?RTU的格式來給該參數賦值,但不含CRC校驗值,具體的格式見下表
2.2.3?Port參數
只要使用Modicon?Momentum系列PLC時,該參數才被設為2,否則該參數的值都被設定為1,表示用Port1進行通訊。
3?實例
下面的例子為筆者在西寧寺溝口水電廠機組監控項目中,用Modicon?Compact?PLC與MP6000智能功率儀表通訊的程序,基此來對XXMIT指令的使用做更進一步的說明。
3.1?工程要求
通過PLC從MP6000智能儀表中讀取機組當前的有功功率、無功功率等數據。
3.2?硬件情況:
PLC:?施耐德Modicon?Compact系列PLC,CPU型號為TSX?PC-E984-265
智能儀表:MP6000功率表
通訊協議:Modbus協議
3.3?軟件情況:
PLC編程軟件:Concept2.2+Service?Release2
編程方式:ST文本編程
MP6000的數據區情況:把MP6000儀表中從第一個地址開始的64個數據讀出來
PLC的數據區:從MP6000讀出的數據寫入PLC?40031開始的64個寄存器中[page]
3.4?程序:
VAR
XXMIT_MB?:?XXMIT;
SET_CMD?:?SET_BIT;
END_VAR
SET_CMD?(IN?:=?1,(*?BOOL*)
NO?:=9?(*?UINT*));?(*把Command參數的bit9置1,讓通訊口工作在Modbus?Master模式下*)
XXMIT_CMD:=SET_CMD.RES;
XXMIT_MSGOUT[1]:=3;?(***MODBUS功能碼?***)
XXMIT_MSGOUT[2]:=64;?(***需從MP6000中讀取的寄存器的數量?***)
XXMIT_MSGOUT[3]:=5;?(***MP6000的地址***)
XXMIT_MSGOUT[4]:=1;?(***MP6000中數據的起始地址***)
XXMIT_MSGOUT[5]:=31;?(***將讀取的數據寫入PLC從40031開始的64個寄存器中?***)
XXMIT_MB?(Start?:=1,?(*?BOOL?*)
Command?:=XXMIT_CMD?,?(*?WORD?*)
MsgOut?:=XXMIT_MSGOUT?,?(*?ANY?*)
MsgLen?:=5?,?(*?INT?*)
Port?:=1?,?(*?BYTE?*)
Baudrate?:=9600?,?(*?INT?*)
Databits?:=8?,?(*?BYTE?*)
Stopbits?:=1?,?(*?BYTE?*)
Parity?:=2?,?(*?BYTE?*)
RespTout?:=1000?,?(*?INT?*)
RetryLmt?:=20?,?(*?INT?*)
StartDly?:=0,?(*?INT?*)
EndDly?:=0?(*?INT?*));
參考文獻:
1、?宋德玉.可編程控制器原理及應用系統設計.北京:冶金工業出版社,1999
2、?曾繁泰等.可編程器件應用導論.北京:清華大學出版社,2001
本網站轉載的所有的文章、圖片、音頻視頻文件等資料的版權歸版權所有人所有,本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如果本網所選內容的文章作者及編輯認為其作品不宜公開自由傳播,或不應無償使用,請及時通過電子郵件或電話通知我們,以迅速采取適當措施,避免給雙方造成不必要的經濟損失。
總結
以上是生活随笔為你收集整理的plc通讯的握手信号_基于Modbus协议实现PLC与智能仪表的通讯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用C#编写三角形面积计算程序(附源码)
- 下一篇: 在VIM中添加一键编译和一键运行