一、系統(tǒng)要求
在PLC程序不改動的情況下,
觸摸屏的輸入界面按下面的格式設(shè)計:
程序的執(zhí)行順序為1->2->3->4->5->6…->50, 每步根據(jù)界面設(shè)定的對應(yīng)步數(shù)的“目的缸號”、“吊車互鎖”、“機車升降”、“等待時間”、“滴水時間”等數(shù)據(jù)執(zhí)行動作,基于每步的數(shù)據(jù)共5個,總長度小于2字(4byte), 故我們在設(shè)計時將每步的數(shù)據(jù)使用PLC中對應(yīng)的兩個控制字來定義,針對用戶的PLC,我們定義這50步的數(shù)據(jù)為DM1000~DM1100, 如第1步對應(yīng)DM1000和DM1001,第2步對應(yīng)DM1002和DM1003。
二.實現(xiàn)步驟
用第1步舉例說明:
1.第1列“目的缸號”的設(shè)置要求
共4種模式,zui多4個字符:
1)L或U模式,默認缸號為1號缸
當為‘L’時,即LOAD時,DM1000的第0、6位置1
當為‘U’時,即UNLOAD時,DM1000的第1、6位置1
2)XX模式,無SBUSCYLE模式
XX為數(shù)字,表示實際缸號,用DM1000的0~5位表示,第6位置于0。
3)SXY模式,S代表SUBSYCLE
子循環(huán)數(shù)X用DM1000的第2~4位表示
子循環(huán)數(shù)的工位數(shù)Y用DM1000的第10~15位表示
DM1000的第6位為1。
2.第2列“吊車互鎖”的設(shè)置要求
當首字符為F或B時,說明有互鎖情況,該列共有3種輸入:
1)輸入為FX,DM1000的第9位置1,DM1001的第0~7位設(shè)置為X
2)輸入為BX,DM1000的第9位置1,DM1001的第8~15位設(shè)置為Y
3.第3列“上升/下降”設(shè)置說明
字符=Y, 說明是“上升”, DM1000的第7位設(shè)置= 0
字符=N, 說明是“下降”, DM1000的第7位設(shè)置= 1
4.第4列“等待時間”設(shè)置說明
XX: 數(shù)值,數(shù)據(jù)zui大長度2位,zui大值25, 當?shù)?列首字符=‘F’或‘B’時, 設(shè)
定DM1001的第0~7位 = XX*10
5.第5列“滴水時間”設(shè)置說明
XXX: 數(shù)值,數(shù)據(jù)zui大長度3位,zui大值255, 當?shù)?列首字符=‘F’或‘B’時, 設(shè)
定DM1001的第8~15位 = XXX
其它說明:
1.當遇到空操作N時
DM1000的第7位置1
2.當執(zhí)行到zui后一步時,將上一步低控制字的第8位置1
3.高控制字在沒有F/B時
高字節(jié)存放滴水時間,要*10輸入
低字節(jié)存放等待時間, 要*10輸入
4.高控制字在有F/B時
高字節(jié)存放BACKWORD的X值
低字節(jié)存放FORWORDA的X值
程序編寫思路:
1.采用索引來輸入每步的信息,這樣可以簡化畫面制作難度。
2.宏指令執(zhí)行過程:
1)讀入每步信息,判斷RWI0是否為空,若不為空則將其轉(zhuǎn)化為控制字中的值,賦給LW0,LW1。
2)改變偏移量指向存儲控制字的區(qū)域。
3)將LW0,LW1的值傳到存儲控制字的區(qū)域。
4)改變偏移量指向下一步信息。
5)當RWI0為空,中斷循環(huán),去執(zhí)行給zui后一步賦標志位的程序(期間進行兩次偏移量切換)。
6)用定時器的數(shù)據(jù)傳輸功能將轉(zhuǎn)換后的控制值傳到PLC相應(yīng)的區(qū)域。
輸入畫面和執(zhí)行結(jié)果(測試畫面)演示如下圖:
宏指令一的執(zhí)行是通過畫面2中的“執(zhí)行轉(zhuǎn)換”按鈕觸發(fā),同時在畫面2中設(shè)置了多個定時器元件,每個定時器指令觸發(fā)一條宏指令,通過宏指令一順序執(zhí)行其它的指令。
通過修改LW9000(RWI偏移量)值,每次轉(zhuǎn)換7個字的數(shù)據(jù),從RWI0~RWI6開始, 將轉(zhuǎn)換后的數(shù)據(jù)首先傳遞給從RWI500~RWI501開始的本地數(shù)據(jù)區(qū),由于在提取原始數(shù)據(jù)時是每7個字提取,而轉(zhuǎn)換的結(jié)果為2個字,所以涉及到偏移量的改變,在宏指令中先后將偏移量值LW9000設(shè)置為7和2的倍數(shù)。zui后,將轉(zhuǎn)換后的結(jié)果值利用配方卡的下載功能,將數(shù)據(jù)下載到PLC中。
三.總結(jié)
MT5000有強大的定時器和宏指令功能,宏指令采用標準C語言編程,C語言是大家較為熟悉的編程語言