自由口模式下plc与计算机的通信
plc程序执行过程
----plc在第一次扫描时执行初始化子程序,对端口及rcv指令进行初始化。初始化完成后,运行rcv指令使端口处于接受状态。
----rcv会将以“g”开头“g”结尾的指令保存到接收缓冲区,并同时产生接收完成中断。
----rcvcomplete中断服务程序用来处理接收完成中断事件,它会将接收缓冲区中的十六进制ascii码还原成数据并保存,同时置位verify子程序的触发条件(m0.1)。 ----verify子程序首先复位本身的触发条件以防止子程序被重复调用,然后求出接收缓冲区中指令的bcc校验码并与指令中的bcc校验码进行比对。如果相等则置bcc码校验正确的标志位(m0.0)为1;如果指令格式正确(指令的结束标志在接收缓冲区中特定的位置vb133)而bcc码不相等,则发送代表bcc校验码错误的反馈信息;如果指令格式不正确(vb133中不是指令的结束标志),则返回代表指令格式错误的反馈信息。
----read子程序的触发条件为:指令中的站地址与本机站地址相符、指令类型为读指令、bcc检验码正确。当条件满足时,read子程序被执行。read子程序首先禁止rcv,然后将指令所要读取的数据转换成十六进制ascii码并写入发送缓冲区、计算bcc检验码、 后发送反馈信息。
----write子程序的触发条件为:指令中的站地址与本机站地址相符、指令类型为写指令、bcc检验码正确。当条件满足时,write子程序被执行。write子程序首先禁止rcv,然后将指令中的数据写入目标寄存器, 后发送代表写入正确的反馈信息。
----plc每接到一条指令后都会发送一条反馈信息,当反馈信息发送完成时,会产生发送完成中断,xmtcomplete中断服务程序用来处理发送完成中断事件。在xmtcomplete中断服务程序中所要执行的操作包括:复位bcc校验码正确的标志位(m0.0);允许rcv;bcc码寄存器清零;重新装入用于计算bcc校验码的地址指针;接收缓冲区中存放指令结束字符的字节vb133清零(用来判断下一条指令格式是否正确)。
plc寄存器地址分配
----此程序占用plc寄存器的vb100-vb199,内部继电器占用m0.0和m0.1。寄存器地址分配见表3、表4、表5、表6。
表3 接收缓冲区
表4 译码区
表5 发送缓冲区
表6 其它