jzzjzq
级别: 略有小成
精华主题: 0
发帖数量: 62 个
工控威望: 200 点
下载积分: 566 分
在线时间: 72(小时)
注册时间: 2013-03-15
最后登录: 2024-04-23
查看jzzjzq的 主题 / 回贴
楼主  发表于: 2018-03-12 22:03
试着写了一个宏,完全不行。
我想把一个字的值赋给一个位元件的数组,还要把一个字的某个位的状态读出赋给一个PLC内的位元件要怎么写呢。

macro_command main()
short a, b
bool wei[16]
short zhi
GetData(zhi, "Local HMI", LW, 0, 1)
for b=0 to 16
GETBIT(zhi, wei[b], b)
next b
for a=0 to 16
SetData(wei[a], "Local HMI", LB, a, 1)
next a
end macro_command
上面尝试把LW0的16位分别赋给wei[16]这个数组,再把这个数组的值赋给LB0开始的16个位元件,但运行看不到效果。
tyw123456
级别: 家园常客

精华主题: 1 篇
发帖数量: 113 个
工控威望: 797 点
下载积分: 312 分
在线时间: 256(小时)
注册时间: 2016-09-13
最后登录: 2022-07-13
查看tyw123456的 主题 / 回贴
1楼  发表于: 2018-03-13 08:20
一个16位字符是16个bit,你这个循环0-16有17个bit了,你改了之后再模拟试试
静水深流
jzzjzq
级别: 略有小成
精华主题: 0
发帖数量: 62 个
工控威望: 200 点
下载积分: 566 分
在线时间: 72(小时)
注册时间: 2013-03-15
最后登录: 2024-04-23
查看jzzjzq的 主题 / 回贴
2楼  发表于: 2018-03-13 08:28
好的,因为对威伦的宏不是很熟,您帮忙看下对屏内部元件的写入和读取是这样写的吗
tyw123456
级别: 家园常客

精华主题: 1 篇
发帖数量: 113 个
工控威望: 797 点
下载积分: 312 分
在线时间: 256(小时)
注册时间: 2016-09-13
最后登录: 2022-07-13
查看tyw123456的 主题 / 回贴
3楼  发表于: 2018-03-13 08:35
对的 我模拟过没问题,但是建议用unsigned 无符号的 这样你给lw赋值的时候比较容易操作 有符号的有负数
静水深流
jzzjzq
级别: 略有小成
精华主题: 0
发帖数量: 62 个
工控威望: 200 点
下载积分: 566 分
在线时间: 72(小时)
注册时间: 2013-03-15
最后登录: 2024-04-23
查看jzzjzq的 主题 / 回贴
4楼  发表于: 2018-03-13 08:38
感谢,我按您说的修改后也模拟成功了。感谢帮助