GithubHelp home page GithubHelp logo

css100's Introduction

起吊塔机安全控制系统

模块功能列表:


一、acquire 采集模块,负责采集本机所连接的传感器的ad数据,并转换成可以塔机用于安全运动的物理量。
该模块中的数据属于最关键的运行参数,力距管理和防撞控制都是利用该数据。
需要采集的数据如下:(塔机工作参数)
		【ad】--->[物理量】
	1.高度传感器-->吊钩高度
	2.风速传感器-->风速
	3.重量传感器-->吊钩所吊物体的重量
	4.行程传感器-->小车幅度
	5.角度编码器-->大臂的旋转角度
	6.倾角传感器-->塔机的x,y两个方向的倾斜角度(塔身和塔臂都有倾斜传感器)
	7.动臂仰角传感器--->动臂仰角
	

工作流程:通过rs232从采集模块中,按协议获取ad数据。将ad数据量化成相应的物理量。
	1.加载标定参数,rs232通讯参数。
	2.启动采集模块
	3.打开传感器采集ad数据
	4.转换ad成物理量
	5.通知外部模块,内部数据有更新。
外部接口:
	1.提供标定接口,外部模块可以调用该接口实现标定功能,内部保存标定参数。
	2.获取标定系数,外部模块可以获取标定的结果,以供显示
	3.获取当前ad, 提供当前采集到的ad数据
	4.获取当前的物理量,提供当前转换后的物理量。
	5.提供注册消息接收的接口,当物理量或则AD更新后,通知外部注册的模块。(zmq/回调)
	6.提供启动和停止模块的接口。
	7.传感器状态、故障报警事件通知
内部接口:
	1.数据库采用模块内部实现读取,提高效率和易用性。
	
部署文件:
	1.标定参数文件 
		采用一个单独的数据库文件,保存标定数据,在保存数据的时候采用事务进行原子操作,防止数据失败。
	2.通讯参数文件 [普通配置文件]
标定参数数据库设计:
单独存放在一个calibrate.db的数据库中,每种标定参数存放一张表中,采用key-value方式存放。
	1.高度标定 [零点高度,零点ad,标定k]
	2.重量标定  采用分段修正,每个重量段有一个起始的重量和k值,这个参数采用关系表结构存放。
		第一段 [起始重量,起始ad,该段k,该段是否启用]
		第二段 [起始重量,起始ad,该段k,该段是否启用]
		第三段 [起始重量,起始ad,该段k,该段是否启用]
		
		
	3.行程标定 [零点高度,零点ad,标定k]
	4.角度标定 [零点高度,零点ad,标定k]
	5.动臂仰角标定 [零点高度,零点ad,标定k]
	
	
	
二、common 通用部分
	1.定义了各个模块共用的一些数据结构,数据类型

	
三、commu 塔机之间通信模块 [支持zigbee和数字电台]
	1.负责塔机之间运行数据的通信和交换,它主要负责获取通讯范围内所有其他塔机的工作参数。并且负责组织和管理整个互联网络的运行。
	2.将消息通知给外部模块,具体消息的业务处理在主控模块中实现。这边只负责网络通讯部分
工作流程:
	1.打开串口,设置波特率
	2.配置网络参数
	3.获取网络中的数据
	4.分析数据
	5.回调接口。	
内部接口:

外部接口:
	1.提供消息注册接口,在接收到消息包后,会回调消息观察函数
		1.塔机基本升级消息包
		2.塔机工作参数消息包
		3.塔机高度修改消息包
		4.塔机工地参数消息包
	2.提供通讯信号强度接口(根据每秒接收到的数据包的多少来定义信号强度)
	3.提供主从机状态
	4.提供网络状态(当前网络的工作状态....)
	5.提供启动和停止的接口	
	
四、database 模块
	1.负责塔机工作中 报警数据, 起吊记录数据,实时工作数据,开关机事件,系统事件数据的数据库存储,查询 功能
		报警数据包括:
			碰撞报警
			风速报警
			力矩报警
	2.负责力矩信息数据库的管理

五、extdev 模块
	1.负责继电器管理
	2.蜂鸣器管理模块
		1.提供短促和长鸣
	3.语音报警模块
	
六、gui 模块
	1.提供GUI功能
		1.主界面
			1.工地参数
			2.设备管理参数
				1.ip设置
				2.界面设置
				3.时间日期配置
				4.系统日志
				5.触摸屏标定
				6.网络参数设置
			3.标定界面
				1.力距信息管理
				2.标定界面
			4.数据查询
			5.保护区域设置
			6.塔机参数【所有塔机的基本参数】
	2.提供触摸屏输入法
	3.中英文界面支持
七、mainctrl 模块
	1.负责管理其他模块
	
八、algo 算法模块
	其他人提供
九、secrity 模块
	1.防碰撞安全管理模块	
	2.力距安全管理模块
	3.限位管理模块
		1.左右限位
		2.吊钩高低限位
		3.力矩限位
		4.小车远近限位
		
		
十、business 业务管理模块
	1.接收其余模块发来的安全管理消息, 负责和中心或则外设通讯和交互[gprs]
		1.报警事件
			1.障碍物、敏感区域报警
			2.塔机之间碰撞报警
			3.设备故障报警
			4.违章报警
			
		2.系统事件
			1.开关机事件
			2.IC/指纹等 登录事件
		3.工作记录事件
			1.起吊工作记录
		4.登录信息
		5.基础信息
		6.区域信息[防撞区域、敏感区域]
		7.限位信息[左右回转限位、吊钩高低限位、小车远近限位、起重限位、力矩限位]
工作流程:
	1.连接服务器的指定port
	2.发送登录信息[厂商编号、设备编号、用户名、密码,imei编号等信息],向中心服务器注册自己
	3.登录成功后,发送本塔机基础信息、区域信息、限位信息[见附录1]		
	4.主控检测到事件后,通知业务发送事件数据
		事件类型	
				0x01:报警事件
					报警类型	报警类型:
							0x01相互干涉报警
							0x02敏感区域保护报警
							0x03障碍物碰撞报警
							0x04限位报警
							0x05起重量报警
							0x06力矩报警
							0x07风速报警
							0x08倾斜报警
							0x09bypass操作

				0x02:违章
					违章类型	0x01:超重
							0x02:区域保护
							0x03:障碍物
							0x04:相互干涉
							0x05:身份验证	区域保护,障碍物,相互干涉不能区分	1Byte
							违章内容	超重:    0x01 起重量; 0x02 力矩; 0x03 同时
							区域保护:区域序号; 
							障碍物:  障碍物序号;
							相互干涉:对方标识号
							身份验证:0x01 未验证;0x02 验证未通过	区域保护,障碍物,相互干涉不能区分,也没有序号和标示号	1Byte
				0x03:故障诊断
							0x01主机故障 无
							0x02显示器故障无
							0x03 指纹模块故障
							0x04 无线通信模块故障
							0x05 回转传感器故障
							0x06 变幅传感器故障
							0x07 起升传感器故障
							0x08 称重传感器故障
							0x09 倾角传感器故障 无
							0x0A 行走传感器故障 无
							0x0B 风速传感器故障 无
							0x0C 参数设置故障 无
				0x04:工作循环
				0x05:人员身份验证结果
				0x06:开关机
						本次开机循环	自设备生产开始的开机次数	4Bytes
						上次关机时间	上次设备关机时间	4Bytes
						本次开机时间	本次设备开机时间	4Bytes
				0x07:5s上传状态数据[发送当前的运行参数+报警编码数据]
							限位报警编码
							其他报警编码
							塔机碰撞报警编码
							禁行区碰撞报警编码
							障碍物碰撞报警编码
							继电输出编码
	5.
十一、utils 工具库
	1.通用的工具库		
	
	
十二、css100 程序主运行程序
	启动代码
	
十三、设备内部事件管理模块
	1.产生响应的报警事件,触发声光报警。
	2.存储数据库等等。	
	3.产生报警、系统事件、等传给业务模块。
	
十四、usb升级程序

十五、paramcfg 参数管理模块 [leveldb / sqlite3 ]
	因为该模块中的参数会在界面中修改,因此需要设计一种机制,在参数被人为修改后,能通知
	所有使用了该参数的模块,使其更新该参数。
	
	1.本机工地参数管理
		1.工地上下左右四点坐标
		2.用于回转标定的参考角度 a点和b点
		3.大臂防撞参数[高速限制距离、刹车距离、制动距离]
		4.小车防撞参数[高速限制距离、刹车距离]
	2.塔机型号参数[塔机类型、塔臂长度、塔机倍率]
	3.设备参数 [设备编号 ],反顶时间,刹车时间。
	4.通讯参数 
		1.串口号
		2.网络参数[gprs ip, port,dtuid,imei]
		3.回转编码器地址[需要手工设置,或则实现自动探测后,保存地址的功能]	
	5.障碍物区域、敏感区域数据管理:支持10个障碍物区域和敏感区域,每个区域有自己的名字和类型(点、圆类型),坐标信息等
	6.界面参数:中英文、显示选项
	
十六、gprs升级程序
工作流程:
	单独做一个程序,用wget之类从服务器上获取升级数据。 使用zeromq和主程序通信,主程序接收到中心服务器下发的升级命令后,
	发送升级消息[版本号,升级文件的服务器上路径] 给升级程序,升级程序调用wget 下载文件到指定的目录,根据升级文件中的指令
	解压获取执行附加命令来完成升级操作。
	
	
目前经常会变动的地方:

1.数据库中的工作记录、报警内容,以及添加新的数据
2.仪表界面上查询的记录类型g
3.和中心的通讯协议,每一个中心都有一套自己的通讯协议和流程,最麻烦的也是这一点
4.对报警的触发条件[比如力距报警、预警的范围、风速报警、预警的条件等、起吊过程的触发条件,以及需要记录的内容]
5.塔机直接通讯的模式[zigbee以及电台]可能会变化,可能添加新的通讯模块或则方式。

	
附录1:
塔机基础信息
struct TTjRecord{
    char Serial[20]; //塔机出厂设置的设备序列号
    double   Height; //塔机高度
    double   x; //塔机所在的x坐标
    double   y; //塔机所在的y坐标
    double   LongArmLength; //大臂长度
    double   ShortArmLenght; //短臂长度
    double   Rs;  //最小幅度
    bool     Dyna; //是否是动臂式/平臂式
    double   DLong; //动臂投影
    double   DHeight; //动臂高度+吊塔高度
    double   L1; //动臂的最大角度85度左右
    double   L2; //动臂的最小角度15度
    double   a0; //大臂根部铰点到塔机回转中心的距离,可正或负或0
    double   C2; //吊点长度
    double   CAng; //固定夹角
    double   DLine; //拉绳长度
};


struct TPos{
	double x;
	double y;
}
//保护区域信息。可以支持10个保护区域
struct TProtectArea{
	std::string name; //保护区域名字
	int		id; //保护区的id号,同一工地,每个保护区id号唯一
	int     build_type; //保护区建筑类别	0其他,1医院,2学校,3广场,4道路,5居民区,6办公区,7高压线;其余类型待定(只对禁行区有效)
	int		area_type; //保护区元素类型	0x00:点0x01:圆弧(保留)	1Byte
    std::vector<TPos> area_cord_list; //保护区域的坐标集合
    double  h; //保护区高度	只对障碍物有效	2Bytes
};


css100's People

Contributors

byteman avatar jiongjiong avatar

Watchers

 avatar  avatar

Forkers

tomyqg

css100's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.