⑴ ob20和ob30的特点
时间延迟中断组织块OB20的优先级及更新过程映像区的参数需要时间延迟中断组织块OB20的特点
1、在CPU属性中设置,通过调用系统函数SFC32触发执行。
30B号及延迟时间在SFC32参数中设定,延迟时间为1~60000ms,大大优于定时器精度。循环中断组织块的特点
1按设定的时间间隔循环执行,循环中断的间隔时间在CPU属性中设定。
2、每一个OB默认的时间间隔不同默认的时间间隔为100ms,在OB35中的用程序将每隔100ms调用一次,时间间隔可以自由设定,最小时间间隔不能小于55ms。
⑵ plc中怎么设置循环中断时间
简单说说吧: ob1——循环扫描,中断等级最低 ob35
——定时扫描,一般放pid模块等 假定执行ob1的时候,
程序执行一半,此时ob35的定时时间到了
那么ob1就必须把cpu控制权交给ob35
,把ob35的程序执行完成后,
再回到ob1去执行剩下的程序,如此反复
⑶ OB30中断程序,扫描周期怎么在触摸屏上读取写入
OB30中断程序,扫描周期可以直接在触摸屏上读取写入
循环中断组织块OB30~OB38按设定的时间间隔循环执行, 循环中断的间隔时间在CPU属性中 设定,每一个OB默认的时间间隔不同,例如)B35默认的时间间隔为100ms,
⑷ 西门子plc中的ob模块都是实现什么功能的
ob模块:组织块,英文名Organization block。组织块是CPU系统和用户程序之间的接口,可以在CPU上电启动时调用,也可以循环调用,也可以在PLC发生错误时候调用。
OB组织块是当新建一个程序时,系统会自动建立一个Main[OB1]程序,该程序会在PLC的每个扫描周期被调用。
Main程序和200里面的主程序,是一个同样的概念。也类似于C里面的Main ,即为函数入口点,可以在Main程序里面调用各种函数和块。
OB块主要用于程序循环、启动、延时中断、循环中断、硬件中断、HSC中断、诊断错误和时间错误八大事件。OB块还有两个属性是编号和优先级,优先级越高,中断级别越高。在同样的优先级别,OB编号越小,越优先执行。
(4)循环中断OB30程序怎么写扩展阅读:
西门子plc s7-300检修工艺及技术要求
(1) 测量电压时,要用数字电压表或精度为1%的万能表测量
(2)电源机架,CPU主板都只能在主电源切断时取下;
(3) 在RAM模块从CPU取下或插入CPU之前,要断开PC的电源,这样才能保证数据不混乱;
(4) 在取下RAM模块之前,检查一下模块电池是否正常工作,如果电池故障灯亮时取下模块RAM内容将丢失;
(5) 输入/输出板取下前也应先关掉总电源,但如果生产需要时I/0板也可在可编程控制器运行时取下,但CPU板上的QVZ(超时)灯亮;
(6) 拨插模板时,要格外小心,轻拿轻放,并远离产生静电的物品;
(7) 更换元件不得带电操作;
(8) 检修后模板安装一定要安插到位
⑸ 怎么理解S7-300里面OB1的临时变量上一次扫描的运行时间
PLC的扫描周期与CPU的主频和程序的大小有关。是不可以修改的。根据程序的大小 ,扫描周期在几个毫秒到100个毫秒之间。 你的采样频率为30000/H也就是1秒有8.3个脉冲。我们按9个脉冲算。这样的话,你的CPU必须在1秒内运行18个周期才可以完全统计这些脉冲。也就是扫描周期要在55毫秒内。 因为CPU运行要处理各种事件,每一次的扫描时间也不尽相同。因此才会有脉冲不相同或漏计现象。 要解决这个问题有以下办法: 采用高速计数模块。 采用带输入中断的DI模块。用上升沿中断计数。 在程序中采用定时中断。OB30-OB38为循环中断。将其中一个OB的时间改成你的需要的时间。比如将OB37改成40ms.然后将计数程序移入OB37.但需要注意,不可再直接使用缓冲区的地址。因为这个地址的状态更新时间受扫描周期的影响。你需要直接读通道地址的状态。比如你的通道地址为I1.0。则正确的方法为: L PIB1 T MB1 然后你在OB37中对M1.0计数即可。 以上为个人建议,不足之处请指教。 PLC的扫描周期与CPU的主频和程序的大小有关。是不可以修改的。根据程序的大小 ,扫描周期在几个毫秒到100个毫秒之间。 你的采样频率为30000/H也就是1秒有8.3个脉冲。我们按9个脉冲算。这样的话,你的CPU必须在1秒内运行18个周期才可以完全统计这些脉冲。也就是扫描周期要在55毫秒内。 因为CPU运行要处理各种事件,每一次的扫描时间也不尽相同。因此才会有脉冲不相同或漏计现象。 要解决这个问题有以下办法: 采用高速计数模块。 采用带输入中断的DI模块。用上升沿中断计数。 在程序中采用定时中断。OB30-OB38为循环中断。将其中一个OB的时间改成你的需要的时间。比如将OB37改成40ms.然后将计数程序移入OB37.但需要注意,不可再直接使用缓冲区的地址。因为这个地址的状态更新时间受扫描周期的影响。你需要直接读通道地址的状态。比如你的通道地址为I1.0。则正确的方法为: L PIB1 T MB1 然后你在OB37中对M1.0计数即可。 以上为个人建议,不足之处请指教。
⑹ 这个定时器中断程序怎么编写
#include<reg51.h>
#defineucharunsignedchar
ucharsec,cnt;
sbitfmq=P1^0;
voidt0isr()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
cnt++;
if(cnt>=20){cnt=0;sec++;P0=~sec;if(sec>=60)sec=0;}
if((sec%10)==0)fmq=0;
elsefmq=1;
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}
⑺ 汇编 中断处理程序怎么写
mov di,2000
delay:
mov si,3000
delay1:
dec si
jnz delay
这段就是main process
改成你要的判断
还有也不要用21h了,换个保留的中断号就行了
⑻ 如何用西门子PLC300累计一台水泵的运行时间
我也来做一个
首先做一个做一个FC功能,我做了复位功能,而且天、时、分、秒都做了,想要年自己也可以做年的,原理都是一样的,建局部变量
in-out:分别是秒、当前值、分、时、天
5.创建背景数据块,每个地址与上位机一一对应
⑼ 西门子S7300 OB35循环中断功能块的问题
OB35循环中断组织块,按硬件组态中设置的时间间隔周期性执行。里边不写程序很正常,可理解就像你新建了一个FC块并且在OB1中调用但FC里边什么都没写一样,这说明没有用的需要用OB35周期性执行的功能(一般情况下PID功能块在OB35中调用)。你这里的“PLC指令执行时间”应该是说OB35中所写的PLC指令执行时间,这个时间不能大于OB35的周期。这样就是说OB35中的程序都还没执行完又到了调用OB35的时候了,想想都会有问题吧!!
⑽ 中断程序怎么写
一、中断服务程序,处理器处理“急件”,可理解为是一种服务,是通过执行事先编好的某个特定的程序来完成的,这种处理“急件”的程序被称为——中断服务程序。
二、当中央处理器正在处理内部数据时,外界发生了紧急情况,要求CPU暂停当前的工作转去处理这个紧急事件。处理完毕后,再回到原来被中断的地址,继续原来的工作,这样的过程称为中断。
三、实现这一功能的部件称为中断系统,申请CPU中断的请求源称为中断源,单片机的中断系统一般允许多个中断源,当多个中断源同时向CPU请求中断时,就存在一个中断优先权的问题。通常根据中断源的优先级别,优先处理最紧急事件的中断请求源,即最先响应级别最高的中断请求。
四、保护被中断进程现场。为了在中断处理结束后能够使进程准确地返回到中断点,系统必须保存当前处理机程序状态字PSW和程序计数器PC等的值。
五、分析中断原因,转去执行相应的中断处理程序。在多个中断请求同时发生时,处理优先级最高的中断源发出的中断请求。恢复被中断进程的现场,CPU继续执行原来被中断的进程。