根据这个问题,可以使用梯形逻辑将TCP/IP消息从PLC发送到PC机。什么?我相信这对来自PLC世界的人来说是有意义的,但我很难理解它来自C/C++嵌入式系统世界。
有人能解释,或指向一个解释,确切地说,相对于PLC,这样的通讯发生在哪里?是在PLC扫描周期内,在这种情况下.如何在不延长扫描周期的情况下处理等待、延迟、超时、重试等?同样,这种功能是否与梯形逻辑中的电子“电路灯和开关”的比喻相一致,或者这个比喻延伸到了崩溃的地步?
我突然意识到,在PLC扫描周期的几毫秒内,有些任务(不一定是通信任务)很难掉头。为了这些任务而延长这一周期似乎是站不住脚的。那么,在PLC世界中,是否有方法和方法可以在PLC扫描周期之外完成这些任务,以某种方式将它们的输入/输出/控制集成到PLC扫描周期中?我怀疑是这样的,但没有发现任何明确说明这一点的东西。
发布于 2014-12-08 06:57:27
等待、延迟、超时、重试等
你不能在一个周期内做那些事。而不是挂起线程,您检查是否是时候继续前进,如果不是,您将立即执行循环的其余部分,在等待结束后跳过您想要做的任何事情。
任何非即时(阻塞)任务都是在多个周期内完成的,无论是高级别的数据I/O还是一些实际的“真实世界”过程。通信调用,例如read()、write()、send()、接收()等等,都是非阻塞的,有时甚至是异步的。在LD和其他(IEC 61131-3)语言中,它都是使用标志、触发器等来处理的.
这里是一些真正的代码,通过RS-485串口发送请求并从数字传感器读取测量数据。注意,没有阻塞调用,也不重要扫描周期有多短。
发布于 2014-11-22 11:37:53
问题是PLC的设计是为了控制它们的任务,并通过ProfiBus、Ethercat、ProfiNet等方式发送实时数据。从计算机编程的角度来看,TCP/IP通信确实相当繁琐。
帮助我完成的是阅读来自与PLC的通讯手册。特别是可以在一个周期内发送或读取的数据量(!)。尽可能多地使用巫师。检查支援地点。
PLCs公司的积极之处在于,他们拥有比软件世界更愿意提供帮助的支持。试试看,问问他们是否能进一步帮助你。
发布于 2015-02-19 16:26:59
使用由您选择的控制系统的制造商提供的库,其中大部分是在较低层异步处理的,并且您不必在您的PLC代码中处理它(通常是“实时”、同步和设计阻塞)。
https://stackoverflow.com/questions/26982236
复制相似问题