上海眹鋅電氣設備有限公司在經營活動中精益求精,具備如下業(yè)務優(yōu)勢:
上海眹鋅*低價銷售西門子PLC,200,300,400,1200,西門子PLC附件,西門子電機,西門子人機界面西門子變頻器,西門子數控伺服,西門子總線電纜現貨供應,咨詢系列產品,折扣低,貨期準時并且備有大量庫存. *有效
西門子CPU6ES73146CH044AB1
西門子CPU6ES73146CH044AB1
SIEMENS西門子上海朕鋅電氣設備有限公司
:鐘濤
24小時銷售及:
:
手 機:
: 1824547528
地址:上海市金山區(qū)楓灣路500號
.應用概述
SIMOTION通信函數_xsend與_xreceive適合SIMOTION之間通過MPI-MPI接口、PROFIBUS-PROFIBUS間的數據交換,通信數據zui大為200個字節(jié),SIMOTION也可以通過調用通信函數_xsend與_xreceive實現與S7-300/400 PLC(在PLC中調用SFC65 X_SEND與SFC66 X-REV)MPI接口間的數據交換,由于受到PLC通信區(qū)的限制,zui大通信數據為64個字節(jié)。
2.MPI與PROFIBUS網絡介紹
MPI是S7-300/400,SIMOTION的編程接口,對通信數據及實時性要求不高的應用可以利用編程接口進行通信, MPI的通信速率為19.2K~12Mbit/s, 只有可以設置為PROFIBUS接口的MPI口才支持12M的通信速率,例如S7-300中CPU318-2DP及所有的S7-400CPU 、SIMOTION MPI口都可以設定為PROFIBUS接口,所以它們的MPI接口通信速率都可以設置為12M。MPI接口通信速率缺省設置為187.5Kbit/s,無中繼情況下zui大通信通訊距離為50米,通過中繼器可以擴展網絡長度,擴展的方式有兩種,*種,兩個站點中間沒有其它站,如圖1
圖1:MPI網絡擴展
控制器站點到中繼器zui長為50米,兩個中繼器之間的距離為1000米,zui多可以增加10個,所以兩個站點之間的zui長距離為9100米。
第二種,如果在兩個中繼器中間有MPI站點,那么每個中繼器只能擴展50米,在組態(tài)時要考慮這兩種連接方式。
MPI接口為RS485接口,連接電纜為PROFIBUS電纜(屏蔽雙絞線),接頭為PROFIBUS接頭并帶有終端電阻,如果用其它電纜和接頭不能保證通信距離。在MPI網絡上zui多可以有32個站,中繼器,WINCC站,操作面板OP/TP也要算一個站點。MPI的站號及通訊速率可以在STEP7或SCOUT硬件組態(tài)時修改,下載組態(tài)信息到CPU后,站號及通訊速率將改變。
PROFIBUS總線符合EIA RS485[8]標準,PROFIBUS RS485 的傳輸程序是以半雙工、異步、無間隙同步為基礎的。傳輸介質可以是光纜或屏蔽雙絞線,電氣傳輸時,每一個RS485傳輸段為32個站點包括有源網絡元件(RS485中間器,OLM等),在總線的兩端為終端電阻,結構如圖2:
圖2:PROFIBUS網絡結構
西門子總線終端一般都配有終端電阻,PROFIBUS使用9針D型連接器,D型連接器插座連接總線站,D型連接器插頭與總線電纜相連??偩€終端和針腳定義如表1:
表1 總線終端管腳定義
針腳號 | 信號名稱 | 設計含義 |
1 | SHIELD | 屏蔽或功能地 |
2 | M24 | 24V輸出電壓地(輔助電源) |
3 | RXD/TXD-P | 接收和發(fā)送數據-正 B線 |
4 | CNTR-P | 方向控制信號P |
5 | DGND | 數據基準電位(地) |
6 | VP | 供電電壓-正 |
7 | P24 | 正24V輸出電壓(輔助電源) |
8 | RXD/TXD-N | 接收和發(fā)送數據-負 A線 |
9 | CNTR-N | 方向控制信號N |
PROFIBUS總線的傳輸速率為9.6Kbit/s ~12Mbit/s,總線長度與傳輸速率相關,總的規(guī)律是傳輸速率越高總線長度越短,越容易受到電磁干擾,基于傳輸速率的zui大網段長度參考表2:
表2 傳輸速率與通信長度
波特率(K Bit/s) | 9.6~187.5 | 500 | 1500 | 3000~12000 |
總線長度(米) | 1000 | 400 | 200 | 100 |
總線終端的電阻與PROFIBUS總線相匹配,并配有軸向電感以消除電容性負載而引起的導線反射,選擇普通的屏蔽雙絞線不能保證總線的段長度。
如果需要擴展總線的長度或者PROFIBUS從站數大于32個時,就要加入RS485中繼器,例如,PROFIBUS的長度為500米,而波特率要求達到1.5MBIT/S,對照表2波特率為1.5MBIT/S使zui大的長度為200米,要擴展到500米,就需要加入兩個RS485中繼器,拓撲圖如圖3所示:
圖3:PROFIBUS網絡擴展
西門子RS485中繼器具有信號放大和再生功能,在一條PROFIBUS總線上zui多可以安裝9個RS485中繼器,其它廠商的產品要查看其產品規(guī)范以確定安裝個數。
一個PROFIBUS網段zui多可有32個站點,如果一條PROFIBUS網上超過32個站點,也需要用RS485中繼器隔開,例如一條PROFIBUS總線上有80個站點,那么就需要兩個RS485中繼器分成3個網段。RS485中繼器是一個有源的網絡元件,本身也要算一個站點。除了以上兩個功能,RS485中繼器的還可以使網段之間相互隔離。
3.網絡設置
下面以SIMOTION D435與S7-300 PLC 通過MPI網絡通信為例介紹通信函數_xsend與_xreceive的使用。首先打開SCOUT軟件插入D435,點擊D435使用右鍵進入硬件配置界面如圖4所示:
圖4:SIMOTION MPI接口設置
雙擊X136接口(只有X136接口可以設置為MPI接口),將該接口設置為MPI接口,選擇MPI站地址,如圖5所示:
圖5: MPI接口參數配置
注意MPI站地址與通信方的站地址不能沖突,同樣在STEP7中設置S7-300 PLC的站地址,本例中SIMOTION的MPI地址為2,PLC的站地址為4。
4.編程
4.1 SIMOTION側編程
在D435中的“PROGRAM”中插入編程單元“LAD/FBD UNIT”,如MPI,在“UNIT”中插入程序如“SEND”和“RECEIVE”編寫發(fā)送和接收程序如圖6所示,也可以將通信程序編寫在同一個程序中。
圖6: SIMOTION 程序的創(chuàng)建
本例中在“SEND”程序中編寫發(fā)送程序,在“RECEIVE”程序中編寫接收程序,發(fā)送和接收函數可以在函數庫中的位置如圖7所示:
圖7: 函數塊的位置
• 調用_xsend函數
在程序SEND中調用_xsend函數發(fā)送數據,與PLC編寫方式相似,將發(fā)送函數_xsend拖曳到LAD網絡中,如圖8所示:
圖8: _xsend函數塊
給所有的參數賦值,變量可以任意定義,如“COMMODE”變量,鍵入后選擇變量類型如圖9所示:
圖9: 配置參數類型
數據類型自動定義,在變量類型中選擇變量存儲的類型,如全局變量或區(qū)域變量,如圖9中變量類型只能在一個“UNIT”中使用,如果需要在其它“UNIT”或HMI中使用,將在“INTERFACE”中創(chuàng)建變量。
_xsend函數參數含義如下:
COMMUNICATIONMODE:
枚舉數據類型,元素中包括“ABORT_CONNECTION ”和“HOLD_CONNECTION”,
“ABORT_CONNECTION ”:通信完成之后釋放連接資源。
“HOLD_CONNECTION”:通信完成之后占用連接資源。
枚舉類型變量的賦值可以使用MOVE指令,如圖10所示:
圖10: 參數賦值
ADDRESS:
結構體數據類型,結構體元素參考表3:
表3 _xsend函數ADRESS參數結構體數據
結構體元素 | 名稱 | 數據類型 | 單元 |
deviceId | 元素 ID | USINT | - |
remoteSubnetIdLength | 通信方subnet ID占用字節(jié)的長度 | USINT | - |
remoteStaddrLength | 通信方站地址占用字節(jié)的長度 | USINT | - |
nextStaddrLength | 路由器占用字節(jié)的長度 | USINT | - |
remoteSubnetId | 通信方subnet ID | ARRAY [0..5] OF USINT | - |
remoteStaddr | 通信方站地址 | ARRAY [0..5] OF USINT | - |
nextStaddr | 路由器地址 | ARRAY [0..5] OF USINT | - |
deviceId:使用的接口,1表示D435 X126接口,2表示D435 X136接口,本例中選擇2。
remoteSubnetIdLength:預留參數,MPI通信中無意義,缺省為0,設置為0。
remoteStaddrLength:MPI、PROFIBUS通信設置為1。
nextStaddrLength:預留參數,MPI通信中無意義,,缺省為0,設置為0。
remoteSubnetId:預留參數,MPI通信中無意義,缺省為0。
remoteStaddr:數組類型,在remoteStaddr[0]中賦值通信方的MPI地址,其它元素無意義,本例中S7-300 MPI地址為4,可以使用MOVE(LAD)指令賦值。
nextStaddr:預留參數,MPI通信中無意義,缺省為0。
MESSAGEID:
UDINT數據類型,定義發(fā)送報文的標識符,本例中定義為6,在PLC接收塊參數REQ_ID可以讀出。
NEXTCOMMAND:
枚舉數據類型,元素中包括“IMMEDIAY ”和“WHEN_COMMAND_DONE”,
“IMMEDIAY”:下一個命令同步執(zhí)行。
“WHEN_COMMAND_DONE”:命令執(zhí)行或失敗后執(zhí)行下一個命令,異步執(zhí)行。
例子程序中使用“WHEN_COMMAND_DONE”。
COMMANDID:
COMMANDID數據類型,可以跟蹤命令的狀態(tài)。
DATA:
數組數據類型,發(fā)送數據緩存區(qū),必須為200個字節(jié)。
DATALENGTH:
UDINT數據類型,發(fā)送數據的長度,本例中發(fā)送為10個字節(jié)。
OUT:
DINT數據類型,函數調用返回值,包含通信狀態(tài)。
在程序receive中調用_xreceive函數接收數據,與PLC編寫方式相似,將接收函數_xreceive拖曳到LAD網絡中,如圖11所示:
圖11: _xreceive函數塊
調用_xreceive函數
函數_xreceive的輸入參數MESSAGEID、COMMANDID和NEXTCOMMAND與_xsend函數輸入參數意義相同,發(fā)送與接收函數的參數MESSAGEID必須相同,本例中_xreceive輸入參數定義的數據包標識符為8,與PLC發(fā)送塊參數REQ_ID定義的標識符必須相同。
_xreceive函數的輸出變量 “OUT”為結構體數據類型,元素參考表4:
表4 _xreceive函數OUT參數結構體數據
結構體元素 | 名稱 | 數據類型 | 單元 |
functionResult | 函數調用的返回值 | DINT | - |
dataLength | 接收數據的長度(字節(jié)數) | UDINT | - |
data | 接收數據區(qū) | ARRAY [0..199] OF BYTE | - |
functionResult:
函數調用的返回值,可以判斷接收狀態(tài),數據類型為 DINT。
dataLength:
接收數據的長度(字節(jié)數),zui大長度為200個字節(jié),數據類型為 UDINT。
Data:
數據接收區(qū),zui大長度為200個字節(jié),在編程中定義的接收區(qū)必須大于數據發(fā)送區(qū),數據類型為數組。
通信參數賦值完成之后,將整個程序進行編譯,如果需要在線監(jiān)控通信程序,必須在編譯程序之前進行配置,如圖12所示,點擊程序單元,本例中為“MPI”,右鍵進入屬性界面,點擊菜單“Compiler”選擇“Permit program status”選項,這樣經過編譯之后,程序可以在線監(jiān)控。
圖12: 配置程序在線監(jiān)控
通信程序編寫和編譯完成后,將程序放置到D435的執(zhí)行系統中調用(程序只有被調用才能執(zhí)行),如圖13所示:
圖13: 調用通信程序
本例中將通信程序放置于“BackgroundTask”運行(循環(huán)運行)。將整個項目編譯后,聯機下傳通信程序。
4.2 PLC側編程
調用發(fā)送程序塊
PLC側調用SFC65用于數據發(fā)送,發(fā)送程序參考圖14程序:
圖14: PLC中調用發(fā)送程序
SFC65的參考解釋如下,
REQ:
發(fā)送請求,為1時發(fā)送。
CONT:
相當于SIMOTION發(fā)送函數_xsend 參數“COMMUNICATIONMODE”,為0時通信完成之后釋放連接資源,為1時通信完成之后占用連接資源。
DEST_ID:
通信方的MPI地址,本例中SIMOTION的MPI地址為2。
REQ_ID:
相當于SIMOTION發(fā)送函數_xsend 參數“MESSAGEID”,定義發(fā)送報文的標識符,在接收塊中除接收到數據外,本例中與函數_xreceive中參數MESSAGEID定義必須相同。
SD :
發(fā)送區(qū),以指針的格式,本例中將DB1中DBB0 以后10個字節(jié)作為發(fā)送區(qū),zui大為76個字節(jié)。
RET_VAL:
發(fā)送塊返回值。
BUSY :
為1時,端口占用,發(fā)送中止。
PLC側調用發(fā)送塊,在SIMOTION中需要調用函數_xreceive接收。
調用接收程序塊
PLC側調用SFC66用于接收數據,接收程序參考圖15程序:
圖15: PLC中調用接收程序
SFC65的參考解釋如下,
EN_DT:
為1使能接收功能。
RET_VAL :
接收塊返回值。
REQ_ID:
接收數據包的標識符,本例中接收SIMOTION _xsend函數MESSAGEID參數定義的報文的標識符6。在SIMOTION中,接收、發(fā)送函數MESSAGEID參數為輸
入參數,發(fā)送和接收的報文標識符必須提前定義,在PLC中發(fā)送塊REQ_ID參數為輸入參數,接收塊REQ_ID參數為輸出參數,識別接收數據包的標識符。
NDA :
接收到新的數據包時產生脈沖信號。
RD:
接收區(qū),本例中接收SIMOTION發(fā)送的10個字節(jié),并將接收的數據存儲于DB2中DBB0以后的10個字節(jié)中。
將PLC中的通信程序編譯下傳到PLC中,通信建立。
5.狀態(tài)監(jiān)控
在SCOUT聯機狀態(tài)中,點擊程序單元如“MPI”,然后點擊“Symbol browser”標簽,可以監(jiān)控“MPI”程序單元中定義的全局變量,如發(fā)送數據區(qū)、接收區(qū)等。如圖16所示:
圖16: 監(jiān)控SIMOTION側通信變量
在STEP7中打開變量監(jiān)控表同樣可以對數據發(fā)送區(qū)、接收區(qū)進行監(jiān)控,如圖17所示:
圖17: 監(jiān)控PLC側通信變量
6.示例程序
示例程序參考文檔附件程序,名稱為Mpitest.rar。(示例程序使用STEP7 V5.4和SCOUT V4.0編寫)