今天我们开始故事07,而上一个故事06,似乎是很遥远的事情,因为时间精力甚至内容都用于1847撰稿了,一直不知道如何继续这个系列话题,正好最近在测试PROFINET启动过程,因为有些概念与GSD文件关联,这才发现GSD文件的强大,所以从GSD概念作为出发点,给大家稍稍总结一下这些关联的知识点,希望大家从GSD的角度再从重新刷新对PROFINET的认识。
PROFINET系统启动过程是基于UDP/IP进行交互的PNIO-CM协议,其中CM(Context-Management)表示上下关系管理,为系统启动的核心协议,且可以归纳到RT_Class_UDP实时等级,完整的过程为:
Connect帧(57,133):建立一个AR和对应的CR。
Write帧(120,183): 参数化所有组态的子模块。
DControl帧(190,239):控制器参数化结束。
CControl帧(248,255):IO设备的参数化结束。
控制器或监视器使用“Connect帧”建立连接,并传输建立AR和必要的CR所需的所有数据。其中包含了参数化数据以及顺序、过程数据通信以及启动的监视时间以及循环的I/O数据的传输频率等等。
在“Connect.req”成功后,设备中的循环状态机启动,这是因为利用其监视通信关系。这意味着即使系统启动仍未完成,不过IO设备“28:63:36:76:5e:41”已经开始向控制器“28:63:36:8f:8a:fe”传递过程数据(从序号58开始)。当Connect.res,则控制器开始向IO设备发送循环IO数据。然而,各个子槽的没有通过Wirte帧被参数化,所以模块名称为“Unknown”,实时通信的协议标记为PNIO_PS(Problem Status),表示实时通信尚未建立。
此TIA Portal项目中的ET200SP的硬件组态中的每个Slot: 0~3中的module与上述报文中的Slot: 0x0~0x3号对应,而每个槽的子槽Sublot:0x1为过程数据(输入或输出)的实际接口,接口模块的通信接口X1和两个端口(X1P1/X1P2)的Sublot号分别为0x8000,0x8001,0x8002。
如果在“Connect.req”(序号73)期间发生错误,例如,期望的子模块在设备中不存在(拔去2号槽的DO模块),则设备将该状态放在随后的“Connect.res”中(序号110)。使用Bany重新捕捉此情形下的系统启动报文,报文中的“ModuleDiffBlock”提示“Slot 0x2”不存在“no module”。
控制器随后使用“Write帧”来参数化已组态的子模块,对组态子槽所对应的各子模块进行参数化。控制器可以分别写入各个Subslot,或者如果接口模块支持多重写(GSD文件中Supports Multiple Write=Yes),则同时一次多重写入“”MultipleWrite“多个模块。报文中表示ET200SP的接口模块支持多重写,与GSD文件的参数所对应。
根据ET200SP的IO模块的组态,例如8x24VDC DI并未组态QI和MSI功能,那么参数化该DI过程数据接口的子模块的参数为GSD文件中“Inputs”和“Potential group”条目下定义的参数,通过此“Write帧”写入该相应的子模块。多重写在报文中对应顺序Seq: 3,Slot: 0x1/0x1对应的参数Index: 0x 0080,User specified data: 26 byte,与GSD文件中的Inputs (Index:128 – Length:26 Byte) 相对应。同样另外一组参数在Seq: 4写入Index: 0x 00f3,User specified data: 4 byte与GSD文件中的Potential group (Index:243 – Length:4 Byte) 相对应。
这些参数实际上就是按照硬件组态或者工艺要求组态IO模块的参数,按照8x24VDC DI模块为例,诸如:断线诊断,上升沿硬件中断等参数。
上述DI 8x24VDC模块的“Inputs”这些参数对应GSD文件中的Inputs (Index:128 – Length:26 Byte),具体参数配置长度为26bytes,前(第0和第1个字节)两个字节0x00,0x03为固定值,从偏移的第2个字节之后的3个字节表示通道Channel 0的参数,一个通道参数占用3个字节,那么这8个通道的参数占用24(26-2)字节。Wireshark报文中的通道0的3个字节参数设置为00 8f 00,在GSD文件中这三个字节的偏移的Bit的数值即对应了硬件组态的参数设置,例如:Channel 0 activated的偏移地址3.7的数值为1,即第三个字节(10001111)最高位为1表示Channel 0通道激活,与上面的8DI模块硬件组态的Channel 0配置一致。
最后,大家看看针对这个话题还有什么疑问,可以点击下面的留言区留下您的问题,我们可以在这里相互交流,帮助大家提高技术水平和处理问题的能力!