热门搜索:
西门子6ES71944CA000AA0
上海朕锌电气电气设备有限公司
SIEMENS西门子更新对S7-200Smart的认识4-结尾杂谈
可能涉及间接寻址,滤波,字符串简单处理等
(一)还是间接寻址
1:地址==阿拉伯数字编码
由于VB0;IB0;0等地址都是确定的阿拉伯常数,这就足够了;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读写私有全局 用户不管