MET64SCUA本文主要介紹了用VB與西門子S7-300/400 PLC的通信方法,并把此方法應(yīng)用于復(fù)雜
控制系統(tǒng)的調(diào)試以及PC機管理系統(tǒng)與PLC控制系統(tǒng)的信息交換中。
關(guān)鍵詞:PLC VB 通信
中圈分類號:TP273 文獻標(biāo)識碼:B
Research on the Communication between SIEMENS S7-300/400 and VB
LIU Zhendong ,LIANG Xiuman
(College of Computer and Automation Control, Hebei Polytechnic University, Tangshan
Hebei 063009, China)
Key words: PLC VB communication
Abstract: This paper introduces a Communication b between SIEMENS S7-300/400
and VB, this b has been applied to the debugging complex control system and
communication exchange between PC manager system and PLC control system.
0引言
西門子MET64SCUA 是目前我國應(yīng)用最為廣泛的大中型PLC,研究西門子PLC及
其網(wǎng)絡(luò)的通信技術(shù)有著重要意義。本文通過對貴州鋼繩集團2000KN拉力機測控系統(tǒng)的研究,
探討了在Windows2000環(huán)境下,用VB開發(fā)的鋼絲繩破斷力試驗機測控軟件與CPU-314通信
的實現(xiàn)問題。結(jié)果表明,通過適當(dāng)?shù)姆椒ǎ梢允筕B與S7-300/400 PLC進行良好的通信,
用VB構(gòu)成功能強大數(shù)據(jù)采集及控制軟件。
1軟件總體設(shè)計
通常情況下,我們一般選用WinCC作為西門子S7-300/400 PLC控制系統(tǒng)的監(jiān)控和數(shù)
據(jù)采集軟件(HMI/SCADA)。由于WinCC內(nèi)置了基于S5/S7協(xié)議的通訊系統(tǒng),并提供了大量面
向這些系統(tǒng)和技術(shù)的組件,從而為WinCC和這些系統(tǒng)的最優(yōu)化通訊和良好的互操作性提供了
保證。但是,作為一種作為一種通用組態(tài)軟件,WinCC的應(yīng)用領(lǐng)域主要是工業(yè)過程控制領(lǐng)域。
而2000KN鋼絲繩拉力試驗機對于上位機軟件的要求比較特殊:采樣速率較高(20次/秒);
依采樣速率同步顯示曲線和數(shù)據(jù);試驗數(shù)據(jù)和曲線要能夠按照試驗編號查詢并且調(diào)出顯示。
很明顯,WinCC的趨勢曲線、過程值歸檔等功能不能滿足2000KN拉力機的工藝要求。VB作
為一種通用的高級編程語言,編程靈活,在開發(fā)圖形曲線顯示、數(shù)據(jù)庫等方面有著WinCC
不可比擬的技術(shù)和成本優(yōu)勢。因此,我們選用VB來開發(fā)2000KN鋼絲繩破斷力試驗機的數(shù)據(jù)
采集和控制軟件。圖1為2000KN拉力機測控軟件系統(tǒng)及與PLC硬件連接示意圖。
2數(shù)據(jù)通信
2.1通信軟件接口
圖1 2000KN拉力機測控軟件系統(tǒng)及與PLC硬件連接示意圖
該系統(tǒng)能否研究成功的關(guān)鍵問題在于VB和CPU-314 PLC之間的通信。S7-300/400的
MPI(多點通信接口)用于西門子公司的控制產(chǎn)品之間的通信,例如安裝在PC上的STEP7
編程軟件與PLC之間的通信,但是這些通信協(xié)議均未公開。如果用S7-300/400的點對點通
信協(xié)議實現(xiàn)PC與PLC之間的通信,需要配置專用的通信處理器模塊或帶點對點通信接口的
CPU31x-2PtP。其點對點通信協(xié)議并不通用,要化較多的時間熟悉和摸索,才能編寫出PLC
和計算機的通信程序。
PRODAVE是用于PC與S7系列PLC之間的數(shù)據(jù)鏈接通信的工具軟件包。PRODAVE是
“Process Data Traffic”(過程數(shù)據(jù)交換)的縮寫,通過PC/MPI適配器(PC-Adaptor)、
MPI通信處理器(CP5611卡)等硬件設(shè)備,可以實現(xiàn)PC與PLC之間的數(shù)據(jù)鏈接。PRODAVE
的動態(tài)鏈接庫(DLL)提供了大量基于Windows操作系統(tǒng)的DLL函數(shù),供用戶解決PLC與PC
之間的數(shù)據(jù)交換和數(shù)據(jù)處理問題。Windows環(huán)境中的西門子公司的PRODAVE工具箱有PRODAVE
S7(完全版)和PRODAVE S7 mini(簡化版)兩種,PRODAVE S7(完全版)功能比較全面,可按
位或者字節(jié)讀寫PLC中的輸入過程映像區(qū)、輸出過程映像區(qū)、位存儲區(qū)、定時器、計數(shù)器、
數(shù)據(jù)塊等區(qū)域,PRODAVE S7 mini(簡化版)則只能讀寫DB中的字和字節(jié)。
2.2動態(tài)鏈接庫聲明
程序中用到的PRODAVE函數(shù)主要有:
⑴load_tool函數(shù)用于PC機與PLC系統(tǒng)的初始化鏈接。
⑵unload_tool函數(shù)用于斷開PC機與PLC系統(tǒng)的鏈接。
⑶db_read函數(shù)用于從PLC的DB塊中讀數(shù)據(jù)字。
⑷db_write函數(shù)用于向PLC的DB塊中寫數(shù)據(jù)字。
首先,在模塊中應(yīng)該聲明程序使用的用戶自定義的數(shù)據(jù)類型PlcAdrType:
Type PlcAdrType
ADDRESS As Byte
SEGMENTID As Byte
SLOTNO As Byte
PACKNO As Byte
End Type
在通信開始之前,首先用load_tool函數(shù)建立與上位機與PLC的鏈接,通信結(jié)束時
必須用unload_tool函數(shù)斷開PC與PLC的鏈接,否則會引起上位機死機或上位機系統(tǒng)的異
常狀況。VB在調(diào)用DLL函數(shù)之前,需要用Declare語句在模塊中聲明所要使用的DLL函數(shù)。
聲明DLL函數(shù)的主要作用是指明該函數(shù)所在的DLL庫名及路徑,以及該函數(shù)的參數(shù)說明,以
便Windows能找到該函數(shù),并能正確的執(zhí)行該函數(shù)。
Declare Function load_tool Lib "w95_s7.dll" (ByVal nr As Byte, ByVal dev As
String, adr As PlcAdrType) As Long
//nr是PC要激活的連接的個數(shù)(1-32個);
//dev是用戶驅(qū)動設(shè)備的名稱MPI接口時為“S7ONLINE”;
//adr是連接的地址列表;
Declare Function unload_tool Lib "w95_s7.dll" () As Long
//斷開連接
Declare Function db_read Lib "w95_s7.dll" (ByVal blockno As Long, ByVal no
As Long, Amount As Long, value As Byte) As Long
//讀取DB塊號為blockno中的從地址no開始的Amount個數(shù)據(jù)字。
//讀取的數(shù)據(jù)存放于PC的變量區(qū)value中。
Declare Function db_write Lib "w95_s7.dll" (ByVal blockno As Long, ByVal no
As Long, Amount As Long, value As Byte) As Long
//將PC的變量存儲區(qū)value中的amount個數(shù)據(jù)字寫入到PLC的數(shù)據(jù)塊DB
中從no開始的數(shù)據(jù)區(qū)。
2.3讀寫函數(shù)使用的注意事項
我們在調(diào)試過程中曾發(fā)現(xiàn)讀入的模擬量(雙字)存在突然變小的情況,在排除硬件故
障后,發(fā)現(xiàn)是由于VB對于字符串的處理比較特殊而造成的錯誤結(jié)果。因此,在使用PRODAVE
工具箱進行通信的程序中,要特別注意的是VB在處理字符串時對“0”是自動舍棄的,現(xiàn)舉
例說明如下:
PIW292是4~20mA模擬量輸入信號在PLC中的地址PIW292的數(shù)據(jù)類型是整數(shù),經(jīng)過
數(shù)據(jù)轉(zhuǎn)換存于DB1.DBD36中,DB1.DBD36的數(shù)據(jù)類型是雙整數(shù)。轉(zhuǎn)換的梯形圖如圖2所示。
圖2 模擬量轉(zhuǎn)換為雙整數(shù)的梯形圖
在VB中執(zhí)行下列語句:
Res = db_read(1, 36, 4, Buffer_R(0)) // Buffer_R()是字符串型數(shù)組
Res = db_read(1, 36, 4, Buffer_R(0))執(zhí)行后,DB1.DBD36中的數(shù)據(jù)被VB讀入到
Buffer_R(0)~Buffer_R(3)中,將Buffer_R(0)~Buffer_R(3)中的String 型數(shù)據(jù)變?yōu)?br />
Single型數(shù)據(jù)后,得到的即為PLC上的傳感器的數(shù)值。將將Buffer_R(0)~Buffer_R(3)中
的String型數(shù)據(jù)變?yōu)镾ingle型數(shù)據(jù)的方法如下:
Val=CSng(Buffer_R(0)+ Buffer_R(1)+ Buffer_R(2)+ Buffer_R(3))
Val即為Single型的模擬量采樣結(jié)果。
假設(shè)DB1.DBD36中數(shù)值為16進制的“00003F12”,經(jīng)過上述轉(zhuǎn)換后,Val的值為
“00003F12”(16進制),變?yōu)?0進制為“16146”。此時實際讀入的結(jié)果是正確的。但是,
當(dāng)Buffer_R()中的字符串有“0”字符時:例如DB1.DBD36中數(shù)值為16進制的“00003F02”,
Val中的結(jié)果應(yīng)該是16進制的“00003F02 ”,即10進制的“16130”。而實際讀入的數(shù)值為
10進制的“1010”,比真實的模擬量信號變小了近16倍!
為什么會出現(xiàn)如此錯誤的結(jié)果呢?原因如下:當(dāng)傳感器的真實值為“00003F02”時,
Buffer_R(0)=“00”;
Buffer_R(1)=“00”;
Buffer_R(2)=“3F”;
Buffer_R(3)=“02”;
執(zhí)行Val=CSng(Buffer_R(0)+ Buffer_R(1)+ Buffer_R(2)+ Buffer_R(3))的語句的
過程中,Buffer_R(3)的“02 ”中的“0”被VB自動舍棄,Val變?yōu)椤?03F2”(16進制),
也就是“1010”(10進制)!這就是模擬量讀入值突然變小的原因。要解決這一故障,需要
在執(zhí)行Val=CSng(Buffer_R(0)+ Buffer_R(1)+ Buffer_R(2)+ Buffer_R(3))語句前進行一
下判斷,當(dāng)Buffer_R()的中的低位是“0”時,用程序補上一個“0”字符以避免錯誤的發(fā)
生。
3結(jié)束語
運用VB開發(fā)環(huán)境編寫的PLC測控程序,具有界面友好,人機交互功能方便、數(shù)據(jù)庫功
能強大靈活等優(yōu)點,具有很強的通用性和實用性,而起通過調(diào)用PRODAVE S7軟件包的動態(tài)
鏈接庫實現(xiàn)PC機對PLC CPU-314數(shù)據(jù)的讀寫操作,不但數(shù)據(jù)傳輸速度快,而且數(shù)據(jù)傳輸正
確率高。相對與用WinCC開發(fā)人機界面有著突出的優(yōu)勢,但是,與WinCC相比,用VB開發(fā)
此類軟件的工作量和難度相對比較大。盡管如此,此類通信技術(shù)對于拓寬實現(xiàn)西門子工控產(chǎn)
品的應(yīng)用領(lǐng)域仍然具有重要意義。
聯(lián)系人:小費
QQ:2851759102
郵箱:2851759102@qq.com
傳真:0592-5580710
電話:0592-2350124
手機:18050025437
Agilent HP E9327A Power Sensor with Calibration Certificate
HP / Agilent 4263A LCR Meter
Agilent / HP 4145B Semiconductor Parameter Analyzer
HP Agilent E1430A VXI Digitizer Module - 75000 C Series Plug-in, 4MHz to 0.24Hz
Agilent - HP 54645D Digital Oscilloscope
Agilent HP 53132A /001/ Universal Counter
HP Agilent 8591E Portable Spectrum Analyzer w/ opt 001 041 101
Hewlett Packard ( HP ) / Agilent 85027A Directional Bridge 10 MHz - 18 GHz
Hewlett Packard ( HP ) / Agilent 85021B Directional Bridge 10 MHz - 26.5 GHz
Hp Agilent 37718A Omniber 718 Communications Analyzer
HP Agilent 4352B /001 VCO/PLL Signal Analyzer
Agilent/HP 11759C RF CHANNEL SIMULATOR
NEW - HP Agilent E4420B -1E5 250kHz- 2GHz Sweep Signal Generator with Function
Agilent / HP 5352B Microwave Frequency Counter to 40GHz opt:001
HP Agilent 8648B Signal Generator 9kHz-2Ghz -Calibrated with 30 day Warranty-
HP Agilent 8648B Signal Generator 9kHz-2Ghz -Calibrated with 30 day Warranty-
HP Agilent 8648B Signal Generator 9kHz-2Ghz -Calibrated with 30 day Warranty-
AGILENT / HP 8350B W/ 83550A RF PLUG-IN
Agilent 54641A 350MHz 2CH 2GSa/s Oscilloscope
Agilent 11759C / HP 11759C RF Channel Simulator
Agilent 54645D 100MHz DIGITAL OSCILLOSCOPE
AGILENT-HP 8350B Sweep Oscillator with 83592A Plug-in
Agilent /HP - 8115A 50 MHz, Dual Channel Pulse Generator
HP Agilent 8591C Cable TV Spectrum Analyzer option 015 030 107
HP/Agilent 83430A 2.5Gb/s Lightwave Transmitter
HP/Agilent 5087-7034 Yig Tuned Harmonic Mixer
Hewlett Packard ( HP ) / Agilent 8566B Spectrum Analyzer with Display
HP / Agilent 8991A Peak Power Analyzer
AGILENT hp 16911A-500 LOGIC ANALYZER MODULE #5
Hewlett Packard ( HP ) / Agilent 8161A Programmable Pulse Generator
HP/Agilent E6601A Wireless Communications Test Set
Agilent HP E4418B Single Channel Power Meter
HP/Agilent 16702A Logic Analyzer w/HP/Agilent 16751A w/ 2 x Agilent E5346A
85051-60005 Agilent/HP 10cm Airline ; replaced by 85051-60010
Agilent HP 8648B Synthesized RF Signal Generator
HP Agilent E-6453A Digital GSM/K-Receiver OPT 320 1710-1785/1805?-1880 MHz E7475A
HP/Agilent 54645D 100MHz Mixed Signal Oscilloscope MSO
HP/Agilent 5086-6981 YIG TUNED HARMONIC MIXER
HP/Agilent 5087-7129 TBR L.O. Distribution Assembly
Agilent / HP 16518A Expander 4GHz Timing 1GHz sync NEW
Agilent HP 8970B Noise Figure Meter
Agilent / HP 5351B Microwave Frequnecy Counter
HP/Agilent 6033A System Autoranging DC Power Supply, 20V, 30A
HP/Agilent 85036B Standard Mechanical Calibration Kit
Agilent/HP 6626A Precision Quad-Output Power Supply
HP/Agilent 6032A System Autoranging DC Power Supply, 60V, 50A
AGILENT / HP 54722A 8 GSa/s OSCILLOSCOPE PLUG-IN
HP 54720D Real Time Digitizing Oscilloscope Mainframe 2ghz W/ (4) Hp 54713b Ampl
HP AGILENT E9300B AVERAGE POWER SENSOR WITH OPT A6J
Agilent HP 81618A Single Optical Head Interface Module
Agilent / HP 37718A Communication Analyzer, OmniBER 718
HP/AGILENT 3563A CONTROL SYSTEMS ANALYZER
Agilent HP 70004A COLOR DISPLAY/MAINFR?AME
HP 54720D Real Time Digitizing Oscilloscope Mainframe
Agilent/ HP 4338B Milliohmmeter
Hp Agilent 54810A 2 channels, 500Mhz
Agilent/HP 16196C Parallel Electrode SMD Test Fixture
HP Agilent 35665A Dynamic Signal Analyzer, Calibrated with 30 Day Warranty
HP / AGILENT 8591E SPECTRUM ANALYZER w/ OPTIONS 021 101 105 130
Agilent DSO6012A Oscilloscope, 2-Channel, 100 MHz
HP Agilent 8648B 9kHz - 2GHz, Signal Generator, No Opt
HP/Agilent 70620A Preamplifier, 2GHz-22GHz RENT/SALE
HP Agilent 4263B LCR Meter, 100 Hz to 100 kHz, Opt 001
HP/Agilent 8110A 150MHZ Pulse Generator
Hewlett Packard 54522A 2 Channel Monochrome Digitizing Oscilloscope
HP Agilent 11752D 3.5mm Connector Gage
Agilent / HP 8511A - Frequency Converter, 45 MHz to 26.5 GHz
Agilent/HP 4278A 1kHz/1MHz CAPACITANCE METER Options, 101, 202, 301
Agilent - HP 37742A 2M Test Set
Agilent HP 85640A Tracking Generator, 300 kHz to 2.9 GHz
HP Agilent 8664A Synthesized Signal Generator + Opt 004
Agilent/HP 6623A 25-105W DC System Power Supplies
Agilent/HP 6625A Precision Dual-Output Power Supply