上位机与西门子通讯
最近我完成了两个自动化工厂项目,都涉及到上位机与西门子1214 DC/DC/DC PLC之间的通讯。这种通讯主要用于数据的读取以及写入。
在这个过程中我使用了多种工具,首先是PLC通信库的选择,我使用了Sanp7.dll。这类库可以从网络上获取,它们支持多种类型的西门子PLC设备通讯。具体内容如下的访问采用的是绝对地址方式,通常是通过地址偏移量和数据长度来访问数据。
我们主要关注两个方面的通讯实操:一是DB全局变量的读写,二是多变量的读写。特别需要注意的是,为了允许可进行PUT/GET访问,需要在CPU属性>防护与安全>连接机制中插入设置。另外,分组块的优化访问属性应该进行取消选择,以允许第三方访问。重要的是理解,取消勾选后,该数据块的变量会被整体保留,如果变量数据不保持设定,PLC重启后,其变量数据将会初始化。
此外,针对Bool量的读写,因为Bool量通常表示设备的运行状态或开关状态,故一般占用一位。对于一个字节来说,可以放下八个Bool量,意味着可能会同时读取八个状态信息。若想获取每个布尔变量的特定状态,要在读取数据后对获取结果进行二进制解析,以准确控制每个位的状态,并快速转换为十进制使最终操作得以实现,处理过程与多位变量的读写方式类似,主要是根据所需偏移量和字节大小来执行读写操作。