S7.Net Plus WriteBits не работает для битовой адресации
Я использую S7.Net Plus для связи Modbus TCP с Siemens S7 1200 PLc. Я могу отправлять все типы данных (целые, словесные, двойные) в ПЛК. Boolean только тогда, когда я использую Read single variable class, например:
plc.write("DB12.DBX0.0",false);
Это не оптимизированный код, когда я хочу отправить несколько переменных, поэтому я использую следующий код и отправляю в формате массива
byte[] db12Bytes = new byte[1];
S7.Net.Types.Boolean.SetBit(db12Bytes[0],0);
plc.WriteBytes(DataType.DataBlock, 12, 0, d12Bytes);
Но это не работает должным образом, логическое значение не обновляется.
Есть ли этому решение? Кто-нибудь может мне с этим помочь?
1 ответ
Вместо использования:S7.Net.Types.Boolean.SetBit(db12Bytes[0],0);
Просто используйтеdb12Bytes[0] = 1;
Это потому, что в вашем db12Bytes есть буфер битов. Поскольку бит может быть только 0 или 1, вы можете просто установить бит в буфере на 1 (true)
Например, вы хотите установить бит номер 3 в значение true:db12Bytes[3] = 1;
Тот же метод, который вы можете использовать для установки битов на false:db12Bytes[3] = 0;