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;

Другие вопросы по тегам