登录
首页 人机界面 人机界面
回帖 发帖
正文

主题:请教万能的坛友

点击:493 回复:2

macro_command main()
short AI[8],D1[8]
GetData(AI[0], "8AI", 3x, 0, 8) //读取[8AI]数据【3x,(4~20)mA】
D1[0] = (AI[0]-819)*125/819 //入口温度,【0-500】
D1[1] = (AI[1]-819)*125/819 //出口温度,【0-500】
D1[2] = (AI[2]-2457)*5000/819 //进风负压,【(-10~10)KPa】
D1[3] = (AI[3]-2457)*5000/819 //出风负压,【(-10~10)KPa】
D1[4] = (AI[4]-1023)*40/819 //压力,【(-0.1~1.5)MPa】
D1[5] = D1[2]-D1[3] //压差
// SetData(D1[0], "PLC", VW, 0, 5) //写数据到PLC VW0~VW5
SetData(D1[0], "HMI", LW, 100, 6) //数据保存HMI LW100~LW105
end macro_command
这是一段威纶通屏的宏程序,功能是读取8路模拟量模块中前5路的采集数据并转换成对应的温度、风压、压力值。
理论上【AI0-入口温度】【AI1-出口温度】【AI2-进风负压】【AI3-出风负压】【AI4-操作压力】。
但现场施工时,有可能这5路传感器的接线顺序会搞乱,不是一一对应。
*****************台达屏宏程序,使用变址寻址******************
#读8AI模块数据(2温、2风压、1压力)
BMOV($100, ({Link2}1@R-0), 8)  //读取8AI数据,8路;保存到屏内存地址$100-$107。
#数据转换(2温、2风压、1压力)
$0 = *$150-819 (Signed)  //*$150-*$154为变址寄存器,当中保存的数据就是$100-$107,
$1 = *$151-819 (Signed)  //当现场接线不到应时,可以在不重新改正接线顺序的情况下,
$2 = *$152-2457 (Signed)  //改变*$150-*$154内对应的数值就可以保证数据转换的正确。
$3 = *$153-2457 (Signed)  //截图就是台达屏的画面
$4 = *$154-1023 (Signed)
#数据转换(2风压、2温、1压力、1压差)
$10 = $2*5000/819 (Signed)
$11 = $3*5000/819 (Signed)
$12 = $0*125/819 (Signed)
$13 = $1*125/819 (Signed)
$14 = $4*40/819 (Signed)
$15 = $10-$11 (Signed)
附件 台达屏.jpg
现在的问题是,威纶屏要怎样写宏程序,利用索引寄存器组态画面。
23-09-27 21:41
没有人回, 不知道你的意图. 不知道你说的改变$150..对应数值和改变D1的下标有什么区别.
人机界面少用什么宏之类的.
23-09-28 10:44
附件 捕获.jpg
23-09-28 11:52

工控新闻

更多新闻资讯