カスタムプロトコル(パッシブ):Visual HMIにはDCBUS、XGUS、Modbus(RTU/TCPマスター/スレーブ)、三菱 FX 2 N、デルタDVP、シーメンスPPIなどのプロトコルが組み込まれていますが、実際のフィールドには常にあります。プライベート·プロトコル受け取るために。LUAはシリアルポートを制御し、カスタムフレームの送受信解析を実現します。この記事は受動的です:データを受信したら、Parseするだけです。。
1. APIの概要
| 関数の機能 | 説明書は |
|---|---|
uart_setup(ch, baudrate, databits, stopbit, parity) | ストップビット0=1ビット/1=1.5ビット;パリティ0=なし/1=奇数/2=偶数。セカンダリシリアルポートは呼び出して有効にする必要があります、メインシリアル(ch=0)はデータのみを |
on_uart_recv(ch, packet) | パッシブ受信コールバック、パケットは1のバイトテーブルから添字を持つ。下請け/接着可能自分で分析する必要がある。 |
uart_send(ch, packet) | 送信バイトテーブル |
set_free_protocol(en) | 1=メインシリアルポートスクリプトの引き継ぎ(フリープロトコル);0=プロジェクト構成の元のプロトコルを復元する |
メインシリアルポート(ch=0)がon_uart_recvをトリガする条件:エンジニアリング構成プロトコルが“カスタム”に設定されているか、スクリプト内でset_free_protocol 1。メインシリアルポートがModbusなどの組み込みプロトコルで占有されている場合、on_uart_recvは呼び出されません。。DCBUS/XGUSシリアルパラメータ固定:1ビットストップビット、チェックなし。
2.プロトコルの例:LED照明制御
フレーム構造:
| 方向性は | フレームヘッド1B | 長さ1B | 機能コード2B | データnB | フレームテール2B |
|---|---|---|---|---|---|
| デバイス→画面 | 0x5A | 関数コードからフレーム末尾までのバイト数 | 0x0001~0xFFFF | Variableシングル | 0xFC 0xFF |
| 画面→デバイス | 0xA9 | 同上、同じ | 同上、同じ | Variableシングル | 0xFC 0xFF |
長さ=関数コード2 B+データnB +フレームテール2 B = n+4、ビッグエンド。機能コード:0 x 00 01 =スイッチ、0 x 00 02 =明るさ、0 x 00 03 =名前変更。
3.ステートマシンParse(処理下請け/接着パック)
recvBuf = {} - 受信バッファ
STATE_IDLE、STATE_LETH、STATE_DATA = 0 1 2
= STATE_IDLE
フレームレン= 0
function on_uart_recv ch packet
for i = 1 #packet do
b =パケット[i]
if state == STATE_IDLE then
b == 0 x 5 aの場合
state = STATE_LENGTH
recvBuf = {}
End of Endシングル
elseif == STATE_LETH then
frameLen = b 2番目のバイト:長さ
= STATE_DATA
recvBuf = {b}
elseif state == STATE_DATA
table.insert recvBuf b
#recvBuf = frameLen thenの場合
1つのフレームを閉じてParseする
parse_recvBuf
= STATE_IDLE
End of Endシングル
End of Endシングル
End of Endシングル
End of Endシングル
function parse_frame buf
local func = buf[2] 8 0xFF func 0xFF}
for i = 1 #payload do table.insert pkt payload[i] end
table.insert pkt 0xFC; table.insert pkt 0xFF
uart_send 0 p
End of EndシングルReturn toはハードウェア割り込みではなく、システムタスクポーリングがトリガーされます。コールバックで時間のかかるOperation(大きな文字列スプライシング、ファイルの読み書き)を行わないでください。
Guangzhou Dai Technology Visual HMI開発ドキュメント(hmi-doc.gz-dc.com)からの整理LUAチュートリアル“Custom Protocol-Passive Receiver”、著作権はDai Dai Technologyに帰属します。
Leave a Reply