单片机技术网|技术阅读
登录|注册

您现在的位置是:单片机技术网 > 技术阅读 > 揭秘PLC(四)RTS之服务篇

揭秘PLC(四)RTS之服务篇

继续揭秘PLC,今天我们聊聊RTS的服务。服务有很多种,其最主要的任务是给用户提供调试接口的,相当于MCU的JTAG功能。Codesys有个比较实用的功能,代码编译好后,可以不连PLC实物直接在电脑端做仿真,手动测试验证逻辑。

这个功能类似于MDK和IAR里的Simulator功能,不接MCU直接跑逻辑。

当用户再点击Codesys在线菜单栏下的登录按钮后,首先Codesys会发送CheckID的命令码去检查板子返回的Target ID是否能于当前软件设置的Target匹配,下一步就是发送Stop命令关闭IEC运算(MCU版本的Codesys通常不支持在线下装,MPU版本的在线下装不需要停止IEC运算),然后检查PLC当前的IEC用户代码的识别码与Codesys工程是否一致,如果不一致则Codesys会提示用户这是一个新的工程,是否下载到PLC中,用户确认后会进入下载用户工程模式,将之前Codesys编译的bin文件下载到对应的Flash区域,之后下载IO的配置信息。

所有的服务,都是基于一种通讯协议基础上的,Codesys的协议是私有的,但是可以通过抓包来做简单的分析,有代码可以对照着分析,没有源代码估计是很难理解的,其支持的协议也很多:CAN, RS485,Ethernet等

用户可以通过在线->通讯参数进行设置。

用户成功登录后,会进入登录模式,下图为和利时LM系统小型PLC的示例代码仿真模式:

而服务包括下图所有的一些功能:

下表总结了常用的一些功能:

服务描述
运行登录后的运行状态其实是根据RTS来设置的,一般都会设置为下载后自动运行。
停止当用户需要停止IEC运算时,可以点击停止按钮,此时IEC运算会停止,但是IO配置区的数据会一直刷新
断点类似与MCU调试的断点,当代码执行到断点未知后会暂停运算
跳过相当于MDK中的F10,单步跳过
跳入相当于MDK中的F11,单步跟入
单循环IEC运算仅运行1个周期后停止
读变量这个服务不存在于菜单中,但它一直被执行,Codesys需要读取N, M, I, Q, R, Code任何区数据时,都会发送该服务
输入值用户在登录模式下,可以对变量/IO输出通道数据进行在线修改
强制值类似于输入值服务,但是输入值是1次的,强制值是每周期都会执行,所以看上去这个数据/变量是不变的
解除强制释放之前强制的变量

登录模式后可以在PLC配置界面看到所有通道的数据值,也可以通过双击小方块来写入变量:

这个功能类似于MDK查看外设寄存器的功能,需要修改的时候直接写Value即可:

Beremiz也提供了类似服务功能,但要弱很多,这里就不做展开。BTW,这个开源软件Bug还是比较多的,而且很久也没有发展起来,拿来学习分析还是有价值的,商业化可能还需要付出更大的努力。下一期应该是PLC专辑的最后一期了,我们聊聊背板总线,主要介绍Profibus-DP。

未完待续