关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > 基于VxWorks的MB系列智能可编程控制器设计

基于VxWorks的MB系列智能可编程控制器设计

作者:时间:2009-12-23来源:网络收藏

(1) 信号量
信号量是实现任务互斥、同步操作的主要机制,提供的信号量经过了高度优化,在所有任务间通信机制中,速度最快。对于互斥,信号量可以上锁对共享资源的访问,并且比禁止中断或禁止抢占提供更精确的互斥粒度。对于同步,信号量可以协调外部事件与任务的执行。
PLC使用二进制信号量来解决多个任务读写数据的互斥问题,使用计数器信号量来解决定时器计数问题;
(2) 消息队列
消息队列是提供的单CPU中任务间通信的主要机制。消息队列允许以FIFO或优先级方式排队消息,消息的数目可变,消息的长度可变。任何任务都可以向消息队列发送消息,也可以从消息队列接收消息。多个任务允许从一个消息队列收发消息。但是,两个任务间的双向通信通常需要两个消息队列,各自用于一个方向。
PLC使用消息队列来实现任务间的数据交换。首先调用msgQCreate()函数创建消息队列,再用msgQSend()和msgQReceive()函数发送和接受消息,最后调用msgQDelete()函数中止消息队列。
3.3 中断处理程序
中断处理程序是实时系统的重要组成部分。系统通过中断机制了解外部世界,并对外部事件作出响应。实时系统的反应取决于系统对于中断的响应速度和中断处理程序的处理速度。由于在很短的时间内,可能产生很多中断,高优先级的中断将阻塞低优先级的中断,因此,必须使中断处理程序的处理时间最短。
PLC的中断包括秒中断、分同步中断、CAN网中断以及BSP级的以太网中断、硬盘中断等等。下面以秒中断(中断级别为5)为例说明中断的使用方法:
ntConnect(INUM_TO_IVEC(INT_VEC_GET(5)), SECISR, 0);
sysIntEnablePIC(5);
这两个函数用于将中断处理程序SECISR()与秒中断相关联,存放于中断向量表的对应表项中,当秒中断事件出现时,内核将调用中断处理程序。这时可利用中断处理程序释放一个信号量(通过semGive()函数),通过该信号量驱动相应的数据处理模块(通过sem- Take()函数),从而实现实时操作。
此外,我们还使用intLock()函数和intUnlock()函数来设置中断屏蔽,用以保证受保护的代码在执行过程中不受中断的干扰。
3.4 网络通信
网络通信一般可通过套接口(socket)实现。Vx- Works提供了标准的BSD socket调用,具有两种类型:Stream socket(全双工流类型)、Datagram socket(数据报类型)。前者支持TCP协议,后者支持UDP协议。任何一个任务都可以打开一或多个socket,其它任务的socket可与之连接。
客户端程序首先调用socket()函数产生用于与各分系统连接的套接字,然后初始化一个套接口结构体,为其赋上服务端的IP地址和端口号,并将其作为函数connect()的参数,调用connect()函数主动去连接服务器端。连接成功后,用send()和recv()函数读写数据,直到全部数据都交换完,再用close()函数关闭套接口。
服务器端也先用socket()函数建立套接口,再调用bind()函数将自身IP和端口号绑定,以保证客户端正确识别,然后用listen()函数指明已准备好接受来自客户端的连接,又用accpet()函数接受一个连接请求,接受后用send()和recv()函数来传输数据,直到全部数据都交换完,再用close()函数关闭套接口。为了确保服务器能够实时接收客户端的数据,当服务端与客户端建立连接之后,必须嵌入循环,利用recv()函数不断等待客户数据。同时客户端每次发送数据之后也应等待服务端回复,建立握手机制。
3.5 串行口通信
在VxWorks中,将I/O系统成为任何类型的设备,提供一个简单、统一、独立于设备的接口,任何对于串行口的操作仍然可以视为对一个文件的操作,而不必了解关于设备或程序驱动实现的细节。在使用串口之前利用open()打开相应串口,再用ioctl()设置波特率、数据位、停止位、奇偶校验等属性,然后依据串口打开时的读写标志,调用函数write()、read()对串口进行只读操作、只写操作或同时进行读写操作,最后用close()关闭串口。
对于串口通信,仍然要关心数据接收的实时性。可采用中断方式,利用VxWorks提供的select()函数的事件触发机制,将读串口的任务阻塞使其一直等待数据,当有数据来到的时候该任务会立刻自动响应,提高系统的实时性。

本文引用地址:http://www.eepw.com.cn/article/163387.htm

4 结束语
嵌入式实时操作系统VxWorks及其开发环境的引入,大大简化了软件的复杂性,缩短了开发周期,提高了产品的实时性和可靠性。因此,VxWorks RTOS在MB中的应用是成功的。MB作为新一代的PLC产品,相信能在电力、化工、工业过程控制、城市及楼宇自动化等各种复杂控制领域发挥更大的优势,使这些行业的自动化水平得到更大的提高。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭