您现在所在的是:

电脑编程

回帖:8个,阅读:6668 [上一页] [1] [下一页]
1477
adautomation
文章数:244
年度积分:50
历史总积分:1477
注册时间:2003/5/19
发站内信
发表于:2003/9/4 13:47:00
#0楼
请教各位:如何在计算机里模拟PLC的数百个timer,并且在timer执行中不影响其它程序的执行。软PLC是怎么做到这一点的??????
最恶心的就是日本
1173
Guan_Qing_Xin
文章数:175
年度积分:50
历史总积分:1173
注册时间:2002/8/7
发站内信
发表于:2003/9/4 16:39:00
#1楼
以前试过在DOS操作系统用修改时钟中断向量的办法,让它处理过数十个timer。PC多处资源都要用到该中断向量.占用中断处理的时间太多了也不行.
Windos系统把它封装了.需用支持底层操作的驱动程序,我也想知道.
0
文章数:0
年度积分:0
历史总积分:0
注册时间:0001/1/1
发站内信
发表于:2003/9/4 17:42:00
#2楼
此楼内容不符合板块规定,不予显示! 查看原帖内容>>
1379
deyun
文章数:257
年度积分:50
历史总积分:1379
注册时间:2002/5/27
发站内信
发表于:2003/9/5 10:23:00
#3楼
举例:
unsigned char T01, T02, T03;         // 模拟时间继电器

//
// 定时器1中断子程序
// 功能:
//
void timer1(void) interrupt 3 using 2
{
TH1=0xb8;  // 51单片机,22.1184MHz晶体,10mS中断一次  

/* ----- 扫描模拟时间计时器 ----- */
if(T01!=0)T01--;
if(T02!=0)T02--;
if(T03!=0)T03--;

/* ----- 中断结束返回 ----- */
return;
}

void main
{
 ...
 T01=100;
 ...
 if(T01==0)
 {
  ...
 }
 ...
 return;
}
我不是天才,也不是蠢才。我有一颗上进的心,所以我不怕困难!
欢迎到我的论坛做客:http://www.deyunme.com/bbs/index.asp
1477
adautomation
文章数:244
年度积分:50
历史总积分:1477
注册时间:2003/5/19
发站内信
发表于:2003/9/17 10:59:00
#4楼
其实在很多软plc都实现了这个功能,有哪位高人再指点指点,在windows中如何实现呢
最恶心的就是日本
3798
文曲星
文章数:907
年度积分:49
历史总积分:3798
注册时间:2003/11/6
发站内信
发表于:2004/7/17 21:45:00
#5楼
建议在做个时间的子线程,读取系统的时间,根据时间的变化判断究竟哪个timer触发,对触发的timer发送一个消息过去。
没有测试,不知道稳定性如何
930
景天苏
文章数:11
年度积分:50
历史总积分:930
注册时间:2005/1/31
发站内信
发表于:2005/1/31 16:17:00
#6楼
VC是可以办到的,像文曲星所说,但这样会出现微秒级的误差,这是由于CPU处理其他线程占用时间,而且这个时间的长短以我的经验是不确定的。但我当时还是正么做的。我曾打听过,VC可以精确到更高精度,但我自己没试过。不知对你是否有帮助。
6285
karl 版主
文章数:1703
年度积分:48
历史总积分:6285
注册时间:2003/12/26
发站内信
发表于:2005/2/5 18:43:00
#7楼
是呀,softPLC的timer的确是有微秒级的误差,比起PLC的毫秒级还是强很多。
图
921
lell
文章数:17
年度积分:50
历史总积分:921
注册时间:2002/5/28
发站内信
发表于:2005/3/4 15:50:00
#8楼
对VC 可以我一同事就有

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

93.6006