If you are creating a Modbus Slave device that will only be interrogate by a specific Modbus Master, then you only have to implement the functions that the Modbus Master will use to call on your Modbus Slave. I hope this helps, good luckand let us know about the outcome pleaseQ: What is the minimum subset of function that a Modbus salve device should implement?Ī: It depend on if you are creating a commercially available slave device or your own slave device. I think they forgot to mention that all addresses are so called Holding addresses and do require to add 40000 to them (I'm speculating here, but its the only way I can make sense out of it).ġ.) Write an E-Mail to and seek clarifcation on the above.Īsk them too what Modbus Function codes they supportĢ.) Try the following in the meantime (set Mode to "1" and Data length to "1" for the MB_Master" block in your 1200):Ģa.)Write a value 0101hex to Address 40071 and see if it worksĢb.)Write a value 0101hex to Address 40070 and see if it works (Modbus has the n-1 addressing regime oddity and who knows how Janitza took this into account so you may as wel ltry Address 40072 too). Next "issue' are the Modbus addresses which do NOT comply with the Modbus addressing scheme. It means though that you do NOT need (should) write an ASCII value of 31hex into it to send a "1" but instead you put a simple integer value of 1 into it (or 0101hex for the Register Word). When they say that the data type is "CHAR" they mean "1 Byte long" (see page 2, this is odd to begin with as Modbus does not really do Bytes, but this may not matter as you will simply always write to adress "71" & "72" together). Unfortunately, Janitza's Modbus Address list manualisnot all that helpful and somewhat confusing and here's what I make of it:
Thanks for info luciferC4, things are starting to make sense.
Have a good read of section 6.3.2 of the S7-1200 manual and also check out page 191 in it which list the Modbus Function codes associated register addresses that the 1200 supports. WhatModbus Modbus registers do you need to write to in the Slave? Other things to do/check for you in the meantime are: (Ideally you either post the manual for it here or a link to it.). I suggestyou check the manual of your Modbus Slave andfeed back the info here. Please, send me instruction for further steps.Ĭan you please do the following first as (sort of) previously requested (my crystal ball is currently broken ): To find out how I S Systems can help you with your automation needs please visit The advice and opinion given in this thread is that of the author and does not necessarily reflect the views of I S Systems Pty Limited. I suggestyou check the manual of your Modbus Slave andfeed back the info here if you have further questions. You can however get Modbus RTU to Modbus ASCII converters and use them(google it, there's plenty cheap ones around).
If it is however a Modbus ASCII Slave device, your 1200can NOT directly talk to it (and your 'char" question would now refer to a difference inprotocol rather than values that are transmitted inside a a message). "0" as an ASCII characters is a decimal value of 48) If it is a Modbus RTU device, your 1200 can directly talk to it and just because you can't select "char" as a datatype does NOT mean that you can't "embedd" a character as a value in a Word that you sentto the appropiate (holding) register init (e.g. IsyourModbus Slave device a"Modbus RTU"or a "Modbus ASCII" one? Don't give up hope just yet and please clarify the following first: