串行线路
Modbus RTU、Generic serial and TCP、SCPI instruments 和 Omron 驱动的串行线路节点:总线上每台设备共用的那组物理参数、它的时序、它的状态、从站扫描、归在它下面的设备,以及线路启用期间被锁住的东西。
一条串行线路就是一条物理串行总线:一个 COM 端口,加上它的波特率和字节格式,接在这条线上的每台设备共用这一组参数。线路存在于 Modbus RTU、Generic serial and TCP、SCPI instruments 和 Omron 四个驱动下面,位于驱动和它的设备之间,所以树读起来是 Modbus RTU > 线路 > 设备 > 点位。线路永远属于创建它时所在的驱动:不同驱动的设备绝不共用一条线路,一个端口无论属于哪个驱动都只属于一条线路。Modbus RTU 线路还拥有传输模式、响应超时以及每台从站共用的节奏;在通用驱动或 SCPI 驱动的线路上,每台设备在自己的面板中说明其消息如何结束、等待多久,线路只保留端口、波特率和格式(见 Generic serial and TCP 和 SCPI instruments)。在 Omron 驱动的线路上,每台 PLC 按自己的单元号应答,并自行设定响应超时(见 Omron)。有“查看 Connector”就能看见这个页面;页面上的每个字段和每条命令都需要“配置 Connector”。
新建一条线路
有三种手势能造出一条线路,都在已添加的驱动下面:驱动页面上“串行线路”表里的添加线路,栏底的新建… > <Driver> > 新建串行线路,以及驱动右键菜单里的添加线路。新线路名叫“新建线路”(然后是“新建线路 2”),取用 Windows 报告的、还没有别的线路占用的第一个串口(一个空闲的都没有时取 COM1、COM2,依此类推),起始参数是 9600 波特、8E1(Modbus RTU 线路还有 1000 毫秒响应超时和 0 毫秒事务间隔),并且创建出来是已禁用的,好让你在端口打开之前先把物理参数组配好。记录条里就是这么说的:“已添加处于禁用状态的线路‘新建线路’。请配置它的物理设置,然后启用它。”这条线路不会被打开:它在驱动页面的“串行线路”表格里突出显示,从“新建…”或右键菜单新建时画面会转到那个页面;用它那一行的打开来编辑它。Omron 驱动的线路则以 7E2 开始,即 Host Link 端口的出厂设置。
标题栏
名称、健康状态圆点、状态词和物理参数组排在一行(“COM3 · 9600 · 8E1 · 1000 ms”,ASCII 线路上是“COM3 · 9600 · 7E1 · ASCII · 1000 ms”,没有超时的通用驱动或 SCPI 驱动的线路上是“COM3 · 9600 · 8E1”);端口出故障时,下面还有一行红色的诊断文字。状态词是已关闭、空闲、正在连接…、在线和端口故障,各自的含义见启用与健康状态。下面点名线路上有自身错误的设备(“1 台设备有错误:Meter”);端口本身失败期间,设备都指向线路,不点名任何设备。
命令栏
| 命令 | 作用 | 何时置灰(情况) | 何时不画出来(角色) |
|---|---|---|---|
| 启用 | 让线上的设备开始占用总线,并锁住物理参数组。 | 线路已经是启用的,它的参数组无效,正在扫描,或工作站拒绝改动。 | 没有“配置 Connector”权限时。 |
| 禁用 | 对线上的每台设备关闭总线,但不去动它们各自的“已启用”开关,同时解锁参数组。 | 线路已经关着,正在扫描,或工作站拒绝改动。 | 没有“配置 Connector”权限时。 |
| 删除线路(危险色,靠右) | 先问一句。空线路:“要删除‘线路’吗?这条线路上没有设备。 此操作无法撤销。”有设备的线路:“这同时会删除它的 3 台设备以及它们的全部点位。”删完之后选中线路所属的驱动。 | 正在扫描,或工作站拒绝改动。 | 没有“配置 Connector”权限时。 |
右键点线路,会在同样的启用、禁用和删除之前多出一个添加设备。
“物理线路”卡片
“一条物理串行总线:这条线路上每个按从站地址寻址的设备共用的端口设置。”通用驱动或 SCPI 驱动的线路上则是“一条物理串行总线:其上仪表共用的端口设置,一次只发一个请求。”这种线路只显示名称、端口、波特率和格式,下表中标为仅限 Modbus RTU 的字段不会出现。Omron 驱动的线路显示“一条物理串行总线:其上 PLC 共用的端口设置,每台按自己的单元号应答,一次只发一个请求。”,显示的内容相同。
| 字段 | 它是什么 | 取值 / 默认值 | 影响 |
|---|---|---|---|
| 名称 | 这条总线的友好名称,显示在树里和每台设备的“串行线路”字段里。 | 必填;创建时是“新建线路”。 | 线路启用期间也能改。留空会被拒绝:“线路名称不能为空。”这个名字从不进入地址:一台 Modbus RTU 设备的地址是 Connector.ModbusRtu.<Device>.<Tag>,没有线路那一段。 |
| 串行端口 | Windows 的 COM 端口:物理的、虚拟的或重定向的都可以。是一个文本字段,旁边有一个列出 Windows 当前报告的端口的选择器;选中一个就填进字段。刷新会重新读一次操作系统的列表,但不替换你已经打进去的内容。什么都没检测到时,选择器里只有一项不可选的“没有检测到端口”,字段则写“没有检测到串行端口。请手动输入一个。” | 必填;创建时取检测到的第一个空闲端口。 | 线路启用期间锁住。一个端口只属于一条线路,不区分大小写,即使两条线路都禁用着也一样:第二条用同一端口的线路在保存时会被拒绝。 |
| 波特率 | 总线速率。 | 大于零;9600。 | 启用期间锁住。它和格式一起决定自动的帧间静默。 |
| 传输模式 | 仅限 Modbus RTU。总线上每台从站怎样组织报文:RTU 是带 CRC 的二进制帧,ASCII 是从冒号到换行、带 LRC 的文本。 | RTU、ASCII;默认 RTU。 | 启用期间锁住。ASCII 线路上,串行格式还多出 7N2、7E1、7E2、7O1,而且 ASCII 帧以换行结束,自动静默显示 0 ms;间隔下面的说明也这样写。RTU 线路拒绝 7 位格式:带 7 位格式的 ASCII 线路改回 RTU 时,格式显示为空,选定一个 8 位格式之前线路不会保存。 |
| 串行格式 | 数据位、校验位和停止位。 | 8N1、8N2、8E1、8E2、8O1、8O2,ASCII 线路和通用驱动、SCPI 驱动或 Omron 驱动的线路上还有 7N2、7E1、7E2、7O1;默认 8E1。 | 启用期间锁住。 |
| 响应超时(ms) | 仅限 Modbus RTU。一台从站最多可以用多久来回答,超过就算这次请求失败。 | 100 到 60000;默认 1000。 | 启用期间锁住。卡片上就说了:超时放长能迁就慢设备,但也让缺席的从站和设备发现更慢才认得出来。 |
| 最小事务间隔(ms) | 仅限 Modbus RTU。一段全线通用的静默,从一次事务尝试结束算到下一次开始,对每台从站、每次读和每次写都算,超时和失败也算在内。 | 0 到 1000;默认 0。 | 启用期间也能改;改动不必让端口重新开合就生效。填零就保持协议本身的最小值。后面跟着两个读数:自动,也就是 Modbus RTU 的下限(在配置的波特率和格式下,19200 波特及以下是 3.5 个字符时间,更高则是 1.75 毫秒);以及实际,取下限和你填的值中较大的那个,绝不是两者相加。说明写着它是干什么的:数值越大,线上每台从站的吞吐都越低,而且它是一种兼容性辅助手段,不是用来修接线、终端电阻、接地或干扰问题的。 |
卡片以三行收尾:线路的健康状态概括(“在线 · 2/2 台设备在线”“空闲 · 没有已启用的设备”“在线 · 1 台在线 · 1 台有问题”)、此刻哪些字段可以改(“线路禁用期间可以编辑物理设置。”或“要更改物理设置,请先禁用这条线路。名称和事务间隔在线也能编辑。”;通用驱动或 SCPI 驱动的线路没有事务间隔,则是“要更改物理设置,请先禁用这条线路。名称在线也能编辑。”),以及 Modbus RTU 线路上那条关于超时的建议。
超出范围的值不会保存,原因落在记录条里:“串行端口不能为空。”“波特率必须大于零。”“响应超时必须在 100 到 60000 ms 之间。”“最小事务间隔必须在 0 到 1000 ms 之间。”输入框留着打进去的值;标题里的参数组、驱动的物理参数组列和每台从站的串行线路 · 固定,仍然显示线路存下来的样子,也就是总线实际在用的那一套。参数组无效的线路不能启用。工作站拒绝的保存会把卡片回滚成已存下来的值。
“发现从站”卡片
只对“配置 Connector”、且只在 Modbus RTU 线路上画出来:“在这条已配置的物理线路上依次进行只读探测。”起始单元 ID 和结束单元 ID(1 到 247,递增;默认 1 到 32)圈定一段范围,探测会用这条线路已保存的参数组去问范围内的每一台从站;发现设备启动它,并变成取消。字段下面那一行给出最坏情况的估算(“32 次探测 · 最多约 32.1 秒,其中每次探测前静默 4.011 ms。”),或者点出这段范围哪里不对(“单元 ID 范围必须递增。”)。一条已启用、且至少有一台已启用设备的线路正在使用中,卡片会说出来:“这条线路正在使用中。请先禁用它再做设备发现;Ganter Lab 不会自动中断总线,也不会自动把它重新启用。”卡片上还没保存的编辑会在扫描打开端口之前先保存。结果表格发现的从站(单元 ID、设备、结果、添加设备或打开)以及扫描本身,都在设备发现里讲。
“设备”卡片
“同一条线路上的单元 ID 必须唯一。物理设置继承自线路,在这里无法更改。”添加设备会在这条线路上、用 1 到 247 之间第一个空闲的单元 ID 创建一台设备,在这张表格里突出显示并滚动到可见处(“已在‘线路 1’上添加设备‘新建设备’。”);一个空闲的都没有时它被拒绝,说“线路‘X’已经用满了所有有效的单元 ID。”,扫描期间它置灰。表里列出设备、单元 ID、点位、健康状态,以及打开、启用、禁用和删除这几个动作(后三个只对“配置 Connector”出现,扫描期间全部置灰)。设备自己的页面把线路和它的参数组显示为只读文字,见设备。有自身错误的设备,名称后面带着树里同样的红色标记。
在通用驱动或 SCPI 驱动的线路上,卡片写的是“这条线路上的所有设备共用它的端口设置。每个设备在自己的面板中说明其消息如何结束、等待应答多久。”添加设备在线路上创建一台该驱动的设备,没有单元 ID,表里也没有单元 ID列:需要多少台仪表都可以共用这条线路,靠它们请求的内容区分。
在 Omron 驱动的线路上,卡片显示“这条线路上的所有 PLC 共用它的端口设置,并按各自的单元号应答。每台 PLC 在自己的面板中说明等待应答多久。”添加设备在线路上按 0 到 31 中第一个空闲的单元号创建 PLC,复制的设备取下一个空闲的号,表格有单元 ID列:一条线路最多由 32 台 PLC 共用,每台按自己的 Host Link 单元号应答。
一条线路不做什么
线路不接受文件夹:它的设备只按线路归档,不按别的,设备上也不提供“移动到”菜单。一台设备不能挪到另一条线路上;复制设备会把副本留在同一条线路上,在 Modbus RTU 线路上用下一个空闲的单元 ID。参数组不能按设备各不相同,而且没有设备时端口根本不会打开:一条已启用但没有已启用设备的线路读作“空闲”,不持有任何会话,这也正是能安全扫描它的原因。