版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGE
PLC技術(shù)應(yīng)用項(xiàng)目說(shuō)明書(shū)
設(shè)計(jì)題目
學(xué)院機(jī)械工程學(xué)院
2015年1月9日
課程設(shè)計(jì)任務(wù)書(shū)
茲發(fā)給2011級(jí)機(jī)電X班班學(xué)生張XX課程設(shè)計(jì)任務(wù)書(shū),內(nèi)容如下:
設(shè)計(jì)題目:基于PLC的溫度控制系統(tǒng)
應(yīng)完成的項(xiàng)目:
(1)選題的背景和意義;
(2)明確設(shè)計(jì)任務(wù),擬定總體設(shè)計(jì)方案(有機(jī)械結(jié)構(gòu)的要進(jìn)行結(jié)構(gòu)設(shè)計(jì),三維軟件建模);
(3)硬件設(shè)計(jì),傳感器、PLC(和電機(jī))選型,設(shè)計(jì)信號(hào)采集、轉(zhuǎn)換電路,畫出PLC端口分配圖、接線控制端子連接圖;
(4)軟件設(shè)計(jì),編寫控制程序流程圖(或重要程序),設(shè)計(jì)人機(jī)界面;
(5)課程設(shè)計(jì)說(shuō)明書(shū)1份。
參考資料以及說(shuō)明:
(1)金發(fā)慶.傳感器技術(shù)與應(yīng)用(第二版)[M].北京:機(jī)械工業(yè)出版社,2004
(2)鐘肇新.可編程控制器原理及應(yīng)用[M].廣州:華南理工大學(xué)出版社,2003
(3)常曉玲.電氣控制系統(tǒng)與可編程控制器[M].北京:機(jī)械工業(yè)出版社,2004
(4)蓋超會(huì),陽(yáng)勝峰.三菱PLC與變頻器、觸摸屏綜合培訓(xùn)教程[M].北京:中國(guó)電力出版社,2011
(5)濮良貴,陳國(guó)定,吳立言.機(jī)械設(shè)計(jì)[M].北京:高等教育出版社,2013
本設(shè)計(jì)任務(wù)書(shū)于2014年12月19日發(fā)出,應(yīng)于2015年1月9日前完成,然后進(jìn)行答辯。
指導(dǎo)教師簽發(fā)2014年12月19日
課程設(shè)計(jì)評(píng)語(yǔ):
課程設(shè)計(jì)總評(píng)成績(jī):
指導(dǎo)教師簽字:
年月日
目錄
TOC\o"1-3"\h\u
12027
前言
2
2344
第一章系統(tǒng)總體方案
3
9095
第二章系統(tǒng)硬件設(shè)計(jì)
5
15077
2.1PLC選擇
5
24006
2.1.1FX2N-48MRPLC
5
9445
2.1.2FX2N-2AD特殊功能模塊
6
16442
2.1.3FX2N-2DA特殊功能模塊
7
23636
2.2硬件電路設(shè)計(jì)
8
15659
2.2.1溫度值給定電路
8
15591
2.2.2溫度檢測(cè)電路
11
20957
2.2.3過(guò)零檢測(cè)電路
12
9645
2.2.4晶閘管電功率控制電路
13
17559
2.2.5脈沖輸出通道
14
24953
2.2.6報(bào)警指示電路
15
992
2.2.7復(fù)位電路
15
16307
第三章系統(tǒng)軟件設(shè)計(jì)
16
14486
3.1程序設(shè)計(jì)
16
18569
3.2系統(tǒng)程序流程圖
17
27084
3.3控制系統(tǒng)控制程序的開(kāi)發(fā)
18
4060
3.3.1溫度設(shè)定
18
18582
3.3.2A/D轉(zhuǎn)換功能模塊的控制程序
18
1114
3.3.3標(biāo)度變換程序
19
11047
3.4.4恒溫控制程序(PID)設(shè)計(jì)
20
17573
3.4.6顯示程序
26
14830
3.4.7恒溫指示程序
26
4729
3.4.8報(bào)警程序
27
9880
第四章總結(jié)與展望
28
31785
4.1總結(jié)
28
17438
4.2展望
28
22258
參考文獻(xiàn)
29
20555
附錄系統(tǒng)程序(梯形圖)
30
摘要
在工業(yè)生產(chǎn)過(guò)程中,加熱管溫度控制是十分常見(jiàn)的。溫度控制的傳統(tǒng)方法是人工—儀表控制。其重復(fù)性差,工藝要求難以保證,人工勞動(dòng)強(qiáng)度大。目前大多數(shù)使用微機(jī)代替常規(guī)控制。以微機(jī)為核心控制系統(tǒng)雖然成本較低,但微機(jī)的可靠性和抗干擾性較差而使其硬件設(shè)計(jì)較復(fù)雜。而以PLC為核心的控制系統(tǒng),雖然成本較高,但PLC本身就有很強(qiáng)的抗干擾性和可靠性,因而系統(tǒng)的硬件設(shè)計(jì)也簡(jiǎn)單得多。
本設(shè)計(jì)以工業(yè)水溫加熱為背景,設(shè)計(jì)以三菱FX2N-48MRPLC為控制器,使用電熱偶為溫度傳感器的溫度控制系統(tǒng),本文主要內(nèi)容包括:PLC選擇,溫度控制電路設(shè)計(jì)分析,加熱管控制電路設(shè)計(jì)分析,PLC程序編寫,采用PID控制。
關(guān)鍵詞:加熱溫度控制PLCPID
第一章緒論
隨著時(shí)代的發(fā)展,當(dāng)今的技術(shù)日趨完善,競(jìng)爭(zhēng)也愈演愈烈;傳統(tǒng)的人工的操作已不能滿足于目前的制造業(yè)前景,也無(wú)法保證更高質(zhì)量的要求和提升高新技術(shù)企業(yè)的形象。
在生產(chǎn)實(shí)踐中,自動(dòng)化給人們帶來(lái)了極大的便利和產(chǎn)品質(zhì)量上的保證,同時(shí)也減輕了人員的勞動(dòng)強(qiáng)度,減少了人員上的編制。在許多復(fù)雜的生產(chǎn)過(guò)程中難以實(shí)現(xiàn)的目標(biāo)控制、整體優(yōu)化、最佳決策等,熟練的操作工、技術(shù)人員或?qū)<摇⒐芾碚邊s能夠容易判斷和操作,可以獲得滿意的效果。人工智能的研究目標(biāo)正是利用計(jì)算機(jī)來(lái)實(shí)現(xiàn)、模擬這些智能行為,通過(guò)人腦與計(jì)算機(jī)協(xié)調(diào)工作,以人機(jī)結(jié)合的模式,為解決十分復(fù)雜的問(wèn)題尋找最佳的途徑。
可編程序控制器是一種數(shù)字運(yùn)算操作的電子系統(tǒng),專為在工業(yè)環(huán)境下應(yīng)用而設(shè)計(jì),它采用可編程序的存儲(chǔ)器,用來(lái)在其內(nèi)部存儲(chǔ)執(zhí)行邏輯運(yùn)算、順序控制、定時(shí)、計(jì)數(shù)和算術(shù)運(yùn)算等操作命令,并通過(guò)數(shù)字式、模擬式的輸入和輸出,控制各種類型的機(jī)械或生產(chǎn)過(guò)程。
在工業(yè)生產(chǎn)過(guò)程中,加熱管溫度控制是十分常見(jiàn)的。溫度控制的傳統(tǒng)方法是人工—儀表控制。其重復(fù)性差,工藝要求難以保證,人工勞動(dòng)強(qiáng)度大。目前大多數(shù)使用微機(jī)代替常規(guī)控制。以微機(jī)為核心控制系統(tǒng)雖然成本較低,但微機(jī)的可靠性和抗干擾性較差而使其硬件設(shè)計(jì)較復(fù)雜。而以PLC為核心的控制系統(tǒng),雖然成本較高,但PLC本身就有很強(qiáng)的抗干擾性和可靠性,因而系統(tǒng)的硬件設(shè)計(jì)也簡(jiǎn)單得多。所以,相比較于微機(jī)控制,PLC控制在過(guò)程控制方面更具有優(yōu)勢(shì)。這種系統(tǒng)控制精度高、重復(fù)性好、自動(dòng)化程度高,可以大大提高產(chǎn)品質(zhì)量和減輕工人的勞動(dòng)負(fù)擔(dān)。本文介紹了以PLC為核心實(shí)現(xiàn)PID算法的溫度控制系統(tǒng)的設(shè)計(jì)方法。
第二章系統(tǒng)總體方案
根據(jù)設(shè)計(jì)任務(wù)和要求,采用常規(guī)PID控制的溫度控制系統(tǒng)結(jié)構(gòu)如圖1-1所示。
圖1-1常規(guī)PID溫度控制系統(tǒng)的結(jié)構(gòu)
對(duì)應(yīng)圖1-1的系統(tǒng)結(jié)構(gòu),確定總體設(shè)計(jì)方案如圖1-2所示:
圖1-2總體設(shè)計(jì)方案
該總體方案主要由以下幾個(gè)部分組成
(1)觸摸屏:主要功能是設(shè)定和顯示相應(yīng)的溫度值,以及停止和開(kāi)始功能。
(2)PLC:主要完成PID調(diào)節(jié)功能以及數(shù)據(jù)變換。
(3)測(cè)溫電路和A/D模塊:主要功能是0-10V溫度測(cè)量信號(hào)經(jīng)FX2N-A/D轉(zhuǎn)換成數(shù)字信號(hào)輸入PLC處理。
(4)輸出調(diào)節(jié)電路:主要功能是把PLC處理運(yùn)算發(fā)出的控制信號(hào)通過(guò)脈寬調(diào)制裝置輸出脈沖信號(hào)對(duì)加熱管進(jìn)行加熱
系統(tǒng)工作原理:溫度變送器將加熱管溫度變換為模擬信號(hào),經(jīng)低通濾波器濾掉干擾信號(hào)后送放大器,將信號(hào)放大后送A/D模塊轉(zhuǎn)換為數(shù)字量送PLC,數(shù)字量經(jīng)標(biāo)度變換,得到實(shí)際加熱管溫度。數(shù)字控制器根據(jù)恒溫給定值Q0與實(shí)際加熱管溫度Q的偏差e(k)按積分分離PID控制算法,得到輸出控制量u(k),控制晶閘管導(dǎo)通時(shí)間,調(diào)節(jié)加熱管溫度的變化使之與給定恒溫值一致,達(dá)到恒溫控制目的。當(dāng)達(dá)到恒溫值、輸入錯(cuò)誤或系統(tǒng)發(fā)生故障時(shí),系統(tǒng)發(fā)出報(bào)警信號(hào),同時(shí)用GT1040-QBBD-C觸摸屏對(duì)加熱管溫度進(jìn)行實(shí)時(shí)顯示和溫度給定輸入。
第二章系統(tǒng)硬件設(shè)計(jì)
2.1PLC選擇
根據(jù)設(shè)計(jì)方案的分析,系統(tǒng)設(shè)計(jì)需要使用A/D轉(zhuǎn)換器和D/A轉(zhuǎn)換器來(lái)完成溫度采樣。在課程學(xué)習(xí)中,我們學(xué)習(xí)了三菱的FX系列PLC,因此,選擇三菱FX2N(基本I/O點(diǎn)數(shù)為24)和FX2N-2AD特殊功能模塊。
2.1.1FX2N-48MRPLC
FX2N系列PLC是FX系列中最先進(jìn)的系列、具有高速處理及可以擴(kuò)展大量滿足單個(gè)需要的特殊功能模塊等特點(diǎn)。它由基本單元、擴(kuò)展單元、擴(kuò)展模塊等構(gòu)成。用戶存儲(chǔ)器容量可擴(kuò)展到16K步。I/O點(diǎn)最大可擴(kuò)展到256點(diǎn)。它有27條基本指令,其基本指令的執(zhí)行速度超過(guò)了很多大型PLC。三菱FX2N-48MRPLC,為繼電器輸出類型,其輸入、輸出點(diǎn)數(shù)皆為是24點(diǎn),可擴(kuò)展模塊可用的點(diǎn)數(shù)為48~64,內(nèi)附8000步RAM。其內(nèi)部資源如下:
(1)輸入繼電器X(X0~X27,24點(diǎn),八進(jìn)制)
(2)輸出繼電器Y(Y0~Y27,24點(diǎn),八進(jìn)制)
(3)輔助繼電器M(M0~M8255)[通用輔助繼電器(M0~M499)]
(4)狀態(tài)繼電器(S0~S999)
(5)定時(shí)器T(T0~T255)(T0~T245為常規(guī)定時(shí)器)
(6)計(jì)數(shù)器C(C0~C255)
(7)指針(P/I)見(jiàn)表2-1和表2-2
(8)數(shù)據(jù)寄存器D(D0~D8255)(D0~D199為通用型)
表2-1定時(shí)器中斷標(biāo)號(hào)指針表
輸入編號(hào)
中斷周期(ms)
中斷禁止特殊輔助繼電器
I6XX
在指針名稱的XX部分中,輸入10~99的整數(shù)。I610為每10ms執(zhí)行一次定時(shí)器中斷
M8056
I7XX
M8057
I8XX
M8058
表2-2輸入中斷標(biāo)號(hào)指針表
輸入編號(hào)
指針編號(hào)
中斷禁止特殊輔助繼電器
上升中斷
下降中斷
X0
I001
I000
M8050
X1
I101
I100
M8051
X2
I201
I200
M8052
X3
I301
I300
M8053
X4
I401
I400
M8054
X5
I501
I500
M8055
注:M8050~M8058=“0”表允許;M8050~M8058=“1”表禁止。
2.1.2FX2N-2AD特殊功能模塊
FX2N-2AD為模擬量輸入模塊,有兩個(gè)模擬量輸入通道(分別為CH1、CH2),每個(gè)通道都可進(jìn)行A/D轉(zhuǎn)換,將模擬量信號(hào)轉(zhuǎn)換成數(shù)字量信號(hào),其分辨率為12位。其模擬量輸出性能如表2-3所示。
表2-3模擬量輸出性能表
項(xiàng)目
電壓輸入
電流輸入
模擬量輸入范圍
DC:0~+10V(輸入電阻200KΩ)
絕對(duì)最大輸入:-0.5V,+15V
DC:4~+20mA(輸入電阻250Ω)
絕對(duì)最大輸入:-2mA,+60mA
數(shù)字輸出
12位二進(jìn)制
分辨率
2.5mV(10V/4000)
1.25mV(5V/4000)
4μA(20mA/4000)
總體精度
±1%(滿量程0~10V)
±1%(滿量程4~20mA范圍)
轉(zhuǎn)換速度
2.5ms/通道(與順空程序同步動(dòng)作)
所有數(shù)據(jù)轉(zhuǎn)換和參數(shù)設(shè)置的調(diào)整可通過(guò)FROM/TO指令完成。同時(shí)在編程過(guò)程中重點(diǎn)用到了BFM數(shù)據(jù)緩沖存儲(chǔ)器,具體分布情況如表2-4所示。
表2-4FX2N-2AD緩沖存儲(chǔ)器的功能及分配
BFM
編號(hào)
內(nèi)容
b15-b8
b7-b4
b3
b2
b1
b0
#0
保留
輸入數(shù)據(jù)的當(dāng)前值(低8位)
#1
保留
輸入數(shù)據(jù)的當(dāng)前值(高4位)
#2-#16
保留
#17
保留
模擬到數(shù)字轉(zhuǎn)換開(kāi)始
模擬到數(shù)字轉(zhuǎn)換通道
#18
保留
BFM說(shuō)明:
BFM#0:存儲(chǔ)由BFM#17指定通道的輸入數(shù)據(jù)當(dāng)前值低8位數(shù)據(jù),當(dāng)前值數(shù)據(jù)以二進(jìn)制存儲(chǔ)。
BFM#1:存儲(chǔ)由BFM#17指定通道的輸入數(shù)據(jù)當(dāng)前值高4位數(shù)據(jù),當(dāng)前值數(shù)據(jù)以二進(jìn)制存儲(chǔ)。
BFM#17:b0:指定由模擬到數(shù)字轉(zhuǎn)換的通道(CH1,CH2)。
b0=0指定CH1
b0=1指定CH2
b1:由0→1時(shí)A/D轉(zhuǎn)換過(guò)程開(kāi)始
2.1.3FX2N-2DA特殊功能模塊
FX2N-2DA為模擬量輸入模塊,有兩個(gè)模擬量輸出通道(分別為CH1、CH2),每個(gè)通道都可進(jìn)行D/A轉(zhuǎn)換,將數(shù)字量信號(hào)轉(zhuǎn)換成模擬量信號(hào),其分辨率為12位。其模擬量輸出性能如表2-3所示。
表2-3模擬量輸出性能表
項(xiàng)目
電壓輸出
電流輸出
模擬量輸入范圍
DC:0~+10V(輸入電阻200KΩ)
絕對(duì)最大輸入:-0.5V,+15V
DC:4~+20mA(輸入電阻250Ω)
絕對(duì)最大輸入:-2mA,+60mA
數(shù)字輸出
12位二進(jìn)制
分辨率
2.5mV(10V/4000)
1.25mV(5V/4000)
4μA(20mA/4000)
總體精度
±1%(滿量程0~10V)
±1%(滿量程4~20mA范圍)
轉(zhuǎn)換速度
2.5ms/通道(與順空程序同步動(dòng)作)
所有數(shù)據(jù)轉(zhuǎn)換和參數(shù)設(shè)置的調(diào)整可通過(guò)FROM/TO指令完成。同時(shí)在編程過(guò)程中重點(diǎn)用到了BFM數(shù)據(jù)緩沖存儲(chǔ)器,具體分布情況如表2-4所示。
表2-4FX2N-2DA緩沖存儲(chǔ)器的功能及分配
BFM
編號(hào)
內(nèi)容
b15-b8
b7-b4
b3
b2
b1
b0
#0
保留
輸入數(shù)據(jù)的當(dāng)前值(低8位)
#1
保留
輸入數(shù)據(jù)的當(dāng)前值(高4位)
#2-#16
保留
#17
保留
模擬到數(shù)字轉(zhuǎn)換開(kāi)始
模擬到數(shù)字轉(zhuǎn)換通道
#18
保留
BFM說(shuō)明:
BFM#0:存儲(chǔ)由BFM#17指定通道的輸入數(shù)據(jù)當(dāng)前值低8位數(shù)據(jù),當(dāng)前值數(shù)據(jù)以二進(jìn)制存儲(chǔ)。
BFM#1:存儲(chǔ)由BFM#17指定通道的輸入數(shù)據(jù)當(dāng)前值高4位數(shù)據(jù),當(dāng)前值數(shù)據(jù)以二進(jìn)制存儲(chǔ)。
BFM#17:b0:指定由模擬到數(shù)字轉(zhuǎn)換的通道(CH1,CH2)。
b0=0指定CH1
b0=1指定CH2
b1:由0→1時(shí)A/D轉(zhuǎn)換過(guò)程開(kāi)始
2.2硬件電路設(shè)計(jì)
2.2.1溫度值給定電路
為了能同時(shí)使用觸摸屏和開(kāi)關(guān)按鍵實(shí)現(xiàn)溫度給定值輸入,觸摸屏程序利用GTDesigner3設(shè)計(jì)觸摸屏溫度給定值輸入、觸摸屏溫度顯示、觸摸屏啟動(dòng)控制、觸摸屏停止控制以及指示燈指示如下圖所示;本系統(tǒng)還設(shè)計(jì)了十個(gè)開(kāi)關(guān)按鍵,作為溫度給定值的輸入端口,接收十進(jìn)制數(shù)(觸摸屏程序和開(kāi)關(guān)按鍵電路分別如下圖所示)。給定值范圍為0~100℃,若輸入值超過(guò)給定值范圍,系統(tǒng)會(huì)發(fā)出報(bào)警信號(hào)(亮紅燈)。
觸摸屏溫度給定輸入:(右圖第一行數(shù)字即為溫度給定輸入):
觸摸屏啟動(dòng)控制:(左圖第一個(gè)方形圖形)
觸摸屏停止控制:(左圖第二個(gè)方形圖形)
觸摸屏指示燈指示:
恒溫完成指示信號(hào)(Y0004)
當(dāng)前溫度大于給定溫度(Y0005)
給定溫度超出范圍報(bào)警(Y0006)
按鍵設(shè)計(jì)電路如圖2-1所示:SB1為溫度值輸入允許,SB2~SB11分別表示十進(jìn)制數(shù)0~9。先按下溫度值給定允許開(kāi)關(guān)SB1,然后再輸入給定溫度值,先按下的數(shù)字為高位上的數(shù)值,后按下的數(shù)字為低位上的數(shù)值。比如,先后按下開(kāi)關(guān)SB5、SB2和SB2,則表示給定溫度值為300℃,并送PLC數(shù)據(jù)寄存器保存。
2.2.2溫度檢測(cè)電路
溫度檢測(cè)是溫度控制系統(tǒng)的一個(gè)很重要的環(huán)節(jié),直接關(guān)系到系統(tǒng)性能。在PLC溫度控制系統(tǒng)中,溫度的檢測(cè)不僅要完成溫度到模擬電壓量的轉(zhuǎn)換還要將電壓轉(zhuǎn)換為數(shù)字量送PLC。其一般結(jié)構(gòu)如圖2-2所示。
溫度變送器
圖2-2溫度檢測(cè)基本結(jié)構(gòu)
溫度變送器將測(cè)溫點(diǎn)的溫度變換為模擬電壓,其值一般為mA級(jí),需要放大為滿足A/D轉(zhuǎn)換要求的電壓值。然后送PLC的A/D轉(zhuǎn)換模塊進(jìn)行A/D轉(zhuǎn)換,得到表示溫度的電壓數(shù)字量,再用軟件進(jìn)行標(biāo)度變換與誤差補(bǔ)償,得到測(cè)溫點(diǎn)的實(shí)際溫度值。
本系統(tǒng)利用熱電偶完成加熱管溫度檢測(cè)(熱端檢測(cè)加熱管溫度,冷端置于0℃溫度中)、FX2N-2AD模塊一個(gè)通道實(shí)現(xiàn)A/D轉(zhuǎn)換。加熱管溫度檢
測(cè)與放大電路由熱電偶、低通濾波、信號(hào)放大和零點(diǎn)遷移電路四部分組成。其電路如圖2-3所示。
圖2-3加熱管溫度檢測(cè)與放大電路
圖中,R1、C1完成低通濾波,R2、RP、2CW51組成零點(diǎn)遷移電路,加熱管溫度檢測(cè)元件采用鎳鉻—鎳鋁熱電偶,分度號(hào)為EU-2,查分度表可得,當(dāng)溫度為0~100℃時(shí),輸出電勢(shì)為0~4.095mV。檢測(cè)信號(hào)經(jīng)二級(jí)放大后送FX2N-2AD模塊,第一級(jí)放大倍數(shù)為50,第二級(jí)放大倍數(shù)為11.2
零點(diǎn)遷移,其輸出電壓為
式中,為零點(diǎn)遷移值。根據(jù)設(shè)計(jì)要求,給定溫度值為0~100℃,本系統(tǒng)選取測(cè)溫范圍為0~100℃,將0℃作為測(cè)溫起點(diǎn)(零點(diǎn))。調(diào)整多圈電位器RP,使=50*11.2=560mV,當(dāng)加熱管溫度為0℃時(shí),=0mV,=560mV,于是=0。經(jīng)零點(diǎn)遷移后,加熱管溫度為0~100℃時(shí),=0~4.095mV,=0~9.94V,A/D轉(zhuǎn)換后的數(shù)字量為0~4000。
2.2.3過(guò)零檢測(cè)電路
按設(shè)計(jì)要求,要求過(guò)零檢測(cè)電路在每個(gè)電源周期開(kāi)始時(shí)產(chǎn)生一個(gè)脈沖,作為觸發(fā)器的同步信號(hào),其設(shè)計(jì)電路如圖2-4(a)所示。
圖2-4(a)過(guò)零檢測(cè)電路
圖中,GND為+5V電源地,LM339為過(guò)零比較器.LM339集成塊內(nèi)部裝有四個(gè)獨(dú)立的電壓比較器,共模范圍很大;差動(dòng)輸入電壓范圍較大,大到可以等于電源電壓。二極管用作LM339輸入保護(hù)。電路的工作波形如圖2-4(b)所示。
圖2-4(b)過(guò)零檢測(cè)電路的工作波形圖
2.2.4晶閘管電功率控制電路
晶閘管是晶體閘流管的簡(jiǎn)稱,也叫可控硅。它是一種半控型器件,是一種可以利用控制信號(hào)控制其導(dǎo)通而不能控制其關(guān)斷的電力電子器件。它的關(guān)斷完全是由其在主電路中承受的電壓和電流決定的。也即說(shuō),若要使已導(dǎo)通的晶閘管關(guān)斷,只能利用外加反向電壓和外電路的作用使流過(guò)晶閘管的電流降到接近零的某一數(shù)值以下。
晶閘管控制電熱元件消耗的電能有兩種方法,一是采用移相觸發(fā)控制輸入電壓的大小,二是采用過(guò)零觸發(fā)控制輸入電壓加到電熱元件上的周波數(shù)。由于移相觸發(fā)控制會(huì)產(chǎn)生較大的諧波干擾信號(hào)“污染”電網(wǎng),因此采用過(guò)零觸發(fā)控制。又由于本電路所控制的電阻爐只有一根電阻絲,功率也不大,因此,本系統(tǒng)采用單相電源供電,電源的通斷由二個(gè)晶閘管反并控制,如圖2-5所示。
圖2-5電功率控制電路
這種控制方法的原理是:各晶閘管的觸發(fā)角α恒為0o,使得一個(gè)周期內(nèi)電源均加在電熱元件上,通過(guò)控制一個(gè)控制周期內(nèi)晶閘管導(dǎo)通周波數(shù),就可控制電熱元件消耗的電能。根據(jù)電熱爐的數(shù)字模型可知,溫度的增量與它消耗的電能成正比,而電熱爐消耗的電能與晶閘管導(dǎo)通周波數(shù)成正比,因此,晶閘管導(dǎo)通周波數(shù)n與控制輸出控制量u(k)的關(guān)系為
n=K*u(k)
式中,K=/為比例系數(shù)(約為1),為一個(gè)控制周期內(nèi)的電源周波數(shù),溫度偏差不同,則u(k)、n不同,電熱爐消耗的電能亦不同,達(dá)到了根據(jù)溫度偏差調(diào)節(jié)輸入電能,保證爐溫按要求變化的目的。
晶閘管由正向?qū)ǖ疥P(guān)斷時(shí),由于空穴積蓄效應(yīng),晶閘管反向阻斷能力的恢復(fù)需要一段時(shí)間。在這段時(shí)間里,晶閘管元件流過(guò)反向電流,接近終止時(shí),很大,它與線路電感共同作用產(chǎn)生的電壓L*可能損壞晶閘管,必須采取保護(hù)措施,在晶閘管兩端并聯(lián)阻容吸收裝置。
設(shè)計(jì)電路中的元器件的選擇如下:
(1)R和C的選擇
阻容吸收裝置的參數(shù)按晶閘管ITN根據(jù)經(jīng)驗(yàn)值選取為:
R=80ΩC=0.15μF
電容C的交流耐壓為:
電阻R的功率應(yīng)滿足:
實(shí)選電容0.15μF/630V一只,電阻80Ω/0.5W一只。
(2)快速熔斷器FU的選擇
快速熔斷器是專門用來(lái)保護(hù)晶閘管的,其熔體電流按下式選?。?/p>
式中,5/6為修正參數(shù),為保證可靠與選用方便,一般取。實(shí)選熔體額定電流為20A的RLS-50螺旋式快速熔斷器二只,分別與二只晶閘管串聯(lián),其額定電壓為500V。
(3)晶閘管的選擇
電阻爐的額定功率為4KW,電源電壓為220V,故負(fù)載電流IL=18.2A。由于每個(gè)晶閘管只導(dǎo)通半個(gè)電源周波且本系統(tǒng)采用過(guò)零觸發(fā)(α=0°),流過(guò)每個(gè)晶閘管的平均電流為9.1A。關(guān)斷時(shí),承受正反向峰值電壓為,考慮到晶閘管的過(guò)載能力小及環(huán)境溫度的變化等因素,晶閘管的額定電流應(yīng)為:
額定電壓應(yīng)為:
根據(jù)以上計(jì)算,主回路的二只晶閘管選擇為KP20-10(參數(shù)為:20A,1KV,0.1A,3V)
2.2.5脈沖輸出通道
由于PLC有很強(qiáng)的抗干擾性和可靠性,且FX2N-48MR-001為繼電器輸出——2A/1點(diǎn)(KP20-10晶閘管的觸發(fā)電流和電壓分別為0.1A和3V),因而FX2N-48MR-001的輸出點(diǎn)能可靠地觸發(fā)晶閘管導(dǎo)通,而無(wú)須設(shè)計(jì)光電隔離和功率放大。脈沖輸出通道電路如圖2-6所示。
圖2-6脈沖輸出通道
圖中,初始時(shí),Y0和Y1都為低電平,當(dāng)系統(tǒng)檢測(cè)到從X0輸入的同步信號(hào)為高(低)電平時(shí),Y0(Y1)由低電平變高電平,輸出電流值為2A的觸發(fā)電流,去觸發(fā)晶閘管VT1(VT2)導(dǎo)通;當(dāng)X0從高電平變低電平(從低電平變高電平)時(shí),Y0(Y1)脈沖結(jié)束,電路恢復(fù)為初態(tài)。
2.2.6報(bào)警指示電路
按設(shè)計(jì)要求,報(bào)警指示電路設(shè)計(jì)了一個(gè)恒溫指示(綠燈)燈、故障報(bào)警(紅燈)和輸入出錯(cuò)報(bào)警(黃燈),完成指示、報(bào)警功能。顯示及給定溫度值均由GT1040-QBBD-C觸摸屏完成。設(shè)計(jì)電路如圖2-7所示。
圖2-7報(bào)警指示電路
2.2.7復(fù)位電路
復(fù)位電路由一個(gè)開(kāi)關(guān)SB12完成開(kāi)/關(guān)功能,當(dāng)按下開(kāi)關(guān)SB12時(shí)系統(tǒng)啟動(dòng),正常運(yùn)行,執(zhí)行任務(wù);當(dāng)斷開(kāi)SB12時(shí),系統(tǒng)停止運(yùn)行,不執(zhí)行任何任務(wù)。設(shè)計(jì)電路如圖2-8所示。
圖2-8復(fù)位電路
系統(tǒng)軟件設(shè)計(jì)
PLC程序輸入可以通過(guò)手持編程器、專用編程器或計(jì)算機(jī)完成。但由于手持編程器在程序輸入或閱讀理解分析時(shí)比較煩瑣;專用編程器價(jià)格高,通用性差,而計(jì)算機(jī)除了可以進(jìn)行PLC的編程外,還可作為一般計(jì)算機(jī)的用途,兼容性好,利用率高。因此,利用計(jì)算機(jī)進(jìn)行PLC編程和通信更具優(yōu)勢(shì)。本次軟件設(shè)計(jì)即是利用計(jì)算機(jī)編程,在三菱PLC編程軟件GTDESINER下完成程序編寫和通信。
3.1程序設(shè)計(jì)
本設(shè)計(jì)系統(tǒng)采用三菱FX系列PLC控制。其輸入、輸出地址表如表2-6所示。另外,內(nèi)存分配如表3-1所示:
表3-1內(nèi)存分配表
儲(chǔ)存器
特定意義
儲(chǔ)存器
特定意義
D0
A/D轉(zhuǎn)換數(shù)字量結(jié)果
D30
u(k)
D4
溫度給定值Q0
D31
u(k-1)
D5
加熱管溫度Q
D32
e(k)
D25
觸發(fā)周波數(shù)n
D33
e(k-1)
D26
晶閘管允許觸發(fā)標(biāo)志
D34
e(k-2)
D27
采樣周期計(jì)數(shù)器
D35
D100~D121
數(shù)據(jù)緩沖區(qū)
D36
D29
斷偶計(jì)數(shù)器
D37
D38
十鍵輸入指定存儲(chǔ)元件
3.2系統(tǒng)程序流程圖
初始化
溫度給定
輸入值錯(cuò)誤
錯(cuò)誤報(bào)警
Y
N
A/D轉(zhuǎn)換
斷偶報(bào)警
轉(zhuǎn)換值>4000
Y
N
標(biāo)度變換
實(shí)際溫度顯示
給定值與實(shí)際溫度比較
差值e(k)=0
Y
差值e(k)>10
N
恒溫指示
n=240
Y
N
等待中斷
數(shù)字調(diào)節(jié)器
保存n晶閘管觸發(fā)準(zhǔn)備
等待中斷
圖3-1系統(tǒng)程序流程圖
3.3控制系統(tǒng)控制程序的開(kāi)發(fā)
針對(duì)本系統(tǒng)要求控制系統(tǒng)實(shí)現(xiàn)恒溫控制的功能,溫度在(0~100℃)范圍內(nèi)任意設(shè)定(X10~X21輸入給定值),經(jīng)過(guò)積分分離PID調(diào)節(jié),實(shí)現(xiàn)恒溫控制,同時(shí)有恒溫指示和斷偶報(bào)警信號(hào)指示。特編寫以下控制程序。(總程序見(jiàn)附錄二)。
3.3.1溫度設(shè)定
本設(shè)計(jì)系統(tǒng)利用十鍵數(shù)字輸入指令,設(shè)定恒溫給定值。程序如圖3-2所示。
圖3-2讀取溫度給定
當(dāng)溫度設(shè)定允許(X1=1)時(shí),執(zhí)行十鍵輸入指令,輸入給定溫度值,送D38,當(dāng)給定值在0~100℃范圍內(nèi)時(shí),將給定值(D38)再送D4保存。否則輸入出錯(cuò)報(bào)警(Y6=1)。
3.3.2A/D轉(zhuǎn)換功能模塊的控制程序
溫度檢測(cè)硬件電路給定的A/D轉(zhuǎn)換通道號(hào)CH1,完成加熱管溫度的A/D轉(zhuǎn)換。為了提高抗干擾能力,程序采用了數(shù)字濾波措施,濾波方法是取8次輸入的平均值作為檢測(cè)結(jié)果。在此過(guò)程中設(shè)定爐溫的模擬量送入FX2N-2AD模塊1#通道(CH1)。根據(jù)三菱公司的用戶手冊(cè)中的模塊編號(hào)規(guī)則,F(xiàn)X2N-2AD直接連PLC的為0號(hào)模塊。A/D轉(zhuǎn)換功能的PLC程序如圖3-3所示:
圖3-3A/D轉(zhuǎn)換程序
本程序設(shè)計(jì)以4.8s為一個(gè)控制周期,當(dāng)控制周期到才讀取A/D轉(zhuǎn)換結(jié)果。
控制周期計(jì)時(shí)中斷服務(wù)程序(I610)如圖3-4所示。
圖3-4計(jì)時(shí)中斷程序
I610為每計(jì)時(shí)10ms便自動(dòng)執(zhí)行一次中斷。當(dāng)計(jì)時(shí)10ms到,系統(tǒng)執(zhí)行I610中斷服務(wù)程序,控制周期計(jì)數(shù)器(D27)加1,將D27與480比較,若相等則M331為ON(4.8s計(jì)時(shí)到),同時(shí)將控制周期計(jì)數(shù)器(D27)清0。
3.3.3標(biāo)度變換程序
另外針對(duì)本次設(shè)計(jì)所選擇的功能模塊FX2N-2AD的輸入輸出特性,有0~100℃經(jīng)零點(diǎn)遷移后所對(duì)應(yīng)的數(shù)字量為0~4000(0~10V對(duì)應(yīng)的數(shù)字量),通過(guò)模數(shù)轉(zhuǎn)換得到的溫度的數(shù)字量存入D0,根據(jù)此特性,輸入數(shù)據(jù)對(duì)應(yīng)的模擬量應(yīng)該為數(shù)字量占4000的百分比,即實(shí)際溫度=100*數(shù)字量/4000=數(shù)字量*1/40。從而得到實(shí)際的溫度的數(shù)值而送入D5,同時(shí)將所得的余數(shù)與0.5℃所對(duì)應(yīng)的數(shù)字量(約等于20)進(jìn)行比較,如果大于20,則將D5中的數(shù)加一,反之則不變。如此就完成了對(duì)采樣溫度值的標(biāo)度變換。標(biāo)度變換功能的PLC程序如圖3-5所示:
圖3-5標(biāo)度變換程序
3.4.4恒溫控制程序(PID)設(shè)計(jì)
PID算法
根據(jù)給定的工藝要求,溫度控制分為三段:自由升溫段、恒溫段和自然降溫段。自然降溫?zé)o需控制和檢測(cè)溫度,自由升溫只需監(jiān)視加熱管溫度是否到達(dá)恒溫值,只有恒溫段需要控制與檢測(cè)加熱管溫度。用于恒溫控制的調(diào)節(jié)器有多種形式,如大林算法、PD調(diào)節(jié)、PID調(diào)節(jié)、開(kāi)關(guān)調(diào)節(jié)等,本系統(tǒng)選用實(shí)際中切實(shí)可行的積分分離PID調(diào)節(jié),它能有效地減小系統(tǒng)的超調(diào)和穩(wěn)態(tài)誤差。
PID調(diào)節(jié)器的位置式控制方程為:
式中,e(t)為t時(shí)刻給定的恒溫值Q0與實(shí)際加熱管溫度Q之差。將其離散化,得
式中,T、、、分別為采樣周期、微分時(shí)間常數(shù)、積分時(shí)間常數(shù)和比例時(shí)間常數(shù);e(k)為本次采樣時(shí)Q0與Q之差。
令(3-1)
則有式(3-2)
式中,、、分別為調(diào)節(jié)器的比例、積分、微分系數(shù)(待定參數(shù))。
為了減少在線整定參數(shù)的數(shù)目,常常假定約束條件,以減少獨(dú)立變量的個(gè)數(shù),本次設(shè)計(jì)選取
T≈0.1
≈0.5
≈0.125
其中,為純比例控制時(shí)的臨界振蕩周期。將它們代入式(3-1)。即有
因此,對(duì)四個(gè)參數(shù)的整定便簡(jiǎn)化成了對(duì)一個(gè)參數(shù)的整定。因而使調(diào)試較為簡(jiǎn)單方便。
恒溫控制程序
為了減少超調(diào)和消除振蕩現(xiàn)象,當(dāng)自由升溫小于給定的恒溫值10℃,系統(tǒng)就開(kāi)始進(jìn)行恒溫控制,恒溫控制采用積分分離PID調(diào)節(jié)。系統(tǒng)的控制算法如下:
當(dāng)加熱管溫度Q大于給定恒溫值10℃時(shí),系統(tǒng)全速升溫,令u(k)=240,240為一個(gè)控制周期(4.8s)的工頻電源周波數(shù)。
當(dāng)e(k)<5℃時(shí),按式(3-2)進(jìn)行PID調(diào)節(jié)。
除上述兩種情況外,系統(tǒng)均進(jìn)行PD調(diào)節(jié),去掉(3-2)中的e(k)。
溫度數(shù)字調(diào)節(jié)器程序框圖如圖3-6所示。
溫度數(shù)字調(diào)節(jié)器的PLC程序框圖和梯形圖分別如圖3-7所示。
將實(shí)際溫度(D5)與設(shè)定值(D4)比較得到的差值e(k)存于D32。若e(k)大于10,則送240給D30(u(k));若e(k)小于10而大于5時(shí),則進(jìn)行PD算式運(yùn)算(去掉(4-2)中的積分項(xiàng)e(k)的剩余項(xiàng))。若e(k)小于5時(shí)則進(jìn)行PID算式運(yùn)算(實(shí)現(xiàn)式(4-2))。最后保存u(k),更新u(k-1)、e(k-1)和e(k-2)以備下次運(yùn)算。
開(kāi)始
e(k)=Q0-Q
e(k)>10
NY
計(jì)算PD項(xiàng)
u(k)=u(k-1)+kp[e(k)-e(k-1)]+kd[e(k)-2e(k-1)+e(k-2)]
e(k)<5
u(k)=240
NY
計(jì)算PD+I項(xiàng)(k)=u(k)+kie(k)
u(k)->u(k-1)
e(k-1)->e(k-2)
e(k)->e(k-1)
保存u(k)
結(jié)束
圖3-6數(shù)字控制器流程
圖3-7數(shù)字控制器程序
3.4.5數(shù)字觸發(fā)器程序設(shè)計(jì)
數(shù)字觸發(fā)器組成與原理
數(shù)字觸發(fā)器按照調(diào)節(jié)器輸出的控制量控制輸送給加熱管的能量。由于晶閘管移相觸發(fā)存在很大的諧波干擾“污染”電網(wǎng),本系統(tǒng)采用過(guò)零觸發(fā),觸發(fā)器的組成如圖3-8所示。
圖3-8過(guò)零數(shù)字觸發(fā)器組成
工作原理如下:數(shù)字觸發(fā)器準(zhǔn)備程序?qū)⒖刂屏縰(k)變換為晶閘管的導(dǎo)通周波數(shù)n,且當(dāng)n>0時(shí),置晶閘管允許觸發(fā)標(biāo)志為1。準(zhǔn)備程序在每個(gè)控制周期執(zhí)行一次。當(dāng)電源正半波到來(lái)時(shí)(由低電平變高電平),若晶閘管允許觸發(fā)標(biāo)志為1,則在Y0端產(chǎn)生一個(gè)觸發(fā)脈沖,經(jīng)光電隔離和功率放大后觸發(fā)晶閘管VT1導(dǎo)通,使電源正半波加到電阻絲上。當(dāng)電源負(fù)半波到來(lái)時(shí)(由高電平變低電平),若晶閘管允許觸發(fā)標(biāo)志為1,則在Y1端產(chǎn)生一個(gè)觸發(fā)脈沖,經(jīng)光電隔離和功率放大后觸發(fā)晶閘管VT2導(dǎo)通,使電源負(fù)半波加到電阻絲上,使負(fù)載得到一個(gè)完整的電壓波形。程序還完成晶閘管已導(dǎo)通周波數(shù)計(jì)數(shù)工作,當(dāng)已導(dǎo)通周波數(shù)等于n時(shí),表示本控制周期內(nèi)向電阻絲輸送的能量已達(dá)到控制要求,將晶閘管允許觸發(fā)標(biāo)志清0,Y0、Y1不再輸出觸發(fā)脈沖。
數(shù)字觸發(fā)器程序
數(shù)字觸發(fā)器程序由兩部分組成:準(zhǔn)備程序和觸發(fā)程序
其程序框圖如圖3-9和圖3-10所示。
電源在一個(gè)控制周期(4.8s)有240個(gè)周波,而u(k)的最大亦也240,因此,晶閘管在一個(gè)控制周期的導(dǎo)通周波數(shù)n與控制量u(k)的關(guān)系為
n=u(k)
脈沖輸出通道要求PLC輸出的觸發(fā)脈沖為正脈沖,故程序先使Y0(或Y1)由0變1,延時(shí)約0.01s后(半個(gè)周波時(shí)間),再將Y0(或Y1)置0,在Y0(或Y1)端形成一個(gè)寬約0.01s的正脈沖。
圖3-9晶閘管觸發(fā)準(zhǔn)備程序圖3-10數(shù)字觸發(fā)程序
數(shù)字觸發(fā)器功能的PLC程序如下圖3-11所示:
當(dāng)X2為ON時(shí),將u(k)送D25作觸發(fā)周波數(shù)n,將其與0比較,若n大于0,則置位D26(觸發(fā)允許標(biāo)志)允許觸發(fā)并將Y0和Y1置1。X0為電源周波信號(hào)輸入端,當(dāng)允許晶閘管觸發(fā)時(shí),當(dāng)X0的上升沿(下降沿)到時(shí)Y0(Y1)輸出1,延時(shí)半個(gè)周波時(shí)間后Y0(Y1)輸出0,即在Y0(Y1)端口產(chǎn)生正脈沖去觸發(fā)晶閘管導(dǎo)通。同時(shí)每完成一個(gè)周波觸發(fā),將D25減1。直到D25為0止。D25為0而采樣周期未到D26被清0,系統(tǒng)將不再對(duì)晶閘管輸出觸發(fā)脈沖。
圖3-11數(shù)字觸發(fā)器程序
3.4.6顯示程序
本設(shè)計(jì)系統(tǒng)用GT1040-QBBD-C觸摸屏顯示溫度(本系統(tǒng)設(shè)定溫度范圍為0~100℃),
顯示程序如圖3-12所示:
觸摸屏溫度顯示(右圖第二行數(shù)字即為溫度顯示):
3.4.7恒溫指示程序
當(dāng)實(shí)際溫度與溫度給定值相等時(shí),系統(tǒng)發(fā)出恒溫指示信號(hào)(Y4=1,綠燈亮)。恒溫指示程序如圖3-13所示:
圖3-13恒溫顯示程序
將實(shí)際溫度值(D5)與溫度設(shè)定值(D4)進(jìn)行比較,如果相等則令Y4為ON,恒溫指示燈亮。同時(shí)令觸發(fā)脈沖個(gè)數(shù)為0,系統(tǒng)將不對(duì)電阻爐加熱。
3.4.8報(bào)警程序
將A/D轉(zhuǎn)換的數(shù)字量與4000比較,若連續(xù)兩次檢測(cè)到A/D轉(zhuǎn)換的數(shù)字量大于4000,則表示斷偶,系統(tǒng)輸出斷偶報(bào)警信號(hào),Y5為ON,亮紅燈。如圖3-14所示。
圖3-14報(bào)警程序
第四章總結(jié)與展望
4.1總結(jié)
本文主要是針對(duì)“基于PLC的模擬量控制”的研究。
PLC完成對(duì)系統(tǒng)現(xiàn)場(chǎng)的控制過(guò)程。通過(guò)功能模塊實(shí)現(xiàn)了對(duì)模擬量、開(kāi)關(guān)量、脈沖量的轉(zhuǎn)換,從而達(dá)到了對(duì)上述變量的控制,以及顯示、報(bào)警等功能。同時(shí),控制系統(tǒng)現(xiàn)場(chǎng)對(duì)變量的變換有著直觀的顯示作用。
本文所做的主要工作:
(1)溫度設(shè)定由輸入端口獲得(十進(jìn)制輸入)或由觸摸屏實(shí)現(xiàn)溫度設(shè)定,具備實(shí)時(shí)顯示和報(bào)警功能,人機(jī)界面良好。
(2)PLC編程實(shí)現(xiàn)積分分離PID算法。
(3)基于PLC模擬量控制和過(guò)程控制實(shí)現(xiàn)溫度控制。
(4)過(guò)零觸發(fā)晶閘管實(shí)現(xiàn)電功率的控制.
通過(guò)此次課設(shè),讓我了解了plc梯形圖、指令表、順序功能圖有了更好的了解,也讓我了解了關(guān)于plc設(shè)計(jì)原理。有很多設(shè)計(jì)理念來(lái)源于實(shí)際,從中找出最適合的設(shè)計(jì)方法。
雖然本次課程設(shè)計(jì)是要求自己獨(dú)立完成,但是,彼此還是脫離不了集體的力量,遇到問(wèn)題和同學(xué)互相討論交流。多和同學(xué)討論。我們?cè)谧稣n程設(shè)計(jì)的過(guò)程中要不停的討論問(wèn)題,這樣,我們可以盡可能的統(tǒng)一思想,這樣就不會(huì)使自己在做的過(guò)程中沒(méi)有方向,并且這樣也是為了方便最后設(shè)計(jì)和在一起。討論不僅是一些思想的問(wèn)題,還可以深入的討論一些技術(shù)上的問(wèn)題,這樣可以使自己的處理問(wèn)題要快一些,少走彎路。多改變自己設(shè)計(jì)的方法,在設(shè)計(jì)的過(guò)程中最好要不停的改善自己解決問(wèn)題的方法,這樣可以方便自己解決問(wèn)題
4.2展望
由于PLC的諸多優(yōu)點(diǎn),也已經(jīng)在工控領(lǐng)域得到了廣泛引用,但是,還沒(méi)有形成系統(tǒng)化、理論化的開(kāi)發(fā)方法。隨著可編程序控制器技術(shù)的發(fā)展,PLC已越來(lái)越多地應(yīng)用于對(duì)模擬量的控制,所以應(yīng)增加D/A,A/D轉(zhuǎn)換及運(yùn)算功能的仿真。同時(shí),要盡量抑制干擾,尤其是控制回路之外的干擾。
過(guò)程控制系統(tǒng)開(kāi)發(fā)工具功能的不斷完善,使過(guò)程控制將具有更廣闊的應(yīng)用前景,對(duì)我國(guó)國(guó)民生產(chǎn)生活各個(gè)領(lǐng)域的自動(dòng)化水平的提高都有著重要的意義。
隨著微機(jī)的軟硬件技術(shù)和網(wǎng)絡(luò)通訊技術(shù)的飛速發(fā)展,工業(yè)自動(dòng)化領(lǐng)域發(fā)生了革命性的技術(shù)進(jìn)步。而PLC及工控機(jī)作為工業(yè)控制的設(shè)備基礎(chǔ),通過(guò)技術(shù)的不斷革新,在工業(yè)控制中的地位日益加強(qiáng),并且成為工業(yè)控制技術(shù)進(jìn)步的主要工具。
參考文獻(xiàn)
[1]朱江主編.可編程控制技術(shù)[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2013
[2]康華光主編.模擬電子技術(shù)基礎(chǔ)[M].第五版.北京:高等教育出版社,2006
[3]閻石主編.數(shù)字電子技術(shù)基礎(chǔ)[M].第五版.北京:高等教育出版社,2006
[4]三菱公司編.三菱FX系列可編程序控制器特殊功能模塊用戶手冊(cè),2001
[5]三菱公司編.三菱可編程序控制器應(yīng)用101例,1994
[6]三菱觸摸屏用戶使用手冊(cè)
[7]王本琪.基于組態(tài)王的PLC鍋爐溫度控制系統(tǒng)的設(shè)計(jì).青島:中國(guó)海洋大學(xué).2012
[8]王振.基于PLC的鍋爐供熱控制系統(tǒng)的設(shè)計(jì).大連:大連海事大學(xué).2008
附錄系統(tǒng)程序(梯形圖)
附錄資料:不需要的可以自行刪除
C語(yǔ)言全總字符串函數(shù)
函數(shù)名:stpcpy
功能:拷貝一個(gè)字符串到另一個(gè)
用法:char*stpcpy(char*destin,char*source);
程序例:
#include<stdio.h>
#include<string.h>
intmain(void)
{
charstring[10];
char*str1="abcdefghi";
stpcpy(string,str1);
printf("%sn",string);
return0;
}
函數(shù)名:strcat
功能:字符串拼接函數(shù)
用法:char*strcat(char*destin,char*source);
程序例:
#include<string.h>
#include<stdio.h>
intmain(void)
{
chardestination[25];
char*blank="",*c="C++",*Borland="Borland";
strcpy(destination,Borland);
strcat(destination,blank);
strcat(destination,c);
printf("%sn",destination);
return0;
}
函數(shù)名:strchr
功能:在一個(gè)串中查找給定字符的第一個(gè)匹配之處
用法:char*strchr(char*str,charc);
程序例:
#include<string.h>
#include<stdio.h>
intmain(void)
{
charstring[15];
char*ptr,c='r';
strcpy(string,"Thisisastring");
ptr=strchr(string,c);
if(ptr)
printf("Thecharacter%cisatposition:%dn",c,ptr-string);
else
printf("Thecharacterwasnotfoundn");
return0;
}
函數(shù)名:strcmp
功能:串比較
用法:intstrcmp(char*str1,char*str2);
看Asic碼,str1>str2,返回值>0;兩串相等,返回0
程序例:
#include<string.h>
#include<stdio.h>
intmain(void)
{
char*buf1="aaa",*buf2="bbb",*buf3="ccc";
intptr;
ptr=strcmp(buf2,buf1);
if(ptr>0)
printf("buffer2isgreaterthanbuffer1n");
else
printf("buffer2islessthanbuffer1n");
ptr=strcmp(buf2,buf3);
if(ptr>0)
printf("buffer2isgreaterthanbuffer3n");
else
printf("buffer2islessthanbuffer3n");
return0;
}
函數(shù)名:strncmpi
功能:將一個(gè)串中的一部分與另一個(gè)串比較,不管大小寫
用法:intstrncmpi(char*str1,char*str2,unsignedmaxlen);
程序例:
#include<string.h>
#include<stdio.h>
intmain(void)
{
char*buf1="BBB",*buf2="bbb";
intptr;
ptr=strcmpi(buf2,buf1);
if(ptr>0)
printf("buffer2isgreaterthanbuffer1n");
if(ptr<0)
printf("buffer2islessthanbuffer1n");
if(ptr==0)
printf("buffer2equalsbuffer1n");
return0;
}
函數(shù)名:strcpy
功能:串拷貝
用法:char*strcpy(char*str1,char*str2);
程序例:
#include<stdio.h>
#include<string.h>
intmain(void)
{
charstring[10];
char*str1="abcdefghi";
strcpy(string,str1);
printf("%sn",string);
return0;
}
函數(shù)名:strcspn
功能:在串中查找第一個(gè)給定字符集內(nèi)容的段
用法:intstrcspn(char*str1,char*str2);
程序例:
#include<stdio.h>
#include<string.h>
#include<alloc.h>
intmain(void)
{
char*string1="1234567890";
char*string2="747DC8";
intlength;
length=strcspn(string1,string2);
printf("Characterwherestringsintersectisatposition%dn",length);
return0;
}
函數(shù)名:strdup
功能:將串拷貝到新建的位置處
用法:char*strdup(char*str);
程序例:
#include<stdio.h>
#include<string.h>
#include<alloc.h>
intmain(void)
{
char*dup_str,*string="abcde";
dup_str=strdup(string);
printf("%sn",dup_str);
free(dup_str);
return0;
}
函數(shù)名:stricmp
功能:以大小寫不敏感方式比較兩個(gè)串
用法:intstricmp(char*str1,char*str2);
程序例:
#include<string.h>
#include<stdio.h>
intmain(void)
{
char*buf1="BBB",*buf2="bbb";
intptr;
ptr=stricmp(buf2,buf1);
if(ptr>0)
printf("buffer2isgreaterthanbuffer1n");
if(ptr<0)
printf("buffer2islessthanbuffer1n");
if(ptr==0)
printf("buffer2equalsbuffer1n");
return0;
}
函數(shù)名:strerror
功能:返回指向錯(cuò)誤信息字符串的指針
用法:char*strerror(interrnum);
程序例:
#include<stdio.h>
#include<errno.h>
intmain(void)
{
char*buffer;
buffer=strerror(errno);
printf("Error:%sn",buffer);
return0;
}
函數(shù)名:strcmpi
功能:將一個(gè)串與另一個(gè)比較,不管大小寫
用法:intstrcmpi(char*str1,char*str2);
程序例:
#include<string.h>
#include<stdio.h>
intmain(void)
{
char*buf1="BBB",*buf2="bbb";
intptr;
ptr=strcmpi(buf2,buf1);
if(ptr>0)
printf("buffer2isgreaterthanbuffer1n");
if(ptr<0)
printf("buffer2islessthanbuffer1n");
if(ptr==0)
printf("buffer2equalsbuffer1n");
return0;
}
函數(shù)名:strncmp
功能:串比較
用法:intstrncmp(char*str1,char*str2,intmaxlen);
程序例:
#include<string.h>
#include<stdio.h>
intmain(void)
{
char*buf1="aaabbb",*buf2="bbbccc",*buf3="ccc";
intptr;
ptr=strncmp(buf2,buf1,3);
if(ptr>0)
printf("buffer2isgreaterthanbuffer1n");
else
printf("buffer2islessthanbuffer1n");
ptr=strncmp(buf2,buf3,3);
if(ptr>0)
printf("buffer2isgreaterthanbuffer3n");
else
printf("buffer2islessthanbuffer3n");
return(0);
}
函數(shù)名:strncmpi
功能:把串中的一部分與另一串中的一部分比較,不管大小寫
用法:intstrncmpi(char*str1,char*str2);
程序例:
#include<string.h>
#include<stdio.h>
intmain(void)
{
char*buf1="BBBccc",*buf2="bbbccc";
intptr;
ptr=strncmpi(buf2,buf1,3);
if(ptr>0)
printf("buffer2isgreaterthanbuffer1n");
if(ptr<0)
printf("buffer2islessthanbuffer1n");
if(ptr==0)
printf("buffer2equalsbuffer1n");
return0;
}
函數(shù)名:strncpy
功能:串拷貝
用法:char*strncpy(char*destin,char*source,intmaxlen);
程序例:
#include<stdio.h>
#include<string.h>
intmain(void)
{
charstring[10];
char*str1="abcdefghi";
strncpy(string,str1,3);
string[3]='';
printf("%sn",string);
return0;
}
函數(shù)名:strnicmp
功能:不注重大小寫地比較兩個(gè)串
用法:intstrnicmp(char*str1,char*str2,unsignedmaxlen);
程序例:
#include<string.h>
#include<stdio.h>
intmain(void)
{
char*buf1="BBBccc",*buf2="bbbccc";
intptr;
ptr=strnicmp(buf2,buf1,3);
if(ptr>0)
printf("buffer2isgreaterthanbuffer1n");
if(ptr<0)
printf("buffer2islessthanbuffer1n");
if(ptr==0)
printf("buffer2equalsbuffer1n");
return0;
}
函數(shù)名:strnset
功能:將一個(gè)串中的所有字符都設(shè)為指定字符
用法:char*strnset(char*str,charch,unsignedn);
程序例:
#include<stdio.h>
#include<string.h>
intmain(void)
{
char*string="abcdefghijklmnopqrstuvwxyz";
charletter='x';
printf("stringbeforestrnset:%sn",string);
strnset(string,letter,13);
printf("stringafterstrnset:%sn",string);
return0;
}
函數(shù)名:strpbrk
功能:在串中查找給定字符集中的字符
用法:char*strpbrk(char*str1,char*str2);
程序例:
#include<stdio.h>
#include<string.h>
intmain(void)
{
char*string1="abcdefghijklmnopqrstuvwxyz";
char*string2="onm";
char*ptr;
ptr=strpbrk(string1,string2);
if(ptr)
printf("strpbrkfoundfirstcharacter:%cn",*ptr);
else
printf("strpbrkdidn'tfindcharacterinsetn");
return0;
}
函數(shù)名:strrchr
功能:在串中查找指定字符的最后一個(gè)出現(xiàn)
用法:char*strrchr(char*str,charc);
程序例:
#include<string.h>
#include<stdio.h>
intmain(void)
{
charstring[15];
char*ptr,c='r';
strcpy(string,"Thisisastring");
ptr=strrchr(string,c);
if(ptr)
printf("Thecharacter%cisatposition:%dn",c,ptr-string);
else
printf("Thecharacterwasnotfoundn");
return0;
}
函數(shù)名:strrev
功能:串倒轉(zhuǎn)
用法:char*strrev(char*str);
程序例:
#include<string.h>
#include<stdio.h>
intmain(void)
{
char*forward="string";
printf("Beforestrrev():%sn",forward);
strrev(forward);
printf("Afterstrrev():%sn",forward);
return0;
}
函數(shù)名:strset
功能:將一個(gè)串中的所有字符都設(shè)為指定字符
用法:char*strset(char*str,charc);
程序例:
#include<stdio.h>
#include<string.h>
intmain(void)
{
charstring[10]="123456789";
charsymbol='c';
printf("Beforestrset():%sn",string);
strset(string,symbol);
printf("Afterstrset():%sn",string);
return0;
}
函數(shù)名:strspn
功能:在串中查找指定字符集的子集的第一次出現(xiàn)
用法:intstrspn(char*str1,char*str2);
程序例:
#include<stdio.h>
#include<string.h>
#include<alloc.h>
intmain(void)
{
char*string1="1234567890";
char*string2="123DC8";
intlength;
length=strspn(string1,string2);
printf("Characterwherestringsdifferisatposition%dn",length);
return0;
}
函數(shù)名:strstr
功能:在串中查找指定字符串的第一次出現(xiàn)
用法:char*strstr(char*str1,char*str2);
程序例:
#include<stdio.h>
#include<string.h>
intmain(void)
{
char*str1="BorlandInternational",*str2="nation",*ptr;
ptr=strstr(str1,str2);
printf("Thesubstringis:%sn",ptr);
return0;
}
函數(shù)名:strtod
功能:將字符串轉(zhuǎn)換為double型值
用法:doublestrtod(char*str,char**endptr);
程序例:
#include<stdio.h>
#include<stdlib.h>
intmain(void)
{
charinput[80],*endptr;
doublevalue;
printf("Enterafloatingpointnumber:");
gets(input);
value=strtod(input,&endptr);
printf("Thestringis%sthenumberis%lfn",input,value);
return0;
}
函數(shù)名:strtok
功能:查找由在第二個(gè)串中指定的分界符分隔開(kāi)的單詞
用法:char*strtok(char*str1,char*str2);
程序例:
#include<string.h>
#include<stdio.h>
intmain(void)
{
charinput[16]="abc,d";
char*p;
/*strtokplacesaNULLterminator
infrontofthetoken,iffound*/
p=strtok(input,",");
if(p)printf("%sn",p);
/*AsecondcalltostrtokusingaNULL
asthefirstparameterreturnsapointer
tothecharacterfollowingthetoken*/
p=strtok(NULL,",");
if(p)printf("%sn",p);
return0;
}
函數(shù)名:strtol
功能:將串轉(zhuǎn)換為長(zhǎng)整數(shù)
用法:longstrtol(char*str,char**endptr,intbase);
程序例:
#include<stdlib.h>
#include<stdio.h>
intmain(void)
{
char*string="87654321",*endptr;
longlnumber;
/*strtolconvertsstringtolonginteger*/
lnumber=strtol(string,&endptr,10);
printf("string=%slong=%ldn",string,lnumber);
return0;
}
函數(shù)名:strupr
功能:將串中的小寫字母轉(zhuǎn)換為大寫字母
用法:char*strupr(char*str);
程序例:
#include<stdio.h>
#include<string.h>
intmain(void)
{
char*string="abcdefghijklmnopqrstuvwxyz",*ptr;
/*convertsstringtouppercasecharacters*/
ptr=strupr(string);
printf("%sn",ptr);
return0;
}
函數(shù)名:swab
功能:交換字節(jié)
用法:voidswab(char*from,char*to,intnbytes);
程序例:
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
charsource[15]="rFnakoBlrnad";
chartarget[
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五美容院?jiǎn)T工培訓(xùn)課程開(kāi)發(fā)與實(shí)施合同4篇
- 二零二五年度農(nóng)業(yè)土地租賃合同稅收籌劃策略4篇
- 二零二五年度特種門類安裝及售后服務(wù)合同3篇
- 房贈(zèng)予合同范本(2篇)
- 二零二五年度出租車庫(kù)信息化改造合同4篇
- 2025年度牛奶產(chǎn)業(yè)鏈上下游合作合同4篇
- 2025年度健康養(yǎng)生經(jīng)營(yíng)承包合同樣本3篇
- 2025版歷史文化名城美化保護(hù)合同
- 二零二五年度教育機(jī)構(gòu)教師聘用合同樣本4篇
- 二零二五年度勞動(dòng)合同對(duì)價(jià)與員工多元化福利方案合同2篇
- 2023年成都市青白江區(qū)村(社區(qū))“兩委”后備人才考試真題
- 2024中考復(fù)習(xí)必背初中英語(yǔ)單詞詞匯表(蘇教譯林版)
- 海員的營(yíng)養(yǎng)-1315醫(yī)學(xué)營(yíng)養(yǎng)霍建穎等講解
- 《現(xiàn)代根管治療術(shù)》課件
- 肩袖損傷的護(hù)理查房課件
- 2023屆北京市順義區(qū)高三二模數(shù)學(xué)試卷
- 公司差旅費(fèi)報(bào)銷單
- 我國(guó)全科醫(yī)生培訓(xùn)模式
- 2021年上海市楊浦區(qū)初三一模語(yǔ)文試卷及參考答案(精校word打印版)
- 八年級(jí)上冊(cè)英語(yǔ)完形填空、閱讀理解100題含參考答案
- 八年級(jí)物理下冊(cè)功率課件
評(píng)論
0/150
提交評(píng)論