说实话,一开始我和其他人一样,并没有认真对待模拟量。
我现在做的就是将LBP架构从S7-1500移植到S7-1200,然后移植到SMART 200+KTP触摸屏。我制作了其他块,但我不关心模拟值。我心想我已经有了80个模拟值的标准答案套路,所以没必要在这方面花更多的时间。需要的时候可以随时拿出来,很快就能使用常规程序。
因此,我不再局限于模拟量,而是想开始移植PID 块。
但我感觉我不知道从哪里开始。那些参数值设置和操作值的处理是完全不敏感的。不知道LBP的PID块如何解耦,哪些部分应该改为SMART自己控制,哪些部分应该借用。
所以我决定先完善模拟部分!
然而,当我开始做之后,我发现其实问题最多。
当然,这里提到的问题并不是说我原来做的80模拟例子是错误的,或者不够完善,或者没有标准答案。
那里显示的只是调用过程。
我现在做的是FB块的处理。例子中使用的模拟处理程序块的功能还是太简单了。
它反对使用物理单位作为参数并且必须在操作期间或在触摸屏上的设计模式下修改它。然而,即使去掉该单元,处理模拟量的参数仍然很多。
LBP程序块简化后,其需要的参数为:
SP_rangeBegin 量程下限SP_rangeEnd 量程上限SP_limitAH 高报警SP_limitWH 高报警SP_limitWL 低报警SP_limitAL 低报警SP_timeout 超时时间SP_hysteresis 迟滞间隔其中前两位用于校准量程范围,3-6 用于确定触发报警、7-8用于响应报警迟滞处理。
有些人可能会发现简单地校准测量范围很乏味。把事情弄得这么复杂有意义吗?
是的,如果你只是把控制任务落实到了入门阶段,一切都很好,当有人提出整改建议时再重点整改,那就真的没关系了。
但如果希望有一个可以一劳永逸实施的标准化设计,就需要提前想到客户可能提出的所有疑难问题并提前处理,因此需要在设计中做好一些准备。进步。多做总比不做要好。做了而不用,总比用的时候发现没有对应的功能需要临时打补丁要好。
比如测量范围,如果设备在运行过程中需要校准,那么就会要求你制作参数。而如果系统中存在模拟量不仅用于显示,还参与逻辑判断,那么大多数情况下都需要比较极限值,然后进行逻辑处理,那么就需要极限值参数和迟滞参数。即使系统中只需要几个模拟量,我们也应该尽力将它们全部实现,这就是标准化。
一方面,这些参数值需要在运行过程中修改,另一方面,不可能指望下载程序后将所有参数都输入到运行屏幕中。理想情况下,参数需要有一个初始值。这个初始值可能不准确,可能达不到最终设备运行所需的参数,但至少接近十个,大致可用。比开机时全0、全报警提示要好得多。
有过软件开发经验的程序员都应该明白一个常识:所有软件安装后都必须有一个初始配置。例如,微信软件安装后,会有基本的字体和颜色,但可以自定义设置。
对应工业系统和工业设备,也存在同样的需求。
不过,对PLC编程有一定了解的人都会知道,这件事并不是那么容易的。例如,如果调用时将参数值赋给FB的IN引脚作为初始值,则在运行过程中无法再修改。除非你修改了程序源代码,完全重新下载程序。
而如果不设置实际参数,那么就会有一个统一的初始值,大多为0。而且,FB的多个实例都有同一套初始值配置。
因此,要同时具备上述功能,上述参数值实际上需要2组,分别对应上述功能。那么程序第一次运行时,先使用初始值,然后在运行过程中可以修改这个值。
对于模拟信号来说,以下3-8项的重要性较低,甚至可以统一设置。比如限制值分别设置为90%、80%、20%、10%,几乎是一样的。
但测量范围的上限和下限只能分为2组。
由此,我在SMART 200中规划的模拟函数库的变量接口表:
这是极端的简化,没有进一步简化的余地。
但是我们看到最后一个变量的地址是LD55,即使用了LB58,已经接近SMART子程序的上限了。只剩下一个字节,LB59。
也就是说,地址空间已经用完,没有更多的可用空间。
问题就出现在这里。
我按照LBP的架构功能实现了逻辑。其中,LOG15功能记录设备的运行记录。当触摸屏最终显示该记录时,需要该记录的地址指针。它应该是一个DWORD,最初是在L1层生成的,需要输出到其OUT引脚。外层使用该引脚来获取地址。
但是由于SMART 200的资源限制,我很穷,接收这个地址的程序块中没有TEMP变量。
所以我只好暂时使用MD20变量。
对我来说太难了!
由于LBP没有考虑到这部分的功能,所以多余的逻辑需要自己实现。
有人会担心我在子程序块中使用M变量,会不会导致错误,导致程序块无法重复调用。这没什么好担心的。因为无论使用多少个对象实例,同一个变量在使用后都会丢失,没关系。
有些人还会指责我违反了在PLC编程中不使用全局变量的承诺。是的,我在这里也感觉不舒服!
如果不认真的话,整个程序中只用一处M量也没什么坏处。如果你是认真的,以后可以尝试想办法保存和恢复场景。
也就是打补丁来处理。
审稿人:刘庆