公司主营:数控系统,S7-200PLC S7-300PLC S7-400PLC S7-1200PLC 6ES5 ET200 人机界面,
变频器,DP总线,MM420 变频器MM430 变频器MM440 6SE70交流工程调速变频器
6RA70直流调速装置 SITOP电源,电线电缆,数控备件,伺服电机等工控产品.欢迎致电咨询。
上海西皇电气设备有限公司
联系人:李工
咨询热线:15901795805
邮箱:158311669@qq.com
传真:021-57358110
咨询QQ:158311669
公司大量现货!!!
上海西皇电气设备西门子代理商库存大量西门子PLC,产品种类、型号齐全,涵盖了西门子200系列PLC、西门子300系列PLC及其EM221模块、EM222模块、EM223模块、EM231模块、EM232模块、EM235模块、PPI电缆、MPI电缆、5611卡、SM321、SM322、SM323、SM331、EM332模块等,S7-200系列主机包括CPU224CN、CPU226CN、CPU224XP,S7-300系列主机包括CPU312、CPU313、CPU314、CPU315-2DP等,价格低,交货速度快。
近日负责的项目中,应用西门子1200PLC,要求周期性的记录系统中流量传感器测得的流量值,由于我所应用的触摸屏记录功能太差,所以准备在PLC中记录下来。现在初步的设想是,每100ms执行一次MOV指令,将测得的流量工程量写入一段连续的地址里.假设MD20为流量测得值 **个周期执行 MOV MD20 MD100
第二周期就执行MOV MD20 MD104
下一周期就是MOV MD20 MD108 就是想实现这样一个功能,我也想过用数组记录,
如MOV MD20 ARRAY【1】 然后依此类推。
但,如何来实现却想不明白,在1200里指针是怎么定义的,怎么应用的,能不能这样寻址:MD【MD10】
答: TAG_1控制数组的指针,采集的数据送入TAG_2,数据保存在Static_1数组中。
一、控制指针偏移**值
1、在OB中放入CPM=指令来比较实际指针是否到达**偏移量。
2、在OB中放入MOV指令并给TAG_1赋0。
当偏移量到达数组的**深度时,执行MOV指令,指针归零。
二、在数组中保存数据
1、新建一个全局DB,在全局DB中再新建一个数组Static_1,Array [0..1000] of Real数组的大小根据你数据采集量而定,注意数组小于指针**偏量时会产生保存出错;数组中的数据类型根据数据宽度确定是REAL或是LREAL,我这里用的是REAL。
2、在PLC变量表中声明变量TAG_1其数据类型为DINT,声明变量TAG_2,其数据类型也要与数组的数据类型相一致;
3、在OB中放入FieldWrite指令块,选择该指令块的数据类型也要与数组的数据类型相一致;
4、将变量TAG1赋给INDEX端口,将变量TAG2赋给VALUE端口,将数组的Static_1[0]拖放给输出MEMBER端口;
三、数组指针偏移
1、在OB中放入INC指令,选择该指令块数据类型为DINT(与TAG_1数据类型一致)
2、将TAG_1拖入IN/OUT端口,并赋常数值1。
3、每保存一次数据执行一次INC指令。
在线状态下做了数据模拟,抓图如下:
定时保存数据程序我就省略了。