ERTEC200P-2 PROFINET设备完全开发手册(2-2)
Posted 芥末博士
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ERTEC200P-2 PROFINET设备完全开发手册(2-2)相关的知识,希望对你有一定的参考价值。
2.2调试协议栈
评估板的对外接口如下:
JTAG:调试200P-2的20pin JTAG接口
200P-2 UART2: 默认的调试串口,TTL电平(注意:千万不要连RS-232)
X7:MINI USB,为开发板提供5V电源,并且可以作为STM32F407单片机的VCOM接口
SYNC_OUT:PROFINET同步输出,SMA同轴电缆,可直连示波器
DB1:200P-2 UART0 的RS-485接口
SWD:STM32F407的调试接口
X6:PROFINET端口
按照如下步骤连接硬件
1)连接USB/TTL 串口转接板到200P-2 UART2 (注意交叉线序 GND-GND TXD-RXD RXD-TXD)
2)JLink的20pin调试电缆连到评估板JTAG,连接JLink的USB到PC
3)连接评估板调试串口Mini USB(X7)到USB电源适配器
注意任何情况下不能带电插拔JTAG,否则容易损坏开发板。串口转接板驱动后,可以在设备管理器中找到对应的串口号(例如COM6)
打开MobaXterm,点击Session打开Session settings,点击Serial,按照如下进行配置:
点击OK之后,双击左侧栏的Serial(COM),在Serial port栏中进行以上串口号的选择:
在 程序 中启动J-Link GDB Server
配置JTAG参数,选择ARM9, Littile endian,12000kHz
点击OK确认,如果目标板工作正常,会显示如下界面
注意,如果首次调试自己开发的板子可以选择Verify download选项,校验SDRAM是否正常工作。如果板子没问题,平时调试时可以关闭,加快下载速度。
在Eclipse菜单中选择Run -> Debug Configurations
双击GDB Hardware Debug新建EK_ERTEC EB200P_Debug_EcosNative
点击EK_ERTEC EB200P_Debug_EcosNative,配置右侧Main标签页:
Debugger标签页:
Startup标签页:
启动脚本的完整内容如下
monitor speed 30
monitor endian little
monitor reset
monitor reg cpsr = 0xd3
monitor speed 12000
monitor mww 0x4000f078 0x005fffff
monitor mww 0x10d00004 0x40000080
monitor mww 0x10d0000c 0x000003d0
monitor mww 0x10d00010 0x3ffffff1
monitor mww 0x10d00014 0x3ffffff1
monitor mww 0x10d00018 0x3ffffff1
monitor mww 0x10d0001c 0x3ffffff1
monitor mww 0x10d00020 0x01974700
monitor mww 0x10d00028 0x0
monitor mww 0x10d0002c 0x0
monitor mww 0x10d00030 0x42
monitor mww 0x10d00008 0x00002522
配置完成之后点击Apply,点击Debug进行调试,J-Link GDB Server会出现程序下载的提示:
第一次进入调试时会出现
勾选“Remember my decision” 后选“Yes”。调试界面如下图:
进入调试后,程序默认是停止状态,需要点击“运行”(绿色的前进)按钮启动程序。
这样PN协议栈就运行起来了,串口终端会打印出启动信息。
为了确认协议栈正在运行,可以在串口终端键入'?',可以看到协议栈会打印支持的命令列表。
可以在Elipse的工具栏中切换C/C++编辑模式或者调试模式。
下载调试程序会直接下载到SDRAM中运行,断电后程序会丢失。只有烧入到FLASH中,程序才能保留并且上电自启动,具体步骤后续在做介绍。
下一篇:连接PLC
ERTEC200P-2 PROFINET设备完全开发手册(3-2)
周期数据分为两大类,输出数据OutputData和输入数据InputData,输出数据是PLC发送给设备的;输入数据是设备发送给PLC。如果采用标准接口(SI),读取输出数据和写入输入数据都是一次初始化数据读写调用和一次/多次回调构成。
为了读取输出数据,用户程序要调用初始化数据读操作PNIO_initiate_data_read, 在调用之后,协议栈会获取通讯缓冲区数据,并按照子槽依次回调数据读PNIO_cbf_data_read。用户程序在回调函数中处理子槽对应的过程数据pBuffer(例如保存过程数据到缓冲区),并且完成IOPS、IOCS的操作。回调的次数取决于输出子槽的个数。
为了写入输入数据,用户程序要调用初始化数据写操作PNIO_initiate_data_write, 在调用之后,协议栈会获取通讯缓冲区数据,并按照子槽依次回调数据写PNIO_cbf_data_write。用户程序在回调函数中处理子槽对应的过程数据缓冲区pBuffer(例如将缓冲区数据更新到过程数据),并且完成IOPS、IOCS的操作。回调的次数取决于输出子槽的个数。
协议栈在启动以后,会启动任务Task_CycleIO,周期触发数据读写操作。
当PLC与200P建立通讯后,在每次周期通讯结束后,协议栈都会触发回调函数PNIO_cbf_trigger_io_exchange。PNIO_cbf_trigger_io_exchange每次触发后会发送一个信号量TransEndSemId给周期任务Task_CycleIO,Task_CycleIO 在接受到信号量后会执行PnUsr_cbf_IoDatXch这个回调函数。
Task_CycleIO基本工作原理如下图所示:
在协议栈中PnUsr_cbf_IoDatXch分别调用初始化读写PNIO_initiate_data_read和PNIO_initiate_data_write。因此会触发回调函数PNIO_cbf_data_read和PNIO_cbf_data_write。
在回调函数PNIO_cbf_data_read中,过程数据被拷贝至OutData
在回调函数PNIO_cbf_data_write中,InData被更新至过程数据
这样,用户程序只需要根据槽和子槽的编号读取OutData,即可获得PLC输出的数据Q;写入InData,即可将输入数据I更新至PLC。 在默认的例程中,64字节输入模块在 slot_num=1,subslotnum=1,对应InData[1][1][0..63]。64字节输出在 slot_num=2,subslotnum=1,对应OutData[2][1][0..63]。
总结一下:因此周期数据读写操作是通过PNIO_initiate_data_read/PNIO_initiate_data_write发起,在PNIO_cbf_data_read和PNIO_cbf_data_write进行数据的读取、写入。
读数据的过程如下图所示:
写数据的过程如下图所示:
对于输出数据,需要判断IOPS,只有当IOPS = GOOD时,才可以将收到的输出数据生效到实际的物理外设上。如果IOPS != GOOD ,表示PLC下发的输出数据无效,这时可以采取的策略时是:1)保持;2)全1;3)全0。如何选择可以由厂商自定义。
以上是关于ERTEC200P-2 PROFINET设备完全开发手册(2-2)的主要内容,如果未能解决你的问题,请参考以下文章
兴达易控RS232转Profinet网关XD-PNR200配置
20200424 昌黄井场调试 组态一个汇川HE200 一个HMI TP900 一个智能从站 一个S7-1500 PLC ProfiNet IO 通信 测试OK, 收获大