8.2 IRT通讯原理及API
PROFINET RT通讯的特点:
典型的PROFINET网络如下图所示。
其中:
T1: 采样输入
T2: IO背板周期
T3: Profinet I/O 通讯周期
T4: CPU组织块OB1执行周期
T5: Profinet I/O 通讯周期
T6: IO背板周期
T7: 建立输出
在PROFINET RT的系统下,Profinet I/O 通讯是以准确的时间间隔(IO更新时间)进行周期通讯。但是每个设备都有各自时钟,每个设备按照自己的周期采样输入或者建立输出。这样 T1-T7没有任何的同步对应关系。这样系统的响应时间(输入到输出)在最好的情况下为: (T1+T2+T3+T4+T5+T6+T7),在最坏的情况下为2X(T1+T2+T3+T4+T5+T6+T7)。
PROFINET IRT通讯的特点:
在同步的应用下,所有一个同步域内的IO设备都通过PTCP报文会获得PLC的主时钟(master clock 或者 send clock),并且将自己的时钟同步到PLC的时钟上。目前 CPU1518 + ERTEC200P-2可以做到最小125 µs。
这样一个同步域内的所有设备会有一个全局的时钟基准。在全局的时钟基础上,组态软件(TIA)会给同步域内的所有IO设备规划统一的采样输入时刻Ti和建立输出时刻To。这样所有IO设备在同一时刻采样输入、建立输出。相对应,PLC需要定义专用的、优先级高的同步组织块("synchronous cycle" OB6x),统一读取同步输入数据;进行逻辑运算;统一更新同步输出数据。
为了保证Ti、To、同步组织块的时序关系。IO数据通讯需要在准确的时间开始和结束,因此IRT通讯技术采用时间分片的模型:
每个通讯周期被分割为时间片 ,通讯周期开始时刻的时间片预留给优先级最高的IRT报文(RT_Class3),剩余的时间片分配给RT, TCP/UDP,..。在IRT通讯时间片内,PN网络所有交换机和设备不允许转发和发送非IRT数据。这样,相当于为IRT通讯预留了快车道:
因此我们常说IRT应用是指IRT通讯+同步应用。
RT | IRT | 同步 |
|
|
|
在我们TIA中设定IRT带宽预留(图中1),和查看实际使用的带宽(图中2)
开启等时同步模式后,IO通讯周期Tdc (Time of Data Cycle)=发送时钟。如果同步组织块(e.g. OB61)在一个Tdc内无法完成计算任务,可以调整应用周期的时间为发送周期的整数倍,相当于多个通讯周期更新一次输出数据。这个整数倍被定义为Tcacf(control application cycle factor)。这样Tdc、Ti、To和Tcacf定义了IRT等式同步的基本时间参数。PLC在与设备建立连接时,会将这些参数通过索引号为0x8030的数据记录写入到设备。如下图,左侧是协议栈打印输出的0x8030数据,右侧是TIA的等时同步配置。
PN设备需要在同步事件Ti、To更新输入、建立输出。200P既可以中断的形式响应同步事件,也可以将GPIO1-7设置为同步输出(PN-PLL)。协议栈已默认将GPIO0关联到Tdc。
同步GPIO输出初始化函数为:PNIO_IsoActivateGpioObj,即在发送周期开始时延时指定的时刻在GPIO上产生上升或下降沿触发信号。同步事件中断初始化函数为PNIO_IsoActivateIsrObj,即在发送周期开始时延时指定的时刻回调中断处理函数。
在参考代码中,PLC通过0x8030写入Ti、To
将GPIO7设置为Ti同步输出
将GPIO5设置为To同步输出
从示波器查看GPIO0,GPIO5,GPIO7可以看到输出脉冲
IRT通讯支持两种特殊的模式
1)快速转发模式(Fast Forwarding)
多口设备转发延时的时间可以从1440ns减少的320ns
2)动态组包(DFP - Dynamic Frame Packing)
就是我们常说的火车模式,这样可以极大的提高IRT通讯的效率。
目前,ERTEC200P-2对于上述两种增强模式提供了很好的支持。