我们无法让PLC与KEPServerEX(OPC)可靠连接.
我想知道SOF的其他人是否有使用PLC和OPC的经验.如果是这样,他们有任何关于与我们的OPC服务器建立可靠连接的提示.我们目前使用KEPServerEX作为我们的OPC,但如果有人知道更好的程序使用,我们愿意接受建议.
PLC中的梯形图编程转换为什么?图形命令(例如开放式接触,指令等)是BASIC还是C指令,还是直接编译成汇编语言?
最近我试图学习PLC的梯形逻辑编程,但是我想知道是否有任何IDE可以更好地创建梯形图程序Step7或cx-programmer?我可以使用Visual Studio或Netbeans的插件吗?最后,在Linux或Microsoft Windows下使用PLC更好吗?
更新1:谷歌搜索后,我发现梯形图编程不依赖于PLC品牌或其型号,所以我没有在我的问题中提到任何品牌.
在检查s7nodave对S7-1200的EPICS设备支持时,我遇到了一个引用libnodave的问题.当我尝试读取PLC中的任何内存地址时,IOC控制台报告错误:
epics> 2014/05/19 14:20:41.964 Siemens-PLC error while reading 1 bytes from PLC address FB35. Status = context not supported. Step7 says:Function not implemented or error in telgram.
Run Code Online (Sandbox Code Playgroud)
这是libnodave状态代码0x8104.当我试图在网上搜索此错误代码时,所有结果都是参考S7-1500,而不是S7-1200.
我可以通过Siemens SDK访问这些内存块:它们存在并包含有效数据.
为什么S7-1200拒绝发送libnodave数据?有没有选项可以从网络中提供数据块?
我用EPICS版.3.14.12.4,s7nodave 1.03 build with asyn ver.4.11,boost ver.1.55.0.在PC和Virtualbox上尝试了各种版本.
我想使用 TwinCat 3 制作一个自动图形喷泉来控制阀门,并使用 Visual Studio C# 来处理要在喷泉上显示的图像。
图像处理程序的最终形式是一个二进制数组图像(附): Image Processing Result 1; 图像处理结果2;
我想使用图像处理的最终形式来控制机器上的阀门(阀门在为 1 时打开,阀门在为 0 时关闭)。我对 TwinCat 3 非常新,尤其是使用 ADS图书馆。
infosys beckhoff 的样本对我没有帮助,有人可以帮我吗?
谢谢你
我使用 CODESYS 制作了一个功能块来执行电能计量。该功能块的输入是电流和电压,输出是能量。现在,我们需要有 1000 个该功能块的实例来运行我们拥有的 1000 米的代码。编写(可能还有复制和粘贴)这些实例似乎并不是最有趣的工作。想知道是否有人有更聪明的方法来进行如此众多的实例化。
例如,以下是 2 个实例的代码(在 CODESYS 中)的样子:
meter_instance1(CURRENT:=I1, VOTAGE:=V2);
Energy1:= meter_instance1.ENERGY;
meter_instance2(CURRENT:=I2, VOTAGE:=V2);
Energy2:= meter_instance2.ENERGY;
Run Code Online (Sandbox Code Playgroud)
我们希望有 1000 个实例。任何想法都会受到高度赞赏。
我试图从 PLC (Beckhoff-cx5130) 获取当前时间。我尝试过“GETSYSTEMTIME”,但没有得到任何输出。我还尝试了“NT_GetTime”“TIMESTRUCT”和“T_FILETIME”,但显示一些编译错误(可能是库问题)。关于此问题的任何建议(示例代码)将受到高度赞赏。谢谢!
在 TwinCAT 3 中使用功能块时,我看到可以使用 anaction代替 a 的选项method。我只熟悉方法。两者之间有什么区别,什么时候应该使用其中一种而不是另一种?
我想知道为什么TwinCAT中的FIFO数据结构使用动作而不是方法。
试图找出使用Raspberry Pi/linux服务器控制工业PLC的最佳方法 - 特别是在以太网上使用python和pymodbus(modbusTCP)...
一旦PLC内部注册表正确映射到modbus,用python编写的软件可以代替PLC中的梯形逻辑编程并完全控制它吗?
或者仍然需要编写梯形图逻辑/本机PLC代码?
这是 TwinCAT3 中的最少代码
// declaration
fTest : REAL := 32700.0;
// implementation
fTest := fTest + 0.001;
Run Code Online (Sandbox Code Playgroud)
该代码会将 fTest 增加到 32768。该数字不会再增加。任何高于 32768 的当前 fTest 值都将阻止其增加。数量保持不变。而且,即使我改为0.001,0.0019它0.0011仍然不会增加。然而,当我写0.002.
范围REAL从-3.402823e+38到产生3.402823e+38。但有一些与 32768 有关的东西。如何在 32768 以上的 fTest 中正确添加 0.001 或更低的值?这可能是 TwinCAT 中的一个错误吗?
更新:
有关 TwinCAT 中 REAL 的更多信息
根据 IEC 61131 3 / IEC 559 / IEEE754,32 位数据类型 REAL 的结构为 1 位符号、8 位以 2 为基数的指数(带符号)(-126...+127)、23 位尾数 (0 ...8,388,607)。
plc ×10
twincat ×2
.net ×1
c# ×1
codesys ×1
iec61131-3 ×1
kepserverex ×1
libnodave ×1
linux ×1
modbus ×1
opc ×1
python ×1
raspberry-pi ×1
real-time ×1
s7-1200 ×1
siemens ×1
st ×1
twincat-ads ×1