時間:2018-01-30 11:11:59來源:網絡轉載
0引言
隨著計算機與通信技術的發展,PLC各種模塊的多樣化和信息化,由PLC作為基本控制單元的分布式控制系統在自動化領域中廣泛應用,迫切需要一種總線能適合遠距離的數字通信。在RS422標準的基礎上,EIA研究出了一種支持多節點、遠距離和接收高靈敏度的RS485總線標準。EIA曾經在它所有標準前面加上RS前綴(英文RcommendeStandard的縮寫),因此許多工程師一直沿用這種名稱,因為RS485的遠距離(1200m)、多節點(32)以及傳輸線成本低的特性,使得EIA的RS485成為工業應用數據傳輸的首選標準。
我廠18條電動執行機構調試線,分布在三個廠房的若干區域,每個調試線由一臺PLC與HMI控制,為了將調試數據歸口管理,并判斷調試結果的正確性,對調試線進行監控,18臺PLC通過RS485總線與計算機連接起來,構成一個分布式監控系統,通過數據通信使計算機和PLC實現數據共享,完成對調試過程的集中管理和分散控制。計算機與PLC各個子站的的通信是系統的重要環節,本文詳細論述了基于RS485總線,利用VB開發了上位機通信系統,編寫了PLC自由口的通訊協議的設計與實際應用方案。可以借鑒為各種上位機、PLC、HMI等通信系統設計的應用范例,同時可作為檢測技術、自動化設計等課程的工程項目訓練與教學的平臺。
1RS485網絡構成
RS485標準采用有平衡式發送,差分式接收的數據收發器來驅動總線,與RS422一樣,可以將多個(最多為32個)RS485接口互連,而其連接更簡單,只需將各個接口的“+”端和“+”端相連、“-”端和“-”端相連,連接的兩根線就是RS485的“物理總線”。這些相互連接的RS485接口的物理地位完全平等,在邏輯上取一個為主導地位,其他為從屬地位。在通信時,同樣采用主呼叫,從應答的方式。
控制系統的硬件構成如圖1所示,上位機為計算機,下位機采用西門子公司S7-200系列PLC,各PLC通過通信口0直接掛在RS485總線上,上位機通過RS232/485轉換器與RS485總線相連,形成1:N通信方式。控制系統中,上位機的主要任務是獲取調試線上的數據信息,完成對調試過程的監控。下位機的主要任務是對調試過程進行自動控制,將調試數據發送給上位機,并按上位機命令執行。
圖1網絡圖
2計算機與PLC的通信
上位機與PLC的通信實際上是計算機與PLC的通信模塊之間交換命令和響應,下位機具有初始傳送優先權,將所有調試數據發送給上位機,上位機根據收到的數據判斷哪個調試線發出的數據,對數據分析后響應回傳數據與命令,下位機只接收發送給自己的數據。通信以“幀”為單位進行,幀分為數據幀和響應幀兩種。數據幀由PLC發送給上位機;響應幀為上位機接到數據幀后自動向PLC發出的命令與判斷信號所有的指令碼、字符和數據均以十六進制碼發送和接受。
S7-200系列PLC通信模式有兩種:一種是點對點(PPI)通信協議,用于PLC與其編程器或西門子公司的人機接口產品之間的通信;另一種是對用戶完全開放的自由口模式(freeportmode),由用戶自行規定通信的協議。PPI模式只能在PLC停止方式(STOP)下通信,而自由口模式只能在PLC運行方式(Run)下通信,我們采用自由口通信方式在進行通信之前,應先對串口初始化。對S7-200PLC的初始化是通過設置特殊標志位SMB30來實現的。
2.1PLC的發送指令
發送S7200系列PLC有專門的發送指令用于發送數據,格式為:
XMTTABLEPORT
XMTTABLEPORTTABLE為發送數據的字節數即數據長度,最大為255。而要發送的數據必須存儲在TABLE的后面。如TABLE的存儲區域為VB600,要發送“MESSAGE”的數據存儲形式如圖2所示。PORT指定通信口,本項目設為0。當正在發送數據時,PLC特殊標志位SM4.5為0;發送完后,SM4.5為1。因此可通過判斷SM4.5的狀態來進行發送后處理。
圖2PLC發送信息
如果有一個中斷服務程序連接到發送結束事件上,在發送完緩沖區中的最后一個字符時,則會產生一個中斷(對端口0為中斷事件9,對端口1為中斷事件26)。
2.2PLC接收指令
接收指令的格式為:RCVTABLEPORT
接收指令使您能夠接收一個字節或多個字節的緩沖區,最多為255個。圖3給出了接收緩沖區的格式。如果有一個中斷服務程序連接到接收信息完成事件上,在接收完緩沖區中的最后一個字符時,S7-200會產生一個中斷(對端口0為中斷事件23,對端口1為中斷事件24。)也可以不使用中斷,通過監視SMB86(端口0)或者SMB186(端口1)來接收信息。當接收指令未被激活或者已經被中止時,這一字節不為0;當接收正在進行時,這一字節為0。
圖3接收信息
2.3特殊寄存器及相關的位
SMB30控制自由端口0的通訊方式,SMB130控制自由端口1的通訊方式。您可以對SMB30和SMB130進行寫和讀。如表1所示,這些字節設置自由端口通訊的操作方式,并提供自由端口或者系統所支持的協議之間的選擇。
通信接收字符緩沖器SMB2:SMB2是一個暫態寄存器,用于存放在自由口通信方式下接收到的當前字符,用戶在下一步應從這里取走其中的內容,通過編程控制將接收到的字符一個一個由SMB2移入接收緩沖區。
通信校驗結果標志位SMB3.0:PLC按SMB30規定的奇偶校驗方式對所接收到的數據作校驗。如果校驗有錯,PLC自動將SMB3.0置1,SM3.0=0表示奇偶校驗正確。根據這個標志,可決定對當前信息的取舍,還可以在出錯的情況下,將此錯誤位發送給對方,以便要求它重發。
工作方式標志位SM0.7:57-200系列PLC只有處于運行(RUN)方式時才能進行自由口模式通信,而在停止(ST6P)方式時只能以PPI模式通信。當PLC處于RUN方式時SM0.7=1,否則SM0.7=0,因此可通過判斷SM0.7的狀態來打開或關閉自由口通信。
發送器空標志SM4.5及收發指令:當正發送數據信息時,特殊存儲器位SM4.5=0,當發送完成后,SM4.5=1,因此可通過判斷SM4.5的狀態來進行發送后處理,也可直接用發送中斷來處理。
表1特殊存儲器字節SMB30
3上位機程序設計
在Windows環境下,實現上位機與PLC的數據通訊,有多種軟件開發平臺可以使用,VisualBasic編寫通信軟件十分方便,編程工作量小,可視化程度高,尤其是提供了通信控件MSComm,可方便地實現與多臺PLC間的通信。MSComm控件有很多重要屬性,其中最重要的幾個是:
(1)CommPort:設置并返回通信口號;
(2)SetTIngs:以字符串的形式設置并返回波特率、校驗方式、數據位和停止位;
(3)PortOpen:設置并返回通信端口的狀態(打開或關閉一個通信口);
(4)InBufferCount:返回接收緩沖區收到的字節數;
(5)Input屬性:從接收緩沖區讀取數據;
(6)Output屬性:向傳送緩沖區寫一個字符串。
計算機與PLC的通信過程流程圖如圖5所示,下面為計算機與5號站PLC的主要通信程序。
3.1初始化通信口
PrivateSubForm_Load0
MSComm1.CommPort=1//使用串行口1
MSComm1.SetTIngs=“9600,e,7,1”//9600波特率,偶校驗,7位數據位,1位停止位
MSComm1.InBufferCount=0//清除接收緩沖區
MSComm1.InputLen=0//輸入時,讀取緩沖區的全部內容
MSComm1.PortOpen=True//打開通信口
3.2發送控制命令
PrivateSubSend_Click()
HD=“5”+“FF”+“WW”+“A”+“M0100”+“01”+Data//發給5號PLC站
Write=Chr(5)+HD+SumChk(HD)+Chr(13)+Chr(10)//形成控制命令字,其中DataW為要
//寫入的數據,SumChk(RD)為和校驗函數
MSComm1.Output=Write//向5號站PLC發送控制命令
Do
XY=MSComm1.Input//接收PLC響應
RD_date=RD_date+XY
LoopUnTIlRight(RD_date,2)=Chr(13)&Chr(10)
Rd=Left(RD_date,5)//取應答字符串的前5位
IfRd=Chr(6)+“02FF”Then
MsgBox“控制命令已接收”
Else
MsgBox“通信錯誤”
EndIf
EndSub
3.3讀取調試線狀態信息
PrivateSubD_A()
RD=“05”+“FF”+“WR”+“A”+“DO0000”+“01”
Read=Chr(5)+RD+SumChk(RD)+Chr(13)+Chr(10)
MSComm1.Output=Read//發送讀5號站PLC數據命令
Do
ch=MSComm1.Input//接收PLC響應
R_Answer=R_Answer+ch
LoopUnTIlRight(R_Answer,2)=Chr(13)&Chr(10)
RA=Left(R_Answer,5)//取PLC應答字符串的前5位
IfRA=Chr(2)+“02FF”Then//判斷讀取是否正確
MSComm1.Output=Chr(6)+“02FF”//正確,向PLC發送
確認信號DataR=Mid(R_Answer,6,4)//取出數據
DataR=Val(&H+DataR)//據轉換位十進制數
Else
MsgBox“讀取數據錯誤”
EndIf
EndSub
4PLC程序設計
PLC通過程序對調試線的控制,產生的調試結果存放在以VB100為首的255個字節中,本文主要敘述的通訊,并也存在數據的翻譯過程,例如調試的力矩值放在VW200中,則要求將VB200乘以256再加VB201。若是浮點數的翻譯方式還了復雜些,在此就不一一敘述。主要是將一串調試數據發送給上位機,并得到上位機的對試驗結果的判斷與命令。下面結合通訊相關的PLC程序,對通訊進行相應的說明。
4.1主程序
LDI0.1//發送控制
EU
CALL發送:SBR1//將調試好的數據存儲在表中,準備調用子程序發送
4.2接收子程序
SBR0:
LDSM0.0
MOVB9,SMB30//初始化端口0
MOVB16#F0,SMB87//初始化RCV信息控制字節,RCV使能
//檢測信息結束字符,檢測空閑線信息條件
MOVB16#05,SMB88//只接收發給本站的數據(以5號站為例)
MOVB16#0A,SMB89//接收回車鍵,接收的結束數據
MOVB5,SMB90//設置空閑線超時為5ms
MOVB10,SMB94//設置最大字符數為10
ATCHINT_0:INT0,23//接收完成,執行中斷0
ENI//啟用用戶中斷
RCVVB600,0//通過端口0,接收數據,存儲在以VB600為首的字節中
4.3發送子程序
SBR1:
LDSM0.0
MOVB2#01101001,SMB30//初始化端口0,9600波特,7個數據位,偶校驗
MOVB255,VB1000//發送的總數據位
ATCHINT_1:INT1,9//發送完成執行中斷1
ENI//啟用用戶中斷
XMTVB100,0//通過端口0,發送數據,發送以VB100為首的字節中
4.4中斷子程序
中斷子程序INT0:
LDSM0.0
MOVBVB602,QB0//響應已接收到命令
中斷子程序INT1:
LDSM0.0
CALL接收:SBR0//使PLC處于接收狀態
5結束語
該系統經實際運行情況表明,采用RS-485總線構建的分布式監控系統,硬件連接簡單,編程快捷,可方便地實現計算機和多臺PLC間的聯網通信,與用現場總線模塊EM277構建的Profibus-DP、以太網模塊EM243-I相比大大降低了成本,且不受只有8個站點可以使用PCAccess的限制,運行一年多來實踐表明運行穩定可靠,能很好的滿足監控系統的要求。
標簽:
上一篇:PLC應用在化學水處理系統中
下一篇:PLC實現電機分批自啟動
中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.hysjfh.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。
本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
產品新聞
更多>2025-05-19
2025-04-30
2025-04-11
2025-04-08
2025-03-31
2025-03-26