西门子HMI通过VB脚本控制打印机进行标签打印
项目背景:
使用了触控一体机安装Wincc RTAdvanced来替代TP1200触摸屏,工位本身需要控制斑马打印机打印标签,兼容5种不同的产品标签,标签可修改样式和内容
之前使用过PLC通过发送打印文件内容方式进行控制打印机,客户修改样式和内容比较麻烦,修改过后都要PLC进行对应
本次想通过VB脚本来完成打印任务,PLC变量触发VB脚本,脚本内驱动打印事件,PC机打印标签文件
硬件:
触控一体机,斑马打印机GT820,通过USB线连接并装好驱动
软件:
触控一体机装Win7 64bit
安装标签编辑软件BarTender
安装WinCC RT Advanced
02思路详解
标签样本(内容纯属虚构,如有侵权请及时联络)
变动字符:
年月日:23-03-10
序列号:00001
不同的产品标签格式有所不同,需要提供不同的标签模板
模板名称:F01R00X089 共10位字符
设计思路:
PLC建立变量:TypeName作为模板名称
PLC建立变量:SerialNumber作为流水号Int
在PC机上保存固定文件夹,txt作为Database来源
PLC触发Cmd_Print,VB脚本触发打印动作
打印完成,提供Status_PrintDone
VB脚本代码修改txt内容,日期和流水号,更换模板,启动打印机
打印机通过USB与PC相连,执行打印就像打印Word一样,这里执行打印的内容为Bartender文件
1.按照标签模板先建立起文件
2.设置数据库Database
右键->数据库设置
选择数据库类型
选择文件,新建好txt文件,内部写入内容用英文逗号隔开
选择文件格式,引号和逗号混用
字段名称,大3行,完成设置
连接属性,就是刚才Database文件关联的过程,可以选择配置连接重新进行关联
查看字段,可以看到三个字段
记录浏览器可以查看目前txt内的数据
③字段的数据库关联(以日期为例)
点中日期->右键属性
数据源还未设置,点击进行设置
选择数据库字段
选择字段1,点击完成
文本内容与数据库Database数据关联完成
④其他关联重复③操作,字段选择不同
程序代码:
Sub Print()
'************************************************************************************
'*** Module: Print
'***
'*** Copyright HouJinKu, ShangHai
'***
'*** Function: Print Bartender file to Printer GT820 ofZebra
'***
' *** Datum: 04.10.2022
' ***
' *** Author: Hou jinku
' ***
' *** last change: V1.0 initial creation
' *** V1.1Adaptation to: Date\Serial number\TypeName
' ***
'************************************************************************************)
On Error Resume Next
HmiRuntime.SmartTags("PrintDone") =False
'Counter+
Dim aCounter
aCounter =HmiRuntime.SmartTags("Counter")
If aCounter>999 Then
aCounter=0
End If
'Serial number
Dim aSerialNumber,Str5,aPrintNum
aSerialNumber =HmiRuntime.SmartTags("SerialNumber")
Str5=String(5,"0")
aPrintNum=Right(Str5 & aSerialNumber,5)
'Date
Dim aYear,aMonth,,aDay,aDate
aYear =Right(Year(Now),2)
aMonth = Right("00"&Month(Now),2)
aDay = Right("00"& aDay,2)
aDate=aYear & "-" & aMonth & "-" &aDay
'TypeName
Dim aTypeName
aTypeName =HmiRuntime.SmartTags("TypeName")
'Database
Dim fso, f,typeNo
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateTextFile("E:\Printer\Database.txt", True)'Over old
f.Write(aDate & ",")
f.Write(aPrintNum & ",")
f.Write("xxx")
f.Close()
Set f = Nothing
Set fso = Nothing
Dim btApp, btFormat,btPrint
Set btApp = CreateObject("BarTender.Application")
btApp.Visible = False
Set btFormat = btApp.Formats.Open("E:\Printer\" & TypeName &".btw",False,"")
Set btPrint = btFormat.PrintOut(True,False)
btFormat.Close
btApp.Quit
Set btApp = Nothing
aCounter=aCounter+1
HmiRuntime.SmartTags("Counter") =aCounter
HmiRuntime.SmartTags("PrintDone") =True
End Sub
HMI变量中数值更改调用VB脚本Print
PLC程序触发一次ON,再触发OFF,每次变化一次
PLC触发及收到结果的关键流程步
记录上次触发的状态
根据上次状态进行下次触发
客户要更改模板,打开Bartender软件可直接修改和保存,换型时TypeName更改打印模板与之对应