Ethernet/IP

  之前花了一段时间看过Ethernet/IP的东西,虽然最后没有移植成功,但是依旧是学到了不少的东西。

  熟悉了STM32F407的开发板,在大学期间,有上过嵌入式系统这门课用的是STM32F103系列的,也算是对这次任务打下了一定的基础。

  了解了LwIP协议和uc/os ii实时操作系统。

  对协议栈也有了一定的概念。

每个CIP节点被模拟成一组对象的集合,CIP对象由类(class),实例(instance),属性(attribute),服务(service)和行为(behavior)组成。

当连接建立后,与此特定连接相关的发送可分得一个称为连接标识符(CID)。

I/O连接根据数据触发方式分为轮询,位选通,COS(状态改变)和周期。

隐式报文数据的含义已经在通信连接建立,分配连接标识的时候完成了定义。

先通过TCP数据包建立设备之间的连接,然后利用UDP连接进行I/O数据对象报文交换,将网络带宽占用减少到最低程度。

消息路由对象负责接收从UCMM或传输层传送的显式报文,去掉报文头根据要访问的类和属性进行路由。

在ControlNet应用层中,信息路由,传输和连接管理负责信息的传输和连接,数据管理负责数据管理,对象和对象模型负责各个服务功能的描述

显式报文通常为组态,诊断和事件数据。

在工业控制系统中,需要传输的数据类型有I/O,互锁,配置,故障诊断,程序上载和下载等。

CIP是一种面向连接的协议,在通信开始前必须建立连接,获得唯一的连接标识符(CID),通过获取CID,连接报文就不必包含于连接有关的所有信息,只需包含CID即可,从而提高网络传输效率。

必选对象是实现设备基本要求所必须选择的对象是实现设备互换性,互操作性的前提条件之一:连接对象,标识对象,报文路由对象,网络特有对象。

每个Ethernet/IP节点都可视为一群对象的集合。

连接的建立是通过未连接管理器对未连接显式报文的处理来实现的。

节点之间通过发送未连接显式报文建立显式连接进行参数配置,在建立显式连接之后,再通过显式报文传递消息,约定I/O报文的格式和意义并建立I/O连接。

设备描述:1设备对象模型定义 2设备I/O数据格式定义 3设备可配置参数定义

DeviceNet给予不同类型的报文不同的优先级,隐式报文使用优先级高的报头,显示报文使用优先级低的报头

ControlNet在预定时间段发送隐式报文,在非预定时间段发送显式报文

未连接报文需要包括完整的目的地节点地址,内部数据描述等信息,如果需要应答还要给出完整的源节点地址

在基于生产者/消费者模型的网络中,每个报文都有唯一的报文标识符(MessageID)

CIP寻址分为4级:设备,类,对象,属性,服务

UCMM传输方式主要用在1类和3类传输初始化阶段(负责打开和关闭网络上的1类和3类传输,并提供目标对象),连接初始化工作有连接管理器对象来完成

如果连接是双向的,那么会同时有两个CID

数据包在被驱动程序解析后,发送到未连接报文管理器(UCMM),在其中解析报文,删除UCMM报头后,执行内部记录并将报文转发到消息路由器,在此处解析的到报文的目的地址后,发送到响应地址位置应用对象。


OSTaskCreate():任务对战初始化,任务控制块的初始化和任务调度,任务就会进入就绪状态

任务代码的指针并不是存放在任务控制块中,而是存放在任务堆栈里面

进入中断后操作系统需要将一些,必要的寄存器信息保存到该任务栈中

中断处理程序中不能建立任务,一个任务必须为无限循环结构,且不能有返回点

任务切换有两种途径1时钟街拍中断服务函数OSTickISR() 2时间延迟函数OSTimeDly();

时钟中断等于定时调用OS_Sched()完成任务切换,引用ucos系统函数也会调用OS_Sched()引起任务切换。

OSSchedLock()函数任务独占CPU,不管有没有其他高优先级的就绪任务。

当一个任务就绪时,必须在OSRdyGrp和OSRdyTbl中标记。

任务优先级是ucosii标识任务的唯一标志,任务控制块中虽然也有一个ID只是为了扩展使用。

如多OSLockNesting>0,那么不允许进行任务调度。

任务可以删除自己,也可以删除其他任务,空闲任务不能被删除。

ucosii有两种任务调度器,任务级的调度器(OSSched())和中断级的调度器(OSIntExit())。

(STM32中)PendSV异常是任务切换的核心。

ucosii是系统和程序一起编译,只要是全局变量都是可见的。

只能在任务中删除信号量,不能在中断中删除。

ucosii任务间同步:信号量,互斥信号量和事件标志组

消息队列由3部分组成,事件控制块,消息队列和消息。

初始化的TCB空间列表是单向的,二开始使用列表是双向的。


LwIP协议栈使用pbuf结构体来描述协议栈使用中的数据包

你可能感兴趣的:(工作任务)