摘要:介紹了西門子S7-200PLC與安控Super E40系列RTU模塊系統(tǒng)進行自由端口模式的通訊,解決了安控RTU模塊在缺少AO模塊的情況下,如何通過與西門子PLC自由端口通訊,通過西門子的模擬量I/O輸出模擬量,從而達到控制電動球閥的目的。給出了西門子S7-200的完整編程程序,以及編程過程中應該注意的問題,具有一定的實用性。
0 引言
西門子S7-200系列PLC是西門子家族中最小型的PLC ,除具有的一般功能外,以其強大的通信能力區(qū)別于一般的小型PLC ,可通過網(wǎng)絡,分布系統(tǒng)輕易的完成復雜的控制要求。S7-200系列PLCCPU在內部都集成了一個或幾個通信口,通信口標準為RS485口,利用相應的電纜就能構成具有多種通信功能的復雜通信網(wǎng)絡[1]。Super E40系列RTU是安控公司集多年的開發(fā)、工程經(jīng)驗設計的新型RTU產品,它可實現(xiàn)對工業(yè)現(xiàn)場信號的采集和對現(xiàn)場設備的控制。與常用的可編程控制器PLC相比,具有更優(yōu)良的通訊能力[2]。
本項目應用到Super E40的A32-M1 CPU模塊、A32-L3通信模塊、AC101模擬量輸入模塊、AC133數(shù)字量輸出模塊、AC141脈沖量輸入模塊。由于缺少模擬量輸出模塊,而單獨購買AO模塊價格昂貴,所以本文利用西門子S7-200特有的自由端口通訊模式與安控RTU通訊,安控將采集到的模擬量經(jīng)過數(shù)據(jù)轉換發(fā)送到西門子S7-200PLC中,西門子通過模擬量輸出端口輸出電流,驅動球閥達到相應的球閥開度,具有一定的實用性。
1 系統(tǒng)概述
本課題來源于本校SRTP項目(大學生科研訓練計劃項目)和學校實驗技術項目,題目為“基于GPRS和RTU的過程控制系統(tǒng)”,該系統(tǒng)是基于PLC模塊技術構造的過程控制系統(tǒng),可用于天然氣和流體調壓站及管道的安全監(jiān)控等。
該平臺由一路管道組成,配有壓力變送器,電動球閥,差壓計,流量計,溫度變送器,吸水泵及水箱??刂乒駟为毞胖茫刂乒窭锇惭b安控Super E40系列RTU模塊系統(tǒng)。通過變送器將壓力、溫度等傳感器的信號轉換為標準電信號,經(jīng)由RTU進行信號處理后以有線或無線方式將數(shù)據(jù)傳輸?shù)角爸脵C進行數(shù)據(jù)處理,處理后的控制信號又送至電動球閥并進行實時動作。本項目應用到Super E40的A32-M1 CPU模塊、A32-L3通信模塊、AC101模擬量輸入模塊、AC133數(shù)字量輸出模塊、AC141脈沖量輸入模塊,西門子S7-200,系統(tǒng)總體框圖如圖1所示。

2 西門子通訊自由端口模式
CPU的串行通信接口可以由用戶程序控制,這種操作模式稱為自由端口模式。通過使用接收中斷、發(fā)送中斷、字符中斷、發(fā)送指令(XMT)和接收指令(RCV),自由端口通信可以控制S7-200CPU通信口的操作模式。利用自由端口模式,可以實現(xiàn)用戶定義的通信協(xié)議,連接多種智能設備[3]。通過SMB30,允許在CPU處于RUN模式時通信口0使用自由端口模式。CPU處于STOP模式時,停止自由端口通信,通信口強制轉換成PPT協(xié)議模式,從而保證了編程軟件對PLC編程和控制的功能。
SMB30用于設置端口0通信的波特率和奇偶校驗等參數(shù)。本文給西門子設定的自由口通信,波特率為9600,數(shù)據(jù)位8,停止位1,無校驗,結束符為 A,其主程序如下所示:
主程序:
網(wǎng)絡1:// 設置控制方式為自由口通信方式,啟動接收字符中斷 //
LD SM0.1 //PLC首次掃描
MOVB 16#09, SMB30 //自由口通信,波特率為9600,數(shù)據(jù)位8,停止位1,無校驗
MOVB 16#B0, SMB87 //初始化RCV,允許RCV,有結束符,檢查空閑時間
MOVB 16#0A, SMB89 //結束符為 A
MOVB 6, SMB94 //一次接收的最大字符6個
ATCH INT_0:INT0, 23 //接收完成中斷0
ATCH INT_1:INT1, 9 //接收完成中斷1
ENI //允許用戶中斷
RCV VB199, 0 //端口0的接受緩沖區(qū)指針指向VB199
網(wǎng)絡2:
LD SM0.1
CALL 初始化:SBR1 //調用初始化子程序
網(wǎng)絡3:
LD SM0.0
MOVB 1, VB99
MOVW +1, VW100 //接收到數(shù)據(jù)后將0送到發(fā)送區(qū)
網(wǎng)絡4:
LD SM0.5
XMT VB99, 0 //將數(shù)據(jù)0從端口0發(fā)送出去
西門子模擬量輸出端口輸出模擬量信號并送入電動球閥,電動球閥做出實時動作。如何控制球閥的開度成為關鍵問題。PID控制器是應用最廣的閉環(huán)控制器,但是PID控制方式主要應用于控制對象的慣性滯后較大時。鑒于本課題對滯后性要求不高,以及模擬量輸入輸出較少,所以本文給出了一種較為簡單的控制方法。
將球閥開度以10°為單位分為9個區(qū)域,9個區(qū)域分別對應相應的驅動電流,安控RTU數(shù)據(jù)字為10000~50000,西門子S7-200數(shù)據(jù)字為0~+32000,所分的區(qū)域如表1所示。它們之間數(shù)據(jù)的傳送是通過十六進制傳輸?shù)模鏖T子接收到的數(shù)據(jù)為十六進制,并存入指定的單元中。拿安控RTU數(shù)據(jù)字50000說,將其轉換成十六進制數(shù)為C350,將兩個字節(jié)分別存于西門子指定的單元中,最后經(jīng)過數(shù)據(jù)轉換為十進制數(shù)過程中超過范圍。所以在處理的過程中運用到一些方法,就是只將第一個字節(jié)送到西門子,拿50000來說,只將C3傳送到西門子中,轉換成相應的十進制數(shù)為195,這樣就比較好處理。
球閥開度
|
所需的電流
|
安控RTU數(shù)據(jù)字
|
西門子數(shù)據(jù)字
|
安控RTU數(shù)據(jù)字對應的十六進制數(shù)
|
送到西門子中的第一字節(jié)對應的十進制數(shù)
|
區(qū)域x
|
0°
|
4mA
|
10000
|
6400
|
16#2710
|
39
|
0≤x≤39
|
10°
|
6mA
|
15000
|
9600
|
16#3A98
|
58
|
39<x<58
|
20°
|
8mA
|
20000
|
12800
|
16#4E20
|
78
|
58≤x<78
|
30°
|
10mA
|
25000
|
16000
|
16#61A8
|
97
|
78≤x<97
|
40°
|
12mA
|
30000
|
19200
|
16#7530
|
117
|
97≤x<117
|
50°
|
14mA
|
35000
|
22400
|
16#88B8
|
136
|
117≤x<136
|
60°
|
16mA
|
40000
|
25600
|
16#9C40
|
156
|
136≤x<156
|
70°
|
18mA
|
45000
|
28800
|
16#AFC8
|
175
|
156≤x<175
|
90°
|
20mA
|
50000
|
32000
|
16#C350
|
195
|
175≤x≤195
|
表1 球閥開度區(qū)域
調節(jié)球閥開度子程序和初始化子程序如下所示。
調整球閥開度子程序:
網(wǎng)絡1:
LD SM0.0
BTI VB200, VW200 //將接收到的字節(jié)數(shù)據(jù)轉換成字
網(wǎng)絡2: //分區(qū)//
LD SM0.0
MOVW +39, VW0
MOVW +58, VW2
MOVW +78, VW4
MOVW +97, VW6
MOVW +117, VW8
MOVW +136, VW10
MOVW +156, VW12
MOVW +175, VW14
MOVW +195, VW16
網(wǎng)絡3: //判斷是否在175≤x≤195區(qū)域,如在輸出相應電流,不在執(zhí)行下面程
序//
LD SM0.0
LDW>= VW200, VW14
AW<= VW200, VW16
MOVW +32000, AQW0
ENI
網(wǎng)絡4—網(wǎng)絡11 :判斷是否在156≤x<175,136≤x<156,117≤x<136,97≤x<117,78≤x<97,58≤x<78,39<x<58,0≤x≤39區(qū)域,其程序與網(wǎng)絡3一樣。
初始化子程序:
網(wǎng)絡1://西門子處于RUN時VW200為0,輸出電流4mA //
LD SM0.1
MOVW +0, VW200
MOVW +6400, AQW0
ENI
接收完成中斷0和接收完成中斷1程序如下:
接收完成中斷0:INT0
網(wǎng)絡1:
LDB= SMB86, 16#20 //SMB86 等于16#20,表示PLC收到結速符
S Q1.0, 1 //收到后將Q1.0置1,燈亮
CALL 調整球閥開度子程序:SBR0
CRETI
NOT //否則將Q1.0置0,燈滅
R Q1.0, 1
RCV VB199, 0
接收完成中斷1:INT1
INT1:
網(wǎng)絡1:
LD SM0.0
RCV VB199, 0 //接收數(shù)據(jù)
3 程序調試
在編程過程中用到了PLC串口通訊調試軟件,軟件可以在網(wǎng)上下載。在與安控RTU通訊之前先將西門子S7-200與PC機通訊,檢驗程序的正確性后再與安控RTU進行通訊調試。在調試西門子S7-200與PC機通訊的過程中出現(xiàn)的問題以及解決方法:
①程序跑飛的問題,即在與PC機通訊時,用PLC串口通訊調試軟件向PLC中發(fā)送數(shù)據(jù),當連續(xù)地發(fā)送數(shù)據(jù)時,PLC在接收到第一個字符后就會出現(xiàn)通訊錯誤現(xiàn)象。程序跑飛最主要的原因是程序結構問題,只要精簡一下程序結構使其更加結構化,問題就可以解決。
②西門子S7-200和安控RTU的波特率,數(shù)據(jù)位,校驗位,停止位不一致。如果兩者不完全一致,是不能進行通訊的。
4 總結
本文給出了關于西門子S7-200與其他設備之間利用自由端口通訊的完整通訊程序,以及給出的球閥分區(qū)域方法有一定的創(chuàng)新性,可以應用于很多領域中,并給出在編程過程中遇到的問題和解決方法,具有很大的實用性,可以應用于實際項目中。
參考文獻:
[1]張維笛,周澤魁,楊麗明,張光新.利用自由通信口模式實現(xiàn)PLC與遠程數(shù)據(jù)終端的信息傳送[J]機電工程,2002,19卷,第6期
[2] Super E40系列RTU使用手冊
[3]廖常初.PLC編程及應用(第二版)[M]北京:機械工業(yè)出版社,2005