展模塊之間的通信方式這里選擇
RS485
通信,因?yàn)?
RS485
支持一主多從模式。同時(shí)
STM32
周圍需要設(shè)計(jì)狀態(tài)選擇電路和狀態(tài)指示電路,狀態(tài)選擇電路是用撥碼開(kāi)關(guān)作為
STM32
的引腳輸入,狀態(tài)指示電路是用
LED
作為
STM32
的引腳輸出。
FPGA
沒(méi)有片內(nèi)
flash
,因此
FPGA
的程序需要存儲(chǔ)到片外
flash
中,這里選擇
EPCS4SI8N
作為
FPGA
的片外
flash
。
FPGA
的下載方式有
JTAG
模式、
AS
模式和
PS
模式。
AS
模式是將程序燒入到配置芯片
EPCS
中,
FPGA
每次上電時(shí),作為控制器從配
置芯片
EPCS
中讀取數(shù)據(jù);
PS
模式是將
EPCS
作為控制器件,將
FPGA
作為存儲(chǔ)器,
FPGA
上電時(shí),
EPCS
會(huì)主動(dòng)將數(shù)據(jù)寫(xiě)入到
FPGA
中,此模式可以實(shí)現(xiàn)對(duì)
FPGA
的在線編程;
JTAG
模式是最常用的一種模式,直接把程序燒錄到
FPGA
的
SRAM
中,所以掉電后程
序會(huì)消失。
FPGA
在正常工作時(shí),它的配置數(shù)據(jù)存儲(chǔ)在
SRAM
中,加電時(shí)須重新下載。
在實(shí)驗(yàn)系統(tǒng)中,通常用計(jì)算機(jī)或控制器進(jìn)行調(diào)試,因此可以使用
PS
。但是在實(shí)用系統(tǒng)
中,多數(shù)情況下必須由
FPGA
主動(dòng)引導(dǎo)配置操作過(guò)程,這時(shí)
FPGA
將主動(dòng)從外圍專用存
儲(chǔ)芯片中獲得配置數(shù)據(jù),而此芯片中
FPGA
配置信息是用普通編程器將設(shè)計(jì)所得的
.pof
格式的文件通過(guò)
AS
燒錄進(jìn)去。通過(guò)
JTAG
模式燒錄
.sof
文件會(huì)將程序燒錄到
SRAM
中,
但是通過(guò)文件轉(zhuǎn)換,將
.sof
文件轉(zhuǎn)換成
.jic
文件,通過(guò)
JTAG
模式燒錄會(huì)將程序通過(guò)
FPGA
固化到配置芯片
EPCS
中,這樣
FPGA
重新上電是會(huì)從
EPCS
中讀取程序。本文最終考
慮到調(diào)試的方便性,所以選擇了
JTAG
模式。
FPGA
的主頻需要用到外部晶振,
STM32
內(nèi)部有晶振的起振電路故可以用無(wú)源晶振,
但
FPGA
沒(méi)有,所以
FPGA
外部只能接有源晶振,這里選擇
50MHz
作為
FPGA
時(shí)鐘源,
通過(guò)鎖相環(huán)的倍頻后可以得到高達(dá)
300MHz
的時(shí)鐘。
FPGA
的引腳既可以配置為輸入模式,也可以配置為輸出模式,都是
3.3VTTL
信號(hào),
FPGA
輸入輸出引腳直接控制
LED
,作為
I/O
指示燈,共
40
個(gè),
16
個(gè)輸入點(diǎn)、
16
個(gè)輸
出點(diǎn)、
8
個(gè)高速輸出點(diǎn)。核心板與接口板通過(guò)接插件接在一起,用來(lái)傳遞
I/O
點(diǎn)數(shù)據(jù)信
號(hào),在
FPGA
與接插件之間還要接入電平轉(zhuǎn)換芯片,在
3.3VTTL
信號(hào)與
5VTTL
信號(hào)之
間轉(zhuǎn)換,并且電平轉(zhuǎn)換芯片能夠起到保護(hù)作用,避免
FPGA
引腳直接與外部連接
[35]
。
2.3.2
接口板方案設(shè)計(jì)
接口板的硬件結(jié)構(gòu)包括光耦輸入電路、繼電器輸出電路、晶體管輸出電路、
RS485
通信電路、
USB
通信電路、以太網(wǎng)通信模塊、
DC/DC
降壓電路、與核心板和電源板的
接口電路等。
光耦輸入電路用于對(duì)外部開(kāi)關(guān)量信號(hào)的輸入,一般
PLC
的輸入模塊由若干輸入點(diǎn)
和一個(gè)公共端組成。如圖
2-9
中
a)
和
b)
是
PLC
直流輸入電路的兩種不同形式,區(qū)別在于
當(dāng)外部開(kāi)關(guān)閉合時(shí),
a)
中的電流從公共端
M
流出
PLC
(源型輸入),
b)
中的電流從公共
端
M
流入
PLC
(漏型輸入)。當(dāng)開(kāi)關(guān)閉合時(shí),
PLC
內(nèi)部光耦的發(fā)光二極管點(diǎn)亮,光敏三
極管飽和導(dǎo)通,再將該信號(hào)傳送至中央處理器,認(rèn)為有輸入信號(hào)。
c)
和
d)
分別是
a)
和
b)
的多路信號(hào)結(jié)構(gòu)。為了適應(yīng)更多的現(xiàn)場(chǎng)設(shè)備,本文使用
e)
所示的混合型輸入電路,光耦
選擇雙向輸入型光耦,外部接線形式既能源型輸入也能漏型輸入。
2.5
軟件方案設(shè)計(jì)
2.5.1
嵌入式操作系統(tǒng)
雖然嵌入式應(yīng)用程序能夠在芯片上直接運(yùn)行,但是為了能夠更加合理的調(diào)用多任務(wù)、
充分利用系統(tǒng)資源,本文采用在
STM32
上移植嵌入式操作系統(tǒng)的方案。目前常用的嵌
入式操作系統(tǒng)有
μClinux
、
μC/OS-II
、
eCos
和
FreeRTOS
。
μClinux
(
micro-control Linux
)是微控制
Linux
,同標(biāo)準(zhǔn)
Linux
相比,
μClinux
內(nèi)核
小,但仍然繼承了
Linux
良好的穩(wěn)定性、可移植性,并具有強(qiáng)大的網(wǎng)絡(luò)功能、出色的文
件系統(tǒng)、標(biāo)準(zhǔn)豐富的
API
以及
TCP/IP
網(wǎng)絡(luò)協(xié)議等。在移植方面,由于
μClinux
是
Linux
針對(duì)嵌入式系統(tǒng)的一種改良,所以其結(jié)構(gòu)比較復(fù)雜,目標(biāo)處理器需要足夠容量的外部
ROM
和
RAM
,對(duì)于
STM32F103
來(lái)說(shuō),移植此系統(tǒng)需要至少
512KB
的
RAM
空間,
1MB
的
ROM/FLASH
空間,而
STM32F103
僅有
256KB
的
FLASH
,所以需要外接存儲(chǔ)器,
這就增加了硬件成本。并且
μClinux
結(jié)構(gòu)復(fù)雜,移植難度大,實(shí)時(shí)性也差,不適合作為
本系統(tǒng)的移植方案。
μC/OS-II
是用
C
語(yǔ)言編寫(xiě)的一個(gè)結(jié)構(gòu)小巧、搶占式的多任務(wù)實(shí)時(shí)內(nèi)核。
μC/OS-II
最多支持
64
個(gè)任務(wù),分別對(duì)應(yīng)優(yōu)先級(jí)
0~63
,其中
0
代表優(yōu)先級(jí)最高,
63
為最低,系統(tǒng)
保留了
4
個(gè)最高優(yōu)先級(jí)和
4
個(gè)最低優(yōu)先級(jí),所以用戶可以使用的任務(wù)數(shù)有
56
個(gè)。
μC/OS-II
能夠提供任務(wù)調(diào)度與管理、內(nèi)存管理、任務(wù)間同步與通信、時(shí)間管理和中斷服務(wù)等功能,
具有執(zhí)行效率高、占用空間小、實(shí)時(shí)性能優(yōu)良和擴(kuò)展性強(qiáng)等特點(diǎn)。在移植方面,
μC/OS-II
支持當(dāng)前流行的大部分
CPU
,由于其本身內(nèi)核小,最小代碼僅有
2KB
,需要數(shù)據(jù)空間
僅有
4KB
的
RAM
,所以移植相對(duì)簡(jiǎn)單,只需要修改與處理器相關(guān)的代碼即可,比較適
合在本系統(tǒng)上移植。
eCos
(
embedded Configurable operating system
)是嵌入式可配置操作系統(tǒng),是一種
源代碼開(kāi)元的能夠配置、可移植、面向深度嵌入式應(yīng)用的實(shí)時(shí)操作系統(tǒng)。其最大的特點(diǎn)
就是內(nèi)核可配置,采用模塊化的設(shè)計(jì)方式帶來(lái)的靈活的配置,核心部分由小同的組件構(gòu)
成,通過(guò)
eCos
配置工具能夠方便的配置內(nèi)核、
C
語(yǔ)言庫(kù)和底層運(yùn)行包等組件,能夠很
好的滿足不同嵌入式應(yīng)用需求。在移植方面,
eCos
內(nèi)核小,最小代碼僅有
10KB
,所需
數(shù)據(jù)空間僅有
10KB
的
RAM
,可移植性好,比
μClinux
和
μC/OS-II
都更加容易,但是
其應(yīng)用并不廣泛,資料沒(méi)有
μC/OS-II
多,更適用于例如消費(fèi)電子領(lǐng)域中的應(yīng)用。
FreeRTOS
是一款完全免費(fèi)并能夠在小
RAM
單片機(jī)上運(yùn)行的實(shí)時(shí)操作系統(tǒng),具有源
代碼開(kāi)元、可移植性強(qiáng)、可裁剪、調(diào)度策略靈活等特點(diǎn)。
FreeRTOS
操作系統(tǒng)能夠完成
任務(wù)管理、時(shí)間管理、信號(hào)量、消息隊(duì)列、內(nèi)存管理、記錄等功能,可以滿足一個(gè)最小
操作系統(tǒng)的基本需求。在移植方面,
FreeRTOS
能夠方便的移植到不同處理器上,例如
ARM
、
MSP430
、
PIC
、
AVR
、
C8051F
等,
STM32
的內(nèi)核就是
ARM
,所以
FreeRTOS
適合本系統(tǒng)移植,也是本文所采用嵌入式操作系統(tǒng)。
2.5.2
軟件系統(tǒng)
軟件系統(tǒng)由系統(tǒng)程序和用戶程序組成。系統(tǒng)程序是固化在控制芯片中的程序,本控
制器由主控制器和遠(yuǎn)程模塊構(gòu)成,主控制器上有
STM32
和
FPGA
兩個(gè)控制芯片,
5
種
遠(yuǎn)程模塊為實(shí)現(xiàn)各自功能分別有一個(gè)
STM32
作為控制芯片,因此需要設(shè)計(jì)
7
套不同的
系統(tǒng)程序,編程語(yǔ)言包含
STM32
所需的
C
語(yǔ)言和
FPGA
所需的
Verilog HDL
語(yǔ)言。用
戶程序的編輯本文設(shè)計(jì)了兩套方案,一是設(shè)計(jì)一款
PC
端編程軟件,通過(guò)
USB
端口下載
到主控制器
STM32
上的
flash
中,另一種是現(xiàn)場(chǎng)編程功能,即通過(guò)人機(jī)交互界面,利用
關(guān)鍵詞讓沒(méi)有編程基礎(chǔ)的普通用戶能夠編寫(xiě)簡(jiǎn)單的測(cè)試程序,方便現(xiàn)場(chǎng)調(diào)試
[36][37]
。
2.5.3
模塊化功能
本文設(shè)計(jì)了模塊化功能,運(yùn)動(dòng)控制和過(guò)程控制。運(yùn)動(dòng)控制經(jīng)常用于機(jī)械、機(jī)床、機(jī)
器人、電梯控制等場(chǎng)合,用于驅(qū)動(dòng)步進(jìn)電機(jī)、伺服電機(jī)或交流電動(dòng)機(jī),此時(shí)需要控制器
產(chǎn)生相應(yīng)的驅(qū)動(dòng)信號(hào),如驅(qū)動(dòng)異步交流電動(dòng)機(jī)需要用
SPWM
、
SVPWM
算法,同時(shí)運(yùn)動(dòng)
控制還會(huì)經(jīng)常用到編碼器來(lái)測(cè)量速度和位置,本文在軟件上設(shè)計(jì)高數(shù)計(jì)數(shù)器功能。過(guò)程
控制經(jīng)常用于冶金、化工、鍋爐控制等場(chǎng)合,用于對(duì)溫度、壓力、流量等模擬量的閉環(huán)
控制,此時(shí)需要控制器實(shí)現(xiàn)
PID
算法。
2.5.4
通信協(xié)議
各個(gè)
PLC
廠商一般都有自己的通信協(xié)議,比如羅克韋爾的
PLC
都支持
DF1
協(xié)議,
GE
的
90-70
和
90-30
系列
PLC
支持
SNP
協(xié)議,西門子
S-200
系列
PLC
支持
MPI
、
PPI
等協(xié)議,施耐德
PLC
支持
Modbus
和
Modbus Plus
協(xié)議,歐姆龍
PLC
支持
Host Link
協(xié)
議,三菱
PLC
支持
CC-Link
協(xié)議,松下
PLC
支持
MEWTOCOL-COM
協(xié)議。這其中Modbus
已經(jīng)不僅僅是
PLC
的通信協(xié)議,在許多智能儀表、變頻器中也有應(yīng)用,已經(jīng)在工控領(lǐng)
域中得到廣泛的應(yīng)用
[38]
。本文選擇
Modbus
作為主控制器與遠(yuǎn)程模塊之間通信的數(shù)據(jù)協(xié)
議,上述的協(xié)議中
MEWTOCOL-COM
協(xié)議對(duì)外開(kāi)放且簡(jiǎn)單,本文在其基礎(chǔ)上做些更改
作為
RMEN
與
I/O
模塊之間通信的數(shù)據(jù)協(xié)議,后稱為
RM-COM
協(xié)議。
信邁提供STM32+FPGA的運(yùn)動(dòng)控制解決方案。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-611888.html