單片機(jī)如何做成PLC?
去:有兩條路。
首先,串口用于與單片機(jī)通信,采用無協(xié)議模式。但一定要注意PLC的通訊,進(jìn)行必要的轉(zhuǎn)換。比如RS422,RS485等。,可以使用相應(yīng)的芯片與MCU連接。
第二,利用IO口,可以通過編碼與單片機(jī)交換數(shù)據(jù),節(jié)省硬件資源。這種不需要任何協(xié)議,雖然慢,但是對(duì)于數(shù)據(jù)顯示來說綽綽有余。如果PLC沒有通訊口,可以考慮使用PLC編程口,具體取決于PLC的編程口是rs485/rs232還是協(xié)議。大多數(shù)PLC支持R232觸摸屏。
51單片機(jī)編程方法?
1.唐不要定義太多變量。低128位是用戶定義變量的存儲(chǔ)區(qū)(默認(rèn))。也可以把變量放在高128位,但是容易出錯(cuò)。盡量少放,最好不放。可以通過*.M51檢查內(nèi)存變量的存儲(chǔ)情況,最好不要超過110字節(jié),否則程序不會(huì)運(yùn)行或者出錯(cuò)。
2.如果一個(gè)變量被用在很多地方,它可以被定義為一個(gè)全局變量。例如,循環(huán)變量I和J用于最小化參數(shù)傳遞。
3.靜態(tài)變量最好放在程序存儲(chǔ)區(qū),由代碼定義。
4.變量應(yīng)該定義為無符號(hào)數(shù),只占一位的變量,比如標(biāo)志位,應(yīng)該定義為位。
()主程序后面的子程序要提前聲明,前面的不用聲明。
6.如果定義了變量和子程序但沒有使用,系統(tǒng)會(huì)給出警告。
7.盡管局部變量和全局變量的名稱不同,但運(yùn)行時(shí)可能會(huì)被全局變量更改。
8.程序編譯后,有可能產(chǎn)生非常大的文件。比如原來的5k在編譯后變成了10k,這是C匯編時(shí)程序空間隨機(jī)分配造成的。程序編譯的一部分可以先屏蔽,然后解除屏蔽再編譯,可恢復(fù),或者復(fù)制到另一個(gè)文件進(jìn)行編譯。
9.如果在定時(shí)器中使用脈沖信號(hào),當(dāng)要去除脈沖信號(hào)時(shí),應(yīng)先關(guān)閉定時(shí)器,然后根據(jù)需要將電平設(shè)置為高電平或低電平。
10.軟件可以用來實(shí)現(xiàn)看門狗功能。例如,如果程序運(yùn)行一個(gè)周期需要50毫秒,則計(jì)時(shí)器可以設(shè)置為100毫秒。當(dāng)超過100毫秒時(shí),程序?qū)?fù)位,定時(shí)器將在程序周期結(jié)束時(shí)重新加載或復(fù)位。
11.為了提高所得數(shù)值的準(zhǔn)確性,可以多次測(cè)量,然后排序,去掉最大值和最小值,再取平均值,或者直接取平均值。
12.一個(gè)定時(shí)器可以用于多個(gè)計(jì)時(shí)。一般來說,兩個(gè)定時(shí)器對(duì)于較大的程序是不夠的。如果幾個(gè)計(jì)時(shí)時(shí)間分別為10ms、200us和50ms,則計(jì)時(shí)值可以位于200us,并且可以設(shè)置另外兩個(gè)變量。當(dāng)需要多個(gè)計(jì)時(shí)時(shí),只需找到它們的最小公約數(shù)計(jì)時(shí)即可。
13.當(dāng)我們把一個(gè)程序?qū)懭雴纹瑱C(jī)時(shí)。,用*寫的。十六進(jìn)制,唐不要被它的大小迷惑,對(duì)于8k的單片機(jī)來說,小于20k的程序都可以寫入。