最近在研究串口通訊,其中有幾個(gè)比較重要的概念,RS-232這種適配于上位機(jī)和PC端進(jìn)行連接,RS-232只限于PC串口和設(shè)備間點(diǎn)對(duì)點(diǎn)的通信。它很簡(jiǎn)單的就可以進(jìn)行連接,由于串口通訊是異步的,也就是說(shuō)你可以同時(shí)向兩端或者更多進(jìn)行數(shù)據(jù)發(fā)送,它們之間的傳輸數(shù)據(jù)類型是byte,串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)。對(duì)于兩個(gè)進(jìn)行通信的端口,這些參數(shù)必須匹配。接下來(lái)先解釋一下幾個(gè)關(guān)于串口通訊的術(shù)語(yǔ):
第一個(gè)波特率,這個(gè)東西在不同領(lǐng)域都有涉及,在串口通訊中兩個(gè)串口之間通訊之間的信號(hào)單元叫做碼元,每分鐘傳遞的信號(hào)(碼元)也就是波特率;
第二個(gè)數(shù)據(jù)位、停止位:這個(gè)聽名字就知道是啥意思了,在傳遞數(shù)據(jù)過程之前,機(jī)器會(huì)識(shí)別你的數(shù)據(jù)是個(gè)啥,然后根據(jù)這個(gè)類型,去調(diào)整不同的起始位、停止位。
第三個(gè)奇偶校驗(yàn):就是想知道你這個(gè)數(shù)據(jù)有多大,多長(zhǎng),因?yàn)閭鬏敹际? 和 0 ,具體校驗(yàn)方法如下:
奇校驗(yàn):就是讓原有數(shù)據(jù)序列中(包括你要加上的一位)1的個(gè)數(shù)為奇數(shù) ---- 1000110(0)你必須添0這樣原來(lái)有3個(gè)1已經(jīng)是奇數(shù)了所以你添上0之后1的個(gè)數(shù)還是奇數(shù)個(gè)。
偶校驗(yàn):就是讓原有數(shù)據(jù)序列中(包括你要加上的一位)1的個(gè)數(shù)為偶數(shù) ---- 1000110(1)你就必須加1了這樣原來(lái)有3個(gè)1要想1的個(gè)數(shù)為偶數(shù)就只能添1了。
如果想要在C#中玩轉(zhuǎn)串口通訊或者模擬串口,你必須先搞個(gè)硬件,當(dāng)然我們是在模擬,那你就弄個(gè)模擬的工具唄,這個(gè)我給大家準(zhǔn)備好了,自己去下載吧!
【下載地址見文末】
近有好朋友問我,為什么我用PLC寫的232/485通訊程序不好用?我應(yīng)該怎么測(cè)試是哪出現(xiàn)了問題?正好我最近寫了一個(gè)西門子S7-200smart利用RS485進(jìn)行自由口通訊向電腦發(fā)送狀態(tài)的小程序,在這里和大家分享一下。
以前我們講過,一些電子稱具備RS232/485接口,可以與PLC進(jìn)行通訊,那么除了這個(gè)功能,它還可以干什么?
PPI協(xié)議是西門子自己的協(xié)議,為自己的設(shè)備做連接用的。
我們重點(diǎn)說(shuō)下自由口通訊,自由口通訊不限設(shè)備的限制,只要是支持RS485/232通訊的,不論是不是西門子的都可以使用。比如說(shuō)不同PLC之間的通訊讀寫數(shù)據(jù),以及和一些驅(qū)動(dòng)器做通訊讀寫數(shù)據(jù)或者是給電腦端讀寫數(shù)據(jù)。
今天我們了解一下如何使用西門子S7-200SMART使用RS485端口與電腦進(jìn)行通訊并調(diào)試。
首先S7-200SMART自帶一個(gè)485接口,還可以拓展一個(gè)485接口,需要在硬件里配置波特率。
硬件連接需要一個(gè)PLC,一個(gè)485轉(zhuǎn)232的轉(zhuǎn)換器,以及一臺(tái)帶串口的電腦或者筆記本加串口轉(zhuǎn)USB,以及串口調(diào)試工具。
西門子S7-200SMART PLC
485轉(zhuǎn)232轉(zhuǎn)換器(電腦側(cè)是232)注意線序不要接錯(cuò)了,接錯(cuò)后依然有數(shù)據(jù),只是數(shù)據(jù)是反的。
電腦端口
編程時(shí)需要配置接口信息,比如說(shuō)用哪個(gè)接口發(fā)送,通訊參數(shù)是多少等等。
S7-200smart 可接兩RS485口
通訊參數(shù)是特殊存儲(chǔ)器SMB30(端口0)和SMB130(端口1)
端口設(shè)置
假如需要傳輸?shù)臄?shù)據(jù)是(波特率9600,無(wú)奇偶效驗(yàn),數(shù)據(jù)位8,停止位1),數(shù)據(jù)從端口0傳輸,那么將9賦值給SMB30。
然后我們看下發(fā)送和接收指令,XMT和RCV,這兩個(gè)指令需要注意的是;
1 指令需要以脈沖形式觸發(fā)。
2發(fā)送或者接受的第一個(gè)字節(jié)的含義是你要發(fā)送的字節(jié)總字?jǐn)?shù)。且不包含第一個(gè)。比如說(shuō)我發(fā)送從VB801-VB876,所以發(fā)送地址需要寫VB800,且VB800賦值為76。
主程序
程序解析;因?yàn)閰f(xié)議是“波特率9600,無(wú)奇偶效驗(yàn),數(shù)據(jù)位8,停止位1”利用端口1進(jìn)行通訊,利用脈沖觸發(fā)XMT。
最后我們下載程序并觸發(fā)脈沖,那么怎么進(jìn)行調(diào)試呢?我們需要串口調(diào)試工具,本文用到的串口調(diào)試工具是作者從業(yè)多年用的最好的一款,綠色無(wú)需安裝,且沒有BUG,打開軟件后,我們打開COM口,即可接收數(shù)據(jù),還可以看到數(shù)據(jù)的總量,非常方便.想要小工具的可以關(guān)注并私信我;“串口調(diào)試工具”。
當(dāng)然如果想發(fā)送讓PC識(shí)別的語(yǔ)言的話,需要借助ASC碼來(lái)幫助,這個(gè)碼,大家可以去網(wǎng)上查找,即是通過用計(jì)算機(jī)容易發(fā)送的數(shù)字來(lái)表示字母;(比如說(shuō)A在碼中以16進(jìn)制數(shù)字41代替,Z在碼中以16進(jìn)制數(shù)字5A代替)通過這個(gè)轉(zhuǎn)換,PLC終于可以按照人的意愿和PC對(duì)話了,但要切記,通訊過程中的字與字之間最好用分隔符分開,而且安全起見,最后一位可以通過程序做效驗(yàn)。
對(duì)于一些復(fù)雜的自由口通訊協(xié)議,比如說(shuō)松下伺服驅(qū)動(dòng)器等涉及精度,復(fù)雜功能或者安全等,需要多次讀寫發(fā)送來(lái)驗(yàn)證是否通訊有效,這就需要中斷來(lái)幫助,在這里對(duì)于端口0發(fā)送完成的標(biāo)志是中斷事件9,端口1發(fā)送完成的標(biāo)志是中斷事件26,對(duì)于端口0接收完成的標(biāo)志是中斷事件23,端口1接收完成的標(biāo)志是中斷事件24。
近有好朋友問我,為什么我用PLC寫的232/485通訊程序不好用?我應(yīng)該怎么測(cè)試是哪出現(xiàn)了問題?正好我最近寫了一個(gè)西門子S7-200smart利用RS485進(jìn)行自由口通訊向電腦發(fā)送狀態(tài)的小程序,在這里和大家分享一下。
相信大家對(duì)RS232和RS485比較熟悉了,研究工業(yè)電氣的都知道,前段時(shí)間這兩個(gè)字眼在頭條上太火了,火到我本來(lái)不想看最后也點(diǎn)進(jìn)去看了幾篇,但大多數(shù)文章寫到的都是理論講解,因此,這篇文章不會(huì)講太多理論,需要理論知識(shí)的請(qǐng)去搜索。
以前我們講過,一些電子稱具備RS232/485接口,可以與PLC進(jìn)行通訊,那么除了這個(gè)功能,它還可以干什么?
PPI協(xié)議是西門子自己的協(xié)議,為自己的設(shè)備做連接用的。
我們重點(diǎn)說(shuō)下自由口通訊,自由口通訊不限設(shè)備的限制,只要是支持RS485/232通訊的,不論是不是西門子的都可以使用。比如說(shuō)不同PLC之間的通訊讀寫數(shù)據(jù),以及和一些驅(qū)動(dòng)器做通訊讀寫數(shù)據(jù)或者是給電腦端讀寫數(shù)據(jù)。
今天我們了解一下如何使用西門子S7-200SMART使用RS485端口與電腦進(jìn)行通訊并調(diào)試。
首先S7-200SMART自帶一個(gè)485接口,還可以拓展一個(gè)485接口,需要在硬件里配置波特率。
硬件連接需要一個(gè)PLC,一個(gè)485轉(zhuǎn)232的轉(zhuǎn)換器,以及一臺(tái)帶串口的電腦或者筆記本加串口轉(zhuǎn)USB,以及串口調(diào)試工具。
西門子S7-200SMART PLC
485轉(zhuǎn)232轉(zhuǎn)換器(電腦側(cè)是232)注意線序不要接錯(cuò)了,接錯(cuò)后依然有數(shù)據(jù),只是數(shù)據(jù)是反的。
電腦端口
編程時(shí)需要配置接口信息,比如說(shuō)用哪個(gè)接口發(fā)送,通訊參數(shù)是多少等等。
S7-200smart 可接兩RS485口
通訊參數(shù)是特殊存儲(chǔ)器SMB30(端口0)和SMB130(端口1)
端口設(shè)置
假如需要傳輸?shù)臄?shù)據(jù)是(波特率9600,無(wú)奇偶效驗(yàn),數(shù)據(jù)位8,停止位1),數(shù)據(jù)從端口0傳輸,那么將9賦值給SMB30。
然后我們看下發(fā)送和接收指令,XMT和RCV,這兩個(gè)指令需要注意的是;
1 指令需要以脈沖形式觸發(fā)。
2發(fā)送或者接受的第一個(gè)字節(jié)的含義是你要發(fā)送的字節(jié)總字?jǐn)?shù)。且不包含第一個(gè)。比如說(shuō)我發(fā)送從VB801-VB876,所以發(fā)送地址需要寫VB800,且VB800賦值為76。
主程序
程序解析;因?yàn)閰f(xié)議是“波特率9600,無(wú)奇偶效驗(yàn),數(shù)據(jù)位8,停止位1”利用端口1進(jìn)行通訊,利用脈沖觸發(fā)XMT。
最后我們下載程序并觸發(fā)脈沖,那么怎么進(jìn)行調(diào)試呢?我們需要串口調(diào)試工具,本文用到的串口調(diào)試工具是作者從業(yè)多年用的最好的一款,綠色無(wú)需安裝,且沒有BUG,打開軟件后,我們打開COM口,即可接收數(shù)據(jù),還可以看到數(shù)據(jù)的總量,非常方便,有需要下方留郵箱。
當(dāng)然如果想發(fā)送讓PC識(shí)別的語(yǔ)言的話,需要借助ASC碼來(lái)幫助,這個(gè)碼,大家可以去網(wǎng)上查找,即是通過用計(jì)算機(jī)容易發(fā)送的數(shù)字來(lái)表示字母;(比如說(shuō)A在碼中以16進(jìn)制數(shù)字41代替,Z在碼中以16進(jìn)制數(shù)字5A代替)通過這個(gè)轉(zhuǎn)換,PLC終于可以按照人的意愿和PC對(duì)話了,但要切記,通訊過程中的字與字之間最好用分隔符分開,而且安全起見,最后一位可以通過程序做效驗(yàn)。
對(duì)于一些復(fù)雜的自由口通訊協(xié)議,比如說(shuō)松下伺服驅(qū)動(dòng)器等涉及精度,復(fù)雜功能或者安全等,需要多次讀寫發(fā)送來(lái)驗(yàn)證是否通訊有效,這就需要中斷來(lái)幫助,在這里對(duì)于端口0發(fā)送完成的標(biāo)志是中斷事件9,端口1發(fā)送完成的標(biāo)志是中斷事件26,對(duì)于端口0接收完成的標(biāo)志是中斷事件23,端口1接收完成的標(biāo)志是中斷事件24。中斷是另一個(gè)知識(shí)點(diǎn)了,如果有想要學(xué)習(xí)中斷的可以在下方留言。