西门子 [S7-300]Step7 FC功能中的Temp变量的学习

西门子[s7-300]start和driver是外部输入输出接口。
例:如果在temp接口中新建一个变量a,数据类型为bool,地址0.0
1,正确的fc程序如下:
| #start #a
|--| |---------()
|
| #a #driver
|--|/|---------()
2,错误的例子:
| #a #driver
|--|/|---------()
|
| #start #a
|--| |---------()
分析:
程序的扫描是从上到下。s7 fc中的接口tmep中的变量必须遵守:先赋值后使用的原则。
1、程序,当start的值从0变为1,a也将从0变为1。扫描到一段程序时,因为a的值已经发生改变,程序将成功扫描到a的常闭触点从1变为0,那么driver线圈将成功得从原来的1改变为0。
2、程序,因为扫描到一段程序的时候cpu没有发现a的值改变。之后a值将一直保持不变,即使start的值从0变为1,a值也不会发生改变;结果是程序没有反应。
下面是大家的一些心得体会
西门子这一点比其他的plc都灵活,fb的db作为fb的变量的固定存放地址,而temp则是有系统分配临时区l地址。
比如:存在fc1,fc2两个功能,它们都有两个temp,那么当调用fc1时,系统分配l区域地址给fc1的temp,如分配了lb0,lb1,那么当fc1调用完成后,系统认为lb0,lb1已经不需要,但是西门子的系统不会对临时区进行清零,只是继续分配,当调用fc2时,系统将lb0,lb1重新分配给fc2的temp,此时如果不遵循先赋值后使用的准则,那么fc2的temp使用的值将是fc1的temp的值。
临时变量可以用于所有块中 (ob, fc, fb)。当块执行的时候它们被用来临时存储数据,当退出该块时这些数据将丢失。因此, 在plc扫描运行时, fc块中的临时变量temp不能自锁!
temp变量不能自锁的原因显而易见:
每个扫描周期开始时,temp变量的值并不像q或m那样可以保持上个周期的值。除非明确对其赋值,否则它的值是不确定的。
我使用temp只有一个原则:
一次出现某个temp变量,必须是对其赋值(或线圈刷新)的写指令,而不能是读指令。
如果出现问题,建议使用stat变量替代。
对temp的认识都有问题!
我的建议是做逻辑不用temp,只在做运算是用temp,会省去很多麻烦

利用NMT筛选抗xinguan肺炎药物的研究方案 | 底层核心技术
苏丹空运-中国到苏丹空运价格
国家中医药管理局关于印发“十四五”中医药信息化发展规划的通知
出口设备报关一站式代理服务
做货代最怕坏帐,货代人控制坏账十条准则!
西门子 [S7-300]Step7 FC功能中的Temp变量的学习
网络广播优点
小型数控铣床有什么特点
海运到乌克兰这个港口一定要注意 报关不准确可能会遭重罚!
怎样对烘干机故障做检查
植物提取丹参技术优点
UV光照射老化测试箱
检测电线电缆拉力的仪器介绍
树脂干燥为什么用微波设备呢
进口马来西亚榴莲清关为大家讲解3大重要内容
论农村生活污水处理设备在水资源充分利用中的重要性
rcl船公司货物跟踪查询(rcl国际海运开通航线)
国际快递速度受什么影响?(影响快递时效的因素有哪些)
哥德堡港开发邻近的物流产业
气动调节阀使得管道系统提升层次