夜光:车载通讯系统详细设计 (二)

夜光序言:

 

云鼓楼飞檐上的风铃,总在乳雾浸谩中,将声音辗转得异常沉郁,如一曲寂寞的离歌.

 

 

 

 

 

夜光:车载通讯系统详细设计 (二)

正文:怎么说呢,有的时候会画流程图对于我们搞软件的来说不可或缺~~

 

 

为明确系统各功能模块间的数据交互,我们需要建立 AGV 车载通讯系统与外围系统以及各功能模块之间具体的数据流程模型,结合注释用图形化的形式来展 示系统的信息处理逻辑功能。

 

分析系统工作流程,建立 AGV 车载通讯系统数 据流图如图所示,系统工作流程图如图

夜光:车载通讯系统详细设计 (二)

实际运行环境中,客观干扰因素较多,无线通讯效率易受影响。

因此,除了硬件系统的可靠设计、提高无线通讯的功率等措施外,可靠的技术,完善的通讯协 议、指令集、信息编码结构形式,完善的软件设计等也可以有效的增强系统通讯 的可靠性。


 

车载通讯系统相关技术 


AGV 物流运输系统的通讯以车载通讯系统为核心枢纽,主要可以划分为三个 小的通讯模块,分别是地面通讯模块、激光头通讯模块、车载 PLC 控制器通讯模块。

 

地面通讯模块与激光头通讯模块均使用基于TCP/IP的SOCKET套接字进行数据通讯,地面控制系统和激光扫描头均作为服务器端存在,车载通讯系统作为客 户端主动进行链接,当链接断开时,需要再次重连。

 

车载 PLC 控制器通讯模块使 用 ADS 协议与车载通讯系统进行数据通讯,实现车载 PC 上 C++程序与倍福 (BECKHOFF)PLC 之间的数据交互。 

 


 

基于 TCP/IP 协议的非阻塞 Socket 通讯技术 【别的不说,只要在工业领域工作,必然涉及~】


Socket 套接字是 TCP/IP 协议下为常用的通讯技术(有点帅~~),客户端和服务器调用 creat()、connect()、send()、recv()、bind()等 Socket 接口函数完成套接字的创建与 关闭,通讯的链接,数据的发送等功能[40]。 但值得注意的是,套接字的工作模式有阻塞和非阻塞两种模式。

 

一般设计者习惯使用 connect()、accept()、或 recvfrom()等阻塞程序函数,所谓阻塞方式(block), 就是进程或是线程执行到这些函数时必须等待某个事件的发生才能继续往下执 行,这其中损耗的时间会极大的影响系统实时性与工作效率。

 

非阻塞方式(non-block) 下使用 Select()函数监视的文件描述符的变化情况:读写或是异常,进程或线程执 行非阻塞函数时无须等待事件发生就可以立即返回,同时通过判断返回值来获取 事件的状态。事件发生则处理事件,未发生则反馈信息并继续执行下一步程序。

故在创建管道后应将管道设置为非阻塞模式,代码实现如图

夜光:车载通讯系统详细设计 (二)

另外需要注意的是Select()机制中提供fd_set和timeval结构体分别对文件描述 符进行管理以及设置超时时间。在每次使用 Select()机制前都应该对其正确配置, 代码实现如图

夜光:车载通讯系统详细设计 (二)