S7-200中如何判断一个存储器中为1的位数
关注“PLC发烧友”,一起涨知识!
前几天有个学员在把一个三菱FX系列PLC的程序转为西门子S7-200的程序,在三菱的程序中有个SUM的指令,但是在西门子S7-200系列PLC中没有找到有这样的一个指令,问有什么办法可以实现SUM指令的功能?
西门子的PLC的指令相对于三菱的PLC来讲要相对少很多,但在西门子PLC中很多的功能是可以通过自己基本的一些指令进行搭建,搭建完的这些功能块以后可以作为一个库指令存储起来,以便后续使用,也就是说可以自己来增加指令。
查询三菱PLC的编程手册可知SUM的指令是用来判断一个存储器中的位为ON的个数。知道了这个意思,那我们就可以通过使用一些基本的指令来搭建这样的一个功能。
设计思路:
可以使用移位指令配合溢出位SM1.1来实现这个功能,在西门子的PLC中,一个存储器可以是字节,字,双字的存储空间,因此编写这样的一个功能块时需要判断存储器的空间大小,就好比是三菱的PLC指令中有16位的操作指令和32位的操作指令一样。
不同存储空间大小的存储器需要移动的位数是不一样的,如一个字节有8位,则需要移动8位,然后判断这8次移位中SM1.1接通的次数,SM1.1接通了多少次,则说明了这个存储中有多少个位的状态是为ON的。
建立这样一个功能块所需要用到的指令及知识:
移位指令(左右或右移都可)、循环指令、跳转指令、加1指令、子程序返回指令、间接寻址的知识以及带参数子程序的建立知识。
参考成如下所示:
(1)建立功能块子程序
(2) 主程序中调用功能块程序
(来源:技成培训网,作者:曾鑫,未经授权不得转载!)
回复:西门子全套,领取西门子电子资料合集。