1

Téma: [vyřešeno] problém RS485 komunikace

Potřeboval bych poradit se syntaxí sériové komunikace po RS485 pro ovládání externího relé (resp. bloku 32 relé). Primárně bych chtěl používat serial1_text_out() kvůli omezení délky kódu.

Příklad 1:

text[1] = 0x01;
text[2] = 0x06;
text[3] = 0x00;
text[4] = 0x01;
text[5] = 0x01;
text[6] = 0x00;
text[7] = 0xD9;
text[8] = 0x9A;
serial1_write(0, 1, 8);

Příklad 2:

serial1_text_out(0x01, 0x06, 0x00, 0x01, 0x01, 0x00, 0xD9, 0x9A);

Pokud jsem já správně pochopil wiki, tak tyto dva kusy kódu by měly resultovat v identickou komunikaci. V SDS-C simulátoru to tak opravdu je. Konkrétně vyleze (HEX) "01 06 00 01 01 00 D9 9A" resp znaky "......Ůš". Problém je, že to tak není ve skutečnosti. Ve skutečnosti tato komunikace nastane pouze při použití kódu z příkladu 1. Příklad 2 vygeneruje úplně jinou komunikaci, a to (HEX) "31 36 30 31 31 30 32 31 37 31 35 34", což je ve znacích "160110217154".

Samozřejmě si nelze nevšimnout podobnosti těch výstupů. Výstup ve znacích z příkladu 2 vypadá (první část) jako hexa výstup z příkladu 1.

Může mi někdo vysvětlit důvod, proč je výstup simulátoru a výstup ve skutečnosti takhle liší?

Naposledy upravil: DavidB (2019-12-31 13:10:10)

2

Re: [vyřešeno] problém RS485 komunikace

Podívejte se na dokumentaci, je to tam popsáno:
http://wiki.merenienergie.cz/index.php/Sdsc_sysf#serialX_write.28.29

Název serial text out už sám o sobě ukazuje, že výstupem bude text, a používá se stejně jako např. funkce echo(), která také všechny své parametry převádí na "čitelný" text.
Funkce serial write už své parametry nijak nemění a předává je jako surové data.

Tip - je možné si pomoct - zkrátit kód - a pole text[] vyplnit "najednou" např. funkcí sprintf() viz http://wiki.merenienergie.cz/index.php/Sdsc_sysf#sprintf.28.29

Co se týče chování simulátoru pro serial text out - prověří se to, každopádně - vždy platí to co je na wiki a uvnitř SDS.

Pozn.
Samozřejmě platí že vždy musíte použít nejaktuálnější EXE a nejaktuálnější firmware ve vašem SDS. Je to nezbytná podmínka.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

3

Re: [vyřešeno] problém RS485 komunikace

Děkuji za dovysvětlení. Chápal jsem to původně z wiki až do okamžiku, kdy mé chápání rozložilo odlišné chování simulátoru. :-)

4

Re: [vyřešeno] problém RS485 komunikace

JJ díky za nahlášení.

Zkuste aktuální simulátor.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

5

Re: [vyřešeno] problém RS485 komunikace

taky jsem na to narazil 

diky dokumentaci kde je napsano v prikladu toto:
serial_text_out('*B1', 'OS', '2H' ,0x0D); 
pokud toto serial_text_out() umi tak serialX_text_out() to urcite teda neumi a chtelo by to v dokumentaci opravit!!!!!
ted uz taky kombinuji serialX_text_out()  a serialX_write() , ale stravil jsem nad tim hodinu
p.s. simulator vyplivne -> 2A 42 31 4F 53 32 48 0D  zatimco  SDSka ->   2A 42 31 4F 53 32 48 31 33
diky

6

Re: [vyřešeno] problém RS485 komunikace

Ha tak mi to nedalo pac tam pisete o aktualnim simulatoru takze i kdyz jsem si 1.1.2020 stahnul verzi 141119
tak ted koukam ze je tam najednou verze 151119(to by me zajimalo podle ceho to cislujete )
nicmene tato verze jiz to simuluje stejne jako SDSka   
smile

7

Re: [vyřešeno] problém RS485 komunikace

= Dĕkujeme za promptní aktualizaci!! Proto mám SDS tak rád.