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