信息化 频道

<连载>Protel二次开发从入门到精通

  6.3 内部的PCB机器人

在PCB编辑器内,有十一个内部的机器人,虽然所有的机器人将通过PCB编辑器监听到相同的在内部发送的PCB消息,但它们不响应所有的PCB消息。PCB编辑器提供了可创建自定义机器人的能力,自定义的机器人将被增加到机器人系统,自定义的机器人不仅能响应PCB消息,也能响应用户定义的消息,每一个内部的PCB编辑器机器人将被与它们能反应的特定PCB消息相关,描述如下:

·Component Pattern Robot元件式样机器人

元件式样机器人是负责当一个封装形式(Footprints)被改变时,执行适当的步骤,当下列消息被收到时,从印制板中删除旧的封装形式,增加新的封装形式,分配适当的网络到新的封装形式焊盘。

PCB消息

描述

ProcessStart

此消息发信号到机器人,来在内部的元件列表中删除所有的元件。

EndModify

此消息包含当前元件、图案信息,它监视元件式样的改变,并且如果它已改变,此机器人存储在封装形式已被更新的元件内部列表中。

YieldToRobots

此消息发信号到机器人,来从库中更新元件,封装形式被更新,如果需要重新分配,网络分配被选中。

元件式样机器人优先级设置是2130。

·Net Connectivity Robot网络连接机器人

当下列消息被收到时,网络连接机器人监视印制板连接/连线表的完整性。

PCB消息

描述

ProcessStart

一个无效网络的内部列表被清除。

EndModify

无效的网络增加到内部无效的网络列表中。

BoardRegisteration

刷新并且增加更新的网络到印制板数据库系统中。

YieldToRobots

如果任何无效的网络被发现,无效的网络被选中,这样它们被修正和更新。

网络连接机器人优先级设置是1120。

·Board data structure robot印制板数据结构机器人

当下列消息被收到时,印制板数据结构机器人维护数据库的内部操作。

PCB消息

描述

EndModify

如果空间数据结构有一个修改,检查并且如果必要话,纠正空间数据结构的有效性。

BoardRegisteration

通知PCB编辑器,PCB文档已修改。

印制板数据结构机器人优先级设置是3000。

·Engineering Change Order robot工程更改指令机器人

当下列消息被收到时,当PCB印制板的网络列表被修改后,工程更改指令机器人将写一个ECO文件。

PCB消息

描述

ProcessStart

机器人内部列表被初始化。

BeginModify

源对象被准备好,来被ECO机器人使用。

EndModify

修改的对象被分析,ECO文件开始从此被写出。

BoardRegisteration

对象被增加到被存放在机器人内部列表的印制板中,或从被存放在机器人内部列表的印制板中删除。

YieldToRobots

处理机器人内部列表,并且写出此ECO文件的剩余。

工程更改指令机器人优先级设置是1140。

·Design Rule Checking robot设计规则检测机器人

当下列消息被收到时,设计规则检测机器人检测PCB印制板规则是否是有效的。

PCB消息

描述

ProcessStart

一个机器人内部列表被初始化。

EndModify

相应的对象被存储在机器人内部列表中。

BoardRegisteration

相应的对象被存储在机器人内部列表中。

YieldToRobots

DRC被在包含在一个机器从内部列表的对象上执行。

设计规则检测机器人优先级设置是1105。

·UndoRedo robot UndoRedo机器人

当下列消息被收到时,当PCB印制板被修改后,UndoRedo机器人更新UndoRedo设施。

PCB消息

描述

CycleStart

一个机器人被初始化。

BeginModify

在机器人内部列表中存储可能的修改对象。

EndModify

增加修改对象到PCB UndoRedo结构。

CancelModify

从更新的PCB UndoRedo结构中停止受影响的对象。

UnDoRegister

增加最新的注册到PCB UndoRedo结构中或从PCB UndoRedo结构中删除对象。

ProcessEnd

在PCB UndoRedo结构末端区域包含最后的修改。

YieldToRobots

在PCB UndoRedo结构末端区域包含最后的修改。

UndoRedo机器人优先级设置是1110。

·Polygon robot平面多边形机器人

当下列消息被收到时,平面多边形机器人在PCB印制板上更新平面多边形,这些平面多边形设置已被修改。

PCB消息

描述

ProcessStart

机器人内部列表初始化。

EndModify

修改的平面多边形对象被放入到机器人内部列表中。

BoardRegisteration

新的平面多边形被增加到机器人内部列表中。

YieldToRobots

重灌相关的平面多边形对象。

平面多边形机器人优先级设置是2110。

·Updating robot更新机器人

当下列消息被收到时,更新机器人维护名称引用的完整性,很多实体通过它们的名称引用到其它实体(例如一个FromTo参考到一个网络,和到2个焊盘,一个焊盘名称引用到一个元件和一个焊盘号码),如果引用的对象名称改变,引用到它的同样地必须改变。

PCB消息

描述

ProcessStart

一个机器人内部列表被初始化。

BeginModify

可能地修改对象被准备好。

EndModify

所有必须的修改被计算出来。

YieldToRobots

所有与修改对象有关的对象被通过它的名称更新。

规则更新机器人优先级设置是2120。

·Internal Plane Robot内部平板机器人

当下列消息被收到时,内部平板机器人更新内部电源层连接。

PCB消息

描述

ProcessStart

一个机器人内部列表被更新。

EndModify

内部的平面连接焊盘风格必须修改来存储在一个机器人内部列表中。

BoardRegisteration

内部的平面连接焊盘风格必须修改来存储在一个机器人内部列表中。

YieldToRobots

为相关的焊盘更新电源平面连接内部平面。

内部平板机器人优先级设置是2100。

·Panel Robot平面机器人

当下列消息被收到时,当PCB对象和PCB印制板被改变后,平面机器人更新PCB平面内容。

PCB消息

描述

ProcessStart

初始化一个机器人。

EndModify

平面要求的所有的修改被计算出来,并且存储在一个机器人内部列表中。

BoardRegisteration

平面要求的所有的修改被计算出来,并且存储在一个机器人内部列表中。

YieldToRobots

存储在机器人内部列表中的修改被应用到平面。

平面机器人优先级设置是1100。

  6.4 如何扩展机器人/扩展为外部使用的消息系统?

PCB消息和机器人是独立的实体但它们对PCB编辑器环境有影响。机器人当收到消息时响应,然而,为开发者来定义新的外部的机器人识别而内部的机器人将不识别的PCB消息是可能的。

  6.4.1如何从外部发送消息到PCB编辑器内

在外部的服务器可许改变了PCB编辑器的环境状态,并且需要通知内部的机器人来恢复环境情况下,从外部服务器发送消息到PCB编辑器是特别有用的,用户定义PCB消息的目的是为外部服务器发送消息到PCB编辑器提供能力,这样为外部服务器设计的外部机器人就能响应。

发送消息到PCB编辑器,来通知机器人,PCB编辑器环境已经发生了改变,发送信息,您需要调用带有四个参数的PcbApi_EventRouter_SendMessage函数。

PcbApi_EventRouter_SendMessage

参数

描述

SourceObjectHandle

表示一个源对象的句柄。

DestinationObjectHandle

表示一个目标对象的句柄。

MessageID

表示消息的ID号。

MessageData

表示消息数据,能为一个指向到一个数据结构的指针或仅维持一些值的变量。

注意,DestinationObjecthandle参数总是一个c_BroadCast常量,此参数被随PCBApi_EventRouter_SendMessage函数调用一起传递,函数PCBApi_EventRouter_SendMessage在下表中描述。

描述

目标

消息ID号

消息数据

NullMessage

Nil

Nil

PCBM_NullMessage

Any

BeginModify

Object handle

c_Broadcast

PCBM_BeginModify

c_NoEventData

BoardRegisteration

Board handle

c_Broadcast

PCBM_BoardRegisteration

Object handle

EndModify

Object handle

c_Broadcast

PCBM_EndModify

c_NoEventData

CancelModify

Object handle

c_Broadcast

PCBM_CancelModify

c_NoEventData

Create

N/A

N/A

PCBM_Create

N/A

Destroy

N/A

N/A

PCBM_Destroy

N/A

ProcessStart

Object handle

c_Broadcast

PCBM_ProcessStart

c_NoEventData

ProcessEnd

c_FromSystem

c_Broadcast

PCBM_ProcessEnd

c_NoEventData

ProcessCancel

c_FromSystem

c_Broadcast

PCBM_ProcessCancel

c_NoEventData

YieldToRobots

c_FromSystem

c_Broadcast

PCBM_YieldToRobots

c_NoEventData

CycleEnd

c_FromSystem

c_Broadcast

PCBM_CycleEnd

c_NoEventData

CycleStart

c_FromSystem

c_Broadcast

PCBM_CycleStart

Board object

SystemInvalid

c_FromSystem

c_Broadcast

PCBM_SystemInvalid

c_NoEventData

SystemValid

c_FromSystem

c_Broadcast

PCBM_SystemValid

c_NoEventData

ViewUpdate

N/A

N/A

PCBM_ViewUpdate

N/A

UnDoRegister

Objecthandle

c_Broadcast

PCBM_UnDoRegister

UndoRegisterData structure

表 2: PCBApi_EventRouter_SendMessage过程参数

0
相关文章