数据记录SCL编程
前一段时间,公司同事到我这里来想我做几个小程序功能,一个是数据记录,就是说当需要记录数据时,启动一个记录数据的条件,然后将数据记录在一个数据区域,带数据记录满了存储区,需要的记录数据满的提示输出,同时,记录的数据区是重复使用的,也就是说数据区一旦记录满后的下一个数据,将会覆盖第一记录的数据地址中。另外一个问题是,需要计算一个字内(16位数据的奇和偶数)的和,与1做“与”计算,这个帖子暂时不展开验证。
编程思路,首先需要创建一个数据块的数组,为说明问题,验证中创建10个INT数据,当启动数据记录开始时,通过数据数组的下标数据,实现数据地址的偏移,当数据记录大于10个时,输出数据记录满的输出提示。
程序:
1) 打开portal软件创建一个测试项目,新建一个FB1作为数据记录函数块,定义可能需要的外部接口变量,图示:

2) 因为需要做一个数据记录的传送触发信号,此处创建一个输入上升沿脉冲,作为数据记录的触发条件,然后,利用这个脉冲给数据传送的变量地址偏移做下标偏移,图示:

3) 创建一个数据块,DB1,新建需要测试的数据,图示:

4) 在OB1中调用FB1,编译没有错误后,启动仿真器验证,图示:

打开测试必要的数据块监控数据记录情况。
在源数据侧写入数据“10”,启动数据传送控制位 = 1.
数据被准确记录在事先定义好的数据数组的第一个地址中。
5) 再次将源输入数据值由10变更为20,用于区别,再次触发数据传送,图示:

第二个数据也被记录进来了,连续测试了10多次,数组下标能够重新覆盖,达到原编程思路要求,将这个测试程序发给同事,让同事根据自己的需要着情修改后调用,也将这个程序分享给大家。