Profinet OEM嵌入式通訊模塊之西門子PLCS7-1200通訊應用指南
OEM嵌入式通訊模塊與西門子PLC S7-1200通訊測試指南
一、OEM嵌入式通訊模塊介紹
OEM嵌入式通訊模塊是一款適用于工業以太網和現場總線協議的嵌入式IC模塊,利用該模塊可快速又輕松地把您的設備集成到工業網絡中。目前該系列模塊有支持PROFINET、EtherNet/IP、EtherCAT、Modbus TCP等實時通信協議。OEM模塊對用戶開放了2種串行接口,包括USART接口(標準Modbus RTU協議)和SPI接口,與主控MCU應用程序交換實時網絡數據,從而將您的設備集成到相應的網絡而無需大量的開發工作。另外該模塊還具備32個引腳的IO信號,可以滿足32個點的數字量IO設計,這32個IO引腳可以任意設置成DI或DO。
二、 案例說明
本案例以OEM模塊標準評估板(主控芯片STM32F103VCT6)結合集成PROFINET從站通訊協議的OEM通訊模塊,及西門子S7-1200 PLC作為PROFINET主站為例,進行關于PROFINET通訊模塊的通訊測試。
2.1 準備工作
① OEM模塊標準評估板
功能說明:
1. 開發板上X1端子,直流24V供電。
2. 本開發板支持2種串行接口,包括USART接口和SPI接口。
3. 本開發板具備32個引腳的IO信號,可以滿足32個點的數字量IO設計。
4. 本開發板對外提供一路RS232信號,用于打印信息。
5. 本開發板主芯片使用STM32F103VCT6,開發例程基于此型號芯片編寫。
6. JP2插針是開發板主芯片的程序燒寫口。
7. 撥動開關S1:撥到ON時,開發板供電;撥到OFF時,開發板斷電。撥動開關S2始終處于OFF狀態。
② 目標系統
西門子PLC S7-1200作為PROFINET主站,PROFINET通訊模塊插在標準評估板上作為從站,通過網線連接兩個設備進行通訊。評估板上的RS232端口與電腦連接,用Modbus Slave軟件查看接收到的來自PROFINET網絡中數據,或者向開發板發送數據從而發送給PLC。
三、 通訊測試
OEM嵌入式通訊模塊的通訊測試實際上包括兩個部分:PLC主站與OEM模塊之間的通訊,以及OEM模塊與評估板之間通過USART(Modbus RTU)或者SPI的數據交互,本示例以USART通訊為例說明。
3.1 基本配置
1) OEM 模塊 J1~J3 全部斷開,開發板撥碼 1~8 全部 OFF;
2) 使用交換機將西門子 PLC、開發板、電腦連到一起,PLC 程序下載到 PLC;
3) 使用RS232 連接線,將電腦與開發板的 DB1 端口連接;
4) 電腦打開 Modbus Slave 軟件,建立連接。
3.2 OEM模塊與PLC通訊
① 導入對應PROFINET通訊模塊的gsd文件到博圖軟件中,便于之后網絡組態與設備配置使用
② 選擇–>添加新設備–>找到并添加所使用的PLC型號,這里以S7-1200為例
③ 找到所導入的GSD文件對應的設備,并添加到設備組態中,并連接PLC與通訊模塊
④ 配置PLC的IP地址與設備名稱(這里使用“自動生成PROFINET設備名稱”)
⑤ 配置OEM模塊的IP地址與設備名稱,這里使用默認的GSD文件中HI-TOP名稱,也可以對設備額外設置其他名稱,但需注意與網絡組態中的一致,否者無法找到設備。
⑥ 在設備視圖中添加輸入輸出模塊,這里分別添加32 bytes input和32 bytes outputs為例
⑦ 選擇“編譯”,檢查是否有報錯:
⑧ 選擇“下載”,在出現的窗口中分配對應的子網,點擊“開始搜索”找到可訪問的設備,并“下載”
⑨ “裝載”配置
⑩ 選擇“轉至在線”可監控網絡狀態,所添加設備后顯示綠色對勾代表通訊狀態正常。
3.3 OEM模塊與評估板通訊
① 狀態機
無論使用USART還是SPI,OEM模塊都作為主站運行,遵循下面的狀態機:
② 數據區定義
根據功能的不同,OEM模塊用到的數據區劃分為5個區域,分別是:通訊信息區、下發數據區、下發參數區、設備信息區、上傳數據區。OEM模塊在“S1 握手”階段讀取設備信息區的數據,由于PROFINET模塊目前未使用此區域的內容,所以用戶僅需要正確回復報文即可,OEM模塊忽略數據值的內容。
下發數據區(4xxxx區 – 10H功能碼)(最大1000字節)
上傳數據區(3xxxx區 – 04H功能碼)(最大1000字節)
③ USART通訊
· USART接口波特率支持:9.6Kbps、12Kbps、38.4Kbps、57.6Kbps、115.2Kbps、230.4Kbps、460.8Kbps。
· OEM模塊上電后,在S1握手階段,通過握手報文,OEM模塊可以自動適應用戶的波特率。用戶使用的波特率需要在以上7種波特率之中。
· USART接口數據幀格式:8 個數據位、偶校驗、1 個停止位。
· USART使用標準MODBUS協議。
· OEM模塊做為USART通訊主站,用戶做為USART通訊從站。
· 用戶串口的處理機制:用戶做為標準的MODBUS從站,只需要在收到OEM模塊的報文命令后,按照相應命令回復報文即可。
· 通訊報文約定
A.下發數據
板卡發送:
用戶應答:
B.上傳數據
板卡發送:
用戶應答:
④ Modbus程序示例:
//*******************Modbus數據接收********************//
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數據發送********************//
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 ;
}
④ 數據交互模型
3.4 數據交互測試
在“PLC變量”中添加需要在線監視或修改的變量,在“監控與強制表”中添加監控表,并添加對應的變量,可進行變量的監測。另外,這里可以通過Modbus Slave軟件監測從站開發板的收發數據。在博途和Modbus Slave可以分別查看相應的收發數據,PROFINET模塊通訊正常,并完成PROFINET數據交互。(注意OEM嵌入式通訊模塊數據區Modbus寄存器地址從0x100開始)

提交
HT3S-ECS-MTP網關助力庫卡機器人KR10-R1100無縫通信
網關賦能汽車零部件車門產線
PROFINET轉SSI協議模塊使用說明
HT3S-CCS-MDN讀七星華創流量計
HT3S-CIS-MDN讀取七星華創