讀碼器 | DataMan讀碼器整合三菱MELSEC SLMP PLC的設置技巧與步驟

SLMP 通訊協議

SLMP 通訊協議使用標準的以太網硬體和軟體來交換 I/O 數據、警報和診斷信息。這是三菱電機公開的標準化通訊格式,用於透過以太網或串列連接與 Q 系列、iQ 系列和 L 系列 PLC 進行通訊。DataMan 僅支持在以太網上使用 SLMP 通訊協議。

默認情況下,DataMan 的 SLMP 通訊協議處於禁用狀態。可以透過設置工具、DMCC 命令或掃描配置碼來啟用該協議。

注意:如果您使用的是無線 DataMan 讀碼器,請參考「無線 DataMan 的工業通訊協議」部分。


DMCC 命令

以下命令可用於啟用或禁用 SLMP 通訊協議。這些命令可以透過 RS-232 或 Telnet 連接發送。
注意:使用第三方 Telnet 客戶端(例如 PuTTY)來與您的 DataMan 讀碼器進行通訊。

使能夠:
||>SET SLMP-PROTOCOL.ENABLED ON  
||>CONFIG.SAVE  
||>REBOOT  

禁用:
||>SET SLMP-PROTOCOL.ENABLED OFF  
||>CONFIG.SAVE  
||>REBOOT  

 

讀卡器配置代碼

掃描以下閱讀器設定代碼可為您的有線閱讀器啟用/停用 SLMP 協定。
注意:您必須重新啟動裝置才能使變更生效。

啟用: 禁用:


掃描以下讀碼器設定碼可啟用/停用 DataMan 8000 基站上的 SLMP 協定。
注意:您必須重新啟動裝置才能使變更生效。

啟用: 禁用:

SLMP 通訊協議掃描器

DataMan 中的 SLMP 通訊協議作為一種類型的客戶端設備(也稱為掃描器)來實現。DataMan 讀碼器以讀取和寫入請求的形式啟動所有通訊,而 PLC 則作為被動伺服器,對讀取和寫入請求作出回應。由於 PLC 無法主動發起通訊,因此它依賴於讀碼器定期向 PLC 發送請求(掃描),以執行 PLC 所需的任何操作或獲取相關信息(例如觸發或讀取結果)。
 

快速開始

默認情況下,SLMP 通訊協議在 DataMan 讀碼器中未啟用。必須先啟用該協議,並設置協議配置參數,以便與 PLC 正確互動。協議配置可透過 DataMan 設置工具完成。

在設置工具的「通訊」步驟的「以太網」選項卡中,勾選 SLMP Protocol 以啟用該工業協議。

請確保點擊工具欄右上角的「保存設置」按鈕以保存新的選擇,然後再斷開讀碼器的連接。
注意:新的設置僅在讀碼器重啟後生效。


SLMP協定配置包括兩個面向:定義網路資訊和定義要交換的資料。所有配置參數均可透過 SLMP 協定選項卡存取。
您必須修改IP 位址以符合您的 PLC 位址。此外,如果網路號碼PC 號碼目標模組與您的網路不同,請修改它們。

網路設定


網路配置定義了 DataMan 讀碼器與 PLC 建立連線所需的所有資訊。

姓名 預設 範圍 描述
IP位址 <空> 任何有效的 IP 位址 要連接的 PLC 的 IP 位址。
主機連接埠
(十六進位)
3000

任何十六進位連接埠號

1000-FFFF

PLC上SLMP協定通道的連接埠號碼。
超時(毫秒) 1000 5 - 30000 PLC 對 SLMP 協定訊息的回應時間 to 以毫秒為單位。

輪詢間隔(毫秒)

1000 10 - 30000 PLC 對控制區塊的連續輪詢之間請求的時間(以毫秒為單位)。
PLC系列 QCPU QCPU或LCPU 定義使用的幀類型。目前僅支援3E。

網路號碼

0 0 - 239 與之通訊的 SLMP 協定網路號碼(0 = 本機網路)。
電腦號碼 0xFF

1 -120 = CC-Link IE 上的站

現場網路適配器

 

126 = CC-Link 上的主站

IE現場網絡

 

255 = 直接連接到本地

車站

目標模組指定網路上的站標識符。

目的地模組

0x3FF

0x3ff = 本地電台(預設)

0x3d0 = 控制系統CPU

0x3d1 = 備用系統CPU

0x3d2 = 系統 A CPU

0x3d3 = 系統 B CPU

0x3e0 = CPU 1

0x3e1 = CPU 2

0x3e2 = CPU 3

0x3e3 = CPU 4

要連接的裝置的模組標識符。

資料塊配置

資料塊配置定義了 DataMan 讀碼器和 PLC 之間交換的資料。有六個資料塊可用。每個區塊都有一個預先定義的功能。

並非所有資料塊都是必需的。僅配置您的應用程式所需的資料塊。通常定義控制和狀態區塊是因為它們控制大多數資料流。但是,在某些用例中甚至不需要這些區塊。

透過定義資料塊中包含的 PLC 設備類型(即記憶體類型)、設備偏移量和設備數量來配置資料塊。如果設備類型或設備數量未定義,則不會使用該區塊。也就是說,該區塊沒有資料交換。

 

區塊名稱 支援的設備類型 抵銷 設備數量
控制 <無>、D、W、R、ZR、M、X、Y、L、F、B 0 - 65535

0,如果輸入<無>

 

32、如果位元類型

 

2、if字體

(唯讀)

地位 <無>、D、W、R、ZR、M、X、Y、L、F、B 0 - 65535

0,如果輸入<無>

 

32、如果位元類型

 

2、if字體

(唯讀)

PLC輸入 無、D、W、R、ZR 0 - 65535 0 - 960
PLC輸出 無、D、W、R、ZR 0 - 65535 0 - 960
命令 無、D、W、R、ZR 0 - 65535 0 - 960

命令

結果

無、D、W、R、ZR 0 - 65535 0 - 960

介面

本節介紹 PLC 透過 SLMP 協定看到的 DataMan 讀碼器的介面。此介面模型由六個資料區塊組成,分為三個邏輯對:

• 控制和狀態
• PLC輸入和PLC輸出
• 命令和命令回應

並非所有區塊都是必需的。您可以選擇哪些區塊適合您的特定應用。然而,大多數應用程式通常都會包含控制和狀態。

您可以為您選擇在應用程式中使用的每個介面區塊定義起始位址和裝置類型。未定義的區塊不會被交換。對於任何傳輸(讀取或寫入),都會發送整個區塊,即使區塊中只有一個欄位的值發生了變更。協定實現將邏輯上盡可能多的值變更分組到單一傳輸中,從而最大限度地減少網路使用。

控制區塊

控制塊包含位元類型資料。然而,該區塊可以定義為存在於 PLC 的位元記憶體或字記憶體中。此區塊包含從 PLC 發送到閱讀器的控制訊號。 PLC 使用它來啟動操作並確認某些資料傳輸。

位元 7 位元 6 位元 5 位元 4 位元 3 位元 2 位元 1 位元 0
預訂的 結果確認

緩衝

結果

使能夠

扳機

扳機

使能夠

位元 15 位元 14 位元 13 位元 12 位元 11 位元 10 位元 9 位元 8
預訂的
位元 23 位元 22 位元 21 位元 20 位元 19 位元 18 位元 17 位元 16
預訂的

發起

字串命令

設定用戶

數據

位元 31 位元 30 位元 29 位元 28 位元 27 位元 26 位元 25 位元 24
軟賽事 7 軟賽事 6 軟賽事 5 軟賽事 4 軟賽事 3 軟賽事2 軟賽事 1 軟賽事 0

控制塊字段描述

位元 姓名 描述
0

扳機

使能夠

此欄位設定為透過觸發位元啟用觸發。清除該欄位可停用網路觸發機制。
1 扳機 設定該位會觸發一次採集。
注意在觸發採集之前,必須將觸發就緒位元
2

緩衝

結果

使能夠

當該位元被設定時,每個讀取結果集(ResultIDResultCodeResultLengthResultData欄位)將保留在輸出區塊中,直到確認為止。一旦確認,下一組讀取結果將從緩衝區中提供。如果新的讀取結果在較早的集合被確認之前到達,則新的集合將在讀取器的緩衝區中排隊。閱讀器的緩衝區中最多可儲存 6 組讀取結果。有關確認握手序列的說明,請參閱「操作」部分。
3 結果確認 由 PLC 設定以確認已收到最新結果(ResultIDResultCodeResultLengthResultData欄位)。當閱讀器看到該位元從 0 轉換為 1 時,它會清除ResultsAvailable位元。這形成了 PLC 和閱讀器之間的邏輯握手。如果啟用結果緩衝,則確認將導致下一組排隊結果從緩衝區中移出。有關確認握手序列的說明,請參閱操作部分。
4-15 預訂的 保留以供將來使用。
16 設定用戶數據 由 PLC 設定以發出新用戶資料可用的訊號。讀取新的UserData,讀取器設定 Set UserDataAck以表示傳輸已完成。這形成了 PLC 和閱讀器之間的邏輯握手。
17 號

發起

字串命令

由 PLC 設定以發出新StringCommand可用的訊號。處理指令後,閱讀器設定 StringCmdAck以表示指令結果可用。這形成了 PLC 和閱讀器之間的邏輯握手。
18-23日 預訂的 未來使用
24-31日 軟活動

位元充當虛擬離散輸入。當某個位元從 0 轉變為 1 時,就會執行相關的操作。執行操作後,閱讀器設定相應的SoftEventAck以表示操作已完成。這形成了 PLC 和閱讀器之間的邏輯握手。

Bit0:列車程式碼

Bit1:訓練匹配字串

Bit2:訓練焦點

Bit3:列車亮度

Bit4:取消訓練

Bit5:保留(將來使用)

Bit6:執行DMCC指令

Bit7:設定匹配字串

狀態區塊

狀態區塊包含位元類型資料。該區塊也可以定義為存在於 PLC 的位元記憶體或字記憶體中。此區塊包含從閱讀器傳送到 PLC 的狀態訊號。閱讀器使用它來發出狀態訊號並與某些資料傳輸進行握手。

位元 7 位元 6 位元 5 位元 4 位元 3 位元 2 位元 1 位元 0
預訂的

錯過了

獲取

收購

扳機

確認

扳機

準備好

位元 15 位元 14 位元 13 位元 12 位元 11 位元 10 位元 9 位元 8
一般故障 預訂的 可用結果 結果緩衝區溢位 解碼完成切換 解碼
位元 23 位元 22 位元 21 位元 20 位元 19 位元 18 位元 17 位元 16
預訂的

字串命令

確認

設定用戶

數據確認

位元 31 位元 30 位元 29 位元 28 位元 27 位元 26 位元 25 位元 24

軟賽事

確認7

SoftEvent 確認 6 SoftEvent 確認 5 SoftEvent 確認 4

軟賽事

確認3

軟賽事

確認2

軟賽事

確認1

SoftEvent 確認 0

狀態區塊欄位描述

位元 姓名 描述
0

觸發就緒

指示閱讀器何時準備好接受新的觸發器。當TriggerEnable已設定且閱讀器準備好接受新觸發時,閱讀器會設定該位元。
1 觸發確認 指示閱讀器何時識別出已設定觸發器。此位元保持設定狀態,直到觸發位元清零。
2

收購

設定為指示讀取器正在取得影像。

 

3 錯過了獲取 表示讀取器錯過了請求的擷取觸發。當發出下一次採集時,該位元被清除。
4-7 預訂的 未來使用
8 解碼 設定為指示閱讀器正在解碼圖像。
9

解碼完成切換

表示有新的結果資料可用。每次有新的結果資料可用時,位元都會切換狀態(0 到 1 或 1 到 0)。
10 結果緩衝區溢位 設定為指示閱讀器已丟棄一組讀取結果,因為 PLC 尚未確認較早的結果。當下一組結果資料成功在緩衝區中排隊時清除。該位元僅在結果緩衝啟用時才有意義。
11 可用結果

設定為指示新結果資料可用。即使有其他新的讀取結果可用,該位元也將保持設定狀態,直到透過ResultsAck確認為止。

12-14日 預訂的 未來使用
15

一般故障

設定為指示發生了乙太網路通訊故障。目前僅由 SoftEvent 作業使用。位元將保持設定狀態,直到下一個成功的 SoftEvent 或直到TriggerEnable設定為低電平然後再次設定為高電平。

 

16 設定用戶資料確認 設定為指示閱讀器已收到新的UserData。位元將保持設定狀態,直到對應的SetUserData位元被清除。這形成了 PLC 和閱讀器之間的邏輯握手。
17 號 字串命令確認 設定為指示閱讀器已完成最新字串命令的處理並且命令回應可用。位元將保持設定狀態,直到對應的InitiateStringCmd位元被清除。這形成了 PLC 和閱讀器之間的邏輯握手。
18-23日 預訂的 未來使用
24-31日 軟事件確認

設定為指示閱讀器已完成 SoftEvent 操作。位元將保持設定狀態,直到對應的 SoftEvent 位元被清除。這形成了 PLC 和閱讀器之間的邏輯握手。

Bit0:確認列車程式碼

Bit1:確認訓練匹配字串

Bit2:確認火車焦點

Bit3:確認列車亮度

Bit4:確認未訓練

Bit5:保留(將來使用)

Bit6:Ack 執行 DMCC 指令

Bit7:確認設定匹配字串

 

輸入資料區塊

輸入資料塊包含字類型資料。這是從 PLC 發送到閱讀器的資料。此區塊由使用者定義的資料組成,可用作採集/解碼操作的輸入。

字 0 字1 字 2..N
預訂的 使用者資料長度 使用者資料


輸入資料塊欄位描述

單字 姓名 描述
0 預訂的 未來使用
1

使用者資料 

長度

UserData欄位中實際包含的有效資料的位元組數
2..N 使用者資料 使用者定義的資料可用作採集/解碼的輸入。


輸出資料塊

輸出資料塊包含字類型資料。這是從閱讀器發送到 PLC 的數據。此區塊主要由讀取結果資料組成。

字 0 字1 詞2 字3 字4 字 5..N
預訂的 觸發器ID 結果編號 結果代碼 結果長度 結果數據

輸出資料塊欄位描述

單字 姓名 描述
0 預訂的 未來使用
1 觸發器ID 觸發器標識符。下一個要發出的觸發器的識別碼。用於將發出的觸發器與稍後接收的結果資料進行比對。相同的值將作為相應讀取的 ResultID 傳回。
2 結果編號 結果集標識符。這是發出對應觸發器時 TriggerID 的值。用於將觸發器與對應的結果資料進行比對。
3 結果代碼

指示產生此結果集的讀取成功或失敗。

Bit0:1=已讀,0=未讀

Bit1:1=已驗證,0=未驗證

Bit2:1=已驗證,0=未驗證

Bit3: 1=擷取觸發溢出

Bit4: 1=擷取緩衝區溢出

Bit5-15:保留(將來使用)

4 結果資料長度 ResultData 欄位中實際有效資料的位元組數。
5..N 結果數據 此次採集/解碼的結果數據。

 

字串命令區塊

字串命令塊包含字類型資料。這是從 PLC 發送到閱讀器的資料。此區塊用於將基於字串的命令 (DMCC) 傳輸到閱讀器。

注意請勿在觸發讀取的同時傳送更改讀取器配置的字串命令。在採集/解碼期間更改配置可能會導致不可預測的結果。

字 0 字 1..N
長度 字串命令

 

字串命令區塊字段描述

單字 姓名 描述
0 長度 StringCommand欄位中有效資料的位元組數
1..N 字串命令 包含要執行的命令的 ASCII 文字字串。不需要空終止。

 

字串命令結果區塊

字串命令結果區塊包含字類型資料。這是從閱讀器發送到 PLC 的數據。此區塊用於將基於字串的命令 (DMCC) 的回應傳輸到 PLC。

字 0 字1 字 2..N
結果代碼 長度 字串命令結果

 

字串命令結果區塊欄位描述

單字 姓名 描述
0 結果代碼 指示命令成功或失敗的代碼值。請參閱指令參考,可透過 Windows開始功能表或 DataMan 設定工具說明功能表取得。
1 長度 StringCommand欄位中有效資料的位元組數
2..N 字串命令結果 包含要執行的命令的 ASCII 文字字串。不需要空終止。

操作

SLMP 協定是基於命令/回應的協定。所有通訊均源自 DataMan 讀碼器。閱讀器必須定期向 PLC 發送讀取請求,以偵測控制位的變化。

掃描

為了啟動操作或控制資料傳輸,PLC 會變更控制區塊的某些位元的狀態。由於只有閱讀器才能發起通信,因此閱讀器以週期性速率進行掃描(即從 PLC 讀取控制塊)。該速率是使用者定義的。

每次掃描後,閱讀器將處理控制區塊中位元狀態的變化。某些狀態變更需要與 PLC 進行額外通信,例如寫入更新的確認位值或讀取新的字串命令。閱讀器自動處理這些附加通訊。其他狀態變更會啟動一些活動,例如觸發讀取或執行 SoftEvent。讀取器執行請求的操作並隨後報告結果。
對於任何傳輸(讀取或寫入),都會傳送整個介面區塊,即使該區塊中只有一個欄位的值已變更。協定實現將邏輯上盡可能多的值變更分組到單一傳輸中,從而最大限度地減少網路使用。
典型時序圖
 

握手機制 (Handshaking)

在讀碼器與 PLC 之間的邏輯握手機制中,可實現多種操作,如觸發、結果傳輸、執行 SoftEvents、字串命令等。此機制確保交易雙方都能了解對方的操作狀態。由於網絡傳輸延遲會導致信號和數據傳輸的有限時間延遲,若無握手機制,一方可能無法檢測到對方信號狀態的變化。任何具有觸發信號和相應確認信號的操作都採用這種基本的握手程序。

四步驟握手程序

1、啟動信號(Assert signal)
請求設備發送信號以請求操作(將位元從 0 設為 1)。

2、確認信號(Signal acknowledge)
當目標設備檢測到信號且完成請求操作後,會發送相應的確認信號(將位元從 0 設為 1)。

3、取消信號(De-assert signal)
當請求設備檢測到確認信號時,會取消原始信號(從 1 設為 0)。

4、取消確認信號(De-assert acknowledge)
當目標設備檢測到原始信號被取消後,會取消其確認信號(從 1 設為 0)。

為確保正常運行,雙方都必須看到完整的「啟動/取消」循環(從 0 到 1,再從 1 到 0)。請求設備不應在循環完成前發起下一個請求。

 

圖像擷取序列 (Acquisition Sequence)

DataMan 讀碼器可以通過多種方法觸發圖像擷取,包括透過 SLMP 通訊協議設置觸發位元、發送觸發字串命令、使用 DMCC(Telnet)或硬連接的觸發信號。此部分描述使用 SLMP 協議觸發位元的方法。

啟動階段

• 系統啟動時,TriggerEnable 默認為 False。必須將其設為 True,才能通過 SLMP 通訊協議的觸發位元啟用觸發功能。

• 當設備準備好接受觸發時,讀碼器會將
TriggerReady 位元設為 True。

觸發操作

• 當 TriggerReady 位元為 True 時,每次讀碼器檢測到 Trigger 位元從 0 變為 1 時,就會啟動一次讀取操作。

• 請確保觸發位元保持在新的狀態,直到該狀態值在
TriggerAck 位元中被檢測到。這種握手過程可以確保讀碼器檢測到觸發信號。

擷取與解碼

• 擷取進行時,TriggerReady 位元會被清除,並將 Acquiring 位元設為 True。
• 當擷取完成後,
Acquiring 位元將被清除。
• 當設備準備好進行下一次圖像擷取時,
TriggerReady 位元將再次設為 True。

結果緩衝

如果啟用了結果緩衝功能,讀碼器允許擷取和解碼操作重疊執行。此時,擷取完成後,TriggerReady 位元會設為高位,而解碼操作仍在進行中。這可以實現更快的觸發速率。
• 如果未啟用結果緩衝功能,
TriggerReady 位元將保持低位,直到擷取和解碼操作全部完成。

 


 

若要強制重置觸發機制,請將TriggerEnable設為False,直到TriggerReady也設為 False。然後,可以將TriggerEnable設為 True 以重新啟用採集。

作為一種特殊情況,可以透過在讀取操作完成之前清除觸發訊號來取消擷取。如果視野中沒有程式碼,這允許取消演示和手動模式下的讀取。為確保讀取不會意外取消,請確保 PLC 保持觸發訊號 True,直到TriggerAckResultsAvailable均為 True(或DecodeComplete切換狀態)。

解碼/結果序列

獲取影像後,對其進行解碼。解碼時,解碼位元被設定。當解碼操作完成時,解碼位元被清除。 ResultsBufferEnable決定讀取器如何處瞭解碼結果。

如果ResultsBufferEnable設定為 False,則讀取結果將立即放入輸出資料區塊中,ResultsAvailable設為 True,並且DecodeComplete被切換。

如果ResultsBufferEnable設定為 True,則新結果將在緩衝區中排隊,並切換DecodeComplete 。較早的讀取結果保留在輸出資料區塊中,直到 PLC 確認為止。確認握手後,如果佇列中有更多結果,則下一組結果將放置在輸出資料區塊中,並將ResultsAvailable設為 True。

結果緩衝

有一個選項可以啟用讀取結果的佇列。如果啟用,則允許將有限數量的結果資料集排隊,直到 PLC 有時間讀取它們。如果 PLC 短時間內變慢,這對於平滑資料流很有用。

如果啟用結果緩衝,閱讀器將允許重疊採集和解碼操作。根據應用,這可用於實現更快的整體觸發速率。有關詳細信息,請參閱採集序列說明。

一般來說,如果讀取發生的速度快於結果發送的速度,則緩衝與不緩沖之間的主要差異決定了哪些結果被丟棄。如果未啟用緩衝,則將保留最新結果,而 PLC 讀取速度不夠快的較早結果將會遺失。較新的結果將涵蓋較早的結果。如果啟用緩衝且佇列已滿,則最新的結果將被丟棄,直到結果佇列中有可用空間為止。

注意:如果佇列溢位並且停用緩衝,則 TriggerID 和 ResultID 值之間的差異將大於 1。此差異表示已發生但由於佇列已滿而無法排隊的讀取數(遺失的讀取數等於 TriggerID - ResultID - 1)。下一次讀取後,ResultID 值將返回 TriggerID - 1 的典型操作值。

軟活動

SoftEvents 充當「虛擬」輸入。當SoftEvent位元的值從 0 變成 1 時,將執行與該事件關聯的操作。當操作完成時,對應的SoftEventAck位元將從 0 變為 1 以表示完成。

SoftEvent和SoftEventAck形成邏輯握手。SoftEventAck變成 1後,原來的SoftEvent應該被設定回 0 。

WARNING:  ">警告:  請勿在觸發讀取的同時執行更改讀取器配置的 SoftEvent。在採集/解碼期間更改配置可能會導致不可預測的結果。

注意: “ExecuteDMCC”和“SetMatchString”SoftEvent 作業需要使用者提供的資料。在呼叫 SoftEvent 之前,必須將該資料寫入UserDataUserDataLength由於這兩個 SoftEvent 都依賴UserData,因此一次只能呼叫一個。

字串命令

DataMan SLMP 協定實作包括字串指令功能。此功能可讓您透過 SLMP 協定連線執行基於字串的 DMCC。 DMCC 透過字串指令區塊傳送到閱讀器。 DMCC 結果透過字串指令結果區塊傳回。啟動命令和完成通知是透過控制和狀態區塊中的訊號位元來完成的。

要執行 DMCC,命令字串被放置在 String Command 模組的資料欄位中。命令字串由標準 ASCII 文字組成。序列 (RS-232) 或 Telnet 連線使用相同的命令格式。該字串不需要以空字元結尾。相反,字串的長度(即 ASCII 字元的數量)被放置在 String Command 區塊的長度欄位中。

執行 DMCC 後,結果字串將會回到 String Command Result 區塊中。與原始命令類似,結果字串由 ASCII 字元組成,其格式與透過序列或 Telnet 連接傳回的格式相同。此外,沒有終止空字元。相反,結果的長度在命令字串結果長度欄位中傳回。 Command String Result 模組也包含數字結果代碼。這使您可以確定命令的成功或失敗,而無需解析文字字串。結果代碼的值在 DMCC 文檔中定義。

一般故障指示器

當發生 SLMP 協定通訊相關故障時,「GeneralFault」位元將從 0 變更為 1。如果 SoftEvent 操作失敗,則會設定故障位元。故障位元將保持設定狀態,直到下一次成功的 SoftEvent 操作,或直到TriggerEnable設定為 0,然後再設定回 1。



 

Examples

Included with the DataMan Setup Tool installer is an example PLC program created with Mitsubishi (GX Works2) software. This program demonstrates the DataMan ID readers’ capabilities and proper operation. You can do the same operations by using more advanced features and efficient programming practices with Mitsubishi PLCs. For demonstration purposes, the sample program is used.

Function

The example application demonstrates the following operations:

  1. Triggering a read
  2. Getting read results
  3. Executing string commands (DMCC)
  4. Executing SoftEvent operations
    1. Train code
    2. Train match string
    3. Train focus
    4. Train brightness
    5. Un-train
    6. Execute DMCC
    7. Set match string

The “Main” program contains a PLC ladder rung to invoke each of these operations. The operation is invoked by toggling the control bit on the rung from 0 to 1. This invokes the associated subroutine to perform the operation. When the operation is complete, the subroutine sets the control bit back to 0.

Triggering a Read

The example provides two trigger options; “Continuous Trigger” and “Single Trigger”. As the name implies, enabling the “Continuous Trigger” bit will invoke a continuous series of read operations. Once enabled, the “Continuous Trigger” control bit will remain set until you disable it. The “Single Trigger” control bit invokes a single read operation. This control bit will automatically be cleared when the read is completed.

Primarily, the trigger subroutine manages the trigger handshake operation between the PLC and the reader. The control Trigger bit is set, the PLC waits for the corresponding TriggerAck status bit from the reader, and the control Trigger bit is reset. Refer to a description of handshaking in section Operation.

The trigger subroutine contains a delay timer. This is not required for operation. It exists simply to add an adjustable artificial delay between reads for demonstration purposes.

Getting Read Results

For this example the operation of triggering a read and getting read results were intentionally separated. This is to support the situation where the PLC is not the source of the read trigger. For example, the reader may be configured to use a hardware trigger. In such a case, only the get results subroutine would be needed.

Like the triggering subroutine, the get results subroutine manages the results handshake operation between the PLC and the reader. However, it also copies the result data to internal storage. The routine waits for the ResultsAvailable status bit to become active, it copies the result data to internal storage, and then executes the ResultsAck handshake. Refer to a description of handshaking in section Operation.

The read result consists of a ResultCodeResultLength, and ResultData. Refer to section Output Data Block Field Descriptions for details of the ResultCode values. The ResultLength field indicates how many bytes of actual result data exist in the ResultData field. The subroutine converts this byte length to word length before copying the results to internal storage.

The get results subroutine gathers read statistics: number of good reads, number of no-reads, and so on. This is not required for operation. It is simply for demonstration purposes.

Execute String Commands (DMCC)

The string command feature provides a simple way to invoke DMCC commands from the PLC. The command format and command result format is exactly identical to that used for serial or Telnet DMCC operation.

This subroutine copies an example DMCC command (||>GET CAMERA.EXPOSURE) to the String Command block and then manages the string command handshake operation between the PLC and the reader to invoke the command and retrieve the command result. Any valid DMCC command may be invoked with this mechanism. Refer to the DataMan Command Reference document available through the Windows Start menu or the DataMan Setup Tool Help menu.

Execute SoftEvents

SoftEvents are used to invoke a predefined action. Each SoftEvent is essentially a virtual input signal. Each of the SoftEvent subroutines manages the handshake operation between the PLC and the reader to invoke the predefined action. The associated action is invoked when the SoftEvent bit toggles from 0 to 1. The subroutine then watches for the associated SoftEventAck bit from the reader which signals that the action is complete. For a description of handshaking, see section Operation.

Note: The “Execute DMCC” and “Set Match String” SoftEvents make use of the Input Data block. The subroutine for these two events copies the relevant data into the User Data fields of the Input Data block and then invokes the User Data subroutine to transfer the data to the reader. The actual SoftEvent action is invoked only after the user data is transferred. The user data needs to be transferred before invoking either of these events.

Note: The “Train Match String” SoftEvent only prepares the training mechanism. The actual training occurs on the next read operation. Therefore, a trigger must be issued following “Train Match String”.

 

 

line