手機(jī)訪問更快捷
更多流量 更易傳播
隨時(shí)掌握行業(yè)動(dòng)態(tài)
網(wǎng)絡(luò)課堂 行業(yè)直播
產(chǎn)品推薦:水表|流量計(jì)|壓力變送器|熱電偶|液位計(jì)|冷熱沖擊試驗(yàn)箱|水質(zhì)分析|光譜儀|試驗(yàn)機(jī)|試驗(yàn)箱
同類產(chǎn)品
OEM嵌入式通訊模塊與西門子PLC S7-1200通訊測(cè)試指南
一、OEM嵌入式通訊模塊介紹
OEM嵌入式通訊模塊是一款適用于工業(yè)以太網(wǎng)和現(xiàn)場(chǎng)總線協(xié)議的嵌入式IC模塊,利用該模塊可快速又輕松地把您的設(shè)備集成到工業(yè)網(wǎng)絡(luò)中。目前該系列模塊有支持PROFINET、EtherNet/IP、EtherCAT、Modbus TCP等實(shí)時(shí)通信協(xié)議。OEM模塊對(duì)用戶開放了2種串行接口,包括USART接口(標(biāo)準(zhǔn)Modbus RTU協(xié)議)和SPI接口,與主控MCU應(yīng)用程序交換實(shí)時(shí)網(wǎng)絡(luò)數(shù)據(jù),從而將您的設(shè)備集成到相應(yīng)的網(wǎng)絡(luò)而無需大量的開發(fā)工作。另外該模塊還具備32個(gè)引腳的IO信號(hào),可以滿足32個(gè)點(diǎn)的數(shù)字量IO設(shè)計(jì),這32個(gè)IO引腳可以任意設(shè)置成DI或DO。
二、 案例說明
本案例以OEM模塊標(biāo)準(zhǔn)評(píng)估板(主控芯片STM32F103VCT6)結(jié)合集成PROFINET從站通訊協(xié)議的OEM通訊模塊,及西門子S7-1200 PLC作為PROFINET主站為例,進(jìn)行關(guān)于PROFINET通訊模塊的通訊測(cè)試。
2.1 準(zhǔn)備工作
① OEM模塊標(biāo)準(zhǔn)評(píng)估板
功能說明:
1. 開發(fā)板上X1端子,直流24V供電。<X1-1:24V、X1-2:0V >。
2. 本開發(fā)板支持2種串行接口,包括USART接口和SPI接口。
3. 本開發(fā)板具備32個(gè)引腳的IO信號(hào),可以滿足32個(gè)點(diǎn)的數(shù)字量IO設(shè)計(jì)。
4. 本開發(fā)板對(duì)外提供一路RS232信號(hào),用于打印信息。
5. 本開發(fā)板主芯片使用STM32F103VCT6,開發(fā)例程基于此型號(hào)芯片編寫。
6. JP2插針是開發(fā)板主芯片的程序燒寫口。
7. 撥動(dòng)開關(guān)S1:撥到ON時(shí),開發(fā)板供電;撥到OFF時(shí),開發(fā)板斷電。撥動(dòng)開關(guān)S2始終處于OFF狀態(tài)。
② 目標(biāo)系統(tǒng)
西門子PLC S7-1200作為PROFINET主站,PROFINET通訊模塊插在標(biāo)準(zhǔn)評(píng)估板上作為從站,通過網(wǎng)線連接兩個(gè)設(shè)備進(jìn)行通訊。評(píng)估板上的RS232端口與電腦連接,用Modbus Slave軟件查看接收到的來自PROFINET網(wǎng)絡(luò)中數(shù)據(jù),或者向開發(fā)板發(fā)送數(shù)據(jù)從而發(fā)送給PLC。
三、 通訊測(cè)試
OEM嵌入式通訊模塊的通訊測(cè)試實(shí)際上包括兩個(gè)部分:PLC主站與OEM模塊之間的通訊,以及OEM模塊與評(píng)估板之間通過USART(Modbus RTU)或者SPI的數(shù)據(jù)交互,本示例以USART通訊為例說明。
3.1 基本配置
1) OEM 模塊 J1~J3 全部斷開,開發(fā)板撥碼 1~8 全部 OFF;
2) 使用交換機(jī)將西門子 PLC、開發(fā)板、電腦連到一起,PLC 程序下載到 PLC;
3) 使用RS232 連接線,將電腦與開發(fā)板的 DB1 端口連接;
4) 電腦打開 Modbus Slave 軟件,建立連接。
3.2 OEM模塊與PLC通訊
① 導(dǎo)入對(duì)應(yīng)PROFINET通訊模塊的gsd文件到博圖軟件中,便于之后網(wǎng)絡(luò)組態(tài)與設(shè)備配置使用
② 選擇–>添加新設(shè)備–>找到并添加所使用的PLC型號(hào),這里以S7-1200為例
③ 找到所導(dǎo)入的GSD文件對(duì)應(yīng)的設(shè)備,并添加到設(shè)備組態(tài)中,并連接PLC與通訊模塊
④ 配置PLC的IP地址與設(shè)備名稱(這里使用“自動(dòng)生成PROFINET設(shè)備名稱”)
⑤ 配置OEM模塊的IP地址與設(shè)備名稱,這里使用默認(rèn)的GSD文件中HI-TOP名稱,也可以對(duì)設(shè)備額外設(shè)置其他名稱,但需注意與網(wǎng)絡(luò)組態(tài)中的一致,否者無法找到設(shè)備。
⑥ 在設(shè)備視圖中添加輸入輸出模塊,這里分別添加32 bytes input和32 bytes outputs為例
⑦ 選擇“編譯”,檢查是否有報(bào)錯(cuò):
⑧ 選擇“下載”,在出現(xiàn)的窗口中分配對(duì)應(yīng)的子網(wǎng),點(diǎn)擊“開始搜索”找到可訪問的設(shè)備,并“下載”
⑨ “裝載”配置
⑩ 選擇“轉(zhuǎn)至在線”可監(jiān)控網(wǎng)絡(luò)狀態(tài),所添加設(shè)備后顯示綠色對(duì)勾代表通訊狀態(tài)正常。
3.3 OEM模塊與評(píng)估板通訊
① 狀態(tài)機(jī)
無論使用USART還是SPI,OEM模塊都作為主站運(yùn)行,遵循下面的狀態(tài)機(jī):
② 數(shù)據(jù)區(qū)定義
根據(jù)功能的不同,OEM模塊用到的數(shù)據(jù)區(qū)劃分為5個(gè)區(qū)域,分別是:通訊信息區(qū)、下發(fā)數(shù)據(jù)區(qū)、下發(fā)參數(shù)區(qū)、設(shè)備信息區(qū)、上傳數(shù)據(jù)區(qū)。OEM模塊在“S1 握手”階段讀取設(shè)備信息區(qū)的數(shù)據(jù),由于PROFINET模塊目前未使用此區(qū)域的內(nèi)容,所以用戶僅需要正確回復(fù)報(bào)文即可,OEM模塊忽略數(shù)據(jù)值的內(nèi)容。
下發(fā)數(shù)據(jù)區(qū)(4xxxx區(qū) – 10H功能碼)(1000字節(jié))
上傳數(shù)據(jù)區(qū)(3xxxx區(qū) – 04H功能碼)(1000字節(jié))
③ USART通訊
· USART接口波特率支持:9.6Kbps、12Kbps、38.4Kbps、57.6Kbps、115.2Kbps、230.4Kbps、460.8Kbps。
· OEM模塊上電后,在S1握手階段,通過握手報(bào)文,OEM模塊可以自動(dòng)適應(yīng)用戶的波特率。用戶使用的波特率需要在以上7種波特率之中。
· USART接口數(shù)據(jù)幀格式:8 個(gè)數(shù)據(jù)位、偶校驗(yàn)、1 個(gè)停止位。
· USART使用標(biāo)準(zhǔn)MODBUS協(xié)議。
· OEM模塊做為USART通訊主站,用戶做為USART通訊從站。
· 用戶串口的處理機(jī)制:用戶做為標(biāo)準(zhǔn)的MODBUS從站,只需要在收到OEM模塊的報(bào)文命令后,按照相應(yīng)命令回復(fù)報(bào)文即可。
· 通訊報(bào)文約定
A.下發(fā)數(shù)據(jù)
板卡發(fā)送:
用戶應(yīng)答:
B.上傳數(shù)據(jù)
板卡發(fā)送:
用戶應(yīng)答:
④ Modbus程序示例:
//*******************Modbus數(shù)據(jù)接收********************//
int user_modbus_deal_rev(void)
{
unsigned int i , tem_start_adr , tem_num ;
unsigned int tem_crc ;
unsigned char tem_hi , tem_lo ;
tem_crc = modbus_crc( URXDBuf , UART_rev_num-2 );
tem_lo = tem_crc & 0xff ;
tem_hi = (tem_crc>>8) & 0xff ;
//**CRC校驗(yàn)
if( ( URXDBuf[UART_rev_num-2]==tem_hi ) && ( URXDBuf[UART_rev_num-1]==tem_lo ) )
{
if( URXDBuf[1] == 0x10 ) // 功能碼10H
{
tem_start_adr = ( URXDBuf[2] << 8 ) + URXDBuf[3] ;
tem_start_adr = tem_start_adr << 1 ;
tem_num = URXDBuf[6] ;
for( i=0 ; i<tem_num ; i++ )
{
modbus_4_data[ tem_start_adr+i ] = URXDBuf[7+i] ;
}
}
user_modbus_deal_txd();
}
return 1 ;
}
//*******************Modbus數(shù)據(jù)發(fā)送********************//
int user_modbus_deal_txd(void)
{
unsigned int tem , i ;
unsigned int function_code , tem_start_adr , tem_num1 , tem_num2 ;
function_code = URXDBuf[1] ;
// 04H
if( function_code == 0x04 )
{
tem_start_adr = ( URXDBuf[2] << 8 ) + URXDBuf[3] ;
tem_start_adr = tem_start_adr << 1 ; ?
tem_num1 = ( URXDBuf[4] << 8 ) + URXDBuf[5] ;
tem_num2 = tem_num1 << 1 ;
for( i=0 ; i<tem_num2 ; i++ )
{
modbus_3_data[ tem_start_adr+i ] = modbus_3_data[ tem_start_adr+i ] + 1 ;
UTXDBuf[3+i] = modbus_3_data[ tem_start_adr+i ] ;
}
UTXDBuf[0] = modbus_adr ;
UTXDBuf[1] = 0x04 ;
UTXDBuf[2] = tem_num2 ;
tem = modbus_crc( UTXDBuf , tem_num2+3 );
UTXDBuf[tem_num2+3] = tem >> 8 ;
UTXDBuf[tem_num2+4] = tem ;
UART_trx_num = tem_num2+5 ;
}
// 10H
else if( function_code == 0x10 )
{
for( i=0 ; i<6 ; i++ )
{
UTXDBuf[i] = URXDBuf[i] ;
}
tem = modbus_crc( UTXDBuf , 6 );
UTXDBuf[6] = tem >> 8 ;
UTXDBuf[7] = tem ;
UART_trx_num = 8 ;
}
UART_trx_ctr = 0 ;
UART_rev_ctr = 0 ;
Modbus_TR_State = TR_TURE ;
for( i=0 ; i<10 ; i++ )
USART_SendData( RTU_USART , UTXDBuf[0] );
monitor_print(UTXDBuf[0]);
return 1 ;
}
④ 數(shù)據(jù)交互模型
3.4 數(shù)據(jù)交互測(cè)試
在“PLC變量”中添加需要在線監(jiān)視或修改的變量,在“監(jiān)控與強(qiáng)制表”中添加監(jiān)控表,并添加對(duì)應(yīng)的變量,可進(jìn)行變量的監(jiān)測(cè)。另外,這里可以通過Modbus Slave軟件監(jiān)測(cè)從站開發(fā)板的收發(fā)數(shù)據(jù)。在博途和Modbus Slave可以分別查看相應(yīng)的收發(fā)數(shù)據(jù),PROFINET模塊通訊正常,并完成PROFINET數(shù)據(jù)交互。(注意OEM嵌入式通訊模塊數(shù)據(jù)區(qū)Modbus寄存器地址從0x100開始)
相關(guān)產(chǎn)品
免責(zé)聲明
客服熱線: 15267989561
加盟熱線: 15267989561
媒體合作: 0571-87759945
投訴熱線: 0571-87759942
下載儀表站APP
Ybzhan手機(jī)版
Ybzhan公眾號(hào)
Ybzhan小程序