西门子电机授权总代理
第二个事,就是我上面说的模块化编程,我的描述不是很准确,因为是自己的这个意思就是我们平常讨论说的,把所有功能都写到一个块里,去调用整个块。FC可以干这个事(当然,FB也可以干,区别后面说),新建好FC,确定好输入,输出接口,编写逻辑,一个FC就搞定了。大家可以写一些简单的功能,来感受下FC。写好FC之后,在主程序OB1或者其他FC里就可以调用该块,程序界面右边“FCBLOCK”里就有该块,相信做到这里的话大家都应该知道怎么做了。我这里要说明其他问题。关于FC的编写,这里就不得不说一些概念性的东西,FC是不带背景数据块的,就这句话。因为FC是不带背景数据块,我们在调用FC时,关于FC这些逻辑的计算完全靠的是我们输入输出接口上的这些地址位,给FC提供数据来源。我们在编写FC的时候,需要注意的是,如果需要中间变量,考虑使用temp,临时变量满足需要。使用临时变量需要注意的是,在一个周期没有完成扫描时,A段程序调用FC1,使用了临时变量X,改变了其值。那么B段程序调用FC1时,X的值已经被改变了。在下个周期,才会释放。这点要非常小心。这就是跟FB无法比的,没有地址来存放数据。编程的时候,尽量多考虑使能。同样,M寄存器也要慎用,比如,你FC里用了M2.0这个位表示中间状态。现在次调用FC时,改变了M2.0的值,为ON。现在又第二次调用FC,M2.0的值已经为ON了,显然这不是我们想要的。你调用了两次,分别赋了两组输入输出变量,你FC内的M终究是内存里的那个
浔之漫智控技术(上海)有限公司(xzm-wqy-sqw)
是中国西门子的合作伙伴,公司主要从事工业自动化产品的集成,销售和维修,是全国的自动化设备公司。
公司坐落于中国城市上海市,我们真诚的希望在器件的销售和工程项目承接、系统开发上能和贵司开展多方面合作。
以下是我司主要代理西门子产品,来电来函咨询,我们将为您提供优惠的价格及快捷细致的服务!
M,你调用无数次都是跟这个M打交道。不知道我说清楚了没。一般不要用这样呀的中间变量,一定要用时,多考虑通过使能来改变调用时序。同样,像定时器啊什么的,如果我们要使用,都需要定义一个in接口,为FC内的定时器提供一个实实在在的通道。次调用,我们用T21输入。第二次调用,我们用T22输入。这样就不会出错。否则就会像M那样出错。这个部分很重要。如果没听懂,不要紧。继续听FB。两个比较下,应该就很更清楚了循环硬件中断也叫过程中断,由外部设备产生,例如功能模块FM、通信处理器CP及数字量输入、输出模块等。通常使用具有硬件中断的数字量输入模块触发中断响应,为每一个模块配置相应的中断OB(一个模块只能良一个中断OB,S7-300系列PLC CPU只能触发硬件中断OB40),在模块配置中可以选择输入点的上升沿、下降沿或全部作为触发中断OB的事件。配置中的中断事件出现,中断主程序,执行中断OB中的用户程序一个周期,跳回中断处继续执行主程序。使用中断与普通输入信号相比,没有主程序扫描和过程映像区更新时间,适合需要快速响应的应用。用于处理PROFIBUS-DP V1等时钟同步,从采集各个从站的输入到逻辑结果输出,需要经过从站输入信号采样循环(信号转换)、从站背板总线循环(转换的信号从模块传递到从站接口)、PROFIBUS-DP总线循环(信号自从站传递到主站)、程序执行循环(信号的程序处理)、PROFIBUS-DP总线循环(信号从主站传递到从站)、从站背板总线循环(信号从从站接口传递到输出柜块)及模块输出循环(信号转换)7个循环,时钟同步中断将7个循环同步,优化数据的传递并保证
如果输入模块中的一个通道触发硬件中断,操作系统将识别模块的槽号及触发相应的OB,中断OB执行之后发送与通道相关的确认。在识别和确认过程中,该通道触发的中断事件将丢失;如果模块其他通道触发中断事件,中断不会丢失,在当前正在运行的中断确认之后触发;如果是不同的模块触发的中断事件,中断请求被记录,中断OB在空闲(没有模块其他通道的中断请求)时触发。通过调用SFC39~SFC42系统函数可以禁止、延迟、使能硬件中断的调用中断组织块OB30~OB38按设定的时间间隔循环执行,循环中断的间隔时间在CPU属性中设定,环中断组织块OB30~OB38按设定的时间间隔循环执行,循环中断的间隔时间在CPU属性中设定,每一个OB默认的时间间隔不同,例如)B35默认的时间间隔为100ms,在OB35中的用程序将每隔100ms调用一次,时间间隔可以自由设定,小时间间隔不能小于55ms。OB中的用户程序执行时间必须小于设定的时间间隔,如果间隔时间较短,由于循环中断OB没有完成程序扫描而被调用,从而造成CPU故障,触发OB80报错,如果程序中没有创建OB80,CPU进入停止模式。通过调用SFC39~SFC42系统函数可以禁止、延迟、使能循环中断的调用。循环中断组织块通常处理需要固定扫描周期的用户程序,例如PID函数块通常需在循环中断中调用以处理积分时间的计算每一个OB默认的时间间隔不同,例如)B35默认的时间间隔为100ms,在OB35中的用程序将每隔100ms调用一次,时间间隔可以自由设定,小时间间隔不能小于
55ms。OB中的用户程序执行时间必须小于设定的时间间隔,如果间隔时间较短,由于循环中断OB没有完成程序扫描而被调用,从而造成CPU故障,触发OB80报错,如果程序中没有创建OB80,CPU进入停止模式。通过调用SFC39~SFC42系统函数可以禁止、延迟、使能循环中断的调用。循环中断组织块通常处理需要固定扫描周期的用户程序,例如PID函数块通常需在循环中断中调用以处理积分时间的计算硬件中断也叫过程中断,由外部设备产生,例如功能模块FM、通信处理器CP及数字量输入、输出模块等。通常使用具有硬件中断的数字量输入模块触发中断响应,为每一个模块配置相应的中断OB(一个模块只能良一个中断OB,S7-300系列PLC CPU只能触发硬件中断OB40),在模块配置中可以选择输入点的上升沿、下降沿或全部作为触发中断OB的事件。配置中的中断事件出现,中断主程序,执行中断OB中的用户程序一个周期,跳回中断处继续执行主程序。使用中断与普通输入信号相比,没有主程序扫描和过程映像区更新时间,适合需要快速响应的应用。
FB,功能块。可以干的事,就是FC能干的第二个事。只能干这个事,为什么要特别些呢,干嘛不让FC一个人搞定就行了。是因为FB功能更强悍些,每次调用他都需要一个DB来供他为逻辑计算存放数据。而不像我之前说的FC,需要输入输出接口地址来作为数据来源。每次调用FB时,需要指明一个DB,两个相互配合。而DB中