Typical cases
9、MES系统访问WinCC写标签例程:
private void buSetValue_Async_Click(object sender, EventArgs e)
{
bool bRet = false;
MCMN_ERROR dmError = new MCMN_ERROR();
UInt32[] varsta = new UInt32[1];
String[] valName = new String[1];
MDM_VARIANT[] Value = new MDM_VARIANT[1];
valName[0] = textBox_TagName.Text;
try
{
Value[0] = new MDM_VARIANT(Double.Parse(textBox_TagVal.Text), MDM_VAR_TYPE.FLOAT);
}
catch
{
Value[0] = new MDM_VARIANT(textBox_TagVal.Text);
}
bRet = DmWrap.MDMSetValueByVarName(valName, 1, Value, varsta, dmError);
if (!bRet)
{
Log(dmError.szErrorText);
}
}
9.1、MES系统访问WinCC读标签例程:
private void buGetValue_Async_Click(object sender, EventArgs e)
{
bool bRet = false;
MCMN_ERROR dmError = new MCMN_ERROR();
MDM_VAR_UPDATE_STRUCT[] lpdmvus = new MDM_VAR_UPDATE_STRUCT[1];
lpdmvus[0] = new MDM_VAR_UPDATE_STRUCT();
String[] valName = new String[1];
valName[0] = textBox_TagName.Text;
bRet = DmWrap.MDMGetValueByVarName(valName, 1, lpdmvus, dmError);
if (!bRet)
{
Log(dmError.szErrorText);
}
else
{
Log("Tag_Value = " + lpdmvus[0].mValue);
textBox_TagVal.Text = lpdmvus[0].mValue;
}
}
以上为C#通过ODK开发包读写WinCC标签例程,其他功能可查阅该ODK开发帮助文件。
10、应用体会
此家居公司的MES系统为公司技术核心由其自身研发,但由于信息研发部门缺乏对控制系统的认识,因此该项目前期需求阶段走了一些弯路,后来由于珠海安能自动化公司的介入,根据他们的实际需求我们推荐了WinCC作为中间软件连通MES数据与PLC控制数据,实现了生产数据与控制数据的无缝连接。WinCC虽然也具有强大的脚本功能,但不适用于大量的复杂的数据运算,因此在板材剪裁计算、板材缓存架的堆叠等等问题就交于MES系统的计算机完成,经过MES系统计算后的数据就直接传输到WinCC中,这样MES数据库就可以同WinCC进行无障碍数据交互,WinCC再将交互的数据写入现场PLC中进行动作处理,WinCC与S7-1500的通讯无需第三方驱动直接进行数据快速交换,PLC编程中的符号表直接就可以在WinCC中使用,这样就极大的节约了项目的研发周期。
Zhuhai Encan Automation Science & Technology Co.,LTD