在探讨控制系统前,先说说控制系统的需求:
1> 控制铁路轨道上各种设备的工作
2> 协调各设备之间协作
这2点有些过于抽象了,任何一个系统都有这些特性。
从系统设计的角度, 要做2方面的事情。
1> 确定控制系统与外部设备间的通信接口与协议
2> 确定内部系统构成与功能。
1.1 关于通信协议与接口, 行业上通用的是modbus接口, 参考网站: http://libmodbus.org/
另外一些协议均是与公司有关,设计到保密协议,无法深入讨论。个人感觉最深的是, 均是udp协议,这颠覆了我一直认为tcp更安全的偏见。
通过学习这些接口,也学会了如何利用sequence ID 与Time设计一个稳定安全的内部通讯协议。
1.2 关于数据,整个控制系统使用的均是开关信号, 将它看成一个BitTable, 数学上理解就很简单了。
2.1 关于控制系统
基本上分为2个系统,一个是监控与log系统, 一个是逻辑控制系统。
第一个系统, 和通用系统没啥区别,用linux构建,完成系统状态的监控与显示。
第2个是逻辑控制系统, 基本是基于PLC设计原理。
基本思路: 定周期Timer触发处理流程
读取各系统状态与输入设备缓冲区状态
依次执行PLC控制逻辑
读取输出状态,通过外设继电器控制各种设备状态。
难点: 如何设计控制规则
了解下来,基本工具类似Ladder, 也就是常说的梯形图, 关于Ladder参考 (http://www.ladder-logic.com/hello-world/)
通过工具设计好控制逻辑后,将控制逻辑导出,并通过通信协议,传输到控制系统。
这样,整个控制系统就是可编程的了。
系统从技术上来说就2个难点, 1, 如何设计控制逻辑, 2 如何通过GUI,显示整个控制系统,并提供良好的人机交互。
2.2 安全
整个系统的稳定性是靠系统冗余来解决的。即所有设备和通信网络均由2个, 这样,假设单线的故障概率为0.001, 整个系的故障概率就为 (0.001)的4次方,
很低了。
这里有个难点是,主从系统如何切换,如何处理冗余系统, 这就又回到第一个问题,通信协议的设计了。