← Back to Docs

DrvSharedMemory Driver (Custom)

DrvSharedMemory communicator driver documentation.

Custom Communicator DriversVersion6.0.0Updated2026-04-29OwnerScadaV6CommExt

DrvSharedMemory Communicator Driver (Custom)

Functional Description

DrvSharedMemory is a custom Communicator driver in ScadaV6CommExt for field device connectivity. Protocol details follow the source implementation.

Scope and Version

  • Source: ScadaV6CommExt/DrvSharedMemory.Logic
  • TFM: net8.0
  • Version: 6.0.0

Install and Enable

  1. Deploy driver binaries to Communicator folders.
  2. Activate driver in Administrator → Communicator → Drivers.
  3. Upload configuration and restart Communicator.

Line and Device Configuration

  1. Create a communication line with the proper channel type.
  2. Add device and set address/timeouts.
  3. Set polling options and CmdLine as required by this driver; see Functional notes and configuration (template and source) below for file names, address format, and line keys.

CustomOptions (extracted)

KeyDefaultNote
未在源码中匹配到明显的 GetValueAs* 调用,请在 Administrator 中打开该驱动的设备/线路配置界面逐项确认。

Code hints

32: protected class TemplateDict : Dictionary
50: ConnectionRequired = false;
63: private SharedMemoryCmd CreateSharedMemoryCmd(DeviceTemplateOptions options,
81: private SharedMemoryCmd CreateSharedMemoryCmd(DeviceTemplateOptions options, CmdConfig cmdConfig)
155: protected virtual DeviceTemplate GetDeviceTemplate()
157: DeviceTemplate deviceTemplate = null;
158: string fileName = PollingOptions.CmdLine.Trim();
168: if (templateDict.TryGetValue(fileName, out DeviceTemplate existingTemplate))
176: DeviceTemplate newTemplate = CreateDeviceTemplate();
192: protected virtual DeviceTemplate CreateDeviceTemplate()
194: return new DeviceTemplate();
210: DeviceTemplate deviceTemplate = GetDeviceTemplate();

Administrator UI (DrvSharedMemory.View)

Configure in Administrator → Communicator. Labels below come from the View language pack.

  • View source: ScadaV6CommExt/DrvSharedMemory.View
  • Main forms:
    • FrmDeviceProps.cs
    • FrmDeviceTemplate.cs
    • FrmTemplateOptions.cs
Phrase keyText
gbCmdCommand Parameters
lblCmdCodeCommand code
lblCmdNumCommand number
lblCmdAddressElement address
lblTemplateFileNameDevice template
ConfigDirRequiredThe device template file must be located inside {0}
TemplateNotExistsThe device template file does not exist.
btnAddCmd.ToolTipAdd Command
gbTemplateDevice Template
TemplateTitle{0} - SharedMemory. Device Template Editor
DuplicatedCmdNumsDuplicated command numbers:
EmptyCmdCodesEmpty command codes found.
AddressHint{0}, starting from {1}
lblCmdNameName
lblCmdCodeWarnFill out code
lblCmdElemTypeElement type
lblCmdElemCntElement count
lblElemAddressAddress
thisDevice {0} Properties
gbCommLineCommunication Line
lblTransModeProtocol
gbDeviceDevice
btnEditTemplateEdit
btnBrowseTemplateBrowse...
btnNew.ToolTipNew Template
btnOpen.ToolTipOpen Template
btnSave.ToolTipSave Template
btnSaveAs.ToolTipSave Template As
btnEditOptions.ToolTipEdit Template Options
btnValidate.ToolTipValidate Template

Functional notes and configuration (template and source)

Derived from Logic/Common and device template XML: driver behavior and the Administrator/Communicator fields to set (address, CmdLine, line CustomOptions, template nodes).

Logic location

  • ScadaV6CommExt/DrvSharedMemory.Logic
  • Common: DrvSharedMemory.Common

Overrides

InitDeviceTags(), Session(), SendCommand()

CmdLine / template

  • PollingOptions.CmdLine.Trim();

DeviceConfig properties referenced

PropertyNote
未检测到 DeviceConfig.* 引用(可能使用基类封装)。

Line CustomOptions

KeyDefault
未在 Logic 中检测到 CustomOptions.GetValueAs*(可能全部从设备模板 XML 读取)。

XML keys (Common)

NodeNote
Elem来自 Common 配置加载/保存相关源码中的 XML 节点名
ZeroAddr来自 Common 配置加载/保存相关源码中的 XML 节点名
DecAddr来自 Common 配置加载/保存相关源码中的 XML 节点名
DefByteOrder2来自 Common 配置加载/保存相关源码中的 XML 节点名
DefByteOrder4来自 Common 配置加载/保存相关源码中的 XML 节点名
DefByteOrder8来自 Common 配置加载/保存相关源码中的 XML 节点名
Options来自 Common 配置加载/保存相关源码中的 XML 节点名
ElemGroups来自 Common 配置加载/保存相关源码中的 XML 节点名
ElemGroup来自 Common 配置加载/保存相关源码中的 XML 节点名
Cmds来自 Common 配置加载/保存相关源码中的 XML 节点名
Cmd来自 Common 配置加载/保存相关源码中的 XML 节点名

Code excerpt

152:         /// 
153:         protected virtual DeviceTemplate GetDeviceTemplate()
154:         {
155:             DeviceTemplate deviceTemplate = null;

155:             DeviceTemplate deviceTemplate = null;
156:             string fileName = PollingOptions.CmdLine.Trim();
157: 
158:             if (string.IsNullOrEmpty(fileName))

205:         /// 
206:         public override void InitDeviceTags()
207:         {
208:             DeviceTemplate deviceTemplate = GetDeviceTemplate();

207:         {
208:             DeviceTemplate deviceTemplate = GetDeviceTemplate();
209: 
210:             if (deviceTemplate == null)

281:         /// 
282:         public override void Session()
283:         {
284:             base.Session();

283:         {
284:             base.Session();
285: 
286:             if (deviceModel == null)

Troubleshooting

  • No data: line, address, template, connectivity.
  • Template load errors: check logs.
  • Options ignored: verify option scope (line vs device).