揭秘PLC(四)RTS之服务篇

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

0547b61695162ef36d6dfdaefb43920f.png

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

a5c9af5a5dda587ee37d9faed1cdc694.png

当用户再点击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等

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

383823730977f077fa4015991b0dfd11.png

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

630789569683a52b7daa2d57b9d4cd7d.png

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

9f48fdbe489e225f35e0611944f1b111.png

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

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

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

42ebc8f253f7af4847983b3154bb2bde.png

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

e071635e97967d1d9c288d2c6995e881.png

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

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值