首页 历史故事优化后:PLC_1编程通信技巧分享

优化后:PLC_1编程通信技巧分享

【摘要】:要实现前述通信要求,需要在PLC_1中调用并配置TSEND_C、T_RCV通信指令。在“端点”中选择通信伙伴为“PLC_2”,则接口、子网及地址等随之自动更新。选择本地PLC_1的“建立主动连接”选项。定义PLC_1的TSEND_C发送通信块接口参数根据所使用的接口参数定义变量符号表,如图8-8所示。创建并定义PLC_1的发送数据区DB块。

要实现前述通信要求,需要在PLC_1中调用并配置TSEND_C、T_RCV通信指令。

1.在PLC_1的OB1中调用TSEND_C通信指令

拖动指令树中的TSEND_C指令到程序段1,自动生成背景数据块。

(1)定义PLC_1的TSEND_C连接参数

要设置PLC_1的TSEND_C指令的连接参数,先选中指令,点击其属性对话框的“连接参数”项,如图8-7所示。在“端点”中选择通信伙伴为“PLC_2”,则接口、子网及地址等随之自动更新。“连接类型”选择为“TCP”。先“连接ID”中输入连接的地址ID号1,这个ID号在后面的编程将会用到。在“连接数据”项中,创建连接时,系统会自动生成本地的连接DB块,所有的连接数据都会存于该DB块中。通信伙伴的连接DB块只有在对方(PLC_2)建立连接后才能生成,新建通信伙伴的连接DB并选择。选择本地PLC_1的“建立主动连接”选项。在“地址详细信息”项中定义通信伙伴方的端口号为2000。

978-7-111-34922-8-Chapter08-9.jpg

图8-7 定义TSEND_C连接参数

如果“连接类型”选用的是ISO on TCP,则需要设定TSAP地址,此时本地PLC_1可以设置成“PLC1”,伙伴方PLC_2可以设置成“PLC2”。使用ISO on TCP通信,除了连接参数的定义不同,其他组态编程与TCP通信完全相同。

(2)定义PLC_1的TSEND_C发送通信块接口参数

根据所使用的接口参数定义变量符号表,如图8-8所示。

创建并定义PLC_1的发送数据区DB块。要注意的是,新建数据块时,应取消勾选“仅符号访问”选项。在数据块中定义发送数据区为100字节的数组,勾选“保持性”选项。

对于双边编程通信的CPU,如果通信数据区使用数据块,既可以将DB块定义成符号寻址,也可以定义成绝对寻址。使用指针寻址方式时,必须创建绝对寻址的数据块。

要设置TSEND_C指令的发送参数,先选中指令,点击其属性对话框的“块参数”项,如图8-9所示。在输入参数中,“启动请求(REQ)”使用2Hz的时钟脉冲,上升沿激活发送任务,“连接状态”设置为常数1,表示建立连接并一直保持连接,“发送长度”设置为100。在“输入/输出”参数中,“相关的连接指针”为前面建立的连接DB块,“发送区”使用指针寻址,DB块要设置绝对寻址,“p#db2.dbx0.0 byte 100”的含义是发送数据块DB2中第0.0位开始的100个字节的数据,“重新启动块”为1时完全重启动通信块,现存的连接会中断。在“输出”参数中,任务执行完成并且没有错误,“请求完成”位置1,“请求处理”位为1代表任务未完成,不激活新任务,若通信过程中有错误发生,则“错误”位置1,“错误信息”字给出错误信息号。

978-7-111-34922-8-Chapter08-10.jpg

图8-8 定义变量表

978-7-111-34922-8-Chapter08-11.jpg

图8-9 定义TSEND_C接口参数

设置TSEND_C指令块的“块参数”,程序编辑器中的指令参数将随之更新,也可以直接编辑指令块,如图8-10所示。

978-7-111-34922-8-Chapter08-12.jpg

图8-10 定义TSEND_C接口参数

2.在PLC_1的OB1中调用接收指令T_RCV并配置基本参数

为了使PLC_1能够接收来自PLC_2的数据,在PLC_1中调用接收指令T_RCV并配置基本参数。

接收数据与发送数据使用同一连接,所以使用不带连接管理的T_RCV指令。根据所使用的接口参数定义符号表,如图8-8所示,配置接口参数,如图8-11所示。其中,“EN_R”参数为1,表示准备好接收数据;ID号为1,使用的是TSEND_C的连接参数中的“连接ID”的参数地址;“DATA”表示接收数据区;“RCVD_LEN”表示实际接收数据的字节数。

978-7-111-34922-8-Chapter08-13.jpg

图8-11 调用TRCV指令并配置接口参数