最难还是模拟量

说句实话,一开始,和大家一样,我对模拟量是不太当回事的。
我现在正在做的把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一个byte了。
即地址空间已经用光了,再无空间可用了。
问题就出现在了这里。
我按照lbp的架构功能实现的逻辑,其中有log15功能记录了设备的运行记录,最终触摸屏显示这个记录时, 需要这个记录的地址指针。 应该是一个dword, 原本是在l1层中生成的,需要输出到其out管脚, 外层使用这个管脚获得地址。
然而因为smart 200的资源限制,我已经穷困到程序块中接收这个地址的temp变量都没有了。
所以迫不得已,我只好暂时先用了一个md20的变量做了传递。
我实在是太难了!
因为这一段的功能,是lbp也尚未考虑到的,所以多出来的逻辑还是自己再想办法实现的。
有人会替我担忧我在子程序块中使用了m变量,是否会带来错误,会导致程序块不能被重复调用。 这完全不必担心。 因为再多的对象实例, 使用的同一个变量,用过就丢了,无所谓。
也会有人指责我违背了自己承诺的plc编程不使用全局变量的规则。 没错,我这儿也难受着呢!
如果不较真,整个程序中仅次一处使用m量,也不伤大雅。 如果较真,以后可以再看看想办法做个场景保存和恢复的功能。
即,打一个补丁处理一下。


给自己100个不运动的理由!
自恢复保险丝产品参数中Ih和It之间有何关系?
LED视频处理器是怎么工作的,你知道吗?
海尔智慧家庭标准大事记
华为2019年预计业绩公布 手机发货量超过2.4亿台
最难还是模拟量
变压器常用的接线方式
苹果A14处理器对台积电5nm工艺产能利用率下滑
用STK4044制作高保真功放电路原理图
恩智浦与Cohda无线签署CAR 2 CAR通信联盟“谅解备忘录”
新思科技宣布开启网络安全计划
LCD电路及高速ADC+FPGA+ DSP的设计方案介绍
iPhone8最新概念图:摄像头隐藏在logo里,颜值超高!
人工智能能否取代人类
LoRa技术未来发展前景:物联网和边缘计算的引领者
纳米机器人有多大_纳米机器人的制造原理是什么
TI的快充MaxCharge对上高通和联发科,结果如何
一文读懂手机中框平面度检测
中国欧洲的新能源汽车及动力电池即将迎来全球共享红利时代
86142B 安捷伦Keysight 86142B高性能光谱分析仪