当前位置:
工控论坛
> >
产品
>
PLC
>
西门子(Siemens)PLC
我要发帖
如何在西门子程序中取整型数得某几个位信号?
点击:
2628
| 回复:
11
jackson.lan
关注
私信
精华:0帖
求助:0帖
帖子:12帖 | 45回
年度积分:0
历史总积分:83
注册:2005年2月17日
发表于:2006-06-20 10:40:00
楼主
请教一个问题:
我在S7-300 315-2 DP中定义了如下三个变量:
1、
符号:test001
地址:IB 30
数据类别:BYTE
2、
符号:test002
地址:IW 31
数据类别:INT
3、
符号:test003
地址:PQD 33
数据类别:DINT
现在我想分别取该三个变量中的某些位的值,比如test001这个字节变量第一个位的值或者test002这个整型变量的第一位的值,该如何取?
另外,test003是一个和外围设备通信的双字变量,长度和双整型数一样,这个双整型变量的第一位的值又该如何取?
我刚接触西门子的东西不久,碰到这个问题还望大家不吝赐教,谢谢!!!
分享到:
收藏
邀请回答
回复楼主
举报
yuanle
关注
私信
精华:0帖
求助:0帖
帖子:9帖 | 10208回
年度积分:2747
历史总积分:48332
注册:2005年4月22日
发表于:2006-06-20 10:44:00
1楼
取 TEST001 第一位值 L I30.0
取 TEST002 第一位值 L I31.0
依次类推即可
取某一位的值其实只需要读取这一位即可。
回复
引用
举报
御风而行
关注
私信
精华:1帖
求助:0帖
帖子:13帖 | 88回
年度积分:0
历史总积分:199
注册:2002年11月12日
发表于:2006-06-20 10:56:00
2楼
IB30{i30.0,...,I30.7};IW31{IB31,IB32};-可拆位
PQD33{PQW33,PQW34}-不可拆位
回复
引用
举报
jackson.lan
关注
私信
精华:0帖
求助:0帖
帖子:12帖 | 45回
年度积分:0
历史总积分:83
注册:2005年2月17日
发表于:2006-06-20 11:10:00
3楼
谢谢 yuanle 和 御风而行 ,那如果要取 PQD 33 的位的话,是否可以先通过 mov 来将 PQD 33 的值赋给一个双整型数,然后再取其中的位,经过逻辑处理后再反过来赋值给 PQD 33 ?请问有没有更好的方法了?
回复
引用
举报
jackson.lan
关注
私信
精华:0帖
求助:0帖
帖子:12帖 | 45回
年度积分:0
历史总积分:83
注册:2005年2月17日
发表于:2006-06-20 11:11:00
4楼
谢谢 yuanle 和 御风而行 ,那如果要取 PQD 33 的位的话,是否可以先通过 mov 来将 PQD 33 的值赋给一个双整型数,然后再取其中的位,经过逻辑处理后再反过来赋值给 PQD 33 ?请问有没有更好的方法了?
回复
引用
举报
御风而行
关注
私信
精华:1帖
求助:0帖
帖子:13帖 | 88回
年度积分:0
历史总积分:199
注册:2002年11月12日
发表于:2006-06-20 11:44:00
5楼
不太明白你的意思,PQD是模拟量输出,如果程序不赋值,这个单元就按默认值输出,一般为0,即4ma或0v,一般不作读入用
回复
引用
举报
jackson.lan
关注
私信
精华:0帖
求助:0帖
帖子:12帖 | 45回
年度积分:0
历史总积分:83
注册:2005年2月17日
发表于:2006-06-20 13:16:00
6楼
那就用 PID 来说吧,这个是外围设备输入信号吧,这个不只是输入模拟量吧,我配了个博士力士乐的伺服电机,通过PROFIBUS通讯,该伺服电机给PLC的状态字就是PID输入的,控制字是通过PQD输出的,我想操作状态字或控制字的单独位的值呵呵
回复
引用
举报
microtomato
关注
私信
精华:1帖
求助:0帖
帖子:85帖 | 1476回
年度积分:0
历史总积分:2078
注册:2001年11月02日
发表于:2006-06-20 16:00:00
7楼
如果只能按字(或者字节)访问而不能按位访问,那么可以对这个字(或者字节)右移(N-1)次,然后和“1”做个AND,然后判断结果是否为0,如果是,那么说明原先哪个字(或者字节)中的第(N-1)位为Off,反之为On。
回复
引用
举报
Jason.lu9999
关注
私信
精华:0帖
求助:0帖
帖子:0帖 | 10回
年度积分:0
历史总积分:0
注册:2006年8月18日
发表于:2006-06-20 17:13:00
8楼
你可以用PQB.*或PIB.*
回复
引用
举报
jackson.lan
关注
私信
精华:0帖
求助:0帖
帖子:12帖 | 45回
年度积分:0
历史总积分:83
注册:2005年2月17日
发表于:2006-06-21 09:46:00
9楼
microtomato,你那样子移动,其实还是以字节或字为单位移的,不是以位来移啊,好像不太行吧。
Lao Niao,PQB.*或PIB.*不行,提示语法错误。
回复
引用
举报
microtomato
关注
私信
精华:1帖
求助:0帖
帖子:85帖 | 1476回
年度积分:0
历史总积分:2078
注册:2001年11月02日
发表于:2006-06-21 12:43:00
10楼
jackson.lan兄弟啊,I服了U!是S7-300吗?不是有SHR_W指令吗?这个指令是对指定的字进行移位,如果参数N设置为1,那么每执行1次就是对指定的字右移1位。
回复
引用
举报
御风而行
关注
私信
精华:1帖
求助:0帖
帖子:13帖 | 88回
年度积分:0
历史总积分:199
注册:2002年11月12日
发表于:2006-06-26 15:55:00
11楼
我没有用过和伺服电机的profibus通讯,对你的状态控制字的读取不敢妄言,不过我用过其他profibus通讯外围设备,一般在硬件配置里可以定义控制参数地址,比如MW或DB数据块,然后通过这些中间存储实现状态字和控制字的读取,以及控制字的输出,这样也许会简单点。
microtomato和你的方法差不多,都能够实现位的读取,差别不大。
回复
引用
举报
热门招聘
相关主题
(已结束)工控PLC擂台第6期--...
[8526]
施耐德收购德力西的背后内幕
[8045]
笔记本电脑USB转串口的求助
[11580]
请大家看图来说PLC的输出NPN...
[15238]
两个OMRON CP1H的PLC经过串口...
[10111]
求教:如下图形怎么编程序?
[9450]
win7环境怎么安装西门子step...
[7853]
用时间继电器控制电磁阀
[10842]
请教:怎样在WINCC画面中弹出...
[14606]
PLC常用程序设计语言简介
[23374]
官方公众号
智造工程师
客服
小程序
公众号