1. TwinCAT 3 ADS

1.19. Python与TwinCAT ADS通讯报错以及简易使用说明

首先附上github上的python与ads通讯的例子以及说明文档

https://github.com/stlehmann/pyads

http://pyads.readthedocs.io/en/latest/index.html

1、安装python。去python官网上下载即可

2、安装python与ads通讯需要的组件:pyads(有两种方法安装)

From PyPi:(推荐用这种方法,在CMD中,直接运行这条即可)

$ pip install pyads

From Github:

$ git clone https://github.com/MrLeeh/pyads.git --recursive
$ cd pyads
$ python setup.py install


3、测试运行python与twincat3走ads通讯

① 首先两边添加路由(在windows上必须用twincat的ads版本先添加路由

② twincat3程序为:

           在MAIN中声明一个 int_val:int;

③ python这里先用idle运行,一条一条输入

         import pyads

           #第一个为ads地址,第二个为port号(直接填端口号,例如851)

          plc = pyads.Connection('127.0.0.1.1.1', pyads.PORT_SPS1)

          plc.open()

           # read int value by name,这里可以从twincat读取到变量数值

           i = plc.read_by_name("MAIN.int_val", pyads.PLCTYPE_INT)

           # write int value by name 这里可以改变i值,写入twincat中

            plc.write_by_name("MAIN.int_val", i, pyads.PLCTYPE_INT)

            # close connection

            plc.close()


4、报错以及解决方法

①  FileNotFoundError: Could not find module 'TcAdsDll'. Try using the full path with constructor syntax.

顾名思义找不到TcAdsDLL。报错中还有一条叫做  pyads_ex.py", line 51, in <module> 

找到pyads_ex.py文件路径,打开文件,找到第51行:
_adsDLL = ctypes.windll.TcAdsDll  # type: ignore

把这句改一下,把TcAdsDll的绝对路径输入其中,然后就没有报错了。(注意路径格式)

_adsDLL = ctypes.windll.LoadLibrary("C:\\twincat\\AdsApi\\TcAdsDll\\TcAdsDll.dll")


5、最后附上各种类型变量通讯的例子

https://pyads.readthedocs.io/en/latest/quickstart.html#usage



2020.2.22 冯国城 编辑