中科易联Profinet OEM嵌入式通讯模块之西门子PLC S7-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模块标准评估板功能说明开发板上X1端子直流24V供电。X1-124V、X1-20V 。本开发板支持2种串行接口包括USART接口和SPI接口。本开发板具备32个引脚的IO信号可以满足32个点的数字量IO设计。本开发板对外提供一路RS232信号用于打印信息。本开发板主芯片使用STM32F103VCT6开发例程基于此型号芯片编写。JP2插针是开发板主芯片的程序烧写口。拨动开关S1拨到ON时开发板供电拨到OFF时开发板断电。拨动开关S2始终处于OFF状态。② 目标系统西门子PLC S7-1200作为PROFINET主站PROFINET通讯模块插在标准评估板上作为从站通过网线连接两个设备进行通讯。评估板上的RS232端口与电脑连接用Modbus Slave软件查看接收到的来自PROFINET网络中数据或者向开发板发送数据从而发送给PLC。三、通讯测试OEM嵌入式通讯模块的通讯测试实际上包括两个部分PLC主站与OEM模块之间的通讯以及OEM模块与评估板之间通过USARTModbus RTU或者SPI的数据交互本示例以USART通讯为例说明。3.1 基本配置1 OEM 模块 J1~J3 全部断开开发板拨码 1~8 全部 OFF2 使用交换机将西门子 PLC、开发板、电脑连到一起PLC 程序下载到 PLC3 使用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还是SPIOEM模块都作为主站运行遵循下面的状态机② 数据区定义根据功能的不同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数据接收********************//intuser_modbus_deal_rev(void){unsignedinti , tem_start_adr , tem_num ;unsignedinttem_crc ;unsignedchartem_hi , tem_lo ;tem_crc modbus_crc( URXDBuf , UART_rev_num-2 );tem_lo tem_crc 0xff ;tem_hi (tem_crc8) 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( i0 ; item_num ; i ){modbus_4_data[ tem_start_adri ] URXDBuf[7i] ;}}user_modbus_deal_txd();}return1 ;}//*******************Modbus数据发送********************//intuser_modbus_deal_txd(void){unsignedinttem , i ;unsignedintfunction_code , tem_start_adr , tem_num1 , tem_num2 ;function_code URXDBuf[1] ;// 04Hif( 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( i0 ; item_num2 ; i ){modbus_3_data[ tem_start_adri ] modbus_3_data[ tem_start_adri ] 1 ;UTXDBuf[3i] modbus_3_data[ tem_start_adri ] ;}UTXDBuf[0] modbus_adr ;UTXDBuf[1] 0x04 ;UTXDBuf[2] tem_num2 ;tem modbus_crc( UTXDBuf , tem_num23 );UTXDBuf[tem_num23] tem 8 ;UTXDBuf[tem_num24] tem ;UART_trx_num tem_num25 ;}// 10Helseif( function_code 0x10 ){for( i0 ; i6 ; 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( i0 ; i10 ; i )USART_SendData( RTU_USART , UTXDBuf[0] );monitor_print(UTXDBuf[0]);return1 ;}④ 数据交互模型3.4 数据交互测试在“PLC变量”中添加需要在线监视或修改的变量在“监控与强制表”中添加监控表并添加对应的变量可进行变量的监测。另外这里可以通过Modbus Slave软件监测从站开发板的收发数据。在博途和Modbus Slave可以分别查看相应的收发数据PROFINET模块通讯正常并完成PROFINET数据交互。注意OEM嵌入式通讯模块数据区Modbus寄存器地址从0x100开始