如果外部中断太多、太频繁,可能导致MCU陷于中断程序中,无法执行主程序以及其它中断程序,导致控制器无法及时响应,造成假死现象,影响客户体验,甚至影响控制器的功能。
因此,我们在设计时参照此兄SDS的要求做了以下的规定:
要求
1) 不允许外部输入造成CPU的中断。
2)如果必须要使用外部中断,必须满足以下条件:
输入信号必须用硬件的低通滤波器进行过滤,比如通过R、C滤波电路进行过滤。
根据控制器定义的功能,确定输入信号在最坏情况下的最大频率,将硬件低通滤波器的截止频率设计为比该频率高5%。
当输入信号的频率高于硬件低通滤波器的截止频率时,输入信号仿袭不应该让MCU产生中断。
当输入信号的频率为硬件低通滤波器的截止频率时,MCU处理输入信号产生的中断所处理的时间加上其它所有中断所花费的时间,不应该高于中断产生的最小周期的30%。
R、C滤波电路
设计实例
比如,我们在给客户定制的一款控制器中,用了主、从两个MCU,从MCU通过单线通信将数据发送给主MCU,其中用到了IO口的电平变化中断。
其中,bit 1用大概256us的脉宽表示,bit 0用128us的脉宽表示。
考虑到主、从MCU的时钟偏差以及器件的公差,bit 0的最短脉宽考虑为128us*0.5=64us,则最高频率为15.625kHz。根据计算,用于滤波的R、C低通滤波器的R阻值为5.1K,电容为12.5nF,选择103的电容。
当输入信号为频率超过15.625kHz的方波信号时,MCU不应该产生电平变化中断。
当输入信号为频率15.625kHz的方波信号时,
MCU处理电平变化中断的时间,经实际测试为5.1us ,中断周期为62.5us,即每隔62.6us中断一次。
此外还有100us的定森大袭时器中断,处理花费4us,中断周期为100us,即每隔100us中断一次。
串口接收中断花费7us,最高支持115200bps的波特率,中断周期约为86.8us,即每隔86.8us中断一次。
串口发送中断花费6us,最高支持115200bps的波特率,中断周期约为86.8us,即每隔86.8us中断一次。
当所有中断同时发时的,MCU处理花费的总时间为5.1us+4.0us+7us+6us=22.1us。
总处理时间/最小中断周期=22.us/62.5us=35%,勉强满足要求。
在plc s7200 modbus通信中,存在错误代码6。解决方案是让每个mbus-msg指令依次唯则旋转。在执行一个MbUsIMSG指令指歼棚之后,它将改谨激活MbUsIsMSG指令的位重置,并激活下一个MBUBIMSHG指令。
在用户程序的执行阶段,PLC总是从上到下依次扫描用户程序(梯形图)。扫描梯形图时,首先先扫描梯形图左侧的触点组成的控制电路,然后按左、右、上、下顺序对触头构成的控制电路进行逻辑运算。
然后,根据逻辑运算的结果,刷新系统ram存储区中逻辑线圈对应位置的状态;或者刷新i/o图像区中输出线圈对应位置的状态;或确定是否执行梯形图中指定的特殊功能指令。
特赦
扩展资料:
西门子PLC的检修要求:
1、在取下RAM模块之前,检查一下模块电池是否正常工作,如果电池故障灯亮时取下模块RAM内容将丢失;
输入/输出板取下前也应先关掉总电源,但如果生产需要时I/0板也可在可编程控制器运行时取下,但CPU板上的QVZ(超时)灯亮;
3、拨插模板时,要格外小心,轻拿轻放,并远离产生静电的物品;
4、更换元件不得带电 *** 作;
5、检修后模板安装一定要安插到位。
参考资料来源:百度百科-收藏 366 64 西门子PLC
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)