技術頻道

娓娓工業(yè)
您現在的位置: 中國傳動網 > 技術頻道 > 應用方案 > 藍海華騰變頻器與貝加萊人機界面的CANOPEN通訊

藍海華騰變頻器與貝加萊人機界面的CANOPEN通訊

時間:2019-08-12 15:53:52來源:藍海華騰

導語:?工業(yè)自動化設備資料下載,中國傳動網站提供各種變頻器、伺服驅動器,自動化設備,智能制造資料,技術文章,產品使用手冊免費下載,應用案例等資料,是廣大工業(yè)自動化工程師所喜愛工控資料網站。

一、介紹

從OSI網絡模型的角度來看同,現場總線網絡一般只實現了第1層(物理層)、第2層(數據鏈路層)、第7層(應用層)。因為現場總線通常只包括一個網段,因此不需要第3層(傳輸層)和第4層(網絡層),也不需要第5層(會話層)第6層(描述層)的作用。

CAN(ControllerAreaNetwork)現場總線僅僅定義了第1層、第2層(見ISO11898標準);實際設計中,這兩層完全由硬件實現,設計人員無需再為此開發(fā)相關軟件(Software)或固件(Firmware)。同時,CAN只定義物理層和數據鏈路層,沒有規(guī)定應用層,本身并不完整,需要一個高層協議來定義CAN報文中的11/29位標識符、8字節(jié)數據的使用。而且,基于CAN總線的工業(yè)自動化應用中,越來越需要一個開放的、標準化的高層協議:這個協議支持各種CAN廠商設備的互用性、互換性,能夠實現在CAN網絡中提供標準的、統一的系統通訊模式,提供設備功能描述方式,執(zhí)行網絡管理功能。

應用層(Applicationlayer):為網絡中每一個有效設備都能夠提供一組有用的服務與協議。

通訊描述(Communicationprofile):提供配置設備、通訊數據的含義,定義數據通訊方式。

設備描述(Deviceproflile):為設備(類)增加符合規(guī)范的行為。

下面將介紹基于CAN的高層協議:CAL協議和基于CAL協議擴展的CANopen協議。CANopen協議是CAN-in-Automation(CiA)定義的標準之一,并且在發(fā)布后不久就獲得了廣泛的承認。尤其是在歐洲,CANopen協議被認為是在基于CAN的工業(yè)系統中占領導地位的標準。大多數重要的設備類型,例如數字和模擬的輸入輸出模塊、驅動設備、操作設備、控制器、可編程控制器或編碼器,都在稱為“設備描述”的協議中進行描述;“設備描述”定義了不同類型的標準設備及其相應的功能。依靠CANopen協議的支持,可以對不同廠商的設備通過總線進行配置。在OSI模型中,CAN標準、CANopen協議之間的關系如下圖所示:

藍海華騰變頻器.jpg 

圖1CAN、CANopen標準在OSI網絡模型中的位置框圖

二、CAL協議

CAL(CANApplicationLayer)協議是目前基于CAN的高層通訊協議中的一種,最早由Philips醫(yī)療設備部門制定?,F在CAL由獨立的CAN用戶和制造商集團CiA(CANinAutomation)協會負責管理、發(fā)展和推廣。

CAL提供了4種應用層服務功能:

CMS(CAN-basedMessageSpecification)

CMS提供了一個開放的、面向對象的環(huán)境,用于實現用戶的應用。CMS提供基于變量、事件、域類型的對象,以設計和規(guī)定一個設備(節(jié)點)的功能如何被訪問(例如,如何上載下載超過8字節(jié)的一組數據(域),并且有終止傳輸的功能)。CMS從MMS(ManufacturingMessageSpecification)繼承而來。MMS是OSI為工業(yè)設備的遠程控制和監(jiān)控而制定的應用層規(guī)范。

NMT(NetworkManagemenT)

提供網絡管理(如初始化、啟動和停止節(jié)點,偵測失效節(jié)點)服務。這種服務是采用主從通訊模式(所以只有一個NMT主節(jié)點)來實現的。

DBT(DistriBuTor)

提供動態(tài)分配CANID(正式名稱為COB-ID,CommunicationObjectIdentifier)服務。這種服務是采用主從通訊模式(所以只有一個DBT主節(jié)點)來實現的。

LMT(LayerManagemenT)

LMT提供修改層參數的服務:一個節(jié)點(LMTMaster)可以設置另外一個節(jié)點(LMTSlave)的某層參數(如改變一個節(jié)點的NMT地址,或改變CAN接口的位定時和波特率)。

CMS為它的消息定義了8個優(yōu)先級,每個優(yōu)先級擁有220個COB-ID,范圍從1到1760。剩余的標志(0,1761-2031)保留給NMT,DBT和LMT,見下表。

 

映射到CAL服務和對象的COB-ID(11位CAN標識符)服務或對象
0NMT 啟動/停止服務
1 - 220CMS對象 優(yōu)先級0
221 - 440CMS對象 優(yōu)先級1
441 - 660CMS對象 優(yōu)先級2
661 - 880CMS對象 優(yōu)先級3
881 - 1100CMS對象 優(yōu)先級4
1101 - 1320CMS對象 優(yōu)先級5
1321 - 1540CMS對象 優(yōu)先級6
1541 - 1760CMS對象 優(yōu)先級7
1761 - 2015NMT 節(jié)點保護
2016 - 2031NMT,LMT,DBT服務

三、變頻器與貝加萊人機界面連接如下

 藍海華騰變頻器應用.jpg

圖2

四、CPS_ModbusRTUGateway(I-7232D)配置

在計算機上安裝I-7232DUTILITY配置軟件,并運行如下圖所示

 藍海華騰變頻器的應用.jpg

圖3

運行配置軟件后顯示如下圖,I-7232D上電時將INT腳與GND短接,使I-7232D工作在配置模式

藍海華騰變頻器的原理.jpg 

圖4

選擇正確的通訊COM口,點擊“CONNETCT”連接I-7232D,連接成功后,點擊CAN-bus將出現如下窗口圖所示:

藍海華騰變頻器的工作原理.jpg 

圖5

I-7232D的CANopen端:

波特率:250KBPS

節(jié)點號為:1

然后點擊RS-485按鈕如下圖

 藍海華騰變頻器的型號.jpg

圖6

I-7232D的RS-485端:

波特率:19200BPS

數據長度:8

奇偶校驗:無

停止位:1

超時:50ms

在配置完通訊端口參數后擊點“NEXT”彈出如下窗口,如圖所示

藍海華騰變頻器的維修.jpg 

圖7

然后點擊“ADD”按鈕添加MODBUS地址映射,”ModbusDeviceNodeID”,這里輸入被映射的變頻器RS-485節(jié)點地址,”RelayAddress”,本欄里選擇MODBUSRTU功能碼,這里我們只用兩個功能碼:AnalogOutput(寫入)和AnalogInput(讀取),“Register/RelayAddress”此處填入要讀/寫的變頻器寄存器地址,“DataLength”這里設置讀/寫變頻器寄存器的數據長度。在這里我們的映射地址如下表所示。在完成映射后點擊“ModbusInformation”和“PDOInformation”可以察看映射參數列表如下圖所示

 

nstance NO.Modbus Device NodeIDRelay AddressRegister/Relay AddressData Length
11Analog Output327691
21Analog Output327701
31Analog Input330361
41Analog Input330791
51Analog Input330811
62Analog Output327691
72Analog Output327701
82Analog Input330361
92Analog Input330791
102Analog Input330811

藍海華騰變頻器的價格.jpg 

圖8

 藍海華騰變頻器作用.jpg

圖9

完成以上操作后點擊“NEXT”出現如下窗口

藍海華騰變頻器說明書.jpg 

圖10

然后點擊“Finish”保存配置的參數到I-7232D同時在應用程序根目錄下生成EDS文件,保存成功后返回主窗口。完成配置后掉電重啟I-7232D。

PP45CANopen程序:

CAN通訊口初始化程序

(*initprogram*)

CANopen_0.enable=1

CANopen_0.baud_rate=25;250k

CANopen_0.cob_anz=20

CANopen_0.error_adr=adr(ERR)

CANopen_0.device="SS1.IF3";設備名稱

CANopen_0.info=0

CANopen_0FUBCANopen();初始化CAN

NMT_Data[0]=1;CANOPEN命令01-

NMT_Data[1]=0

;requstcobcofg

UserType.RTR_COB[1]=$281;COB-ID281讀取

UserType.RTR_COB[2]=$381;......

UserType.RTR_COB[3]=$481

;cmmdcobcofg

UserType.Send_COB[1]=$301;COB-ID301寫入

UserType.Send_COB[2]=$301;......

UserType.Send_COB[3]=$401;......

;nodeidcofg

UserType.Node[1]=$01;RS-485節(jié)點地址

UserType.Node[2]=$02;..

UserType.Node[3]=$03

PDO程序;

(*cyclicprogram*)

loopi=1to3do

m[i]=workstep[i]

selectworkstep[i]

stateSend_NMT

CANwrite_NMT[i].enable=1

CANwrite_NMT[i].us_ident=CANopen_0.us_ident

CANwrite_NMT[i].can_id=NMT_COB;0

CANwrite_NMT[i].data_adr=adr(NMT_Data[0])

CANwrite_NMT[i].data_lng=sizeof(NMT_Data)

CANwrite_NMT[i]FUBCANwrite()----?使I-78232D進入運行狀態(tài)

whenCANwrite_NMT[i].status<>MSG_BUSY;1

nextSend_Data1

stateSend_Data1

(*PDO1RX*)

CANwrite_data1[i].enable=1

CANwrite_data1[i].us_ident=CANopen_0.us_ident

CANwrite_data1[i].can_id=UserType.Send_COB[i]

CANwrite_data1[i].data_adr=adr(UserType.Txdata[i].Data[0])?將要寫入的數據

CANwrite_data1[i].data_lng=sizeof(UserType.Txdata[i])

CANwrite_data1[i]FUBCANwrite()

whenCANwrite_data1[i].status<>MSG_BUSY;1

nextSend_Data2

stateSend_Data2(*PDO1TX*)

(*讀取模式為異步RTR*)

CANrtr_01[i].request=notCANrtr_01[i].request

CANrtr_01[i].enable=1

(*enablethefunctionblockCANrtr*)

CANrtr_01[i].us_ident=CANopen_0.us_ident

(*setus_idwiththevaluefromCANopen*)

CANrtr_01[i].data_adr=ADR(UserType.Rxdata[i].Data[0]);存儲讀入的數據

(*setthedestinationadress*)

CANrtr_01[i].can_id=UserType.RTR_COB[i]

(*setcan_id*)

CANrtr_01[i]FUBCANrtr();發(fā)送請求讀取數據

(*callCANrtr*)

whenCANrtr_01[i].status<>MSG_BUSY;1

nextSend_Data1

endselect

endloop

數據轉換程序:

(*cyclicprogram*)

loopi=1to2do

ifi=1then

memcpy(adr(mActFreq[i]),adr(UserType.Rxdata[i].Data[2]),2)

MotorApp[i].rActFreq=real(mActFreq[i])/100.0;actfreqence

memcpy(adr(MotorApp[i].rStatus),adr(UserType.Rxdata[i].Data[0]),2);statusword

UserType.Txdata[i].Data[0]=byte(MotorApp[i].wCtrlWord);setcontrlword

UserType.Txdata[i].Data[1]=byte(lsr(MotorApp[i].wCtrlWord,8))

UserType.Txdata[i].Data[2]=byte(uint(MotorApp[i].wSetfreq*100));setFreqence

UserType.Txdata[i].Data[3]=byte(lsr(uint(MotorApp[i].wSetfreq*100),8))

UserType.Txdata[i].Data[4]=UserType.Txdata[i+1].Data[4]

UserType.Txdata[i].Data[5]=UserType.Txdata[i+1].Data[5]

UserType.Txdata[i].Data[6]=UserType.Txdata[i+1].Data[6]

UserType.Txdata[i].Data[7]=UserType.Txdata[i+1].Data[7]

else

memcpy(adr(mActFreq[i]),adr(UserType.Rxdata[i].Data[0]),2)

MotorApp[i].rActFreq=real(mActFreq[i])/100.0;actfreqence

memcpy(adr(MotorApp[i].rStatus),adr(UserType.Rxdata[i].Data[2]),2);statusword

UserType.Txdata[i].Data[4]=byte(MotorApp[i].wCtrlWord);setcontrlword

UserType.Txdata[i].Data[5]=byte(lsr(MotorApp[i].wCtrlWord,8))

UserType.Txdata[i].Data[6]=byte(uint(MotorApp[i].wSetfreq*100));setFreqence

UserType.Txdata[i].Data[7]=byte(lsr(uint(MotorApp[i].wSetfreq*100),8))

UserType.Txdata[i].Data[0]=UserType.Txdata[i-1].Data[0]

UserType.Txdata[i].Data[1]=UserType.Txdata[i-1].Data[1]

UserType.Txdata[i].Data[2]=UserType.Txdata[i-1].Data[2]

UserType.Txdata[i].Data[3]=UserType.Txdata[i-1].Data[3]

endif

status_1=UserType.Rxdata[1].Data[1]

status_2=UserType.Rxdata[1].Data[7]

endloop

注意:在MODBUS地址映射時沒有按COB-ID對齊(節(jié)省空間地址)如在寫入時COB-ID為0X301一次可寫入4個字,前兩個字為#1號變頻器的MODBUS地址,后兩個字為#2號變頻器MODBUS地址,讀取地址原理相同,具體查看I-7232D的PDO的參數列表

聲明:本文為轉載類文章,如涉及版權問題,請及時聯系我們刪除(QQ: 2737591964),不便之處,敬請諒解!

標簽:

點贊

分享到:

上一篇:扶梯解決方案

下一篇:視覺+機器人,如何實現連接器...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(m.u63ivq3.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業(yè)內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業(yè)自動化與智能制造的全媒體“互聯網+”創(chuàng)新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號