西門子S7-1200CPU1215C中央控制單元西門子代理商 西門子總代理西門子S7-1200CPU1215C中央控制單元西門子代理商 西門子總代理西門子S7-1200CPU1215C中央控制單元西門子代理商 西門子總代理上位機(jī)與西門子PLC通信協(xié)議前言最近西門子PLC價(jià)格大幅上調(diào),在工控界引起了不小的風(fēng)波,不僅漲價(jià),甚至還缺貨,導(dǎo)致很多人不得不更改方案。
聽說最近已經(jīng)完成了芯片替換,希望不久能夠恢復(fù)供貨,并把價(jià)格回調(diào)。
通過這件事,從側(cè)面可以看出,西門子在工控領(lǐng)域的市場(chǎng)占有率很大,那么對(duì)于上位機(jī)開發(fā)人員來說,使用西門子PLC作為下位機(jī),我們應(yīng)該如何與之進(jìn)行通信呢?西門子PLC支持很多種通信協(xié)議,主要分為兩種,一種是串口通信,一種是以太網(wǎng)通信,也可以通過OPC實(shí)現(xiàn)數(shù)據(jù)通信。
串口通信西門子PLC支持串口通信,在S7-200和S7-200Smart中,都直接集成了串口,從S7-1200到S7-1500,慢慢都取消掉了,如果需要,可以通過擴(kuò)展模塊的方式來增加,出現(xiàn)這種現(xiàn)象的原因,其實(shí)也是工業(yè)發(fā)展的必然結(jié)果。
串口通信的優(yōu)勢(shì)在于簡(jiǎn)單、成本低,劣勢(shì)也非常明顯,就是傳輸效率低。
西門子早期的串口通信主要是Profibus DP通信,上位機(jī)是無法直接與西門子PLC走Profibus DP通信的,西門子PLC常用的串口通信方案如下所示:PPI通信:PPI通信只針對(duì)S7-200和S7-200 Smart系列PLC,其他型號(hào)不支持。
ModbusRTU主站:西門子PLC對(duì)Modbus協(xié)議支持還是比較不錯(cuò)的,這里是指PLC做Slave(即從站),上位機(jī)做Master(即主站)。
ModbusRTU從站:這里是指PLC做Master(即主站),上位機(jī)做Slave(即從站)。
以太網(wǎng)通信西門子PLC通信還是以太網(wǎng)通信為主,我們常說的西門子通信協(xié)議分別是S7協(xié)議和Profinet協(xié)議,Profinet是一種總線協(xié)議,目前,C#是無法直接與西門子PLC走Profinet通信的。
西門子PLC常用的以太網(wǎng)通信方案如下所示:S7通信:基本上從S7-200到S7-1500均可以實(shí)現(xiàn),這里有很多可以選擇的開源或商業(yè)庫(kù),包括、pronodave、libnodave、sharp7,也可以自己封裝通信庫(kù)。
ModbusTCP Server:這里是指PLC做Server(即服務(wù)器),上位機(jī)做Client(即客戶端)。
ModbusTCP Client:這里是指PLC做Client(即客戶端),上位機(jī)做Server(即服務(wù)器)。
OpenProtocol Server:這里是指開放式TCP通信,PLC做TCPServer(即服務(wù)器),上位機(jī)做TCPClient(即客戶端)。
OpenProtocol Client:這里是指PLC做TCPClient(即客戶端),上位機(jī)做TCPServer(即服務(wù)器)。
OPC通信OPC通信是工業(yè)控制中常用的一種通信方式,主要在于OPC軟件的選擇以及OPCDA、OPCUA的選擇,西門子PLC常用的OPC通信方案如下所示:PC Access系列:西門子針對(duì)S7-200開發(fā)PC-Access軟件,針對(duì)S7-200 Smart又提供了PC-Access Smart軟件,可以直接通過這些軟件實(shí)現(xiàn)OPCDA通信。
Simatic Net 系列OPCDA:Simatic Net是西門子主推的OPC軟件,支持西門子全系列,這里主要是OPCDA通信方式。
Simatic Net 系列OPCUA:新版的Simatic Net也開始支持OPCUA,這里主要是OPCUA通信方式。
KepServer 系列OPCDA:KepServer同樣作為一款商業(yè)OPC軟件,在國(guó)內(nèi)使用率非常高,同樣也支持西門子全系列,這里主要是OPCDA通信方式。
Simatic Net 系列OPCUA:新版的KepServer也開始支持OPCUA,這里主要是OPCUA通信方式。
S7通信協(xié)議在以上眾多的通信方式和通信協(xié)議中,就目前而言,使用S7通信是最方便,也是應(yīng)該最廣泛的,那么S7協(xié)議相對(duì)于其他協(xié)議來說,有哪些優(yōu)勢(shì)呢?使用S7通信協(xié)議最大的優(yōu)勢(shì)在于不需要編寫PLC程序,S7協(xié)議在底層做了很強(qiáng)的封裝,在上位機(jī)通信應(yīng)用中相比其他通信協(xié)議來說,也有很大的優(yōu)勢(shì)。
不需要編寫PLC程序,但仍然需要做一些簡(jiǎn)單的配置:開啟Put/GetPLC側(cè)需要設(shè)置勾選允許來自遠(yuǎn)程對(duì)象的Put/Get通信訪問 對(duì)于西門子1200/1500系列,必須要勾選允許Put/Get訪問,對(duì)于200Smart/300/400,則不需要。
DB塊去除優(yōu)化訪問對(duì)于基于博圖開發(fā)S7-1200/1500的項(xiàng)目,如果要與DB塊數(shù)據(jù)通信,需要要去除DB的優(yōu)化的塊訪問,對(duì)于200Smart/300/400,則不需要。
如果希望通過標(biāo)簽通信,可以采用OPCUA。
務(wù)必保證通信地址是有效地址因?yàn)镻LC大多數(shù)是基于存儲(chǔ)區(qū)的,每個(gè)地址肯定是隸屬于某個(gè)存儲(chǔ)區(qū),大家都知道西門子PLC自帶的存儲(chǔ)區(qū)有I區(qū)、Q區(qū)、M區(qū)、T區(qū)、C區(qū),對(duì)于常用的DB存儲(chǔ)區(qū)是沒有的,需要自己去創(chuàng)建,也就意味著,如果你要讀取DB地址,必須要提前創(chuàng)建好DB存儲(chǔ)區(qū),除此以外,DB存儲(chǔ)區(qū)創(chuàng)建之后,默認(rèn)是沒有字節(jié)的,需要自己一個(gè)個(gè)添加變量,才能形成有效存儲(chǔ)區(qū),一個(gè)DB存儲(chǔ)區(qū)的范圍是有限并且可見的(可以通過偏移量看出來)。
S7協(xié)議之布爾操作對(duì)于布爾操作,很多協(xié)議都有,這里的布爾操作是指寄存器布爾,比如DB100.DBX0.0,很多時(shí)候,我們都是通過先讀取DB100.DBB0的值,再通過位運(yùn)算結(jié)果,寫入到DB100.DBB0中,實(shí)現(xiàn)DB100.DBX0.0的操作,這種方式有弊端,第一:每次操作一個(gè)布爾值都需要與PLC進(jìn)行兩次數(shù)據(jù)交互。
第二:安全性和穩(wěn)定性無法保障,你不知道在你讀取和寫入之間,這個(gè)字節(jié)的值是否已經(jīng)發(fā)生了改變。
這樣的問題也存在于Modbus協(xié)議的寄存器位操作,如40001.05,三菱、歐姆龍的寄存器位操作,如D100.06、W12.04,給上位機(jī)開發(fā)者帶來很多苦惱。
S7協(xié)議支持直接位操作,有專門的報(bào)文指令實(shí)現(xiàn)這樣的功能。
S7協(xié)議之PDU讀取大部分人都知道S7協(xié)議一次性讀取有限制,具體是多少?怎么計(jì)算出來的?S7協(xié)議的一次性讀取長(zhǎng)度是根據(jù)PDU計(jì)算出來的,這個(gè)PDU的值是來自于PLC本身,不同型號(hào)的CPU,它的PDU是不一樣的,可以參考下面兩張圖:西門子PLC的PDU大小是和CPU息息相關(guān)的,一般會(huì)有240、480、960三個(gè)檔次,知道PDU之后,那么一次性讀取的字節(jié)長(zhǎng)度,就是在PDU的基礎(chǔ)上減去18,這個(gè)18是指包頭包尾會(huì)有18個(gè)字節(jié),這樣我們就知道了一般的PLC,一次性能讀取222個(gè)字節(jié)(240-18=222),對(duì)于S7-1516這樣的PLC,我們一次性是可以讀取942個(gè)字節(jié)的(960-18=942),這個(gè)一次性能讀取的字節(jié)越長(zhǎng),越能tigao上位機(jī)的通信效率。
剛剛的方式是通過KepServer測(cè)試的,實(shí)際開發(fā)過程中,該怎么獲取CPU的PDU呢,實(shí)際上在建立連接的第二次握手時(shí),返回的報(bào)文中就包含PDU的值。
第二次握手返回的報(bào)文長(zhǎng)度是27個(gè)字節(jié),最后兩個(gè)字節(jié)就是PDU的值,上圖展示的是S7-1200PLC返回的報(bào)文,0和240的組合即為240。
對(duì)于S7-1500,我這里也做了一下測(cè)試,結(jié)果如下,返回結(jié)果為3和192,3和192的組合恰好是960(960=3*256+192)。
PDU是由硬件做了限制,我們可以通過軟件的方式,實(shí)現(xiàn)大量數(shù)據(jù)的讀取,只需要在底層做一些封裝即可。
做了一下測(cè)試,針對(duì)S7-1200和S7-1500讀取M區(qū)的8000個(gè)字節(jié)的耗時(shí)比較,S7-1200耗時(shí)800多ms,S7-1500耗時(shí)僅需200ms,硬件對(duì)通信的重要性。
S7協(xié)議之多組讀取對(duì)于很多其他的通信協(xié)議,當(dāng)我們遇到數(shù)據(jù)變量比較零散,讀取多個(gè)存儲(chǔ)區(qū)或者一個(gè)存儲(chǔ)區(qū)多個(gè)不同部分的時(shí)候,我們只能針對(duì)每個(gè)存儲(chǔ)區(qū)或者每塊區(qū)域做一個(gè)數(shù)據(jù)請(qǐng)求,西門子S7協(xié)議可以解決這樣的問題。
西門子S7協(xié)議有一個(gè)非常強(qiáng)大的一個(gè)地方,可以讀取很多個(gè)不同的存儲(chǔ)區(qū),最大支持19種,總共讀取長(zhǎng)度仍然受PDU的限制。
這里我們?nèi)匀灰詫?shí)驗(yàn)測(cè)試為例,體驗(yàn)多組讀取帶來的美妙體驗(yàn)。
假設(shè)我們的通信組配置如下:通信組01:讀取I區(qū)從0開始的1個(gè)字節(jié)通信組02:讀取Q區(qū)從0開始的1個(gè)字節(jié)通信組03:讀取M區(qū)從0開始的200個(gè)字節(jié)通信組04:讀取M區(qū)從500開始的50個(gè)字節(jié)通信組05:讀取M區(qū)從1000開始的60個(gè)字節(jié)通信組06:讀取DB100從0開始的20個(gè)字節(jié)通信組07:讀取DB100從20開始的20個(gè)字節(jié)通信組08:讀取DB100從40開始的20個(gè)字節(jié)通信組09:讀取DB100從60開始的20個(gè)字節(jié)我們采用常用S7-1200PLC,通過配置軟件實(shí)現(xiàn)配置以上9個(gè)通信組,開始通信測(cè)試,我們選擇的是單組讀取的方式,就是針對(duì)每個(gè)組,依次進(jìn)行讀取,結(jié)果如下,耗時(shí)大約200ms,這個(gè)時(shí)間應(yīng)該相對(duì)來說還是比較正常的。
接著,將讀取方式改成了多組讀取,再進(jìn)行測(cè)試發(fā)現(xiàn)結(jié)果如下:通過結(jié)果發(fā)現(xiàn),多組讀取對(duì)于存儲(chǔ)區(qū)較為零散的項(xiàng)目來說,有著非常重要的作用,可以大大tigao通信效率。
通過上面一系列的分享,相信大家對(duì)西門子PLC通信有了更加深入的了解,希望大家可以多多實(shí)踐。
每種通信方式都有自己的優(yōu)缺點(diǎn),對(duì)各種通信方式和協(xié)議了解之后,你才能夠在不同的場(chǎng)合選擇適合的通信方式,給出最合理的解決方案。
————————————————版權(quán)聲明:本文為CSDN博主「YouluBank」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:_37787662/article/details/西門子博圖庫(kù)文件的使用詳解(新建、打開、歸檔和恢復(fù))博途軟件有一個(gè)非常強(qiáng)大的功能——庫(kù),在庫(kù)中可以保存一些會(huì)重復(fù)使用的標(biāo)準(zhǔn)塊,方便后續(xù)項(xiàng)目使用。
庫(kù)的文件類型有兩種,一種是庫(kù)文件,一種是歸檔的庫(kù)文件,如圖1和圖2所示。
圖 1 博途V16庫(kù)文件 圖2 博途V16庫(kù)歸檔文件其中后綴al16表示的是博途V16版本的庫(kù)文件,后綴zal16表示的是博途V16庫(kù)的歸檔文件,對(duì)于庫(kù)文件的新建、打開、歸檔與恢復(fù)操作,下面以博途V16版本軟件進(jìn)行演示。
庫(kù)文件的新建1、 在博途項(xiàng)目中打開“庫(kù)”選項(xiàng)卡,在“全局庫(kù)”選項(xiàng)下,點(diǎn)擊“新建”,在彈出窗口填寫庫(kù)的名稱、存放路徑,并創(chuàng)建,如圖3所示。
圖 3 創(chuàng)建全局庫(kù)2、 將需要重復(fù)使用的程序塊,拖動(dòng)到模板副本中,并保存,如圖4所示。
圖4 保存庫(kù)模板程序庫(kù)文件的打開1、 選擇“庫(kù)”選項(xiàng)卡,在“全局庫(kù)”下選擇“打開庫(kù)”,在彈出窗口找到庫(kù)文件的存放路徑,并選擇文件,根據(jù)需求更改只讀方式,并打開,如圖5所示。
圖 5 打開全局庫(kù)2、 在庫(kù)模板副本中,找到想要使用的庫(kù)文件,拖入到程序塊中,并打開查看,如圖6所示。
圖 6 使用庫(kù)程序塊庫(kù)文件的歸檔1、 在“庫(kù)”選項(xiàng)卡下,選擇要?dú)w檔的全局庫(kù),鼠標(biāo)右擊該全局庫(kù),并選擇“歸檔庫(kù)”,如圖7所示。
圖7 歸檔庫(kù)文件2、 歸檔后的庫(kù)文件,如圖8所示。
圖 8 歸檔庫(kù)文件查看歸檔庫(kù)文件的打開1、 選擇“庫(kù)”選項(xiàng)卡,在全家?guī)熘小按蜷_庫(kù)“,在彈出窗口選擇打開的文件類型,修改只讀選項(xiàng),并選中要打開歸檔的文件,點(diǎn)擊”打開“,如圖9所示。
圖9 打開庫(kù)歸檔文件2、 在彈出的窗口,選中庫(kù)歸檔文件的恢復(fù)路徑,如圖10所示。
3、 恢復(fù)完并打開,如圖11所示。
圖11 查看恢復(fù)的全局庫(kù)本文是以博途V16版本進(jìn)行了庫(kù)文件的新建、打開、歸檔與恢復(fù)的操作,其它版本也可參考本文操作,更多關(guān)于庫(kù)的使用,可以登錄技成培訓(xùn)網(wǎng)進(jìn)行學(xué)習(xí)。
西門子S7-1200PLC模擬量控制變頻器實(shí)例一、任務(wù)目標(biāo)該任務(wù)是關(guān)于西門子1200PLC模擬量應(yīng)用案例。
西門子S7-1200 PLC的模擬量功能可以控制電動(dòng)閥、變頻器等外部設(shè)備,也可以采集傳感器的溫度、壓力、液位、liuliang等。
本任務(wù)主要使用的是模擬量控制臺(tái)達(dá)變頻器從而控制電機(jī)的轉(zhuǎn)速。
二、任務(wù)描述某設(shè)備廠,需要對(duì)設(shè)備進(jìn)行散熱。
采用變頻器調(diào)速控制電機(jī),需要有手動(dòng)、自動(dòng)模式切換,如圖1所示1.手動(dòng)時(shí),可以測(cè)試電機(jī)的正反轉(zhuǎn)、停止等2.自動(dòng)時(shí)根據(jù)設(shè)備(外部傳感器)的溫度值控制變頻器的頻率(當(dāng)傳感器測(cè)量溫度值小于30℃時(shí),變頻器20HZ運(yùn)行;30-40℃時(shí)30HZ運(yùn)行;大于40℃時(shí)50HZ運(yùn)行) 圖1:風(fēng)機(jī)變頻控制畫面三、相關(guān)知識(shí)1.在本案例中使用的是臺(tái)達(dá)變頻器VFD-M型號(hào)。
在使用PLC對(duì)臺(tái)達(dá)變頻器進(jìn)行控制時(shí),需要設(shè)置相關(guān)參數(shù)。
在本案例中需要使用的是端子啟動(dòng)變頻器,模擬量控制變頻器的頻率。
PLC與變頻器的接線圖,如圖2所示;變頻器的參數(shù)設(shè)置如圖3所示。
圖2:PLC與變頻器的接線圖 圖3:變頻器的參數(shù)設(shè)置參數(shù)設(shè)置:頻率源 P00=02;命令源 P01=01;停車方式 P02=00;最大可操作頻率 P03=50.0最大輸出頻率 P36=50.0;最小輸出頻率 P37=0.0;M0、M1端子功能 P38=00最小頻率對(duì)應(yīng)的電流值 P131=0.0;最大頻率對(duì)應(yīng)的電流值 P132=20.02. 標(biāo)準(zhǔn)化與縮放指令1)標(biāo)準(zhǔn)化指令(NORM_X)用于標(biāo)準(zhǔn)化通過參數(shù)MIN和MAX指定的范圍內(nèi)的參數(shù)VALUE,把其標(biāo)定為0%~****范圍。
OUT=(VALUE-MIN)/(MAX-MIN),其中0.0