IO-Link通信笔记(十二)——系统命令与模式切换
上一期在讲直接参数页1期间,提到了主站命令MasterCommand,本期我们就来讲一讲主站切换从站状态的逻辑。
首先,从站在初次上电时,IOL处于SIO模式,此时CQ线路无法传输数据,只能进行输入或输出控制,在输出方向下可以设置PNP、NPN或推挽(具体受到PHY芯片功能约束),也因此,此时从站IOL的系统状态机处于非活跃状态。此时主站发出唤醒脉冲,从站在诊断确认唤醒后通过将CQ从SIO模式切换到通信接收(因为IOL只使用一根线路进行信息传输,因此主从之间一方为发送另一方必须为接收),等待主站握手序列发送过来。与此同时IOL协议栈系统用状态机切换到“通信建立”状态,等待握手序列验证通过。
在主站发送握手序列从站验证握手后,主从间达成连接,此时主站进入到上一期说明的直接参数页1的操作中,读取从站直接参数页1存储的信息,同时通过主站命令字节将从站IOL系统状态机切换到预操作preoperate模式。
在预操作模式下,主从之间可以通过带有更长OD字节的M序列进行ISDU交互,主站可以快速获取vendertext、devicetext、productname等很长字节的字符串信息,向上层设备传递,实现设备管理和信息确认。但是需要注意的是,处在预操作模式下,从站不会上报非“通知”类事件,即使有此类事件发生,例如硬件短路造成的过温,从站产生过温事件,只要主站没有将模式切换到操作模式operate,便不会上报事件。这是主站设备开发人员需要注意的事情,切勿在预操作模式内完成交互任务后停留很长时间。
主站获取完毕信息后,通过直接参数页1的mastercommand字节发送数据,控制从站将IOL系统状态机切换到操作模式operate,紧接着,主站通过mastercommand字节发送ProcessDataOutputOperate命令,提示从站此时主站发出的PDout已经是有效数据,从站可以正常解析并信任。主站可以通过ISDU获取到从站所有信息,同时从站也会上报所有发生的事件。主从之间处在稳定的数据交互过程。
在preoperate与operate模式下,主站可以通过mastercommand字节主动发出DeviceStartup或者Fallback命令,让从站IOL系统状态机切换到startup模式或者fallback到SIO模式。
至于MasterIdent与deviceident指令,并非每一次建立连接都会发送,只有在协议栈版本ID发生变化或者主站主动发起时,才会执行该命令。而在执行完毕后,从站会转换状态机到startup模式,等待主站发出preoperate指令或者operate指令切换到对应模式。
以上是本节的全部内容,如果各位读者仍然存在疑惑可以私信发送问题,笔者会一一解答并积累一期文章的内容更新出来。
笔者内容也许会存在错误,欢迎志同道合的开发者一起讨论。我们共同进步!
喜欢我的文章请关注我的微信公众号,我会不定期更新更多干货知识!