您现在所在的是:

人机界面

回帖:6个,阅读:1664 [上一页] [1] [下一页]
10451
xlian
文章数:3235
年度积分:91
历史总积分:10451
注册时间:2002/5/7
发站内信
2018论坛热心网友
西门子PLC体验(二)
发表于:2016/10/21 11:33:39
#0楼
//macro_UpData
//更新配方内容
//本地配方:RW100开始每25个字为一个记录共限制记录1000组配方
//远程配方:将当有使用配方数据打包由PLC发送到远程服务器
//          0x47 0x31 [2个字节数据长度][12个字节ParamaterName] [n字节]
macro_command main()
bool BON = 1
bool BOFF =0
bool    DONE
char    PNM[12]
char   CMD[48]
short   BUSY
short   HDB[25]
short   Paramater_ID
short   NLGT
short   page

short   LDB[25]
short   LDB_LGT = 25
short   LDB_NUM = 1000
short   LDB_OFFS = 100
short   LDB_END
short   DPTR
short   DPTR2
short   DB_SEL
LDB_END = LDB_OFFS + (LDB_LGT * LDB_NUM)

SetData(BOFF, "Local HMI", "Excule_UpData", 1)
GetData(DB_SEL, "Siemens S7-200 SMART PPI", "PC_LOCAL_DB", 1)
GetData(BUSY, "Siemens S7-200 SMART PPI", "PC_LINK_BUSY", 1)
GetData(Paramater_ID, "Siemens S7-200 SMART PPI", "USER_PARAMATER", 1)
////////////////////
GetData(PNM[0], "Local HMI", "KEY_ModeName", 12)
NLGT = StringLength(PNM[0])
SetData(NLGT, "Local HMI", "KEY_ModeNameLenght", 1)
//////////////////////
GetData(HDB[0], "Local HMI", "KEY_ModeNameLenght", 1)
GetData(HDB[1], "Local HMI", "KEY_ModeName", 6)
GetData(HDB[7], "Siemens S7-200 SMART PPI", "show_temperature_set", 1)
if(Paramater_ID == 0)then
GetData(HDB[8], "Siemens S7-200 SMART PPI", "up_once_pressure", 7)
else
GetData(HDB[8], "Siemens S7-200 SMART PPI", "up_once_pressure", 7)
end if
///////////////////////
if( NLGT > 0 and NLGT < 12)then
if(DB_SEL == 0)then
page = 78
DPTR = LDB_OFFS
DONE = BOFF
while((DONE == BOFF) and (DPTR < LDB_END))
GetData(LDB[0], "Local HMI", RW, DPTR, 25)
DONE = (HDB[0]==LDB[0])and(HDB[1]==LDB[1])and(HDB[2]==LDB[2])and(HDB[3]==LDB[3])and(HDB[4]==LDB[4])and(HDB[5]==LDB[5])and(HDB[6]==LDB[6])  
if(DONE == BON)then
SetData(HDB[0], "Local HMI", RW, DPTR, 25)
else
DPTR = DPTR + LDB_LGT
end if
wend

if(DONE == BOFF)then
DPTR = LDB_END - LDB_LGT
DPTR2 = DPTR - LDB_LGT

while(DPTR > LDB_OFFS)and(DPTR2 >= LDB_OFFS)
GetData(LDB[0], "Local HMI", RW, DPTR2, 25)
SetData(LDB[0], "Local HMI", RW, DPTR, 25)
DPTR = DPTR2
DPTR2 = DPTR - LDB_LGT
wend
SetData(HDB[0], "Local HMI", RW, DPTR, 25)
end if
else
if(BUSY)then
page = 123
else
BUSY = 1
page = 122
CMD[0] = 47
CMD[1] = 0x31
HEX2ASCII(NLGT, CMD[2], 2)
GetData(CMD[4], "Local HMI", "KEY_ModeName", 12)
HEX2ASCII(HDB[7], CMD[16], 4)
HEX2ASCII(HDB[8], CMD[20], 4)
HEX2ASCII(HDB[9], CMD[24], 4)
HEX2ASCII(HDB[10], CMD[28], 4)
HEX2ASCII(HDB[11], CMD[32], 4)
HEX2ASCII(HDB[12], CMD[36], 4)
HEX2ASCII(HDB[13], CMD[40], 4)
HEX2ASCII(HDB[14], CMD[44], 4)
SetData(CMD[0], "Siemens S7-200 SMART PPI", "PC_CMD", 48)
SetData(BUSY, "Siemens S7-200 SMART PPI", "PC_LINK_BUSY", 1)
end if
end if
else
page = 123
end if


SetData(page, "Local HMI", "SW_Window", 1)

end macro_command
10451
xlian
文章数:3235
年度积分:91
历史总积分:10451
注册时间:2002/5/7
发站内信
2018论坛热心网友
西门子PLC体验(二)
发表于:2016/10/21 11:39:12
#1楼
//macro_DownData
//下载配方到PLC
//使用本地配方时由触摸屏下载到PLC
//本地配方保存在RW100开如每25个字为一个配方限制1000组数据
//远程配方:由触摸屏将数据打包传送到PLC
//由PLC发送数据到组态软件本例由WINCC处理后将配方数据传送到PLC
macro_command main()
bool BON = 1
bool BOFF =0
bool    DONE
char   CMD[16]
char    PNM[12]
short   BUSY

short   PID
short   NLGT
short   page

short   DB_SEL
short   HDB[8]
short   LDB[25]
short   LDB_LGT = 25
short   LDB_NUM = 1000
short   LDB_OFFS = 100
short   LDB_END
short   DPTR

LDB_END = LDB_OFFS + (LDB_LGT * LDB_NUM)


SetData(BOFF, "Local HMI", "Excule_DownData", 1)
GetData(DB_SEL, "Siemens S7-200 SMART PPI", "PC_LOCAL_DB", 1)
GetData(BUSY, "Siemens S7-200 SMART PPI", "PC_LINK_BUSY", 1)
GetData(PID, "Siemens S7-200 SMART PPI", "USER_PARAMATER", 1)
////////////////////
GetData(PNM[0], "Local HMI", "KEY_ModeName", 12)
NLGT = StringLength(PNM[0])
SetData(NLGT, "Local HMI", "KEY_ModeNameLenght", 1)
//////////////
if( NLGT > 0 and NLGT < 13)then
if(DB_SEL == 0)then
GetData(HDB[0], "Local HMI", "KEY_ModeNameLenght", 7)
DPTR = LDB_OFFS
DONE = BOFF
while((DPTR < LDB_END) and (DONE == BOFF))
GetData(LDB[0], "Local HMI", RW, DPTR, 25)
DONE = (HDB[0]==LDB[0])and(HDB[1]==LDB[1])and(HDB[2]==LDB[2])and(HDB[3]==LDB[3])and(HDB[4]==LDB[4])and(HDB[5]==LDB[5])and(HDB[6]==LDB[6])
if(DONE)then
SetDataEx(LDB[7], "Siemens S7-200 SMART PPI", "show_temperature_set", 1)
if(PID == 0)then
SetData(LDB[0], "Siemens S7-200 SMART PPI", "up_name_lenght", 25)
else
SetData(LDB[0], "Siemens S7-200 SMART PPI", "dn_namr_lenght", 25)
end if
end if
DPTR = DPTR + LDB_LGT
wend
if(DONE)then
page = 78
else
page = 125
end if
else
if(BUSY == 0)then
BUSY = 1
page = 122
CMD[0] = 15
if(PID == 0)then
CMD[1] = 0x32
else
CMD[1] = 0x33
end if
HEX2ASCII(NLGT, CMD[2], 2)
GetData(CMD[4], "Local HMI", "KEY_ModeName", 12)
SetData(CMD[0], "Siemens S7-200 SMART PPI", "PC_CMD", 16)
SetData(BUSY, "Siemens S7-200 SMART PPI", "PC_LINK_BUSY", 1)
else
page = 124
end if
end if
else
page = 123
end if




SetData(page, "Local HMI", "SW_Window", 1)

end macro_command
10451
xlian
文章数:3235
年度积分:91
历史总积分:10451
注册时间:2002/5/7
发站内信
2018论坛热心网友
西门子PLC体验(二)
发表于:2016/10/21 11:42:46
#2楼
触摸屏介面
10451
xlian
文章数:3235
年度积分:91
历史总积分:10451
注册时间:2002/5/7
发站内信
2018论坛热心网友
西门子PLC体验(二)
发表于:2016/10/21 11:43:07
#3楼
附件 QQ图片20161021114133.jpg
10451
xlian
文章数:3235
年度积分:91
历史总积分:10451
注册时间:2002/5/7
发站内信
2018论坛热心网友
西门子PLC体验(二)
发表于:2016/10/21 12:00:01
#4楼
附件 QQ图片20161021115920.jpg
下载参数页面
1160
jtzhang333
文章数:40
年度积分:50
历史总积分:1160
注册时间:2005/9/14
发站内信
发表于:2016/10/24 10:41:48
#5楼
这个是哪家的屏啊?
10451
xlian
文章数:3235
年度积分:91
历史总积分:10451
注册时间:2002/5/7
发站内信
2018论坛热心网友
西门子PLC体验(二)
发表于:2016/10/28 19:38:53
#6楼
威纶通的屏(TK6100)

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004