这篇文章为大家介绍如何利用200SMART编程软件的间接寻址功能来读取不同配方号的数据,根据不同的配方来生产不同的产品。
下面以一个生产不同口味面包的配方为例,向大家介绍程序的编写及测试结果。
01 所需软件及硬件
西门子200SMART编程软件V2.7版,200SMARTST30 CPU一台,通信网线一条。
02 程序编写
1、配方数据录入
实际生产中配方的数据已经定好,我们可以在编程软件的数据页中将这些数据输入到相应的变量地址中,如下图1所示,输入的是四种口味面包的数据,分别是糖份、水分、面粉和盐份,当然这些只是举例,不是实际的面包生产配方。
▲图1▲
2、配方处理子程序
将默认的SBR0子程序重命名为配方处理,建立一个带参数的子程序。
在变量表中建立相应的接口参数,程序编辑区编写配方处理程序,如下图2、3所示:
▲图2▲
▲图3▲
3、子程序解读
打开200SMART编程软件,如上图3所示,网段程序为建立指针,将VB0的物理地址传送到指针中去;第二网段程序为根据配方编号的不同,将指针指向不同的配方数据的首地址;第三网段为将选中配方的数据批量传送到配方显示地址区域。
需要注意的是:配方显示地址的首地址也要建立指针,该形参的类型必须定义为IN类型,否则选中的配方数据无法正确传送到该地址区域。
4、主程序编写
主程序编写相对简单,主要是在程序运行初期初始化一些变量、限定配方号数值、根据配方的选择激活调用配方处理子程序的位变量M0.0以及子程序执行完以后复位相关变量。
如下图4所示:
▲图4▲
03 测试效果
将程序下载到PLC中,选择在线监控,在状态图表中输入需监控的变量地址,将不同的配方编号写入VD0中,大家和图1的配方数据比较,可以发现数据是完全一致的。
监控视图如下图5所示:
▲图5▲
巧妙地利用200SMART的间接寻址功能,可大大简化程序的编写工作量,配方数再多、配方数据再长,只要不超过PLC的存储容量和扫描周期的长度,均可用这个案例程序来处理。配方子程序的后那段采用批量传送指令也很巧妙,不必使用FOR循环指令传送,也简化了程序编写。