s7

LD I0.0
LB I0.1
LD I0.2
LD I0.3
= VB10

or

LD I0.0
=VB10.0
LD I0.1
=VB10.1
LD I0.2
=VB10.2
LD I0.3
=VB10.3

Is it that correct?
I want VB10=0000(I0.3)(I0.O)(I0.1)(I0.0)
 
Shortest way is to perform a masked move (lowest 4 bits) from inputbyte 0 to variable byte 10. S7-200 does not have a masked move, but you can perform an bitwise AND function. The solution should look like this:

LD     SM0.0	        //Do always
MOVB IB0, VB10 //copy input byte 0 to variable byte 10
ANDB 16#F, VB10 //mask out all but 4 lowest bits



or in ladder:

             +---------+
SM0.0 | WAND_B|
--| |--------|EN |
| |
IB0 -|IN1 |
| |
16#F -|IN2 OUT|- VB10
+---------+

 
Thanks too much Bro, it was very helpful

Shortest way is to perform a masked move (lowest 4 bits) from inputbyte 0 to variable byte 10. S7-200 does not have a masked move, but you can perform an bitwise AND function. The solution should look like this:

LD     SM0.0	        //Do always
MOVB IB0, VB10 //copy input byte 0 to variable byte 10
ANDB 16#F, VB10 //mask out all but 4 lowest bits



or in ladder:

             +---------+
SM0.0 | WAND_B|
--| |--------|EN |
| |
IB0 -|IN1 |
| |
16#F -|IN2 OUT|- VB10
+---------+




Thanks too much Bro, it was very helpful
 
Back
Top Bottom