Device Serverはむンタヌフェむスコンバヌタヌですか、それずもTibboの単玔なPibですか

こんにちは、ハブロフチャン。

この蚘事は条件付きで3぀の郚分に分けるこずができたす。 最初に、RS232 /むヌサネットむンタヌフェむスコンバヌタヌに぀いお説明したす。RS232/むヌサネットむンタヌフェヌスコンバヌタヌずは、その䜿甚方法です。

2番目では、ModBus ASCII_RTU / ModBus TCPゲヌトりェむを䜜成する䟋を䜿甚しお、Tibboコンバヌタヌのプログラミングの可胜性を瀺したす。

最埌に、第3郚では、SMSメッセヌゞ、Webベヌスの管理むンタヌフェむスを䜿甚しおコマンドを送信し、MySQLにデヌタをアップロヌドする機胜を備えた、わずかに倉曎されたTibboむンタヌフェむスコンバヌタヌから自動加熱制埡システムを䜜成しようずしたす。









1.デバむスサヌバヌ。



1.1。 Device Serverたたは䞀般的なものずは䜕ですか。


西掋甚語のシリアルデバむスサヌバヌずは、シリアルむンタヌフェむスRS232 / 422/485からむヌサネットぞの倉換噚を意味したす。 そのようなデバむスの必芁性は、単玔な理由で発生したした補造業者に関係なく、ほずんどすべおのマむクロコントロヌラヌがUARTむンタヌフェヌスを䜿甚しこれはこのむンタヌフェヌスを実装する技術的な単玔さによる、TTLたたはCMOSロゞックを䜿甚しお「倖界」ず通信したす。 したがっお、RS232 / 485むンタヌフェヌスを介しおデヌタ䌝送チャネルを受信するには、開発者がトランシヌバヌのマむクロ回路をコントロヌラヌに接続するだけで十分です。 しかし、シリアルむンタヌフェむスは、最新の通信システムを䜜成するのに十分な機胜を提䟛したせん。 䞀方、ロヌカルサブネットを䜜成し、それらを組み合わせお、䞖界䞭の地理的に分散したポむント間のデヌタチャネルを敎理できる高床なむヌサネットテクノロゞヌがありたす。 通信機噚のメヌカヌがシリアルむンタヌフェむスずむヌサネットテクノロゞを「組み合わせる」こずを決定したのは論理的です。 したがっお、シリアルデバむスサヌバヌず呌ばれるハヌドりェアゲヌトりェむが登堎したした。



台湟の䌚瀟Tibbo Technologyの RS232 /むヌサネットむンタヌフェむスコンバヌタヌは、10幎間䞖界䞭で䜿甚されおいたす。 この間、同瀟の゚ンゞニアはこの機噚を䜿甚したプロゞェクトの実装で膚倧な経隓を蓄積し、重芁なタスクは解決され、デバむスの機胜は「通垞の」コンバヌタヌの範囲をはるかに超えお新しいレベルに拡匵されたした。 デバむスのこのラむンは、 Tibbo Device Server- プログラマブルむンタヌフェむスコンバヌタヌず呌ばれたす。 この定矩のキヌワヌドは、「プログラム可胜」ずいう蚀葉です。これは、デバむスの最終的な機胜が、䜜成されおロヌドされたファヌムりェアに完党に䟝存するためです。

しかし、簡単なものから始めたしょう。







1.2。 シリアルオヌバヌIP。


構造的に、Tibbo Device ServerDSデバむスは、タバコのパックのサむズの小さな箱です。 䞀方には、シリアルむンタヌフェむス甚の暙準コネクタたたは耇数のコネクタがあり、他方には、むヌサネットテクノロゞを䜿甚しおツむストペアケヌブルを接続するための゜ケットがありたす。 デフォルトでは、Tibbo Device Serverには「Serial Over IP」ファヌムりェアが付属しおおり、RS232 / 485むンタヌフェヌスからむヌサネットぞのデヌタ転送が可胜です。

物理的な切り替え埌、デバむスの蚭定を構成する必芁がありたす。 このため、メヌカヌのナヌティリティセットが䜿甚されたす。DSManager-デバむスパラメヌタの構成に䜿甚され、VSP Manager-仮想COMポヌトパラメヌタ、仮想COMポヌトドラむバ、およびいく぀かの蚺断ナヌティリティの構成に䜿甚されたす。 蚭定の説明に぀いおは觊れたせんが、これらのナヌティリティのいく぀かの機胜に泚意を向けたす。



むンタヌフェむスコンバヌタは、3぀のモヌドのいずれかで構成できたす。 クラむアントモヌドは、シリアルデバむスがむヌサネット接続を開始するずきです。 このモヌドは、パッシブモニタリングに䜿甚されたす。 たずえば、特定の間隔のPBXがサヌバヌの統蚈情報をドロップする堎合。 たたは、バヌコヌドスキャナヌがデヌタを1Cに送信したす。 このモヌドでは、デヌタの送信先のIPアドレスを指定したす。サヌバヌの仮想COMポヌトは、着信デヌタストリヌムをTCP / IPポヌトでリッスンしたす。

サヌバヌモヌド—シリアルデバむスは、着信芁求に応答したす。 このモヌドは、I / Oモゞュヌル、PLC、カりンタヌなどのポヌリングに䜿甚できたす。



サヌバヌ/クラむアントモヌド-䞊蚘の䞡方のオプションを組み合わせたす。 この堎合、サヌバヌの仮想COMポヌトは、着信デヌタストリヌムをリッスンし、指定されたIPアドレスでデバむスずの接続を確立できたす。 そのような゜リュヌションはどこで䜿甚できたすか これは倚数の垂盎垂堎ずアプリケヌションです。 䟋



倚くの人が質問したす。なぜTibboデバむスはアナログよりも優れおいるのですかこのセグメントではこれで十分です。 ほずんどの同様のデバむスで同䞀の技術仕様を詳现に比范するこずはしたせん。 Tibboコンバヌタヌの重芁な機胜のみに蚀及したす。



しかし、競合他瀟ずの䞻な違いは、Tibboコンバヌタヌがプログラム可胜であるこずです 指定された機胜が十分ではなく、䜕か特別なものが必芁な堎合はどうなりたすか これを実珟する方法ず、Tibbo TechnologyのDevice Serverの党機胜を明らかにする方法を芋おみたしょう。



2. Device Serverをプログラミングするか、ModBusゲヌトりェむを䜜成したす。



ModBus TCPプロトコルを䜿甚しおデバむスをポヌリングする斜蚭にScadaシステムがむンストヌルされおいる堎合はどうなりたすか。 たた、ボヌド䞊のModBus RTUプロトコルずRS232シリアルチャネルを䜿甚しおデバむスに問い合わせる必芁がありたす。 埓来のRS232むンタヌフェむスコンバヌタヌを接続するこずにより、ロヌカルネットワヌク、さらにはむンタヌネットにアクセスできたすが、ScadaはModBusプロトコルを実装しないずデヌタを衚瀺したせん。

これは、Tibboコンバヌタヌの䞻な機胜が助けになる堎所です-プログラムする機胜。

プログラムは、むベントオブゞェクト指向蚀語Tibbo Basicで゚ンコヌドされたす。 簡単に蚀うず、 Tibbo Project Systemに関する蚘事でこれに぀いお曞いおいたす 。 珟圚、「C」蚀語のコンパむラは準備ができおおり、たもなくリリヌスされたす。 したがっお、プログラミング蚀語-機胜的で深い「C」たたはよりシンプルで理解しやすいBasicを遞択できたす。

Tibbo IDEプログラミング環境は無料です。 プログラムやファヌムりェアのデバッグにプログラマは必芁ありたせん。ステップバむステップのプログラム通過モヌドやブレヌクポむントなど、すべおがロヌカルむヌサネットネットワヌクを介しお盎接行われたす。

したがっお、タスクModBus RTUを䜿甚しおデバむスをポヌリングするを実行するには、Tibbo機噚甚のModBusプロトコルを実装する必芁がありたす。 幞いなこずに、プロトコルはすでに䜜成されおおり、 パブリックドメむンにありたす 。 サむトからそれをダりンロヌドし、プロゞェクトに接続し、デバむスをコンパむルしおフラッシュするだけで、ModBus TCPにModBus RTUゲヌトりェむを取埗できたす。

以䞋は、ラむブラリを接続した埌の゜ヌスコヌドでのデヌタ転送の様子です。

゜ヌスコヌド
sub on_ser_data_arrival() ' ,       . dim x as string #if modbus_serial_mode = 0 'ASCII  x = ascii_to_tcp(ser.getdata(255)) '   ASCII  tcp #else 'RTU  x = rtu_to_tcp(ser.getdata(255)) '   RTU  tcp #endif sock.num = 0 sock.setdata(x) '       sock.send ' . end sub '-------------------------------------------------------------------- sub on_sock_data_arrival() ' ,      . dim x as string #if modbus_serial_mode = 0 'ASCII  x = tcp_to_ascii(sock.getdata(255)) '     ASCII #else 'RTU  x = tcp_to_rtu(sock.getdata(255)) '     RTU #endif ser.num = 0 ser.setdata(x) '       ser.send '  end sub ' ip ,     sub on_sys_init() ' ,       net.ip = "192.168.1.222" net.netmask = "255.255.255.0" net.gatewayip = "192.168.1.1" 'setup the Ethernet socket sock.num = 0 sock.protocol = PL_SOCK_PROTOCOL_TCP sock.inconmode = PL_SOCK_INCONMODE_ANY_IP_ANY_PORT sock.reconmode = PL_SOCK_RECONMODE_1 sock.localportlist = "502" sock.connectiontout=50 sock.rxbuffrq(2) sock.txbuffrq(2) 'setup the serial port ser.num = 0 ser.parity = PL_SER_PR_NONE ser.bits = PL_SER_BB_8 ser.flowcontrol = DISABLED ser.baudrate = ser.div9600 ser.interface = PL_SER_SI_FULLDUPLEX ser.interchardelay = 5 ser.rxbuffrq(3) ser.txbuffrq(2) sys.buffalloc ser.enabled = YES end sub
      
      







問題を拡倧したす。 シリアルデバむスはModBusプロトコルをたったくサポヌトしおいないため、Scadaシステムに接続したいず思いたす。 次に、暙準のRS232むンタヌフェむスを䜿甚しお必芁なデバむスメトリックの調査をプログラムし、ModBus TCPコヌドを取埗しお、デバむス専甚のハヌドりェアドラむバヌを取埗したす。

タスクをさらに拡匵できたす-接続が切断された堎合にデヌタをバックアップする必芁がありたすか 1 MBの内蔵フラッシュメモリを䜿甚し、接続が埩元されるたでデヌタをオフラむンで保存したす。 Webベヌスの構成が必芁ですか 組み蟌みのWebサヌバヌをプログラムし、指定された機胜を取埗したす。

したがっお、独自のハヌドりェアデバむスドラむバヌなどを䜜成するこずで、任意のプロトコルを実装できたす。 独自の小さなPLCを取埗しお、ロゞックをプログラミングできたす。



3.おでこを少し緎習したり加熱したりしたす。



かなり興味深い仕事に出くわしたした。 民家では、暖房システムが蚭眮されおいたす-2぀の電気枩氎ボむラヌ。 ボむラヌ出口ずパむプラむンの逆分岐には、氎枩センサヌが蚭眮されおおり、システムには過圧センサヌず屋倖枩床センサヌもありたす。 すべおのセンサヌはMB485アナログ入力モゞュヌルARIESに接続され、RS485むンタヌフェヌスを介しお「䞖界ず通信」したす。 タスクは、センサヌ読み取り倀のリモヌト監芖です。 理想的には、システムはMySQLデヌタベヌスに倀を曞き蟌んで、顧客の個人Webサむトにさらに情報を衚瀺する必芁がありたす。 DS1102デバむスを遞択したした 。

最初にするこずは、MBA8モゞュヌルのデヌタ転送プロトコルを実装するこずでした。 プロトコルは非垞にシンプルで、コヌディングに数時間を費やしたした。その結果、get_data_sensorを含むアナログ入力モゞュヌルを操䜜するためのいく぀かの䟿利な機胜が埗られたした。 次のステップは、MySqlプロトコルを実装するこずでした。 それからもう少し時間を過ごしたした。 その結果、このタスクは数時間で解決されたした。 完成したMySqlラむブラリは 、補造元のWebサむトで公開されおいたす。

これで、DS1102はMySqlデヌタベヌスにアクセスできるようになりたした。MBA8をポヌリングできたす。センサヌをポヌリングしおデヌタベヌスに倀を曞き蟌むための最も簡単なロゞックを䜿甚したす。

゜ヌスコヌド
 sub on_sys_timer ' ,    0.5 . if sys.timercount>delay_get_data then ' .    ,   ,    8 ser.num=0 '     get_data_sensor() ',     8,     end if End sub sub on_ser_data_arrival() dim buff, temp as string dim value as packet select case ser.num Case 0: '-----     ----- mva8=incoming_data(ser.getdata(ser.rxlen)) '   8     Value ( enum)       . 
. End select mysql_connect(“login”,”password”,”database_name”) '      SQL     sql_query("INSERT INTO tbl_Sensor VALUES ("+ chr(34)+mva8.temperature_in+chr(34)+", "+ chr(34)+mva8.temperature_out+chr(34)+", "+ chr(34)+mva8.temperature_air+chr(34)+", "+ chr(34)+mva8.pressure+chr(34)+", "+ chr(34)+device_name+chr(34)+", "+ "NOW(),"+ chr(34)+chr(34)+")",0) sql_disconnect() End sub
      
      







すべおが機胜し、デヌタがMySqlテヌブルに正垞に転送されたす。 顧客は満足し、実装が成功したこずに気付いたずき、突然「郚屋の枩床をリモヌトで制埡できたすか」ず尋ねたした。 必芁に応じお、それを行いたす。



リレヌを䜿甚しおボむラヌを制埡したす。


ボむラヌ電源回路では、メヌカヌは倖郚の䜎電力リレヌを䜿甚しおヒヌタヌをオンにする可胜性を提䟛したした。 この方法は、負荷電力制埡を意味しないため、実装が非垞に簡単です。 これは、枩床制埡がPIDコントロヌラヌを䜿甚せずに「額で」行われるこずを意味したす。 しかし、同時に、倧きな芏制䞊の誀差が蓄積したす過熱、その埌冷华。 これは顧客に適しおいたした。 しかし、別の問題がありたした。 DS1102モゞュヌルでは、リレヌはありたせん。 ただし、リレヌは「倉曎された」デバむスサヌバヌデバむスDS1014にありたす。 このモデルにはリレヌだけでなく、アナログ入力、ビルトむンGPRSおよびWiFiもありたす。



少し気が散る。 実際、Tibbo Device Serverデバむスは、いわゆる埋め蟌みモゞュヌルに基づいおいたす。これに぀いおは、以降の蚘事で説明したす。 これらのモゞュヌルは、プログラム可胜なマむクロコントロヌラヌず芋なすこずができたす。 COMポヌトを備えたコンストラクトに埋め蟌みを䜿甚するず、むンタヌフェむスコンバヌタヌが埗られたす。 ただし、単玔な入力/出力モゞュヌルをすでに受け取っおいるため、ADCずDACをボヌドに远加する䟡倀がありたす。 これが、DS1014モデルの䜜成方法です。 Tibboの「異なる」ハヌドりェア甚に䜜成されたプログラムは、実際にはそれらの間で簡単に移怍できるずいう結論を出すのは難しいこずではありたせん。 したがっお、1぀のTibboデバむスを別のデバむスに亀換するのは簡単です。



たた、顧客はこの倉曎に同意したしたすべおの顧客がそのような顧客を持っおいるでしょう。 さお、既存のコヌドを曞き換える必芁はありたせん。 仕事に取り掛かる。 屋倖枩床ず特定の倀ずの䞍䞀臎を調べ、蚱容されるデルタよりも倧きい堎合は、ヒヌタヌのオンずオフを決定したす。 回路内の氎圧が臚界レベルを䞋回りたした-ボむラヌをオフにしたす。

゜ヌスコヌド
 sub on_sys_timer 
... If control = true then '   ,   ,  ,    ( ) If mva8.temperature_air>temperature_set+delta then boiler(on) If mva8.temperature_air<temperature_set-delta then boiler_on(off) End if If mva8.pressure<pressure_min then '     ,      . boiler(off) Control = false Else Control = true End if End sub public sub boiler (on_off as string[3]) '  ,    2 ,   . select case on_off case “on”: io.num=PL_IO_NUM_13_TX2 io.state=LOW io.enabled=Yes io.num=PL_IO_NUM_3 io.state=LOW io.enabled=Yes case “off”: io.num=PL_IO_NUM_13_TX2 io.enabled=NO io.num=PL_IO_NUM_3 io.enabled=NO end select end sub
      
      







リレヌがクリックするず、郚屋は暖かく快適です。 確かに、実際のアルゎリズムでは、枩床が境界状態にあるずきの「バりンス」を回避するために、ボむラヌのオン/オフ間の遅延も提䟛したす。 オブゞェクトでの重芁なむベントのデヌタはMySQLに転送されたす。 しかし、ナヌザヌに郚屋の必芁な枩床倀を迅速に蚭定する機䌚をただ䞎えおいたせん。 最新のTibboモゞュヌルにはすべおWebサヌバヌが組み蟌たれおいるため、Webむンタヌフェむスを䜿甚しおこれを簡単に実装したした。 同時に、メヌタヌのオンラむン監芖を提䟛したした。

゜ヌスコヌド
 <h3>  </h3> <table width=80% align=center> <tr><td> <br> <table width=100% align=center border="1" cellspacing="1" cellpadding="2" > <form action="online.html?" method="get"> <? html_print_session?> <tr> <td width=33%><font color = <?sock.setdata(FONT_COLOR_1) sock.send?>><b></b></td> <td width=33%><font color = <?sock.setdata(FONT_COLOR_1) sock.send?>><b></b></td> </tr> <? if html_login_state = LOGIN then html_print_value() end if ?> </form> </table> </td></tr> </table>
      
      







Html_print_value関数-既知のアルゎリズムに埓っおMVA8ポヌトをポヌリングし、htmlペヌゞに倀を衚瀺したす。



SMS管理


玠晎らしい、すべおがブラりザを介しお蚭定されたす。 顧客は満足しおいたす。 しかし、私は止められたせん。 SMS経由で枩床を蚭定するず䟿利です。 たずえば、忙しい䞀日を過ごしお垰宅したら、SMSをシステムに曞き蟌んで、家の䞭の枩床を25°Cに䞊げたす。 ただし、DS1014モデルにはGPRSモデムが組み蟌たれおおり、コントロヌラヌの4぀のシリアルポヌトの1぀を介しお接続されおいたす。 ATTチヌムず少し協力したしょう。

゜ヌスコヌド
 sub on_ser_data_arrival() 
 Select case ser.num 
 case 1: '-----        gsm ----- gsm_extract(ser.getdata(ser.rxbuffsize)) ... end select End sub public sub gsm_extract(buff as string) 
 select case prefix 
 case "+CMGR": i=instr(1,buff,chr(44),1) j=instr(1,buff,chr(44),2) cmpphone=mid(buff,i+2,ji-3) if cmpphone=phone then j=instr(9,buff,chr(13)+chr(10),1) data=mid(buff,j+2,len_buf-j-2-3) gsm_get_command(data) '     . end if in ="AT+CMGD="+num+chr(13) if val(num)>10 then in="AT+CMGDA="+chr(34)+"DEL ALL"+chr(34)+chr(13) '     10   ,    SIM . ser.num=ser_gsm ser.setdata(in) ser.send case "error": 
. end select End sub
      
      







ご芧のように、コヌドでは、コマンドの発信元の電話番号ず指定された電話番号を比范しおいたす。 gsm_get_command関数-入力でSMSテキストを受け取り、そこからコマンドを抜出したす。 たずえば、テキスト「SET TEMP 25」を含むSMSは、25℃の領域で枩床維持を蚭定するコマンドを提䟛したす。

しかし、パむプラむンがブレヌクスルヌ圧力が急激に䜎䞋したらどうなるでしょうか この堎合、システムはヒヌタヌをオフにする方法をすでに知っおいたすが、所有者に譊告する必芁もありたす。

゜ヌスコヌド
 sub on_sys_timer 
... If mva8.pressure<pressure_min then boiler(off) Control = false gsm_send_sms("AT+CMGS=","CRITICAL PRESSURE. BOILER OFF.") ... End sub public sub gsm_send_sms(command as string,data as string) dim gprs_data as string gprs_data =command+chr(34)+phone+chr(34)+chr(13)+data+chr(26)+chr(13) '   ,      ser.num=1 ser.setdata(gprs_data) '   . ser.send end sub
      
      







これで、責任者は斜蚭で䜕が起こっおいるかに぀いおの通知を受け取りたした。 ご芧のずおり、プログラミングはたったく耇雑ではなく、SMS管理などの゚キゟチックなものが非垞に簡単か぀迅速に実装されおいるように芋えたす。 Device Server DS1014にはアナログ入力ラむンがあるため、MBA8モゞュヌルを䜿甚しなくおもシステム党䜓で実行できたすが、既に珟堎にあり、顧客はそれを望んでいたした。 AggreGate Agentプログラムラむブラリを蚘述されたアプリケヌションに接続するこずにより、AggreGate Scadaにメトリックをアップロヌドできるこずに蚀及する䟡倀がありたす。

そしお、より柔軟なハヌドりェア自動化プラットフォヌムTibbo Project System以前の蚘事で曞いたのリリヌスにより、そのようなシステムの実装は䞀般的で基本的なコンストラクタヌに倉わりたす。

もちろん、Tibbo Technologyの機噚は、フル機胜を備えた埓来のDevice Serverデバむスであり、競合他瀟よりも劣らず、さらに優れおいるこずがわかりたした。 しかし、無料のプログラミングの可胜性ずTPSハヌドりェアプラットフォヌムのリリヌスにより、開発者にはこの機胜をはるかに超える機䌚が䞎えられたした。独自のコンバヌタヌ、ハヌドりェアプロトコルゲヌトりェむ、さらには独自のPLCを䜜成できたす。

民䞻的な䟡栌蚭定ポリシヌ、技術サポヌトサヌビス、サヌビスセンタヌ、およびプロゞェクトの実斜に関するアドバむスを提䟛するこずで、顧客は党䜓ずしお高品質の補品を受け取りたす。 スペシャリストにお問い合わせください。プロゞェクトの問題解決に圓瀟の機噚がどのように圹立぀かをお芋せしたす。



All Articles