VS平台多任务执行思路请教
个人从事工控(PLC),PLC与VS的扫描和刷新方式不同,
在上百条任务同时执行时,PLC占据优势,整体扫描整体刷新,
而VS就个人接触,均为单任务扫描(VS开上百条进程不知道CPU会如何表现),
而PLC在大批数据高级运算字符信息处理通讯等方面编程难度和价位成倍提升,
所以想引入VS控制方式,而多任务执行又成为解决问题的首要问题。
假设系统环境要求如下:
1.此系统有:报警、手动、自动、复位 四种状态
a.报警:系统驱动执行某个任务,而等待N秒后发现此任务还未执行完成,这时候我需要界面提示出来
b.手动:系统在通过界面操作执行某个单独的任务
c.自动:系统复位完成并且无故障时,可以通过操作某个触发机制,上百个工站按照事先编辑好的任务同时执行,而每个工站内依次有若干任务,执行过程中如有执行任务超时需立即暂停所有自动运行任务,自动运行如无故障,单个工站的任务可循环执行,直到按下暂停按钮,所有自动任务暂停执行。
d.复位:系统在没有自动运行而且没有警报的情况下按照事先编辑好的任务依次执行。
系统任务如上所述,PLC执行此类任务毫无压力,而VS编程如何处理多任务刷新小弟暂时还没有完美的方案,还请各位大侠支招,只求思路,执行框架即可。
[解决办法]
写文字比较累,也写不清楚。画图说比较容易。
VB6可以写多线程,但成功的能实用的我一直没见过。
[解决办法]
PLC的"任务"和PC中的"任务"不是一个概念.
PLC中开关一个继电器也算一个任务. 对照PC来说,只是设置一个逻辑变量为0或1而已.
[解决办法]
PLC中的所谓多任务,大多数实际上也是通过扫描来实现的,并不是真正的并行,只有少量高性能PLC使用的是CPLD,FPGA之类的器件,这些才是完全并行,每个逻辑功能都是独立的硬件逻辑门去实现的,当然贵很多.
比如你所说的多IO的判断与执行,普通PLC仍然是扫描所有IO状态然后提交给处理过程去按用户编写的规则进行处理并最终输出结果.
只不过,由于是在硬件级别运行,因此速度方面比起层层封装的PC+WINDOWS系统+应用软件优得多,有些功能甚至还可以使用硬件中断来响应,从人的角度宏观来看,它们的处理是完全并行的,因为PLC可以轻易做到每秒扫描端口100次以上.
而完全并行的PLC,通过对CPLD或FPGA这种器件的编程,可以实现使用硬件逻辑电路实现功能的效率,响应几乎是实时的,比如汽车的ECU中就大量采用类似的器件来实现,但不便宜.
跑远了....
对于你的问题,其实没啥问题的...只需要做一个结构来处理多个任务的计时与状态判定即可.
private type TaskType
TaskID as long '任务ID
StartTime as long '开始时间
FinishTime as long '完成时间
State as long '0=停止,1=执行,2=错误
RunningTime as long '执行时间
TimeOutValue as long '超时时间
end type