? 22? mcgsTpc 中级培训教程 3)将得到的数据解析并赋值给配方成员,用于显示与修改。 ? “上移一条”按钮的按下脚本编辑如下:
if offset = 0 then exit
if (offset >= 6) then offset = offset – 6
!SetDevice(设备0,6,\,offset,[WUB][WUB][WUB],1,设备字符串)\ a = 1 b = 1
b = !InStr(a, 设备字符串, \
面粉 = !Val(!Mid(设备字符串, a, (b -a)))
a = b + 1
b = !InStr(a, 设备字符串, \
水 = !Val(!Mid(设备字符串, a, (b - a)))
糖 = !Val(!Mid(设备字符串, (b + 1), (!Len(设备字符串) - b)))
脚本的意义为:
1)在规定的范围内,将PLC地址以一组配方数据的长度为单位向前移动。 2)读取PLC存储器中偏移量位置的配方数据。
3)将得到的数据解析并赋值给配方成员,用于显示与修改。 ? “修改PLC配方数据”按钮的按下脚本编辑如下:
设备字符串 = !StrFormat(\面粉, 水, 糖)
!SetDevice(设备0, 6, \,offset,[WUB][WUB][WUB], 1, 设备字符串)\
脚本的意义为:
将当前面粉、水、糖的数值按规定格式写入到PLC配方数据存储区中,即修改配方。 ? “下载配方数据到PLC”按钮的按下脚本编辑如下:
设备字符串 = !StrFormat(\面粉, 水, 糖)
!SetDevice(设备0, 6, \,100,[WUB][WUB][WUB], 1, 设备字符串)\
脚本的意义为:
将当前面粉、水、糖的数值按规定格式写入到PLC的特定存储区中,特定存储区存储选择使用的配方。 注:当配方对应的实时数据库中变量名称有序时,可利用批量读写设备命令,来实现数据操作,无须解析字符串。
例如:我们将Data1,Data2,Data3看做面包配方的面粉,水,糖三个变量,则可以用批量读写函数ReadPV,WritePV来进行查看和修改配方操作。
!SetDevice(设备0,6,\,offset,WUB,3,Data1, nReturn)\
第三章 配方功能 ? 23? 表示读取V寄存器从地址offset开始的3个16位无符号二进制数值,放入MCGS变量Data1为起始,连续3个变量(即: Data1,Data2,Data3) 中, 执行是否成功通过nReturn返回,0表示成功,非0表示失败。这样可以控制读取上一条或者下一条配方数据到组态变量并显示出来。
!SetDevice(设备0,6, \,offset,WUB,3,Data1,nReturn)\
表示将以MCGS变量Data1为起始,连续3个变量的值,(即: Data1,Data2,Data3),以16位无符号二进制形式写入V寄存器从地址offset起始的连续3个寄存器中,执行是否成功通过nReturn返回,0表示成功,非0表示失败。这样可以控制将指定配方数据写入PLC指定位置,以达到修改或执行配方数据的目的。
3.2.3 使用配方
下载编辑好的配方工程至HMI,并连接好PLC设备,工程运行效果如图 3-2-5所示。
测试中在此可以查看PLC中存放的全部配方数据(可以不需要此部分) 图 3-2-5 运行效果图
? 点击“上移一条”、“下移一条”,可切换配方项。当前配方项数据显示在HMI下方的3个输入框
构件中。
? 点击“修改PLC配方数据”,可将“HMI”下方的3个框中的数据按规定格式写入到PLC中,修
改PLC中当前配方数据。图 3-2-6和 图3-2-7表示配方数据修改过程。
PLC地址 VWUB000 VWUB002 VWUB004 VWUB006 VWUB008 数据 1 1 5 2 0 0 3 0 0 PLC地址 VWUB000 数据 1 1 5 2 0 0 3 3 5 将当前配方修改为(3,3,5) VWUB002 VWUB004 VWUB006 VWUB008 Offset VWUB010 VWUB012 VWUB014 VWUB016 Offset VWUB010 VWUB012 VWUB014 VWUB016 图 3-2-6 配方存于PLC中初始值 图 3-2-7 修改PLC中第三条配方数据
? 24? mcgsTpc 中级培训教程 ? 切换到要采用的配方数据时,点击“下载配方数据到PLC”,可将选择的配方下载到PLC特定区
域,表示改为使用此配方数据,这里为100,此地址随工程不同而不同,一般为确定值。 ? 最下方的表格控件关联了目标PLC中各地址的数据,可实时显示PLC中的全部配方数据。(此部
分非必需)
注:保证工程正常运行的前提是PLC和HMI通讯正常。
3.3 配方数据存储于HMI中的用法
3.3.1 准备工作
此模式的配方功能,所有配方数据均存储于HMI中,运行时可以利用组态软件的配方功能方便地进行查看和修改,如果需要查看PLC中当前使用的数据,可将PLC中对应地址的数据通过通道读取上来并显示在组态中。HMI可以进行如下的操作:
1. 可以使用HMI浏览所有配方数据 2. 可以选择修改指定配方项
3. 可以下载某一个配方项到特定区域使PLC正常运行
我们仍然使用西门子S7-200 PLC模拟面包生产机接收面包配方的三个参数,接收地址为V寄存器100~105字节。
组态思路:
1. 首先在MCGS数据库中添加变量用于稍后操作配方数据 2. 在设备窗口添加PLC设备并进行设定
3. 使用配方组态工具编辑配方成员、配方项和配方数据
4. 在用户窗口添加若干标签、输入框和按钮构件,并编辑必要的脚本,用于显示与操作配方 组态环境中设定完毕后,我们即可下载工程到HMI,在运行环境中操作配方。
3.3.2 配方组态
新建一个工程,下面我们开始组态吧。 1. 建立变量
? 打开工作台“实时数据库”,新建3个数值型变量“面粉”、“水”、“糖”,其它属性保持默认值。
此类变量为关联显示配方数据用。
? 新建组对象“原料组”。将“面粉”、“水”、“糖”添加为组成员。此变量用于操作一组配方数据。 ? 新建一个字符型变量“设备字符串”,其它属性保持默认值。此变量用于与设备进行信息传送。 ? 新建两个数值型变量“a”、“b”,其它属性保持默认值。此变量用于解析“设备字符串”。创建完
毕的变量如图 3-3-1所示。
第三章 配方功能 ? 25? 图 3-3-1 实时数据库创建变量
2 添加设备
? 切换到工作台,打开设备窗口,使用设备工具箱添加“通用串口父设备”与“西门子_S7200PPI”
两个设备,将“西门子_S7200PPI”驱动作为“通用串口父设备”的子设备。
? 双击西门子_S7200PPI驱动进入设备编辑窗口,在窗口左上角查看驱动模版信息,确保此驱动是
“新驱动模版”。如图 3-3-2所示。
图 3-3-2 设备窗口组态
3 设计配方
? 点击MCGS主菜单“工具(T)”,选择“配方组态设计”菜单项,打开配方组态设计工具。 ? 点击“文件(F)”?“新增配方组(N)”,或点击工具栏
按钮,新建一个配方组(“配方组0”),
在“配方组0”上点击鼠标右键,选择“配方组改名(R)”,将配方组重命名为“面包配方”。 ? 点击“格式(M)”?“增加一行(I)”,或点击工具栏 按钮,新建一个配方成员,在配方成员
的变量名称处点击鼠标右键,在弹出的变量选择对话框中选择变量“面粉”。同理,再新建两个配方成员,分别连接变量“水”和“糖”。
? 点击“使用变量名作列标题名”按钮,为配方成员分别命名为“面粉”、“水”、“糖”。创建好的配
方成员如图 3-3-3所示。
图 3-3-3 创建配方
? 点击“编辑(E)”?“编辑配方(E)”,或点击工具栏 按钮,打开配方修改对话框。在配方修
改对话框中点击“增加”按钮,即可增加一个配方项,添加配方数据如图3-3-4所示,添加完成
? 26? mcgsTpc 中级培训教程 后保存并退出配方修改对话框。
图 3-3-4 配方修改对话框
? 点击“文件(F)”?“保存配方(S)”,或点击工具栏
设计工具。
4 创建动画构件、编写脚本程序
按钮,保存配方。保存后关闭配方组态
? 切换回工作台“用户窗口”界面,新建一个用户窗口并打开。 ? 创建标签、按钮、输入框等动画构件,组态如图3-3-5所示。
图 3-3-5 窗口组态界面
? 将两个较大的标签作为标题分别命名为“HMI”与“PLC”。 三个输入框用于显示HMI配方数据
值,下面三个标签用于显示PLC设备上的数据值。
? 将“HMI”下方的三个输入框分别关联数据中心变量“面粉”、“水”、“糖”,用于配方成员的显示
与修改。
? 将“PLC”下面三个标签作为“显示输出”,用于PLC中数据的显示。关联变量时,勾选“根据
采集信息生成”,通讯端口选择“通用串口父设备0[通用串口父设备]”,采集设备选择“设备0[西门子_S7200PPI]”,通道类型选择“V寄存器”,数据类型选择“16位无符号二进制”,读写类型选择“读写”。三个标签的通道地址依次填写“100”、“102”“104”。三个标签均选择作为数值量输出。