西门子plc多个数字的加法 点击:4770 | 回复:19



yangguang4122

    
  • 精华:1帖
  • 求助:18帖
  • 帖子:20帖 | 42回
  • 年度积分:3
  • 历史总积分:3667
  • 注册:2012年5月23日
发表于:2013-10-16 10:05:58
楼主

请问各位大侠,西门子plc ,v10.0+v10.1+v10.2+v10.3+v10.4+v10.5+v10.6+v10.7+v13.1+v13.0+v13.1+v13.2=?怎样写这个程序。




非标----王者之师

  • 精华:0帖
  • 求助:3帖
  • 帖子:32帖 | 1147回
  • 年度积分:0
  • 历史总积分:3881
  • 注册:2011年10月26日
发表于:2013-10-16 10:53:27
1楼

你这是BOOL量相加有什么意义?

银光人生—华

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 13597回
  • 年度积分:0
  • 历史总积分:52877
  • 注册:2007年11月23日
发表于:2013-10-16 10:57:49
2楼

你好,可以用指令进行计算的啊;

你是要实现什么功能;

yangguang4122

  • 精华:1帖
  • 求助:18帖
  • 帖子:20帖 | 42回
  • 年度积分:3
  • 历史总积分:3667
  • 注册:2012年5月23日
发表于:2013-10-16 11:20:06
3楼

用指令一个一个加太麻烦了,我想把12个开关量变成数字显示,比如有一个为1就显示1,有10个为1就显示10.

yjig

  • 精华:2帖
  • 求助:5帖
  • 帖子:97帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2013-10-16 12:02:14
4楼

该用法在三菱的PLC中有专用指令,即“ON位指令”,不知西门子的是否也有。

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2013-10-16 12:10:29
5楼

西门子没有这样的指令。

邵-王者之师

  • 精华:1帖
  • 求助:39帖
  • 帖子:81帖 | 861回
  • 年度积分:0
  • 历史总积分:2844
  • 注册:2011年3月24日
发表于:2013-10-16 12:42:26
6楼

您用V存储区当开关量使用,加起来想实现什么功能呢?是不是将其复制给其他存储区?

邵-王者之师

  • 精华:1帖
  • 求助:39帖
  • 帖子:81帖 | 861回
  • 年度积分:0
  • 历史总积分:2844
  • 注册:2011年3月24日
发表于:2013-10-16 12:47:07
7楼

楼主可以写个库。。。0000 0001为1,0000 0011为2,这样写下来库还是比较大的,可以用一些技巧简化

yangguang4122

  • 精华:1帖
  • 求助:18帖
  • 帖子:20帖 | 42回
  • 年度积分:3
  • 历史总积分:3667
  • 注册:2012年5月23日
发表于:2013-10-16 13:06:47
8楼

自己建库,没有写过,应该比较复杂,我以前使用三菱plc,现在要用西门子plc,请各位高手帮忙指点,不胜感激!

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2013-10-16 13:09:02
9楼

逻辑 BOOL 量, 加法运算 就是 或运算,结果只能是 "0"  或者“1”, 乘法是 与运算。

 

楼主的题目用简单的或运算就可以了,电气回路里 用并联表示。

 

yangguang4122

  • 精华:1帖
  • 求助:18帖
  • 帖子:20帖 | 42回
  • 年度积分:3
  • 历史总积分:3667
  • 注册:2012年5月23日
发表于:2013-10-16 13:27:32
10楼

谢谢,但是比如vb100中有几个1,我想显示几怎样处理?如有3个1,10010100,就显示3.

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 455回
  • 年度积分:0
  • 历史总积分:1000
  • 注册:2008年1月09日
发表于:2013-10-18 00:46:22
11楼

s7-300中有这个指令库,名字是bitsum,就是计算32位整数中有多少个1的


如果位不多就用+1指令即可,如果位为1就+1,否则就不加

xlbxlb

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 71回
  • 年度积分:0
  • 历史总积分:66
  • 注册:2017年7月22日
发表于:2017-07-25 15:31:07
12楼

学习!!!!!!!!!!!!!!!!

635715193

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 168回
  • 年度积分:75
  • 历史总积分:603
  • 注册:2014年6月05日
发表于:2022-02-15 09:13:30
13楼

可以用FOR循环内做字或双子移位,然后判断最后一位的值做累加


王者之师—ROBOT/李

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 76回
  • 年度积分:204
  • 历史总积分:912
  • 注册:2010年3月25日
发表于:2022-07-04 22:40:11
14楼



image.png


#bBool[1]:=   #InWord.%X0;

#bBool[2] := #InWord.%X1;

#bBool[3] := #InWord.%X2;

#bBool[4] := #InWord.%X3;

#bBool[5] := #InWord.%X4;

#bBool[6] := #InWord.%X5;

#bBool[7] := #InWord.%X6;

#bBool[8] := #InWord.%X7;

#bBool[9] := #InWord.%X8;

#bBool[10] := #InWord.%X9;

#bBool[11] := #InWord.%X10;

#bBool[12] := #InWord.%X11;

#bBool[13] := #InWord.%X12;

#bBool[14] := #InWord.%X13;

#bBool[15] := #InWord.%X14;

#bBool[16] := #InWord.%X15;




FOR #i := 1 TO 16 DO

    IF NOT #bBool[#i] THEN

        #CIN[#i] := 1;

    ELSE

        #CIN[#i] := 0;

    END_IF;

END_FOR;



   

   #NO := #CIN[1] + #CIN[2] + #CIN[3] + #CIN[4] + #CIN[5] + #CIN[6] + #CIN[7] + #CIN[8]

   + #CIN[9] + #CIN[10] + #CIN[11] + #CIN[12] + #CIN[13] + #CIN[14] + #CIN[15] + #CIN[16];



要的是不是这玩意,照着做个功能块调用吧!


Fanhy

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 68回
  • 年度积分:0
  • 历史总积分:104
  • 注册:2018年6月03日
发表于:2022-07-13 08:24:54
15楼

学习了

yg89539246

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 810回
  • 年度积分:78
  • 历史总积分:333
  • 注册:2009年6月30日
发表于:2022-07-18 09:15:00
16楼

学习了

请叫我王老湿

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:622帖 | 8531回
  • 年度积分:89
  • 历史总积分:332560
  • 注册:2011年4月25日
发表于:2022-07-18 09:47:08
17楼

加法就是“与”的关系,所有条件为真,输出结果才会为真

蓝天小子

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 546回
  • 年度积分:50
  • 历史总积分:827
  • 注册:2018年8月07日
发表于:2022-09-24 18:21:55
18楼

还可以用赋值功能,例如V10.1=1,则赋值字1=1,V10.2=1,则赋值字2=1,这样字3=1+2,也能实现你的要求。

天涯的雨滴

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 258回
  • 年度积分:158
  • 历史总积分:157
  • 注册:2016年1月26日
发表于:2023-08-01 06:46:26
19楼

学习了,谢谢分享



热门招聘
相关主题

官方公众号

智造工程师