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

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

基于Snap7實(shí)現(xiàn)與西門子PLC通信

2020-09-23 15:35 作者:付工上位機(jī)實(shí)戰(zhàn)  | 我要投稿

如果你對西門子PLC通信或者上位機(jī)開發(fā)稍微有一點(diǎn)研究的話,應(yīng)該對Snap7有所耳聞。

Snap7是一個(gè)基于以太網(wǎng)與西門子S7系列PLC通信的開源庫,在世界領(lǐng)域應(yīng)用很廣。但也許是因?yàn)橘Y料比較少,而且很多都是純英文,在國內(nèi)反而沒有大規(guī)模的應(yīng)用。

作為一個(gè)技術(shù)開發(fā)人員,所有未知領(lǐng)域的事物都是值得探索的。于是花了一些時(shí)間,對Snap7做了一些研究,借此機(jī)會(huì),給大家做一些分享,希望可以給對工作或?qū)W習(xí)中有這塊需要的人,提供一些借鑒。

1、Snap7基礎(chǔ)介紹

  • Snap7作為一個(gè)世界級的開源庫,有自己的官網(wǎng):

Snap7 Homepagesnap7.sourceforge.net

  • 大家如果需要Snap7的源碼,可以去這里下載:

https://sourceforge.net/projects/snap7/files/1.4.2/snap7-full-1.4.2.7z/downloadsourceforge.net

  • Snap7主要用于將PC站點(diǎn)與PLC網(wǎng)路完全連接到一起,所以它具有三個(gè)對象組件,分別是客戶端、服務(wù)器和協(xié)作者,這三個(gè)對象可以同時(shí)應(yīng)用,下面這幅圖描述了這三個(gè)對象之間的聯(lián)系:

對于一般開發(fā)人員來說,Server和Partner模式是用不到的,我們主要用的是Client模式,即PLC作為Server,上位機(jī)PC作為Client。

2、Snap7源碼分析

如果順利的話,大家打開源碼之后是可以運(yùn)行的,找一個(gè)自己身邊的西門子PLC進(jìn)行通信功能測試,如果手頭沒有PLC,可以搭建一個(gè)西門子PLC仿真環(huán)境。

如果大家看到源碼,可以發(fā)現(xiàn)提供的snap7.net其實(shí)是對snap7.dll的二次封裝,snap7.dll是一個(gè)C/C++寫的類庫,我們可以找到一些我們需要的方法。

建立PLC連接
斷開PLC連接
存儲區(qū)讀取
存儲區(qū)寫入
讀取多變量
寫入多變量

但是這個(gè)snap7.net類封裝的風(fēng)格有些老外的風(fēng)格,會(huì)導(dǎo)致我們使用起來很麻煩,于是我便對這個(gè)snap7.net做了進(jìn)一步的封裝:

建立及斷開連接
讀取及寫入多個(gè)字節(jié)
讀取及寫入多個(gè)通信組
讀取及寫入多個(gè)通信變量
讀取及寫入單個(gè)變量

通過這些封裝,會(huì)將snap7.net里晦澀難懂的方法變成我們自己熟悉的方式,這樣,我們自己做開發(fā)的時(shí)候,會(huì)更加方便和高效,這里值得注意的是西門子S7協(xié)議通信會(huì)有PDU及通信組數(shù)量的限制,一般來說PDU限制是220個(gè)字節(jié),通信組數(shù)量限制是20個(gè),也就意味著一次性只能讀取220個(gè)字節(jié),并且最多只能同時(shí)讀取20個(gè)通信組。

3、通信測試

通信庫編寫完成之后,通過TIA V15 + PLCSIM + NETTOPLCISm搭建了一個(gè)S7-1500PLC的仿真環(huán)境,用于通信測試。

西門子仿真環(huán)境

基于封裝的通信庫開發(fā)了一個(gè)簡單的測試平臺,分別于S7-200 Smart PLC及S7-1500進(jìn)行了通信測試,測試結(jié)果如下:

S7-200 Smart PLC通信測試
S7-1500 PLC通信測試


基于Snap7實(shí)現(xiàn)與西門子PLC通信的評論 (共 條)

分享到微博請遵守國家法律
师宗县| 阿勒泰市| 张家界市| 南溪县| 六枝特区| 岫岩| 贵阳市| 黑龙江省| 屏东县| 唐海县| 滦南县| 西乡县| 滨海县| 扎兰屯市| 德保县| 互助| 九江市| 娄烦县| 隆林| 上高县| 临清市| 灌南县| 英德市| 通州市| 姜堰市| 阿拉善左旗| 丰都县| 舒兰市| 策勒县| 东明县| 清河县| 湘阴县| 扎赉特旗| 囊谦县| 郯城县| 行唐县| 平邑县| 昌乐县| 霍林郭勒市| 白玉县| 乌什县|