最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【精講版】上位機(jī)C#/.NET與西門子PLC通信

2020-06-18 12:00 作者:新閣教育  | 我要投稿


公眾號(hào):thinger_swj

據(jù)某份數(shù)據(jù)不完全統(tǒng)計(jì),目前中國(guó)市場(chǎng)十大國(guó)際PLC品牌如下(避免爭(zhēng)議,排名不分先后):

西門子、施耐德、歐姆龍、三菱、羅克韋爾、松下、ABB、倍福、艾默生、GE

再盤點(diǎn)一下中國(guó)市場(chǎng)十大國(guó)內(nèi)PLC品牌:

和利時(shí)、臺(tái)達(dá)、匯川、信捷、永宏、豐煒、南大傲拓、廈門海為、黃石科威、上海正航

當(dāng)代電氣工程師之所以這么厲害(Ku Bi),一部分原因大概就是PLC品牌太多了,終其一生,可能都學(xué)不完!

以上均為有感而發(fā),不作為今天的主題,今天的主題主要是跟大家介紹一下,如何站在電氣工程師的角度上,實(shí)現(xiàn)C#/.NET與西門子PLC之間的通信。


N0.01??準(zhǔn)備工作


如果想實(shí)現(xiàn)C#/.NET與西門子PLC之間的通信,首先要對(duì)西門子PLC有一定的了解,西門子PLC目前市場(chǎng)上主要使用的PLC型號(hào)包括:S7-200、S7-200Smart、S7-300、S7-400、S7-1200、S7-1500,西門子PLC的主要存儲(chǔ)區(qū)包括V區(qū)(在通信協(xié)議里V區(qū)即DB1)、M區(qū)、I區(qū)、Q區(qū)、DB區(qū),其他的C區(qū)和T區(qū),由于用得比較少,而且可以通過程序中轉(zhuǎn),暫不涉及。

當(dāng)然,如果我們手頭有PLC實(shí)際硬件,當(dāng)然非常方便,可以直接測(cè)試,但是對(duì)于如果沒有PLC的同學(xué)來說,我們也給大家提前準(zhǔn)備好了解決方案:戳↓

基于S7-PLCSIMAdvanced搭建S7通信仿真環(huán)境????搭建好仿真環(huán)境后,只需要注意以下幾個(gè)地方:???

?? 一、PLC配置中,必須勾選允許來自遠(yuǎn)程對(duì)象的PUT/GET通信訪問。

圖表 1允許Put Get訪問

????二、如果需要訪問DB塊,必須將DB塊屬性中的優(yōu)化的塊訪問勾選去除。

圖表 2 DB塊去優(yōu)化訪問

三、如果是通過PLCSIM-Advanced搭建的仿真環(huán)境,必須將整個(gè)解決方案的屬性中,保護(hù)欄里的塊編譯時(shí)支持仿真勾選上。

圖表 3塊編譯支持仿真

?四、對(duì)于讀取的地址,一定要是PLC中存在的地址:

????以M存儲(chǔ)區(qū)為例,一般M區(qū)最大字節(jié)是8192個(gè),如果你讀取MD9000,一定是讀不到的。

????以DB存儲(chǔ)區(qū)為例,如果你尚未創(chuàng)建DB1,你讀取DB1.DBD0,一定也是讀不到的。

????以DB存儲(chǔ)區(qū)為例,如果你DB1只有200個(gè)字節(jié)范圍,你讀取DB1.DBD200,也是讀不到的。

只要遵從以上四個(gè)原則,西門子PLC通信基本上就不存在硬件或者配置上的問題了。

?

N0.02??PLC基礎(chǔ)通信

本節(jié)中提到的基礎(chǔ)通信,主要是指針對(duì)PLC的地址進(jìn)行單個(gè)或者多個(gè)連續(xù)的進(jìn)行讀取及寫入,下面直接利用剛剛搭建好的仿真環(huán)境來做測(cè)試,當(dāng)然,使用實(shí)際PLC也是完全沒問題的。前提先將博途中的DB1.DBD0、DB1.DBD4、DB1.DBD8、DB1.DBD12分別改成1.2、3.4、5.6、7.8,并將DB.DBS344開始的100個(gè)字節(jié)字符串改成“今晚有上位機(jī)免費(fèi)公開課”,用于測(cè)試讀取:

圖表 4 DB1變量數(shù)值
圖表 5 DB1字符串?dāng)?shù)據(jù)

第一步:?jiǎn)蝹€(gè)變量的讀取

通過C#調(diào)用通信庫xktComm.dll(Nuget搜索xktComm下載安裝),實(shí)現(xiàn)對(duì)PLC單個(gè)變量的讀取,結(jié)果如下圖所示:

說明:西門子PLC通信只需要IP地址和CPU類型即可,不需要端口號(hào),因?yàn)镾7協(xié)議的端口號(hào)是固定值102,之所以要選擇CPU類型,是因?yàn)椴煌吞?hào)的CPU,握手報(bào)文是不一樣的,對(duì)于西門子PLC的報(bào)文抓取及剖析,之前也寫過一篇專門的文章進(jìn)行了說明:戳↓

西門子S7通信協(xié)議底層原理及抓包分析

圖表 6 PLC單個(gè)讀取
圖表 7 PLC單個(gè)字符串讀取

第二步:?jiǎn)蝹€(gè)變量的寫入

對(duì)于單個(gè)變量的寫入,也非常方便,直接輸入地址、類型及寫入值即可,下面分別將這4個(gè)地址寫入1.0、2.0、3.0、4.0,結(jié)果如下圖所示:

圖表 8 PLC單個(gè)寫入
圖表 9 PLC單個(gè)字符串寫入

第三步:多個(gè)變量的讀取

對(duì)于多個(gè)變量的讀取,需要填寫讀取長(zhǎng)度,下面通過將讀取長(zhǎng)度改成4,一次性將DB1.DB0-DB1.DBD12讀取出來,結(jié)果如下圖所示:

圖表 10 PLC多個(gè)讀取

第四步:多個(gè)變量的寫入

對(duì)于多個(gè)變量的寫入,則不需要填寫讀取長(zhǎng)度,直接在寫入數(shù)值中,用空格分隔,寫入相應(yīng)的數(shù)值,下面以將DB1.DBD0-DB1.DBD12改成1.2、3.4、5.6、7.8為例,將寫入數(shù)值改成1.2 ?3.4 ?5.6 ?7.8,結(jié)果如下圖所示:

圖表 11 PLC多個(gè)寫入

N0.03? PLC高級(jí)通信

如果PLC基礎(chǔ)通信就能滿足大家的項(xiàng)目需求的話,那么PLC高級(jí)通信一定可以讓大家喜出望外。

PLC高級(jí)通信主要應(yīng)用場(chǎng)合是對(duì)于多個(gè)不連續(xù)的存儲(chǔ)區(qū)或者多個(gè)不連續(xù)的變量進(jìn)行一次性讀取和寫入,這一點(diǎn),似乎只有西門子S7協(xié)議支持,其他品牌PLC均不支持。第一步:多個(gè)不連續(xù)變量讀取

在下圖中,連接上PLC后,通過輸入變量地址及變量類型,然后點(diǎn)擊添加至讀取區(qū),會(huì)將想要讀取的變量加載到右邊的讀取區(qū)中,讀取區(qū)以JSON形式進(jìn)行顯示,右側(cè)顯示耗時(shí)時(shí)間,添加完成后,通過點(diǎn)擊讀取數(shù)據(jù),會(huì)將想要讀取的數(shù)據(jù)展示在日志框中,這些變量是可以不連續(xù)的變量。

下面以讀取MD10、MD100、MD200、DB1.DBD0、DB1.DBD8為例,進(jìn)行測(cè)試,測(cè)試結(jié)果如下圖所示:

圖表 12 PLC多變量同時(shí)讀取
圖表 13 PLC監(jiān)控表

第二步:寫入個(gè)不連續(xù)變量讀取

在上一步讀取的基礎(chǔ)上,分別將MD10、MD100、MD200、DB1.DBD0、DB1.DBD8寫入1.0、2.0、3.0、4.0、5.0,仍然采用同樣的方式,填寫變量地址、變量類型及寫入值,點(diǎn)擊添加至寫入?yún)^(qū),最后點(diǎn)擊寫入數(shù)據(jù),判斷是否可以將這些數(shù)據(jù)同時(shí)寫入,測(cè)試結(jié)果如下圖所示:

圖表 14 PLC多變量同時(shí)寫入
圖表 15 PLC多變量寫入結(jié)果對(duì)比

通過反饋結(jié)果及PLC數(shù)據(jù)對(duì)比,實(shí)測(cè)證明可以一次將多個(gè)變量同時(shí)寫入PLC,并且通過判斷耗時(shí)僅11ms,說明報(bào)文是一次性寫入的??偠灾?,PLC高級(jí)通信的合理應(yīng)用會(huì)大大提高上位機(jī)的通信效率。

N0.04??整體總結(jié)

本文主要針對(duì)C#與西門子PLC通信做了較為詳細(xì)的描述,相信對(duì)于很多電氣工程師,尤其是以西門子PLC為主的電氣工程師來說,會(huì)有很大幫助。近幾年隨著人工智能、物聯(lián)網(wǎng)的流程,工控行業(yè)發(fā)生了很大的變化,每一位電氣工程師都應(yīng)該及時(shí)作出調(diào)整,至少學(xué)習(xí)一門高級(jí)編程語言,未雨綢繆,以更好的姿態(tài)來應(yīng)對(duì)即將到來的智能制造2025。


今日直播課


課程內(nèi)容:基于GDI+開發(fā)工業(yè)LED指示燈控件


課程時(shí)間:今日14:30

主講人:付老師

長(zhǎng)按掃碼進(jìn)入直播↓


【精講版】上位機(jī)C#/.NET與西門子PLC通信的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
灵川县| 临泽县| 武定县| 田林县| 浦东新区| 南宁市| 孟津县| 齐齐哈尔市| 永济市| 门源| 怀宁县| 新绛县| 连云港市| 孝昌县| 宜良县| 乌拉特后旗| 通州市| 铅山县| 沙洋县| 凌云县| 千阳县| 泾源县| 河东区| 时尚| 上饶县| 荆门市| 凤城市| 乌兰察布市| 曲麻莱县| 临潭县| 韩城市| 丽水市| 南宁市| 霞浦县| 集贤县| 芮城县| 祁东县| 奉新县| 克东县| 卢龙县| 龙陵县|