更新对S7-200Smart的认识4-结尾杂谈

已锁定

holdkcsxyz

西门子1847工业学习平台

  • 帖子

    1803
  • 精华

    22
  • 被关注

    134

论坛等级:至圣

注册时间:2015-06-03

钻石 钻石 如何晋级?

更新对S7-200Smart的认识4-结尾杂谈

4286

40

2021-01-05 19:14:43

star star

更新对S7-200Smart的认识4-结尾杂谈

可能涉及间接寻址,滤波,字符串简单处理等

(一)还是间接寻址 

1:地址==阿拉伯数字编码

      由于VB0;IB0;QB0等地址都是确定的阿拉伯常数,这就足够了;Smart下位机逻辑层面程序可以没有任何关于V区;Q区;I区的任何标志信息, FC接口可以只含有这些区域阿拉伯数字编码地址,局部变量临时缓存L区还是要用来做缓存容器的.

      Smart任何程序接口都可以是如以下例程一样用各个区域纯阿拉伯数字身份证堆叠出来,不过如果没有注释和数据结构接口定义的话则很难读懂.

      很多人谈知识产权保护,这种方式或许也是一个方法。不过一个用甜点Smart做的小项目,无论是工艺复杂度以及功能复杂度很难有太多值得保密的可能性,也难说.

1.1如图切换M0.0的状态轮询调用网络2;网络3的实际效果除了时钟源切换的些许卡顿(如果将时钟源逻辑全扫描几乎无卡顿)外几乎一模一样.


1.2如下图:分享布尔量的延迟滤波函数FC(绝对时钟;相对时钟两种),以前很多工程师都分享过类似功能,主要功能是将一个信号的前沿和后沿都同时扩充一点延时.

以下例程的时序以及空间方面都有考量过,但不一定是时序短,空间优。在CR60上测试OK,可能有错漏,仅供参考.

绝对时钟滤波注释:

函数名称Time_Abs_Bool_Filter也是一个地址所以接口指针尽量不要和函数名重复因此函数接口地址定义成Time_Abs_Bool_FilterP


(1):全局绝对时钟毫秒数277.8个小时后归零,选择十亿作为圈数是因为两个双字时钟毫秒相加值不会超过有符号双字上限且容易在HMI上设置.还可以保证如果原始双字时钟毫秒数不归零符号改变时的逻辑完整.

(2):全局绝对时钟圈数按有符号单字32767可保证1039年不溢出


函数接口定义:

函数接口变量读写

Time_Abs_Bool_FilterP:双字 滤波函数入口指针唯一接口参数               FC读写接口变量  用户接口

公共全局变量只读

时钟毫秒:双字 全局时钟毫秒                                                                 FC只读公共全局    全局时钟

时钟圈数:单字 全局时钟圈数                                                                 FC只读公共全局    全局时钟

时钟圈量:双字 全局时钟每圈毫秒个数量程默认十亿                               FC只读公共全局    全局时钟

滤波数量:单字 全局滤波个数等价FOR循环数                                         FC只读公共全局    用户可设

私有全局变量只读

滤波入点:布尔 待滤波点                                                                        FC只读私有全局    待滤波点

超时设置:双字 滤波毫秒差值设置                                                           FC只读私有全局    用户需设

超圈设置:单字 滤波圈数差值设置应付超过277个小时设置                       FC只读私有全局    用户需设

私有全局变量读写

滤波出点:布尔 已滤波点                                                                         FC读写私有全局    已滤波点

滤波入缓:布尔 滤波入点的上次扫描值                                                     FC读写私有全局    上次缓存

滤波动时:双字 滤波点一到零或零到一切换时的时钟毫秒                          FC读写私有全局    用户不管

滤波动圈:单字 滤波点一到零或零到一切换时的时钟圈数                          FC读写私有全局    用户不管

私有局部变量只读

滤波循缓:单字 临时缓存纯粹由FOR循环指令机制自身                             FOR循环指令负责用户不管 

1.3如下图分享绝对时钟源函数:绝对时钟源函数FC注释:建议在1ms中断OB中调用绝对时钟源函数。

1.4相对滤波采用简单的相对时钟详见以下综合例程。滤波延时/阀门超时等这类应用总不会有超过21亿毫秒以上的相对延时需求的,当然也不一定.

布尔量延时滤波.pdf

终定版布尔量延时滤波(只读数据安排在最后部分)修订验证OK版.PDF

.pdf改.Smart后打开.

FC包含绝对/相对两种延时功能,均可以提取成库,FC严格遵循局部变量先赋值后使用,同时严格考虑全局传局部,局部返全局的时序.

时钟源可以是刻度不均匀的脉冲源,功能变成延后几个脉冲.

貌似私有全局只读变量安排在结构体最后部分更合理些,可以减少一次指针加减运算.



更新对S7-200Smart的认识4-结尾杂谈 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有7477条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。