工控網(wǎng)首頁
>

應用設(shè)計

>

Profinet OEM嵌入式通訊模塊之西門子PLCS7-1200通訊應用指南

Profinet OEM嵌入式通訊模塊之西門子PLCS7-1200通訊應用指南

2025/5/23 14:45:13

OEM嵌入式通訊模塊與西門子PLC S7-1200通訊測試指南

一、OEM嵌入式通訊模塊介紹

OEM嵌入式通訊模塊是一款適用于工業(yè)以太網(wǎng)和現(xiàn)場總線協(xié)議的嵌入式IC模塊,利用該模塊可快速又輕松地把您的設(shè)備集成到工業(yè)網(wǎng)絡中。目前該系列模塊有支持PROFINET、EtherNet/IP、EtherCAT、Modbus TCP等實時通信協(xié)議。OEM模塊對用戶開放了2種串行接口,包括USART接口(標準Modbus RTU協(xié)議)和SPI接口,與主控MCU應用程序交換實時網(wǎng)絡數(shù)據(jù),從而將您的設(shè)備集成到相應的網(wǎng)絡而無需大量的開發(fā)工作。另外該模塊還具備32個引腳的IO信號,可以滿足32個點的數(shù)字量IO設(shè)計,這32個IO引腳可以任意設(shè)置成DI或DO。

 

 1.png

 

二、 案例說明

本案例以O(shè)EM模塊標準評估板(主控芯片STM32F103VCT6)結(jié)合集成PROFINET從站通訊協(xié)議的OEM通訊模塊,及西門子S7-1200 PLC作為PROFINET主站為例,進行關(guān)于PROFINET通訊模塊的通訊測試。

2.1 準備工作

① OEM模塊標準評估板

 2.png

功能說明:

1. 開發(fā)板上X1端子,直流24V供電。。

2. 本開發(fā)板支持2種串行接口,包括USART接口和SPI接口。

3. 本開發(fā)板具備32個引腳的IO信號,可以滿足32個點的數(shù)字量IO設(shè)計。

4. 本開發(fā)板對外提供一路RS232信號,用于打印信息。

5. 本開發(fā)板主芯片使用STM32F103VCT6,開發(fā)例程基于此型號芯片編寫。

6. JP2插針是開發(fā)板主芯片的程序燒寫口。

7. 撥動開關(guān)S1:撥到ON時,開發(fā)板供電;撥到OFF時,開發(fā)板斷電。撥動開關(guān)S2始終處于OFF狀態(tài)。

② 目標系統(tǒng)

 3.png

西門子PLC S7-1200作為PROFINET主站,PROFINET通訊模塊插在標準評估板上作為從站,通過網(wǎng)線連接兩個設(shè)備進行通訊。評估板上的RS232端口與電腦連接,用Modbus Slave軟件查看接收到的來自PROFINET網(wǎng)絡中數(shù)據(jù),或者向開發(fā)板發(fā)送數(shù)據(jù)從而發(fā)送給PLC。

三、 通訊測試

OEM嵌入式通訊模塊的通訊測試實際上包括兩個部分:PLC主站與OEM模塊之間的通訊,以及OEM模塊與評估板之間通過USART(Modbus RTU)或者SPI的數(shù)據(jù)交互,本示例以USART通訊為例說明。

3.1 基本配置

1) OEM 模塊 J1~J3 全部斷開,開發(fā)板撥碼 1~8 全部 OFF;

2) 使用交換機將西門子 PLC、開發(fā)板、電腦連到一起,PLC 程序下載到 PLC;

3) 使用RS232 連接線,將電腦與開發(fā)板的 DB1 端口連接;

4) 電腦打開 Modbus Slave 軟件,建立連接。

 

3.2 OEM模塊與PLC通訊

① 導入對應PROFINET通訊模塊的gsd文件到博圖軟件中,便于之后網(wǎng)絡組態(tài)與設(shè)備配置使用

 4.png

② 選擇–>添加新設(shè)備–>找到并添加所使用的PLC型號,這里以S7-1200為例

 5.png

③ 找到所導入的GSD文件對應的設(shè)備,并添加到設(shè)備組態(tài)中,并連接PLC與通訊模塊

 6.png

④ 配置PLC的IP地址與設(shè)備名稱(這里使用“自動生成PROFINET設(shè)備名稱”)

 7.png

⑤ 配置OEM模塊的IP地址與設(shè)備名稱,這里使用默認的GSD文件中HI-TOP名稱,也可以對設(shè)備額外設(shè)置其他名稱,但需注意與網(wǎng)絡組態(tài)中的一致,否者無法找到設(shè)備。

 8.png

⑥ 在設(shè)備視圖中添加輸入輸出模塊,這里分別添加32 bytes input和32 bytes outputs為例

 9.png

⑦ 選擇“編譯”,檢查是否有報錯:

 10.png

⑧ 選擇“下載”,在出現(xiàn)的窗口中分配對應的子網(wǎng),點擊“開始搜索”找到可訪問的設(shè)備,并“下載”

 11.png

⑨ “裝載”配置

 12.png

⑩ 選擇“轉(zhuǎn)至在線”可監(jiān)控網(wǎng)絡狀態(tài),所添加設(shè)備后顯示綠色對勾代表通訊狀態(tài)正常。

 13.png

3.3 OEM模塊與評估板通訊

① 狀態(tài)機

無論使用USART還是SPI,OEM模塊都作為主站運行,遵循下面的狀態(tài)機:

 14.png

② 數(shù)據(jù)區(qū)定義

根據(jù)功能的不同,OEM模塊用到的數(shù)據(jù)區(qū)劃分為5個區(qū)域,分別是:通訊信息區(qū)、下發(fā)數(shù)據(jù)區(qū)、下發(fā)參數(shù)區(qū)、設(shè)備信息區(qū)、上傳數(shù)據(jù)區(qū)。OEM模塊在“S1 握手”階段讀取設(shè)備信息區(qū)的數(shù)據(jù),由于PROFINET模塊目前未使用此區(qū)域的內(nèi)容,所以用戶僅需要正確回復報文即可,OEM模塊忽略數(shù)據(jù)值的內(nèi)容。

下發(fā)數(shù)據(jù)區(qū)(4xxxx區(qū) – 10H功能碼)(最大1000字節(jié))

 15.png

上傳數(shù)據(jù)區(qū)(3xxxx區(qū) – 04H功能碼)(最大1000字節(jié))

 16.png

③ USART通訊

· USART接口波特率支持:9.6Kbps、12Kbps、38.4Kbps、57.6Kbps、115.2Kbps、230.4Kbps、460.8Kbps。

· OEM模塊上電后,在S1握手階段,通過握手報文,OEM模塊可以自動適應用戶的波特率。用戶使用的波特率需要在以上7種波特率之中。

· USART接口數(shù)據(jù)幀格式:8 個數(shù)據(jù)位、偶校驗、1 個停止位。

· USART使用標準MODBUS協(xié)議。

· OEM模塊做為USART通訊主站,用戶做為USART通訊從站。

· 用戶串口的處理機制:用戶做為標準的MODBUS從站,只需要在收到OEM模塊的報文命令后,按照相應命令回復報文即可。

· 通訊報文約定

A.下發(fā)數(shù)據(jù)

板卡發(fā)送:

 圖片17.png

用戶應答:

 圖片18.png

B.上傳數(shù)據(jù)

板卡發(fā)送:

 圖片19.png

用戶應答:

 圖片20.png

④ 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校驗

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++="" )<="" p="">

{

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++="" )<="" p="">

{

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ù)交互模型

 

 圖片21.png

 

3.4 數(shù)據(jù)交互測試

在“PLC變量”中添加需要在線監(jiān)視或修改的變量,在“監(jiān)控與強制表”中添加監(jiān)控表,并添加對應的變量,可進行變量的監(jiān)測。另外,這里可以通過Modbus Slave軟件監(jiān)測從站開發(fā)板的收發(fā)數(shù)據(jù)。在博途和Modbus Slave可以分別查看相應的收發(fā)數(shù)據(jù),PROFINET模塊通訊正常,并完成PROFINET數(shù)據(jù)交互。(注意OEM嵌入式通訊模塊數(shù)據(jù)區(qū)Modbus寄存器地址從0x100開始)

 圖片22.png

圖片23.png

 

審核編輯(
王靜
)
投訴建議

提交

查看更多評論
其他資訊

查看更多

HT3S-ECS-MTP網(wǎng)關(guān)助力庫卡機器人KR10-R1100無縫通信

網(wǎng)關(guān)賦能汽車零部件車門產(chǎn)線

PROFINET轉(zhuǎn)SSI協(xié)議模塊使用說明

HT3S-CCS-MDN讀七星華創(chuàng)流量計

HT3S-CIS-MDN讀取七星華創(chuàng)